{"version":3,"file":"static/js/main.25881fbc.js","mappings":"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AAQ,CACJ49K,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,OAEJn8G,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,KAEJ65G,MAAO,CACH,KACA,KACA,KACA,KACA,KACA,KACA,MAEJuC,KAAM,CACF,SACA,SACA,UACA,YACA,WACA,SACA,aAGR,cAAe,CACXD,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,OAEJn8G,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,KAEJ65G,MAAO,CACH,KACA,KACA,KACA,KACA,KACA,KACA,MAEJuC,KAAM,CACF,SACA,SACA,UACA,YACA,WACA,SACA,cAIZ96K,OAAQ,CACJ/C,OAAQ,CACJ49K,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEJn8G,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJo8G,KAAM,CACF,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,aAGR,cAAe,CACXD,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEJn8G,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJo8G,KAAM,CACF,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,cAIZt7H,SAAU,CACNviD,OAAQ,CACJ49K,YAAa,CACT,KACA,KACA,KACA,MAEJn8G,OAAQ,CACJ,IACA,IACA,IACA,KAEJo8G,KAAM,CACF,cACA,cACA,cACA,gBAGR,cAAe,CACXD,YAAa,CACT,KACA,KACA,KACA,MAEJn8G,OAAQ,CACJ,IACA,IACA,IACA,KAEJo8G,KAAM,CACF,cACA,cACA,cACA,iBAIZC,WAAY,CACR99K,OAAQ,CACJ49K,YAAa,CACTG,SAAU,WACVtpF,GAAI,KACJ,iBAAkB,KAClBupF,KAAM,OACNC,GAAI,KAC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","sources":["../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/react/jsx-runtime.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/index.js","../node_modules/isarray/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/react-moment/dist/index.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/object-assign/index.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/invariant/browser.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/env/data.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/prop-types-extra/lib/utils/createChainableTypeChecker.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/react/cjs/react.production.min.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react/index.js","../node_modules/prop-types/index.js","../node_modules/moment/moment.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/warning/warning.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/react-dom/server.browser.js","../node_modules/hammerjs/hammer.js","../node_modules/oidc-client/lib/oidc-client.min.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/react-router/node_modules/react-is/index.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/react-dom/index.js","../node_modules/path-to-regexp/index.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/classnames/index.js","../node_modules/react-dom/cjs/react-dom-server.browser.production.min.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/scheduler/index.js","../node_modules/prop-types-extra/lib/isRequiredForA11y.js","../node_modules/axios/lib/core/Axios.js","../node_modules/react-router/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/prop-types-extra/lib/all.js","../node_modules/axios/lib/defaults/transitional.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-bootstrap/esm/ThemeProvider.js","../node_modules/react-bootstrap/esm/Container.js","../node_modules/react-bootstrap/esm/Row.js","../node_modules/react-bootstrap/esm/Col.js","../node_modules/dom-helpers/esm/matches.js","../node_modules/dom-helpers/esm/querySelectorAll.js","../node_modules/dom-helpers/esm/canUseDOM.js","../node_modules/dom-helpers/esm/addEventListener.js","../node_modules/uncontrollable/lib/esm/utils.js","../node_modules/uncontrollable/lib/esm/hook.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/@restart/hooks/esm/usePrevious.js","../node_modules/@restart/hooks/esm/useForceUpdate.js","../node_modules/@restart/hooks/esm/useCommittedRef.js","../node_modules/@restart/hooks/esm/useEventCallback.js","../node_modules/@restart/hooks/esm/useGlobalListener.js","../node_modules/@restart/hooks/esm/useEventListener.js","../node_modules/react-overlays/esm/DropdownContext.js","../node_modules/@restart/hooks/esm/useCallbackRef.js","../node_modules/@restart/hooks/esm/useMounted.js","../node_modules/@restart/hooks/esm/useSafeState.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/react-overlays/esm/popper.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/react-overlays/esm/usePopper.js","../node_modules/dom-helpers/esm/contains.js","../node_modules/dom-helpers/esm/removeEventListener.js","../node_modules/dom-helpers/esm/listen.js","../node_modules/dom-helpers/esm/ownerDocument.js","../node_modules/react-overlays/esm/safeFindDOMNode.js","../node_modules/react-overlays/esm/useRootClose.js","../node_modules/react-overlays/esm/ownerDocument.js","../node_modules/react-overlays/esm/mergeOptionsWithPopperConfig.js","../node_modules/react-overlays/esm/DropdownMenu.js","../node_modules/react-overlays/esm/DropdownToggle.js","../node_modules/react-overlays/esm/Dropdown.js","../node_modules/react-bootstrap/esm/SelectableContext.js","../node_modules/react-bootstrap/esm/NavContext.js","../node_modules/react-bootstrap/esm/createChainedFunction.js","../node_modules/react-bootstrap/esm/SafeAnchor.js","../node_modules/react-bootstrap/esm/DropdownItem.js","../node_modules/@restart/hooks/esm/useMergedRefs.js","../node_modules/react-bootstrap/esm/NavbarContext.js","../node_modules/react-bootstrap/esm/useWrappedRefWithWarning.js","../node_modules/dom-helpers/esm/hasClass.js","../node_modules/react-bootstrap/esm/usePopperMarginModifiers.js","../node_modules/react-bootstrap/esm/DropdownMenu.js","../node_modules/react-bootstrap/esm/Button.js","../node_modules/react-bootstrap/esm/DropdownToggle.js","../node_modules/dom-helpers/esm/camelize.js","../node_modules/react-bootstrap/esm/createWithBsPrefix.js","../node_modules/react-bootstrap/esm/Dropdown.js","../node_modules/react-bootstrap/esm/DropdownButton.js","../node_modules/react-bootstrap/esm/NavbarBrand.js","../node_modules/dom-helpers/esm/getComputedStyle.js","../node_modules/dom-helpers/esm/ownerWindow.js","../node_modules/dom-helpers/esm/hyphenate.js","../node_modules/dom-helpers/esm/hyphenateStyle.js","../node_modules/dom-helpers/esm/isTransform.js","../node_modules/dom-helpers/esm/css.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/utils/reflow.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/dom-helpers/esm/transitionEnd.js","../node_modules/dom-helpers/esm/triggerEvent.js","../node_modules/react-bootstrap/esm/transitionEndListener.js","../node_modules/react-bootstrap/esm/triggerBrowserReflow.js","../node_modules/react-bootstrap/esm/Collapse.js","../node_modules/react-bootstrap/esm/NavbarCollapse.js","../node_modules/react-bootstrap/esm/NavbarToggle.js","../node_modules/react-bootstrap/esm/Navbar.js","../node_modules/react-bootstrap/esm/CardContext.js","../node_modules/react-bootstrap/esm/TabContext.js","../node_modules/react-bootstrap/esm/AbstractNav.js","../node_modules/react-bootstrap/esm/NavItem.js","../node_modules/react-bootstrap/esm/AbstractNavItem.js","../node_modules/react-bootstrap/esm/NavLink.js","../node_modules/react-bootstrap/esm/Nav.js","services/AppContext.ts","services/LocalStorage.ts","services/RBACService.ts","../node_modules/jwt-decode/lib/atob.js","../node_modules/jwt-decode/lib/index.js","../node_modules/jwt-decode/lib/base64_url_decode.js","../node_modules/oidc-client/src/Log.js","../node_modules/oidc-client/src/ClockService.js","../node_modules/oidc-client/src/Global.js","../node_modules/oidc-client/src/WebStorageStateStore.js","../node_modules/oidc-client/src/JsonService.js","../node_modules/oidc-client/src/MetadataService.js","../node_modules/oidc-client/jsrsasign/dist/jsrsasign.js","../node_modules/oidc-client/src/JoseUtil.js","../node_modules/oidc-client/src/JoseUtilImpl.js","../node_modules/oidc-client/src/crypto/jsrsasign.js","../node_modules/oidc-client/src/UserInfoService.js","../node_modules/oidc-client/src/TokenClient.js","../node_modules/oidc-client/src/ErrorResponse.js","../node_modules/oidc-client/src/ResponseValidator.js","../node_modules/oidc-client/src/OidcClientSettings.js","../node_modules/oidc-client/src/UrlUtility.js","../node_modules/oidc-client/src/random.js","../node_modules/oidc-client/src/State.js","../node_modules/oidc-client/src/SigninState.js","../node_modules/oidc-client/src/SigninRequest.js","../node_modules/oidc-client/src/SigninResponse.js","../node_modules/oidc-client/src/SignoutRequest.js","../node_modules/oidc-client/src/SignoutResponse.js","../node_modules/oidc-client/src/OidcClient.js","../node_modules/oidc-client/src/RedirectNavigator.js","../node_modules/oidc-client/src/PopupWindow.js","../node_modules/oidc-client/src/PopupNavigator.js","../node_modules/oidc-client/src/IFrameWindow.js","../node_modules/oidc-client/src/IFrameNavigator.js","../node_modules/oidc-client/src/UserManagerSettings.js","../node_modules/oidc-client/src/User.js","../node_modules/oidc-client/src/Event.js","../node_modules/oidc-client/src/Timer.js","../node_modules/oidc-client/src/AccessTokenEvents.js","../node_modules/oidc-client/src/UserManagerEvents.js","../node_modules/oidc-client/src/SilentRenewService.js","../node_modules/oidc-client/src/CheckSessionIFrame.js","../node_modules/oidc-client/src/SessionMonitor.js","../node_modules/oidc-client/src/TokenRevocationClient.js","../node_modules/oidc-client/src/UserManager.js","services/oidc/LMIAuthService.js","services/BaseService.ts","services/AnnouncementService.ts","../node_modules/@progress/kendo-data-query/dist/es/utils.js","../node_modules/@progress/kendo-data-query/dist/es/funcs.js","../node_modules/@progress/kendo-data-query/dist/es/filtering/filter-descriptor.interface.js","../node_modules/@progress/kendo-data-query/dist/es/accessor.js","../node_modules/@progress/kendo-data-query/dist/es/odata.operators.js","../node_modules/@progress/kendo-data-query/dist/es/mvc/operators.js","../node_modules/@progress/kendo-data-query/dist/es/filter-serialization.common.js","../node_modules/@progress/kendo-data-query/dist/es/mvc/deserialization.js","../node_modules/tslib/tslib.es6.mjs","../node_modules/@progress/kendo-data-query/dist/es/sorting/sort-array.operator.js","../node_modules/@progress/kendo-data-query/dist/es/filtering/operators.enum.js","../node_modules/@progress/kendo-data-query/dist/es/transducers.js","../node_modules/@progress/kendo-data-query/dist/es/grouping/aggregate.operators.js","../node_modules/@progress/kendo-data-query/dist/es/filtering/filter.operators.js","../node_modules/@progress/kendo-data-query/dist/es/filtering/filter-no-eval.js","../node_modules/@progress/kendo-data-query/dist/es/filtering/filter-expression.factory.js","../node_modules/@progress/kendo-data-query/dist/es/grouping/group.operators.js","../node_modules/@progress/kendo-data-query/dist/es/array.operators.js","../node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuItem.js","../node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuItemGroup.js","../node_modules/@progress/kendo-react-common/dist/es/classNames.js","../node_modules/@progress/kendo-react-common/dist/es/noop.js","../node_modules/dom-helpers/esm/addClass.js","../node_modules/dom-helpers/esm/removeClass.js","../node_modules/react-transition-group/esm/CSSTransition.js","../node_modules/@progress/kendo-react-animation/dist/es/util.js","../node_modules/@progress/kendo-react-animation/dist/es/AnimationChild.js","../node_modules/react-transition-group/esm/utils/ChildMapping.js","../node_modules/react-transition-group/esm/TransitionGroup.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@progress/kendo-licensing/dist/index.mjs","../node_modules/@progress/kendo-react-common/dist/es/validate-package.js","../node_modules/@progress/kendo-react-animation/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-animation/dist/es/Animation.js","../node_modules/@progress/kendo-react-animation/dist/es/Reveal.js","../node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuItemContent.js","../node_modules/@telerik/kendo-intl/dist/es/cldr/default-data.js","../node_modules/@telerik/kendo-intl/dist/es/common/is-string.js","../node_modules/@telerik/kendo-intl/dist/es/errors.js","../node_modules/@telerik/kendo-intl/dist/es/error-details.js","../node_modules/@telerik/kendo-intl/dist/es/cldr/info.js","../node_modules/@telerik/kendo-intl/dist/es/cldr/territory.js","../node_modules/@telerik/kendo-intl/dist/es/common/constants.js","../node_modules/@telerik/kendo-intl/dist/es/cldr/date-format-names.js","../node_modules/@telerik/kendo-intl/dist/es/cldr/parse-range-date.js","../node_modules/@telerik/kendo-intl/dist/es/cldr/currency.js","../node_modules/@telerik/kendo-intl/dist/es/cldr/constants.js","../node_modules/@telerik/kendo-intl/dist/es/cldr/first-day.js","../node_modules/@telerik/kendo-intl/dist/es/cldr/weekend-range.js","../node_modules/@telerik/kendo-intl/dist/es/common/is-negative-zero.js","../node_modules/@telerik/kendo-intl/dist/es/numbers/format-currency-symbol.js","../node_modules/@telerik/kendo-intl/dist/es/numbers/group-integer.js","../node_modules/@telerik/kendo-intl/dist/es/numbers/is-currency-style.js","../node_modules/@telerik/kendo-intl/dist/es/common/pad.js","../node_modules/@telerik/kendo-intl/dist/es/common/round.js","../node_modules/@telerik/kendo-intl/dist/es/numbers/standard-number-format.js","../node_modules/@telerik/kendo-intl/dist/es/numbers/utils.js","../node_modules/@telerik/kendo-intl/dist/es/numbers/custom-number-format.js","../node_modules/@telerik/kendo-intl/dist/es/numbers/format-options.js","../node_modules/@telerik/kendo-intl/dist/es/numbers/format-number.js","../node_modules/@telerik/kendo-intl/dist/es/common/is-number.js","../node_modules/@telerik/kendo-intl/dist/es/numbers/parse-number.js","../node_modules/@telerik/kendo-intl/dist/es/common/format-string.js","../node_modules/@telerik/kendo-intl/dist/es/dates/date-pattern.js","../node_modules/@telerik/kendo-intl/dist/es/dates/date-name-type.js","../node_modules/@telerik/kendo-intl/dist/es/dates/format-names.js","../node_modules/@telerik/kendo-intl/dist/es/common/is-date.js","../node_modules/@telerik/kendo-intl/dist/es/dates/constants.js","../node_modules/@telerik/kendo-intl/dist/es/dates/format-date.js","../node_modules/@telerik/kendo-intl/dist/es/dates/time-utils.js","../node_modules/@telerik/kendo-intl/dist/es/dates/parse-date.js","../node_modules/@telerik/kendo-intl/dist/es/dates/split-date-format.js","../node_modules/@telerik/kendo-intl/dist/es/format.js","../node_modules/@progress/kendo-react-intl/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-grid/dist/es/messages/index.js","../node_modules/@progress/kendo-react-intl/dist/es/Intl/IntlService.js","../node_modules/@telerik/kendo-intl/dist/es/cldr/date-field-name.js","../node_modules/@telerik/kendo-intl/dist/es/cldr/number-symbols.js","../node_modules/@progress/kendo-react-intl/dist/es/Localization/messages.js","../node_modules/@progress/kendo-react-intl/dist/es/Localization/LocalizationService.js","../node_modules/@progress/kendo-react-intl/dist/es/globalization/GlobalizationContext.js","../node_modules/@progress/kendo-react-intl/dist/es/intlUtils.js","../node_modules/@progress/kendo-react-grid/dist/es/filterCommon.js","../node_modules/@progress/kendo-react-labels/dist/es/messages/index.js","../node_modules/@progress/kendo-react-common/dist/es/getTabIndex.js","../node_modules/@progress/kendo-react-common/dist/es/keys.js","../node_modules/@progress/kendo-react-common/dist/es/hooks/usePropsContext.js","../node_modules/@progress/kendo-react-common/dist/es/hocs/withPropsContext.js","../node_modules/@progress/kendo-react-labels/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-labels/dist/es/FloatingLabel.js","../node_modules/@progress/kendo-react-popup/dist/es/animation.js","../node_modules/@progress/kendo-react-common/dist/es/canUseDOM.js","../node_modules/@progress/kendo-react-common/dist/es/contexts/ZIndexContext.js","../node_modules/@progress/kendo-popup-common/dist/es/align-point.js","../node_modules/@progress/kendo-popup-common/dist/es/align.js","../node_modules/@progress/kendo-popup-common/dist/es/collision.js","../node_modules/@progress/kendo-popup-common/dist/es/restrict-to-view.js","../node_modules/@progress/kendo-popup-common/dist/es/utils.js","../node_modules/@progress/kendo-popup-common/dist/es/owner-document.js","../node_modules/@progress/kendo-popup-common/dist/es/window.js","../node_modules/@progress/kendo-popup-common/dist/es/document.js","../node_modules/@progress/kendo-popup-common/dist/es/scrollbar-width.js","../node_modules/@progress/kendo-popup-common/dist/es/window-viewport.js","../node_modules/@progress/kendo-popup-common/dist/es/scroll-position.js","../node_modules/@progress/kendo-popup-common/dist/es/offset.js","../node_modules/@progress/kendo-popup-common/dist/es/element-scroll-position.js","../node_modules/@progress/kendo-popup-common/dist/es/offset-parent.js","../node_modules/@progress/kendo-popup-common/dist/es/offset-parent-scroll-position.js","../node_modules/@progress/kendo-popup-common/dist/es/parent-scroll-position.js","../node_modules/@progress/kendo-popup-common/dist/es/position.js","../node_modules/@progress/kendo-popup-common/dist/es/parents.js","../node_modules/@progress/kendo-popup-common/dist/es/siblings.js","../node_modules/@progress/kendo-popup-common/dist/es/dom-utils.js","../node_modules/@progress/kendo-popup-common/dist/es/add-scroll.js","../node_modules/@progress/kendo-popup-common/dist/es/bounding-offset.js","../node_modules/@progress/kendo-popup-common/dist/es/position-with-scroll.js","../node_modules/@progress/kendo-popup-common/dist/es/remove-scroll.js","../node_modules/@progress/kendo-popup-common/dist/es/sibling-container.js","../node_modules/@progress/kendo-popup-common/dist/es/align-element.js","../node_modules/@progress/kendo-popup-common/dist/es/position-element.js","../node_modules/@progress/kendo-react-popup/dist/es/util.js","../node_modules/@progress/kendo-react-popup/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-popup/dist/es/PopupWithoutContext.js","../node_modules/@progress/kendo-react-popup/dist/es/Popup.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/ListContainer.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/ListFilter.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/utils.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/ListDefaultItem.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/ListItem.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/messages/index.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/List.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/VirtualScroll.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/Navigation.js","../node_modules/@progress/kendo-react-common/dist/es/guid.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/DropDownBase.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/DropDownList/DropDownList.js","../node_modules/@progress/kendo-react-intl/dist/es/hooks/useInternationalization.js","../node_modules/@progress/kendo-react-intl/dist/es/hooks/useLocalization.js","../node_modules/@progress/kendo-react-common/dist/es/events/dispatchEvent.js","../node_modules/@progress/kendo-react-inputs/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-inputs/dist/es/messages/index.js","../node_modules/@progress/kendo-react-inputs/dist/es/numerictextbox/utils/index.js","../node_modules/@progress/kendo-react-inputs/dist/es/numerictextbox/NumericTextBox.js","../node_modules/@progress/kendo-date-math/dist/es/clone-date.js","../node_modules/@progress/kendo-date-math/dist/es/adjust-dst.js","../node_modules/@progress/kendo-date-math/dist/es/create-date.js","../node_modules/@progress/kendo-date-math/dist/es/get-date.js","../node_modules/@progress/kendo-react-common/dist/es/hocs/AsyncFocusBlur.js","../node_modules/@progress/kendo-react-common/dist/es/hooks/useAsyncFocusBlur.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/package-metadata.js","../node_modules/@progress/kendo-date-math/dist/es/is-equal.js","../node_modules/@progress/kendo-date-math/dist/es/add-days.js","../node_modules/@progress/kendo-date-math/dist/es/last-day-of-month.js","../node_modules/@progress/kendo-date-math/dist/es/add-months.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/dateinput/models/mask.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/dateinput/utils.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/dateinput/models/kendo-date.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/models/SelectionRange.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/utils.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/messages/index.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/utils.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/models/TimePart.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/defaults.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/dateinput/DateInput.js","../node_modules/@progress/kendo-date-math/dist/es/is-equal-date.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/virtualization/Virtualization.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/virtualization/services/RowHeightService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/virtualization/services/ScrollerService.js","../node_modules/@progress/kendo-date-math/dist/es/day.enum.js","../node_modules/@progress/kendo-date-math/dist/es/direction.enum.js","../node_modules/@progress/kendo-date-math/dist/es/day-of-week.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/models/CalendarViewEnum.js","../node_modules/@progress/kendo-date-math/dist/es/week-in-year.js","../node_modules/@progress/kendo-date-math/dist/es/prev-day-of-week.js","../node_modules/@progress/kendo-date-math/dist/es/constants.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/CalendarCell.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/CalendarWeekCell.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/WeekNamesService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/View.js","../node_modules/@progress/kendo-react-buttons/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-buttons/dist/es/util.js","../node_modules/@progress/kendo-react-buttons/dist/es/Button.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/CalendarHeaderTitle.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/Header.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/TodayCommand.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/ViewList.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/CalendarNavigationItem.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/models/NavigationAction.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/CenturyViewService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/Navigation.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/DOMService.js","../node_modules/@progress/kendo-date-math/dist/es/set-year.js","../node_modules/@progress/kendo-date-math/dist/es/add-years.js","../node_modules/@progress/kendo-date-math/dist/es/add-decades.js","../node_modules/@progress/kendo-date-math/dist/es/add-centuries.js","../node_modules/@progress/kendo-date-math/dist/es/normalize-year.js","../node_modules/@progress/kendo-date-math/dist/es/first-decade-of-century.js","../node_modules/@progress/kendo-date-math/dist/es/last-decade-of-century.js","../node_modules/@progress/kendo-date-math/dist/es/first-year-of-decade.js","../node_modules/@progress/kendo-date-math/dist/es/duration-in-centuries.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/DecadeViewService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/MonthViewService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/YearViewService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/BusViewService.js","../node_modules/@progress/kendo-date-math/dist/es/last-year-of-decade.js","../node_modules/@progress/kendo-date-math/dist/es/duration-in-decades.js","../node_modules/@progress/kendo-date-math/dist/es/add-weeks.js","../node_modules/@progress/kendo-date-math/dist/es/first-day-of-month.js","../node_modules/@progress/kendo-date-math/dist/es/duration-in-months.js","../node_modules/@progress/kendo-date-math/dist/es/set-month.js","../node_modules/@progress/kendo-date-math/dist/es/first-month-of-year.js","../node_modules/@progress/kendo-date-math/dist/es/last-month-of-year.js","../node_modules/@progress/kendo-date-math/dist/es/duration-in-years.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/NavigationService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/ScrollSyncService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/Calendar.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/datepicker/ToggleButton.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/common/PickerWrap.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/hooks/usePickerFloatingLabel.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/datepicker/DatePicker.js","../node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuFilterCell.js","../node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuFilterUI.js","../node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuFilter.js","../node_modules/@progress/kendo-react-common/dist/es/browser-support.service.js","../node_modules/@progress/kendo-react-common/dist/es/scrollbarWidth.js","../node_modules/@progress/kendo-react-common/dist/es/constants/index.js","../node_modules/@progress/kendo-react-common/dist/es/getter.js","../node_modules/@progress/kendo-react-data-tools/dist/es/navigation/constants.js","../node_modules/@progress/kendo-react-common/dist/es/fieldList.js","../node_modules/@progress/kendo-react-data-tools/dist/es/navigation/utils.js","../node_modules/@progress/kendo-react-data-tools/dist/es/navigation/TableKeyboardNavigation.js","../node_modules/@progress/kendo-react-data-tools/dist/es/selection/constants.js","../node_modules/@progress/kendo-react-data-tools/dist/es/selection/utils.js","../node_modules/@progress/kendo-react-common/dist/es/hasRelativeStackingContext.js","../node_modules/@progress/kendo-react-data-tools/dist/es/header/utils/index.js","../node_modules/@progress/kendo-react-data-tools/dist/es/pager/PagerNumericButtons.js","../node_modules/@progress/kendo-react-data-tools/dist/es/messages/index.js","../node_modules/@progress/kendo-react-data-tools/dist/es/pager/PagerInput.js","../node_modules/@progress/kendo-react-data-tools/dist/es/pager/PagerPageSizes.js","../node_modules/@progress/kendo-react-data-tools/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-data-tools/dist/es/pager/Pager.js","../node_modules/@progress/kendo-react-data-tools/dist/es/navigation/TableKeyboardNavigationContext.js","../node_modules/@progress/kendo-draggable-common/dist/es/algorithms/intersect.js","../node_modules/@progress/kendo-draggable-common/dist/es/drag-n-drop.js","../node_modules/@progress/kendo-draggable-common/dist/es/utils/index.js","../node_modules/@progress/kendo-draggable-common/dist/es/auto-scroll.js","../node_modules/@progress/kendo-react-common/dist/es/hooks/useInheritedState.js","../node_modules/@progress/kendo-react-common/dist/es/drag-n-drop/context/index.js","../node_modules/@progress/kendo-react-common/dist/es/Draggable.js","../node_modules/@progress/kendo-react-common/dist/es/hooks/useDraggable.js","../node_modules/@progress/kendo-react-data-tools/dist/es/selection/TableSelection.js","../node_modules/@progress/kendo-react-data-tools/dist/es/drag/DropClue.js","../node_modules/@progress/kendo-react-data-tools/dist/es/drag/DragClue.js","../node_modules/@progress/kendo-react-grid/dist/es/GridColumn.js","../node_modules/@progress/kendo-react-grid/dist/es/utils/index.js","../node_modules/@progress/kendo-react-data-tools/dist/es/navigation/hooks.js","../node_modules/@progress/kendo-react-grid/dist/es/cells/GridSelectionCell.js","../node_modules/@progress/kendo-react-grid/dist/es/cells/GridHierarchyCell.js","../node_modules/@progress/kendo-react-grid/dist/es/constants/index.js","../node_modules/@progress/kendo-react-grid/dist/es/cells/GridEditCell.js","../node_modules/@progress/kendo-react-grid/dist/es/header/Header.js","../node_modules/@progress/kendo-react-grid/dist/es/drag/ColumnResizer.js","../node_modules/@progress/kendo-react-grid/dist/es/drag/ColumnDraggable.js","../node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuWrapper.js","../node_modules/@progress/kendo-react-grid/dist/es/header/GridHeaderCell.js","../node_modules/@progress/kendo-react-data-tools/dist/es/header/HeaderThElement.js","../node_modules/@progress/kendo-react-grid/dist/es/header/HeaderRow.js","../node_modules/@progress/kendo-react-grid/dist/es/interfaces/GridSortSettings.js","../node_modules/@progress/kendo-react-grid/dist/es/cells/GridFilterCell.js","../node_modules/@progress/kendo-react-grid/dist/es/header/FilterRow.js","../node_modules/@progress/kendo-react-grid/dist/es/drag/GroupingIndicator.js","../node_modules/@progress/kendo-react-grid/dist/es/header/GroupPanel.js","../node_modules/@progress/kendo-react-grid/dist/es/footer/Footer.js","../node_modules/@progress/kendo-react-grid/dist/es/VirtualScroll.js","../node_modules/@progress/kendo-react-grid/dist/es/drag/ColumnResize.js","../node_modules/@progress/kendo-react-grid/dist/es/drag/CommonDragLogic.js","../node_modules/@progress/kendo-react-grid/dist/es/cells/GridCell.js","../node_modules/@progress/kendo-react-grid/dist/es/cells/GridGroupCell.js","../node_modules/@progress/kendo-react-grid/dist/es/rows/GridRow.js","../node_modules/@progress/kendo-react-grid/dist/es/header/GridHeaderSelectionCell.js","../node_modules/@progress/kendo-react-grid/dist/es/GridNoRecords.js","../node_modules/@progress/kendo-react-grid/dist/es/footer/FooterRow.js","../node_modules/dom-helpers/esm/scrollbarSize.js","../node_modules/@progress/kendo-react-grid/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-grid/dist/es/cells/GridDetailCell.js","../node_modules/@progress/kendo-react-grid/dist/es/cells/GridDetailHierarchyCell.js","../node_modules/@progress/kendo-react-grid/dist/es/Grid.js","../node_modules/@progress/kendo-react-data-tools/dist/es/virtualization/columns.js","../node_modules/@progress/kendo-react-grid/dist/es/paging/GridPagerSettings.js","../node_modules/@restart/hooks/esm/useWillUnmount.js","../node_modules/@restart/hooks/esm/useUpdatedRef.js","../node_modules/dom-helpers/esm/activeElement.js","../node_modules/dom-helpers/esm/isWindow.js","../node_modules/dom-helpers/esm/isDocument.js","../node_modules/react-overlays/esm/isOverflowing.js","../node_modules/react-overlays/esm/manageAriaHidden.js","../node_modules/react-overlays/esm/ModalManager.js","../node_modules/react-overlays/esm/useWaitForDOMRef.js","../node_modules/react-overlays/esm/Modal.js","../node_modules/react-bootstrap/esm/BootstrapModalManager.js","../node_modules/react-bootstrap/esm/Fade.js","../node_modules/react-bootstrap/esm/ModalBody.js","../node_modules/react-bootstrap/esm/ModalContext.js","../node_modules/react-bootstrap/esm/ModalDialog.js","../node_modules/react-bootstrap/esm/ModalFooter.js","../node_modules/react-bootstrap/esm/CloseButton.js","../node_modules/react-bootstrap/esm/ModalHeader.js","../node_modules/react-bootstrap/esm/divWithClassName.js","../node_modules/react-bootstrap/esm/ModalTitle.js","../node_modules/react-bootstrap/esm/Modal.js","../node_modules/react-bootstrap/esm/Feedback.js","../node_modules/react-bootstrap/esm/FormContext.js","../node_modules/react-bootstrap/esm/FormCheckInput.js","../node_modules/react-bootstrap/esm/FormCheckLabel.js","../node_modules/react-bootstrap/esm/FormCheck.js","../node_modules/react-bootstrap/esm/FormFileInput.js","../node_modules/react-bootstrap/esm/FormFileLabel.js","../node_modules/react-bootstrap/esm/FormFile.js","../node_modules/react-bootstrap/esm/FormControl.js","../node_modules/react-bootstrap/esm/FormGroup.js","../node_modules/react-bootstrap/esm/FormLabel.js","../node_modules/react-bootstrap/esm/FormText.js","../node_modules/react-bootstrap/esm/Switch.js","../node_modules/react-bootstrap/esm/Form.js","services/Utility.ts","components/adminManagement/announcementManagement/AnnouncementManage.tsx","components/announcement/AnnouncementDisplay.tsx","../node_modules/@progress/kendo-charts/dist/es/common/constants.js","../node_modules/@progress/kendo-charts/dist/es/common/is-array.js","../node_modules/@progress/kendo-charts/dist/es/common/add-class.js","../node_modules/@progress/kendo-charts/dist/es/common/remove-class.js","../node_modules/@progress/kendo-drawing/dist/es/util/defined.js","../node_modules/@progress/kendo-charts/dist/es/common/align-path-to-pixel.js","../node_modules/@progress/kendo-charts/dist/es/common/clockwise.js","../node_modules/@progress/kendo-charts/dist/es/common/is-number.js","../node_modules/@progress/kendo-charts/dist/es/common/is-string.js","../node_modules/@progress/kendo-charts/dist/es/common/convertable-to-number.js","../node_modules/@progress/kendo-charts/dist/es/common/is-function.js","../node_modules/@progress/kendo-charts/dist/es/common/deep-extend.js","../node_modules/@progress/kendo-charts/dist/es/common/is-object.js","../node_modules/@progress/kendo-charts/dist/es/common/style-value.js","../node_modules/@progress/kendo-charts/dist/es/common/element-styles.js","../node_modules/@progress/kendo-charts/dist/es/common/get-spacing.js","../node_modules/@progress/kendo-charts/dist/es/services/template-service.js","../node_modules/@progress/kendo-charts/dist/es/common/get-template.js","../node_modules/@progress/kendo-charts/dist/es/common/getter.js","../node_modules/@progress/kendo-charts/dist/es/common/grep.js","../node_modules/@progress/kendo-charts/dist/es/common/has-classes.js","../node_modules/@progress/kendo-charts/dist/es/common/hash-map.js","../node_modules/@progress/kendo-charts/dist/es/common/in-array.js","../node_modules/@progress/kendo-drawing/dist/es/util/round.js","../node_modules/@progress/kendo-charts/dist/es/common/interpolate-value.js","../node_modules/@progress/kendo-charts/dist/es/common/instance-observer.js","../node_modules/@progress/kendo-charts/dist/es/common/map.js","../node_modules/@progress/kendo-drawing/dist/es/common/support.js","../node_modules/@progress/kendo-charts/dist/es/common/mousewheel-delta.js","../node_modules/@progress/kendo-drawing/dist/es/common/class.js","../node_modules/@progress/kendo-drawing/dist/es/common/log-to-console.js","../node_modules/@progress/kendo-drawing/dist/es/util/append.js","../node_modules/@progress/kendo-drawing/dist/es/util/arabic-to-roman.js","../node_modules/@progress/kendo-drawing/dist/es/util/create-promise.js","../node_modules/@progress/kendo-drawing/dist/es/util/definition-id.js","../node_modules/@progress/kendo-drawing/dist/es/util/constants.js","../node_modules/@progress/kendo-drawing/dist/es/util/deg.js","../node_modules/@progress/kendo-drawing/dist/es/util/encode-utf.js","../node_modules/@progress/kendo-drawing/dist/es/util/encode-base64.js","../node_modules/@progress/kendo-drawing/dist/es/util/event-coordinates.js","../node_modules/@progress/kendo-drawing/dist/es/util/event-element.js","../node_modules/@progress/kendo-drawing/dist/es/util/is-transparent.js","../node_modules/@progress/kendo-drawing/dist/es/util/last.js","../node_modules/@progress/kendo-drawing/dist/es/util/limit-value.js","../node_modules/@progress/kendo-drawing/dist/es/util/merge-sort.js","../node_modules/@progress/kendo-drawing/dist/es/util/now.js","../node_modules/@progress/kendo-drawing/dist/es/util/promise-all.js","../node_modules/@progress/kendo-drawing/dist/es/util/rad.js","../node_modules/@progress/kendo-drawing/dist/es/util/value-or-default.js","../node_modules/@progress/kendo-drawing/dist/es/util/bind-events.js","../node_modules/@progress/kendo-drawing/dist/es/util/element-offset.js","../node_modules/@progress/kendo-drawing/dist/es/util/element-styles.js","../node_modules/@progress/kendo-drawing/dist/es/util/element-size.js","../node_modules/@progress/kendo-drawing/dist/es/util/unbind-events.js","../node_modules/@progress/kendo-drawing/dist/es/util/element-padding.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/matrix.js","../node_modules/@progress/kendo-drawing/dist/es/util/element-scale.js","../node_modules/@progress/kendo-drawing/dist/es/text-metrics/lru-cache.js","../node_modules/@progress/kendo-drawing/dist/es/text-metrics/util.js","../node_modules/@progress/kendo-drawing/dist/es/text-metrics/text-metrics.js","../node_modules/@progress/kendo-drawing/dist/es/text-metrics/measure-text.js","../node_modules/@progress/kendo-charts/dist/es/drawing-utils.js","../node_modules/@progress/kendo-charts/dist/es/common/font-loader.js","../node_modules/@progress/kendo-charts/dist/es/common/set-default-options.js","../node_modules/@progress/kendo-charts/dist/es/common/render-icon.js","../node_modules/@progress/kendo-charts/dist/es/common/is-plain-object.js","../node_modules/@progress/kendo-charts/dist/es/common/sparse-array-limits.js","../node_modules/@progress/kendo-charts/dist/es/common/find.js","../node_modules/@progress/kendo-charts/dist/es/common/element-scale.js","../node_modules/@progress/kendo-drawing/dist/es/common/color/named-colors.js","../node_modules/@progress/kendo-drawing/dist/es/common/color/parse-color.js","../node_modules/@progress/kendo-drawing/dist/es/common/color/color.js","../node_modules/@progress/kendo-charts/dist/es/common/auto-text-color.js","../node_modules/@progress/kendo-charts/dist/es/common/create-hash-set.js","../node_modules/@progress/kendo-charts/dist/es/common/default-error-handler.js","../node_modules/@progress/kendo-charts/dist/es/common/keys.js","../node_modules/@progress/kendo-charts/dist/es/core/utils/auto-major-unit.js","../node_modules/@progress/kendo-charts/dist/es/core/point.js","../node_modules/@progress/kendo-drawing/dist/es/core/has-observers.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/with-accessors.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/to-matrix.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/point.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/size.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/rect.js","../node_modules/@progress/kendo-charts/dist/es/core/box.js","../node_modules/@progress/kendo-charts/dist/es/core/ring.js","../node_modules/@progress/kendo-charts/dist/es/core/sector.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/constants.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/close.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/close-or-less.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/ellipse-extreme-angles.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/transformation.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/transform.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/arc.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/line-intersection.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/elements-array.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/geometry-elements-array.js","../node_modules/@progress/kendo-drawing/dist/es/core/options-store.js","../node_modules/@progress/kendo-drawing/dist/es/core/constants.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/element.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/is-out-of-end-point.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/calculate-curve-at.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/to-cubic-polynomial.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/complex-number.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/solve-cubic-equation.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/has-roots-in-range.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/line-intersections-count.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/with-points.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/segment.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/curve-intersections-count.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/utils/points-to-curve.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/paintable.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/measurable.js","../node_modules/@progress/kendo-drawing/dist/es/parsing/shape-map.js","../node_modules/@progress/kendo-drawing/dist/es/parsing/parse-path.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/utils/elements-bounding-box.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/utils/elements-clippend-bounding-box.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/path.js","../node_modules/@progress/kendo-charts/dist/es/core/shape-builder.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/circle.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/with-geometry.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/circle.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/traversable.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/group.js","../node_modules/@progress/kendo-drawing/dist/es/animations/easing-functions.js","../node_modules/@progress/kendo-drawing/dist/es/common/animation-frame.js","../node_modules/@progress/kendo-drawing/dist/es/animations/animation-factory.js","../node_modules/@progress/kendo-drawing/dist/es/animations/animation.js","../node_modules/@progress/kendo-charts/dist/es/core/chart-element.js","../node_modules/@progress/kendo-charts/dist/es/core/box-element.js","../node_modules/@progress/kendo-charts/dist/es/core/shape-element.js","../node_modules/@progress/kendo-drawing/dist/es/gradients/stops-array.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/with-options.js","../node_modules/@progress/kendo-drawing/dist/es/gradients/gradient-stop.js","../node_modules/@progress/kendo-drawing/dist/es/gradients/gradient.js","../node_modules/@progress/kendo-drawing/dist/es/gradients/linear-gradient.js","../node_modules/@progress/kendo-drawing/dist/es/gradients/radial-gradient.js","../node_modules/@progress/kendo-charts/dist/es/core/gradients.js","../node_modules/@progress/kendo-charts/dist/es/core/utils/box-diff.js","../node_modules/@progress/kendo-charts/dist/es/core/root-element.js","../node_modules/@progress/kendo-charts/dist/es/core/float-element.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/text.js","../node_modules/@progress/kendo-charts/dist/es/core/text.js","../node_modules/@progress/kendo-charts/dist/es/core/utils/rect-to-box.js","../node_modules/@progress/kendo-charts/dist/es/core/text-box.js","../node_modules/@progress/kendo-charts/dist/es/core/title.js","../node_modules/@progress/kendo-charts/dist/es/core/axis-label.js","../node_modules/@progress/kendo-charts/dist/es/core/note.js","../node_modules/@progress/kendo-charts/dist/es/services/intl-service.js","../node_modules/@progress/kendo-charts/dist/es/services/format-service.js","../node_modules/@progress/kendo-charts/dist/es/services/chart-service.js","../node_modules/@progress/kendo-charts/dist/es/services/dom-events-builder.js","../node_modules/@progress/kendo-charts/dist/es/core/utils/create-axis-tick.js","../node_modules/@progress/kendo-charts/dist/es/core/utils/create-axis-grid-line.js","../node_modules/@progress/kendo-charts/dist/es/core/axis.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/constants.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/absolute-date-diff.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/add-ticks.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/to-date.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/add-duration.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/start-of-week.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/floor-date.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/ceil-date.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/date-comparer.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/date-diff.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/to-time.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/date-equals.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/date-index.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/duration.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/parse-date.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/parse-dates.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/first-day.js","../node_modules/@progress/kendo-charts/dist/es/core/category-axis.js","../node_modules/@progress/kendo-charts/dist/es/core/constants.js","../node_modules/@progress/kendo-charts/dist/es/core/date-category-axis.js","../node_modules/@progress/kendo-charts/dist/es/core/utils/floor.js","../node_modules/@progress/kendo-charts/dist/es/core/utils/ceil.js","../node_modules/@progress/kendo-charts/dist/es/core/utils/limit-coordinate.js","../node_modules/@progress/kendo-charts/dist/es/core/numeric-axis.js","../node_modules/@progress/kendo-charts/dist/es/core/utils/auto-axis-min.js","../node_modules/@progress/kendo-charts/dist/es/core/utils/auto-axis-max.js","../node_modules/@progress/kendo-charts/dist/es/core/date-value-axis.js","../node_modules/@progress/kendo-charts/dist/es/core/logarithmic-axis.js","../node_modules/@progress/kendo-charts/dist/es/core/mixins/grid-lines-mixin.js","../node_modules/@progress/kendo-charts/dist/es/core/radar-category-axis.js","../node_modules/@progress/kendo-charts/dist/es/core/polar-axis.js","../node_modules/@progress/kendo-charts/dist/es/core/mixins/radar-numeric-axis-mixin.js","../node_modules/@progress/kendo-charts/dist/es/core/radar-numeric-axis.js","../node_modules/@progress/kendo-charts/dist/es/core/radar-logarithmic-axis.js","../node_modules/@progress/kendo-charts/dist/es/core/curve-processor.js","../node_modules/@progress/kendo-charts/dist/es/chart/api-elements/chart-axis.js","../node_modules/@progress/kendo-charts/dist/es/chart/api-elements/find-axis-by-name.js","../node_modules/@progress/kendo-charts/dist/es/chart/api-elements/chart-pane.js","../node_modules/@progress/kendo-charts/dist/es/chart/api-elements/chart-plotarea.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/count-numbers.js","../node_modules/@progress/kendo-charts/dist/es/chart/aggregates/aggregates.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/get-field.js","../node_modules/@progress/kendo-charts/dist/es/chart/series-binder.js","../node_modules/@progress/kendo-charts/dist/es/chart/error-bars/error-range-calculator.js","../node_modules/@progress/kendo-charts/dist/es/chart/constants.js","../node_modules/@progress/kendo-charts/dist/es/chart/error-bars/error-bar-base.js","../node_modules/@progress/kendo-charts/dist/es/chart/error-bars/categorical-error-bar.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/any-has-z-index.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/append-if-not-null.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/are-numbers.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/segment-visible.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/bind-segments.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/categories-count.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/equals-ignore-case.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/eval-options.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/filter-series-by-type.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/get-date-field.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/has-gradient-overlay.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/has-value.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/is-date-axis.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/single-item-or-array.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/create-out-of-range-points.js","../node_modules/@progress/kendo-charts/dist/es/chart/categorical-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/mixins/point-events-mixin.js","../node_modules/@progress/kendo-charts/dist/es/chart/mixins/note-mixin.js","../node_modules/@progress/kendo-charts/dist/es/chart/line-chart/line-point.js","../node_modules/@progress/kendo-charts/dist/es/chart/line-chart/line-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/line-chart/step-line-mixin.js","../node_modules/@progress/kendo-charts/dist/es/chart/line-chart/step-line-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/line-chart/spline-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/mixins/line-chart-mixin.js","../node_modules/@progress/kendo-charts/dist/es/chart/animations/clip-animation.js","../node_modules/@progress/kendo-charts/dist/es/chart/mixins/clip-animation-mixin.js","../node_modules/@progress/kendo-charts/dist/es/chart/line-chart/line-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/area-chart/area-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/area-chart/step-area-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/area-chart/spline-area-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/area-chart/area-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/axis-group-range-tracker.js","../node_modules/@progress/kendo-charts/dist/es/chart/bar-chart/bar-label.js","../node_modules/@progress/kendo-charts/dist/es/chart/bar-chart/bar.js","../node_modules/@progress/kendo-charts/dist/es/chart/layout/utils.js","../node_modules/@progress/kendo-charts/dist/es/chart/layout/cluster-layout.js","../node_modules/@progress/kendo-charts/dist/es/chart/layout/stack-wrap.js","../node_modules/@progress/kendo-charts/dist/es/chart/bar-chart/bar-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/candlestick-chart/candlestick.js","../node_modules/@progress/kendo-charts/dist/es/chart/candlestick-chart/candlestick-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/box-plot-chart/box-plot.js","../node_modules/@progress/kendo-charts/dist/es/chart/box-plot-chart/vertical-box-plot.js","../node_modules/@progress/kendo-charts/dist/es/chart/box-plot-chart/box-plot-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/error-bars/scatter-error-bar.js","../node_modules/@progress/kendo-charts/dist/es/chart/scatter-charts/scatter-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/bubble-chart/bubble.js","../node_modules/@progress/kendo-charts/dist/es/chart/bubble-chart/bubble-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/bullet-chart/target.js","../node_modules/@progress/kendo-charts/dist/es/chart/bullet-chart/bullet.js","../node_modules/@progress/kendo-charts/dist/es/chart/bullet-chart/bullet-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/tooltip/base-tooltip.js","../node_modules/@progress/kendo-charts/dist/es/chart/crosshair/crosshair-tooltip.js","../node_modules/@progress/kendo-charts/dist/es/chart/crosshair/crosshair.js","../node_modules/@progress/kendo-charts/dist/es/chart/chart-container.js","../node_modules/@progress/kendo-charts/dist/es/chart/pane.js","../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/plotarea-base.js","../node_modules/@progress/kendo-charts/dist/es/chart/mixins/plotarea-events-mixin.js","../node_modules/@progress/kendo-charts/dist/es/chart/aggregates/series-aggregator.js","../node_modules/@progress/kendo-charts/dist/es/chart/aggregates/default-aggregates.js","../node_modules/@progress/kendo-charts/dist/es/chart/range-bar-chart/range-bar.js","../node_modules/@progress/kendo-charts/dist/es/chart/range-bar-chart/range-bar-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/range-area-chart/range-line-point.js","../node_modules/@progress/kendo-charts/dist/es/chart/range-area-chart/range-area-point.js","../node_modules/@progress/kendo-charts/dist/es/chart/range-area-chart/range-area-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/range-area-chart/spline-range-area-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/range-area-chart/step-range-area-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/range-area-chart/range-area-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/ohlc-chart/ohlc-point.js","../node_modules/@progress/kendo-charts/dist/es/chart/ohlc-chart/ohlc-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/waterfall-chart/waterfall-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/waterfall-chart/waterfall-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/trendline-factory.js","../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/calculate-slope.js","../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/linear-trendline.js","../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/calculate-moving-average.js","../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/moving-average.js","../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/trendline-registry.js","../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/categorical-plotarea.js","../node_modules/@progress/kendo-drawing/dist/es/common/observable.js","../node_modules/@progress/kendo-drawing/dist/es/core/surface.js","../node_modules/@progress/kendo-drawing/dist/es/core/base-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/utils/render-attribute.js","../node_modules/@progress/kendo-drawing/dist/es/svg/utils/render-all-attributes.js","../node_modules/@progress/kendo-drawing/dist/es/svg/utils/render-style.js","../node_modules/@progress/kendo-drawing/dist/es/svg/node-map.js","../node_modules/@progress/kendo-common/dist/es/util.js","../node_modules/@progress/kendo-common/dist/es/support.js","../node_modules/@progress/kendo-common/dist/es/accessors/getter.js","../node_modules/@progress/kendo-common/dist/es/parse-style.js","../node_modules/@progress/kendo-drawing/dist/es/util/element-set-styles-safe.js","../node_modules/@progress/kendo-drawing/dist/es/svg/constants.js","../node_modules/@progress/kendo-drawing/dist/es/svg/utils/render-svg.js","../node_modules/@progress/kendo-drawing/dist/es/common/html-encode.js","../node_modules/@progress/kendo-drawing/dist/es/svg/node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/gradient-stop-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/gradient-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/linear-gradient-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/radial-gradient-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/pattern-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/clip-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/definition-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/root-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/path-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/arc-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/circle-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/group-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/image-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/multi-path-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/rect-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/text-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/surface.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/node-map.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/group-node.js","../node_modules/@progress/kendo-drawing/dist/es/common/throttle.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/root-node.js","../node_modules/@progress/kendo-drawing/dist/es/search/quad-root.js","../node_modules/@progress/kendo-drawing/dist/es/search/quad-node.js","../node_modules/@progress/kendo-drawing/dist/es/search/shapes-quad-tree.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/surface-cursor.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/utils/render-path.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/path-node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/arc-node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/circle-node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/image-node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/multi-path-node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/rect-node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/text-node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/surface.js","../node_modules/@progress/kendo-drawing/dist/es/surface-factory.js","../node_modules/@progress/kendo-drawing/dist/es/surface.js","../node_modules/@progress/kendo-charts/dist/es/chart/highlight.js","../node_modules/@progress/kendo-charts/dist/es/chart/pan-and-zoom/accept-key.js","../node_modules/@progress/kendo-charts/dist/es/chart/pan-and-zoom/to-chart-axis-ranges.js","../node_modules/@progress/kendo-charts/dist/es/chart/pan-and-zoom/pannable.js","../node_modules/@progress/kendo-charts/dist/es/chart/pan-and-zoom/zoom-selection.js","../node_modules/@progress/kendo-charts/dist/es/chart/pan-and-zoom/mousewheel-zoom.js","../node_modules/@progress/kendo-drawing/dist/es/alignment/align-start.js","../node_modules/@progress/kendo-drawing/dist/es/alignment/align-start-reverse.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/layout.js","../node_modules/@progress/kendo-drawing/dist/es/alignment/translate-to-point.js","../node_modules/@progress/kendo-charts/dist/es/chart/legend/legend-layout.js","../node_modules/@progress/kendo-charts/dist/es/chart/legend/legend-item.js","../node_modules/@progress/kendo-charts/dist/es/chart/legend/legend.js","../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/plotarea-factory.js","../node_modules/@progress/kendo-charts/dist/es/chart/selection.js","../node_modules/@progress/kendo-charts/dist/es/chart/tooltip/tooltip.js","../node_modules/@progress/kendo-charts/dist/es/chart/tooltip/shared-tooltip.js","../node_modules/@progress/kendo-charts/dist/es/chart/animations/bar-chart-animation.js","../node_modules/@progress/kendo-charts/dist/es/chart/animations/bubble-animation.js","../node_modules/@progress/kendo-charts/dist/es/chart/animations/fade-in-animation.js","../node_modules/@progress/kendo-charts/dist/es/chart/animations/pie-animation.js","../node_modules/@progress/kendo-charts/dist/es/chart/scatter-charts/scatter-line-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/scatter-value-getter.js","../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/scatter-linear-trendline.js","../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/scatter-moving-average.js","../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/scatter-trendline-registry.js","../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/xy-plotarea.js","../node_modules/@progress/kendo-charts/dist/es/chart/pie-chart/pie-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/mixins/pie-chart-mixin.js","../node_modules/@progress/kendo-charts/dist/es/chart/pie-chart/pie-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/pie-plotarea.js","../node_modules/@progress/kendo-charts/dist/es/chart/donut-chart/donut-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/donut-chart/donut-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/donut-plotarea.js","../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/polar-plotarea-base.js","../node_modules/@progress/kendo-charts/dist/es/chart/polar-scatter-chart/polar-scatter-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/polar-line-chart/polar-line-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/polar-area-chart/spline-polar-area-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/polar-area-chart/polar-area-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/polar-area-chart/polar-area-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/polar-plotarea.js","../node_modules/@progress/kendo-charts/dist/es/chart/radar-line-chart/radar-line-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/radar-area-chart/spline-radar-area-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/radar-area-chart/radar-area-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/radar-area-chart/radar-area-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/radar-bar-chart/radar-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/layout/radar-cluster-layout.js","../node_modules/@progress/kendo-charts/dist/es/chart/layout/radar-stack-layout.js","../node_modules/@progress/kendo-charts/dist/es/chart/radar-bar-chart/radar-bar-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/radar-plotarea.js","../node_modules/@progress/kendo-charts/dist/es/chart/funnel-chart/funnel-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/funnel-chart/funnel-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/funnel-chart/pyramid-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/funnel-plotarea.js","../node_modules/@progress/kendo-charts/dist/es/chart/heatmap-chart/color-scale.js","../node_modules/@progress/kendo-charts/dist/es/chart/heatmap-chart/heatmap-point.js","../node_modules/@progress/kendo-charts/dist/es/chart/heatmap-chart/heatmap-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/heatmap-plotarea.js","../node_modules/@progress/kendo-charts/dist/es/chart/register-charts.js","../node_modules/@progress/kendo-charts/dist/es/chart/chart.js","../node_modules/@progress/kendo-charts/dist/es/sparkline/shared-tooltip.js","../node_modules/@progress/kendo-charts/dist/es/sparkline/sparkline.js","../node_modules/@progress/kendo-charts/dist/es/stock/fade-out-animation.js","../node_modules/@progress/kendo-charts/dist/es/stock/navigator-hint.js","../node_modules/@progress/kendo-charts/dist/es/stock/constants.js","../node_modules/@progress/kendo-charts/dist/es/stock/navigator.js","../node_modules/@progress/kendo-charts/dist/es/stock/stock-chart.js","../node_modules/@progress/kendo-charts/dist/es/gauges/constants.js","../node_modules/@progress/kendo-charts/dist/es/gauges/utils/pad.js","../node_modules/@progress/kendo-charts/dist/es/gauges/utils/build-label-element.js","../node_modules/@progress/kendo-charts/dist/es/gauges/utils/get-range.js","../node_modules/@progress/kendo-charts/dist/es/gauges/utils/unpad.js","../node_modules/@progress/kendo-charts/dist/es/gauges/gauge.js","../node_modules/@progress/kendo-charts/dist/es/gauges/linear/linear-scale.js","../node_modules/@progress/kendo-charts/dist/es/gauges/pointer.js","../node_modules/@progress/kendo-charts/dist/es/gauges/linear/linear-pointer.js","../node_modules/@progress/kendo-charts/dist/es/gauges/linear/arrow-linear-pointer-animation.js","../node_modules/@progress/kendo-charts/dist/es/gauges/linear/arrow-linear-pointer.js","../node_modules/@progress/kendo-charts/dist/es/gauges/linear/bar-linear-pointer-animation.js","../node_modules/@progress/kendo-charts/dist/es/gauges/linear/bar-linear-pointer.js","../node_modules/@progress/kendo-charts/dist/es/gauges/linear/linear-gauge.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/arc.js","../node_modules/@progress/kendo-charts/dist/es/gauges/radial/radial-scale.js","../node_modules/@progress/kendo-charts/dist/es/gauges/radial/radial-pointer-animation.js","../node_modules/@progress/kendo-charts/dist/es/gauges/radial/radial-pointer.js","../node_modules/@progress/kendo-charts/dist/es/gauges/radial/radial-gauge.js","../node_modules/@progress/kendo-charts/dist/es/gauges/arc/arc-scale.js","../node_modules/@progress/kendo-charts/dist/es/gauges/arc/range-pointer-animation.js","../node_modules/@progress/kendo-charts/dist/es/gauges/arc/range-pointer.js","../node_modules/@progress/kendo-charts/dist/es/gauges/arc/arc-gauge.js","../node_modules/@progress/kendo-charts/dist/es/gauges/circular/circular-gauge.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/encoding.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/code11.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/code39.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/code39-extended.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/code93.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/code93-extended.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/postnet.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/code128.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/msi.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/ean13.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/ean8.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/main.js","../node_modules/@progress/kendo-charts/dist/es/barcode/surface-size.js","../node_modules/@progress/kendo-charts/dist/es/barcode/barcode.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/image.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/utils.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/free-cell-visitor.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/encoding-result.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/encoders/iso-encoder.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/encoding.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/data-modes/qr-data-mode.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/data-modes/numeric-data-mode.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/data-modes/alpha-numeric-data-mode.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/data-modes/byte-data-mode.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/data-modes/data-mode-instances.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/encoders/utf8-encoder.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/version-codewords.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/qrcode.js","../node_modules/@progress/kendo-charts/dist/es/map/datums.js","../node_modules/@progress/kendo-charts/dist/es/map/location.js","../node_modules/@progress/kendo-charts/dist/es/map/crs.js","../node_modules/@progress/kendo-charts/dist/es/map/utils.js","../node_modules/@progress/kendo-charts/dist/es/map/scroller/observable.js","../node_modules/@progress/kendo-charts/dist/es/map/attribution.js","../node_modules/@progress/kendo-charts/dist/es/map/navigator.js","../node_modules/@progress/kendo-charts/dist/es/map/zoom.js","../node_modules/@progress/kendo-charts/dist/es/map/extent.js","../node_modules/@progress/kendo-charts/dist/es/map/constants.js","../node_modules/@progress/kendo-charts/dist/es/map/tooltip/tooltip.js","../node_modules/@progress/kendo-charts/dist/es/map/layers/layer.js","../node_modules/@progress/kendo-charts/dist/es/map/layers/tile.js","../node_modules/@progress/kendo-charts/dist/es/map/scroller/draggable.js","../node_modules/@progress/kendo-charts/dist/es/map/layers/shape.js","../node_modules/@progress/kendo-charts/dist/es/map/layers/bubble.js","../node_modules/@progress/kendo-charts/dist/es/map/layers/marker.js","../node_modules/@progress/kendo-charts/dist/es/map/scroller/fx.js","../node_modules/@progress/kendo-charts/dist/es/map/scroller/user-events.js","../node_modules/@progress/kendo-charts/dist/es/map/scroller/scroller.js","../node_modules/@progress/kendo-charts/dist/es/services/map-service.js","../node_modules/@progress/kendo-charts/dist/es/map/map.js","../node_modules/@progress/kendo-charts/dist/es/chart/base-theme.js","../node_modules/@progress/kendo-react-charts/dist/es/utils/main.js","../node_modules/@progress/kendo-react-charts/dist/es/events/dom-events.js","../node_modules/@progress/kendo-react-charts/dist/es/events/dom-events-builder.js","../node_modules/@progress/kendo-react-charts/dist/es/events/base-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/axis-label-click-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/preventable-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/drag-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/drag-end-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/drag-start-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/legend-item-hover-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/legend-item-click-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/legend-item-leave-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/navigator-filter-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/note-click-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/note-hover-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/plot-area-click-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/plot-area-hover-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/render-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/select-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/select-end-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/select-start-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/series-click-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/series-hover-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/zoom-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/zoom-end-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/zoom-start-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/chart-event-builder.js","../node_modules/@progress/kendo-react-charts/dist/es/events/dom-event.js","../node_modules/@progress/kendo-react-charts/dist/es/theming/theme-service.js","../node_modules/@progress/kendo-react-charts/dist/es/store/store.js","../node_modules/@progress/kendo-react-charts/dist/es/store/reducer.js","../node_modules/@progress/kendo-react-charts/dist/es/tooltip/Point.js","../node_modules/@progress/kendo-react-charts/dist/es/tooltip/SharedTooltipContent.js","../node_modules/@progress/kendo-react-charts/dist/es/ChartContext.js","../node_modules/@progress/kendo-react-charts/dist/es/tooltip/Popup.js","../node_modules/@progress/kendo-react-charts/dist/es/tooltip/Series.js","../node_modules/@progress/kendo-react-charts/dist/es/Container.js","../node_modules/@progress/kendo-react-charts/dist/es/tooltip/Crosshair.js","../node_modules/@progress/kendo-react-charts/dist/es/tooltip/CrosshairContainer.js","../node_modules/@progress/kendo-react-charts/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-charts/dist/es/BaseChart.js","../node_modules/@progress/kendo-react-charts/dist/es/DonutCenter.js","../node_modules/@progress/kendo-react-charts/dist/es/Chart.js","../node_modules/@progress/kendo-react-charts/dist/es/components/base/CollectionConfigurationComponent.js","../node_modules/@progress/kendo-react-charts/dist/es/components/base/ConfigurationComponent.js","../node_modules/@progress/kendo-react-charts/dist/es/components/SeriesItem.js","../node_modules/@progress/kendo-react-charts/dist/es/components/Series.js","../node_modules/@progress/kendo-react-charts/dist/es/components/Legend.js","helpers/helper.ts","components/charts/licenseChart.tsx","components/charts/CourseChart.tsx","services/CoursesService.ts","services/LicenseAllocation.ts","components/Dashboard.tsx","services/SchoolService.ts","components/SchoolDropDown.tsx","services/SchoolYearService.ts","components/SchoolYearDropDown.tsx","services/MenuService.ts","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/tiny-invariant/dist/esm/tiny-invariant.js","../node_modules/history/esm/history.js","../node_modules/react-router/modules/miniCreateReactContext.js","../node_modules/react-router/modules/createContext.js","../node_modules/react-router/modules/createNamedContext.js","../node_modules/react-router/modules/HistoryContext.js","../node_modules/react-router/modules/RouterContext.js","../node_modules/react-router/modules/Router.js","../node_modules/react-router/modules/MemoryRouter.js","../node_modules/react-router/modules/Lifecycle.js","../node_modules/react-router/modules/matchPath.js","../node_modules/react-router/modules/Route.js","../node_modules/react-router/modules/StaticRouter.js","../node_modules/react-router/modules/Switch.js","../node_modules/react-router/modules/hooks.js","../node_modules/react-router-dom/modules/BrowserRouter.js","../node_modules/react-router-dom/modules/HashRouter.js","../node_modules/react-router-dom/modules/utils/locationUtils.js","../node_modules/react-router-dom/modules/Link.js","../node_modules/react-router-dom/modules/NavLink.js","shared/GlobalMenu.tsx","services/SchoolInfoService.ts","components/SchoolBanner.tsx","shared/VendorDetail.tsx","components/vendorLicenseAllocation/VendorContentDisplay.tsx","../node_modules/@progress/kendo-react-inputs/dist/es/radiobutton/RadioButton.js","../node_modules/@progress/kendo-react-dialogs/dist/es/DialogTitleBar.js","../node_modules/@progress/kendo-react-dialogs/dist/es/DialogActionsBar.js","../node_modules/@progress/kendo-react-dialogs/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-dialogs/dist/es/constants.js","../node_modules/@progress/kendo-react-dialogs/dist/es/utils.js","../node_modules/@progress/kendo-react-dialogs/dist/es/Dialog.js","services/SchoolListService.ts","components/vendorLicenseAllocation/VendorManageContent.tsx","components/vendorLicenseAllocation/VendorEditContent.tsx","shared/GridHierarchyExpand.tsx","assets/icons/icon-window-gear.tsx","components/vendorLicenseAllocation/VendorContent.tsx","../node_modules/@restart/hooks/esm/useTimeout.js","../node_modules/react-overlays/esm/Overlay.js","../node_modules/react-bootstrap/esm/Overlay.js","../node_modules/react-bootstrap/esm/OverlayTrigger.js","../node_modules/react-bootstrap/esm/Tooltip.js","../node_modules/react-bootstrap/esm/CardImg.js","../node_modules/react-bootstrap/esm/Card.js","../node_modules/react-bootstrap/esm/InputGroup.js","assets/icons/icon-envelop-course.tsx","shared/SplashScreen.tsx","shared/SharedCoursesList.tsx","components/courses/IndividualCourses.tsx","services/TeacherService.ts","assets/icons/icon-person-circle.tsx","components/courses/AssingedTeachers.tsx","services/AdditionalStaffService.ts","components/courses/AssignedAdditionalStaff.tsx","components/courses/CourseVendorContent.tsx","services/StudentService.ts","assets/icons/icon-student-outline.tsx","../node_modules/@progress/kendo-react-common/dist/es/treeDataOperations.js","../node_modules/@progress/kendo-react-data-tools/dist/es/utils/group-operations.js","components/courses/EnrolledStudent.tsx","components/courses/AddNewCourse.tsx","components/courses/MergeCourses.tsx","components/courses/MergeError.tsx","components/courses/LicenseSummary.tsx","services/CodesetService.ts","components/courses/CourseDetail.tsx","services/VendorContentService.ts","components/courses/AddCoursesForVendorContent.tsx","../node_modules/@progress/kendo-react-inputs/dist/es/checkbox/Checkbox.js","../node_modules/@progress/kendo-react-common/dist/es/hooks/useDir.js","components/courses/Courses.tsx","services/PurchaseOrderService.ts","services/VendorService.ts","services/ProductService.ts","components/PurchaseOrder.tsx","services/ReportsService.ts","../node_modules/@progress/kendo-file-saver/dist/es/save-as.js","../node_modules/@progress/kendo-file-saver/dist/es/base64.js","../node_modules/@progress/kendo-ooxml/dist/es/services/template-service.js","../node_modules/@progress/kendo-ooxml/dist/es/utils/getter.js","../node_modules/@progress/kendo-ooxml/dist/es/utils/map.js","../node_modules/@progress/kendo-ooxml/dist/es/excel-exporter.js","../node_modules/@progress/pako-esm/dist/pako-esm5.js","../node_modules/@progress/jszip-esm/dist/jszip-esm5.js","../node_modules/@progress/kendo-ooxml/dist/es/services/intl-service.js","../node_modules/@progress/kendo-ooxml/dist/es/utils/time.js","../node_modules/@progress/kendo-ooxml/dist/es/ooxml.js","../node_modules/@progress/kendo-ooxml/dist/es/utils/create-zip.js","../node_modules/@progress/kendo-react-excel-export/dist/es/ooxml/ExporterColumns.js","../node_modules/@progress/kendo-react-excel-export/dist/es/ooxml/workbook.js","../node_modules/@progress/kendo-react-excel-export/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-excel-export/dist/es/ExcelExport.js","components/Reports/LicenseUsageReport.tsx","components/Reports/LicenseAllocationReport.tsx","components/Reports/PublishedCoursesReport.tsx","components/Reports/TotalCountsReport.tsx","components/Reports/StatusWiseReport.tsx","components/Reports/LicenseTransferHistoryReport.tsx","components/Reports/DailyReport.tsx","components/Reports/MissingTORReport.tsx","../node_modules/@progress/kendo-react-excel-export/dist/es/ExcelExportColumn.js","../node_modules/react-bootstrap/esm/ListGroupItem.js","../node_modules/react-bootstrap/esm/ListGroup.js","components/Reports/TeacherCreatedCourseReport.tsx","components/Reports/SharedInstructionCourseReport.tsx","components/Reports/CourseEnrollmentSummary.tsx","components/Reports/Reports.tsx","shared/ProfileMenu.tsx","components/adminManagement/VendorManagement/VendorContentManagement.tsx","components/adminManagement/VendorManagement/Product.tsx","components/adminManagement/VendorManagement/VendorManage.tsx","services/SchoolLeaderService.ts","components/adminManagement/schoolManagement/SchoolManage.tsx","services/StudentAndStaffService.ts","components/studentAndStaff/StudentCoursesDetails.tsx","components/studentAndStaff/Student.tsx","components/studentAndStaff/StaffCoursesDetails.tsx","components/studentAndStaff/Staff.tsx","components/studentAndStaff/studentAndStaff.tsx","shared/ErrorDisplay.tsx","assets/icons/icon-doe-logo.tsx","shared/Header.tsx","assets/icons/icon-school.tsx","assets/icons/icon-home.tsx","components/adminManagement/schoolYearManage/SchoolYearManage.tsx","shared/ILearnLayout.tsx","services/openid/AuthService.js","shared/Login.tsx","shared/Home.tsx","services/openid/SigninCallback.js","shared/Footer.tsx","shared/ProtectedRoute.tsx","services/oidc/authProvider.jsx","services/oidc/silentRenew.js","App.tsx","reportWebVitals.ts","registerServiceWorker.js","index.tsx"],"sourcesContent":["'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n  childContextTypes: true,\n  contextType: true,\n  contextTypes: true,\n  defaultProps: true,\n  displayName: true,\n  getDefaultProps: true,\n  getDerivedStateFromError: true,\n  getDerivedStateFromProps: true,\n  mixins: true,\n  propTypes: true,\n  type: true\n};\nvar KNOWN_STATICS = {\n  name: true,\n  length: true,\n  prototype: true,\n  caller: true,\n  callee: true,\n  arguments: true,\n  arity: true\n};\nvar FORWARD_REF_STATICS = {\n  '$$typeof': true,\n  render: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true\n};\nvar MEMO_STATICS = {\n  '$$typeof': true,\n  compare: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true,\n  type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n  // React v16.11 and below\n  if (reactIs.isMemo(component)) {\n    return MEMO_STATICS;\n  } // React v16.12 and above\n\n\n  return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n  if (typeof sourceComponent !== 'string') {\n    // don't hoist over string (html) components\n    if (objectPrototype) {\n      var inheritedComponent = getPrototypeOf(sourceComponent);\n\n      if (inheritedComponent && inheritedComponent !== objectPrototype) {\n        hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n      }\n    }\n\n    var keys = getOwnPropertyNames(sourceComponent);\n\n    if (getOwnPropertySymbols) {\n      keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n    }\n\n    var targetStatics = getStatics(targetComponent);\n    var sourceStatics = getStatics(sourceComponent);\n\n    for (var i = 0; i < keys.length; ++i) {\n      var key = keys[i];\n\n      if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n        var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n        try {\n          // Avoid failures from read-only properties\n          defineProperty(targetComponent, key, descriptor);\n        } catch (e) {}\n      }\n    }\n  }\n\n  return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n  var context = new Axios(defaultConfig);\n  var instance = bind(Axios.prototype.request, context);\n\n  // Copy axios.prototype to instance\n  utils.extend(instance, Axios.prototype, context);\n\n  // Copy context to instance\n  utils.extend(instance, context);\n\n  // Factory for creating new instances\n  instance.create = function create(instanceConfig) {\n    return createInstance(mergeConfig(defaultConfig, instanceConfig));\n  };\n\n  return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = require('./cancel/CanceledError');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\naxios.toFormData = require('./helpers/toFormData');\n\n// Expose AxiosError class\naxios.AxiosError = require('../lib/core/AxiosError');\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n  return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n  utils.isStandardBrowserEnv() ?\n\n  // Standard browser envs have full support of the APIs needed to test\n  // whether the request URL is of the same origin as current location.\n    (function standardBrowserEnv() {\n      var msie = /(msie|trident)/i.test(navigator.userAgent);\n      var urlParsingNode = document.createElement('a');\n      var originURL;\n\n      /**\n    * Parse a URL to discover it's components\n    *\n    * @param {String} url The URL to be parsed\n    * @returns {Object}\n    */\n      function resolveURL(url) {\n        var href = url;\n\n        if (msie) {\n        // IE needs attribute set twice to normalize properties\n          urlParsingNode.setAttribute('href', href);\n          href = urlParsingNode.href;\n        }\n\n        urlParsingNode.setAttribute('href', href);\n\n        // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n        return {\n          href: urlParsingNode.href,\n          protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n          host: urlParsingNode.host,\n          search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n          hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n          hostname: urlParsingNode.hostname,\n          port: urlParsingNode.port,\n          pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n            urlParsingNode.pathname :\n            '/' + urlParsingNode.pathname\n        };\n      }\n\n      originURL = resolveURL(window.location.href);\n\n      /**\n    * Determine if a URL shares the same origin as the current location\n    *\n    * @param {String} requestURL The URL to test\n    * @returns {boolean} True if URL shares the same origin, otherwise false\n    */\n      return function isURLSameOrigin(requestURL) {\n        var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n        return (parsed.protocol === originURL.protocol &&\n            parsed.host === originURL.host);\n      };\n    })() :\n\n  // Non standard browser envs (web workers, react-native) lack needed support.\n    (function nonStandardBrowserEnv() {\n      return function isURLSameOrigin() {\n        return true;\n      };\n    })()\n);\n","module.exports = require('./lib/axios');","module.exports = Array.isArray || function (arr) {\n  return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","/** @license React v17.0.2\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';require(\"object-assign\");var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n  return relativeURL\n    ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n    : baseURL;\n};\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"react\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"react\"],t):\"object\"==typeof exports?exports[\"react-moment\"]=t(require(\"moment\"),require(\"react\")):e[\"react-moment\"]=t(e.moment,e.react)}(this,(function(e,t){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=6)}([function(e,t,n){e.exports=n(3)()},function(t,n){t.exports=e},function(e,n){e.exports=t},function(e,t,n){\"use strict\";var r=n(4);function o(){}function i(){}i.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,i,a){if(a!==r){var l=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw l.name=\"Invariant Violation\",l}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:o};return n.PropTypes=n,n}},function(e,t,n){\"use strict\";e.exports=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\"},function(e,t,n){var r,o,i,a,l;\n/*! Moment Duration Format v2.2.2\n *  https://github.com/jsmreese/moment-duration-format\n *  Date: 2018-02-16\n *\n *  Duration format plugin function for the Moment.js library\n *  http://momentjs.com/\n *\n *  Copyright 2018 John Madhavan-Reese\n *  Released under the MIT license\n */a=this,l=function(e){var t=!1,n=!1,r=!1,o=!1,i=\"escape years months weeks days hours minutes seconds milliseconds general\".split(\" \"),a=[{type:\"seconds\",targets:[{type:\"minutes\",value:60},{type:\"hours\",value:3600},{type:\"days\",value:86400},{type:\"weeks\",value:604800},{type:\"months\",value:2678400},{type:\"years\",value:31536e3}]},{type:\"minutes\",targets:[{type:\"hours\",value:60},{type:\"days\",value:1440},{type:\"weeks\",value:10080},{type:\"months\",value:44640},{type:\"years\",value:525600}]},{type:\"hours\",targets:[{type:\"days\",value:24},{type:\"weeks\",value:168},{type:\"months\",value:744},{type:\"years\",value:8760}]},{type:\"days\",targets:[{type:\"weeks\",value:7},{type:\"months\",value:31},{type:\"years\",value:365}]},{type:\"months\",targets:[{type:\"years\",value:12}]}];function l(e,t){return!(t.length>e.length)&&-1!==e.indexOf(t)}function u(e){for(var t=\"\";e;)t+=\"0\",e-=1;return t}function s(e,t){var n=e+\"+\"+v(V(t).sort(),(function(e){return e+\":\"+t[e]})).join(\",\");return s.cache[n]||(s.cache[n]=Intl.NumberFormat(e,t)),s.cache[n]}function c(e,t,i){var a,l,f,m=t.useToLocaleString,p=t.useGrouping,g=p&&t.grouping.slice(),y=t.maximumSignificantDigits,h=t.minimumIntegerDigits||1,d=t.fractionDigits||0,v=t.groupingSeparator,b=t.decimalSeparator;if(m&&i){var w,S={minimumIntegerDigits:h,useGrouping:p};return d&&(S.maximumFractionDigits=d,S.minimumFractionDigits=d),y&&e>0&&(S.maximumSignificantDigits=y),r?(o||((w=x({},t)).useGrouping=!1,w.decimalSeparator=\".\",e=parseFloat(c(e,w),10)),s(i,S).format(e)):(n||((w=x({},t)).useGrouping=!1,w.decimalSeparator=\".\",e=parseFloat(c(e,w),10)),e.toLocaleString(i,S))}var T=(y?e.toPrecision(y+1):e.toFixed(d+1)).split(\"e\");f=T[1]||\"\",l=(T=T[0].split(\".\"))[1]||\"\";var O=(a=T[0]||\"\").length,_=l.length,V=O+_,D=a+l;(y&&V===y+1||!y&&_===d+1)&&((D=function(e){for(var t=e.split(\"\").reverse(),n=0,r=!0;r&&n<t.length;)n?\"9\"===t[n]?t[n]=\"0\":(t[n]=(parseInt(t[n],10)+1).toString(),r=!1):(parseInt(t[n],10)<5&&(r=!1),t[n]=\"0\"),n+=1;return r&&t.push(\"1\"),t.reverse().join(\"\")}(D)).length===V+1&&(O+=1),_&&(D=D.slice(0,-1)),a=D.slice(0,O),l=D.slice(O)),y&&(l=l.replace(/0*$/,\"\"));var j=parseInt(f,10);j>0?l.length<=j?(a+=l+=u(j-l.length),l=\"\"):(a+=l.slice(0,j),l=l.slice(j)):j<0&&(l=u(Math.abs(j)-a.length)+a+l,a=\"0\"),y||((l=l.slice(0,d)).length<d&&(l+=u(d-l.length)),a.length<h&&(a=u(h-a.length)+a));var M,P=\"\";if(p)for(T=a;T.length;)g.length&&(M=g.shift()),P&&(P=v+P),P=T.slice(-M)+P,T=T.slice(0,-M);else P=a;return l&&(P=P+b+l),P}function f(e,t){return e.label.length>t.label.length?-1:e.label.length<t.label.length?1:0}function m(e,t){var n=[];return d(V(t),(function(r){if(\"_durationLabels\"===r.slice(0,15)){var o=r.slice(15).toLowerCase();d(V(t[r]),(function(i){i.slice(0,1)===e&&n.push({type:o,key:i,label:t[r][i]})}))}})),n}s.cache={};var p={durationLabelsStandard:{S:\"millisecond\",SS:\"milliseconds\",s:\"second\",ss:\"seconds\",m:\"minute\",mm:\"minutes\",h:\"hour\",hh:\"hours\",d:\"day\",dd:\"days\",w:\"week\",ww:\"weeks\",M:\"month\",MM:\"months\",y:\"year\",yy:\"years\"},durationLabelsShort:{S:\"msec\",SS:\"msecs\",s:\"sec\",ss:\"secs\",m:\"min\",mm:\"mins\",h:\"hr\",hh:\"hrs\",d:\"dy\",dd:\"dys\",w:\"wk\",ww:\"wks\",M:\"mo\",MM:\"mos\",y:\"yr\",yy:\"yrs\"},durationTimeTemplates:{HMS:\"h:mm:ss\",HM:\"h:mm\",MS:\"m:ss\"},durationLabelTypes:[{type:\"standard\",string:\"__\"},{type:\"short\",string:\"_\"}],durationPluralKey:function(e,t,n){return 1===t&&null===n?e:e+e}};function g(e){return\"[object Array]\"===Object.prototype.toString.call(e)}function y(e){return\"[object Object]\"===Object.prototype.toString.call(e)}function h(e,t){var n,r=0,o=e&&e.length||0;for(\"function\"!=typeof t&&(n=t,t=function(e){return e===n});r<o;){if(t(e[r]))return e[r];r+=1}}function d(e,t){var n=0,r=e.length;if(e&&r)for(;n<r;){if(!1===t(e[n],n))return;n+=1}}function v(e,t){var n=0,r=e.length,o=[];if(!e||!r)return o;for(;n<r;)o[n]=t(e[n],n),n+=1;return o}function b(e,t){return v(e,(function(e){return e[t]}))}function w(e){var t=[];return d(e,(function(e){e&&t.push(e)})),t}function S(e){var t=[];return d(e,(function(e){h(t,e)||t.push(e)})),t}function T(e,t){var n=[];return d(e,(function(e){d(t,(function(t){e===t&&n.push(e)}))})),S(n)}function O(e,t){var n=[];return d(e,(function(r,o){if(!t(r))return n=e.slice(o),!1})),n}function _(e,t){return O(e.slice().reverse(),t).reverse()}function x(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}function V(e){var t=[];for(var n in e)e.hasOwnProperty(n)&&t.push(n);return t}function D(e,t){var n=0,r=e.length;if(!e||!r)return!1;for(;n<r;){if(!0===t(e[n],n))return!0;n+=1}return!1}function j(e){var t=[];return d(e,(function(e){t=t.concat(e)})),t}function M(e){return\"3.6\"===e(3.55,\"en\",{useGrouping:!1,minimumIntegerDigits:1,minimumFractionDigits:1,maximumFractionDigits:1})}function P(e){var t=!0;return!!((t=(t=(t=t&&\"1\"===e(1,\"en\",{minimumIntegerDigits:1}))&&\"01\"===e(1,\"en\",{minimumIntegerDigits:2}))&&\"001\"===e(1,\"en\",{minimumIntegerDigits:3}))&&(t=(t=(t=(t=t&&\"100\"===e(99.99,\"en\",{maximumFractionDigits:0,minimumFractionDigits:0}))&&\"100.0\"===e(99.99,\"en\",{maximumFractionDigits:1,minimumFractionDigits:1}))&&\"99.99\"===e(99.99,\"en\",{maximumFractionDigits:2,minimumFractionDigits:2}))&&\"99.990\"===e(99.99,\"en\",{maximumFractionDigits:3,minimumFractionDigits:3}))&&(t=(t=(t=(t=(t=t&&\"100\"===e(99.99,\"en\",{maximumSignificantDigits:1}))&&\"100\"===e(99.99,\"en\",{maximumSignificantDigits:2}))&&\"100\"===e(99.99,\"en\",{maximumSignificantDigits:3}))&&\"99.99\"===e(99.99,\"en\",{maximumSignificantDigits:4}))&&\"99.99\"===e(99.99,\"en\",{maximumSignificantDigits:5}))&&(t=(t=t&&\"1,000\"===e(1e3,\"en\",{useGrouping:!0}))&&\"1000\"===e(1e3,\"en\",{useGrouping:!1})))}function k(){var e,t=[].slice.call(arguments),n={};if(d(t,(function(t,r){if(!r){if(!g(t))throw\"Expected array as the first argument to durationsFormat.\";e=t}\"string\"!=typeof t&&\"function\"!=typeof t?\"number\"!=typeof t?y(t)&&x(n,t):n.precision=t:n.template=t})),!e||!e.length)return[];n.returnMomentTypes=!0;var r=v(e,(function(e){return e.format(n)})),o=T(i,S(b(j(r),\"type\"))),a=n.largest;return a&&(o=o.slice(0,a)),n.returnMomentTypes=!1,n.outputTypes=o,v(e,(function(e){return e.format(n)}))}function E(){var n=[].slice.call(arguments),o=x({},this.format.defaults),u=this.asMilliseconds(),s=this.asMonths();\"function\"==typeof this.isValid&&!1===this.isValid()&&(u=0,s=0);var j=u<0,M=e.duration(Math.abs(u),\"milliseconds\"),P=e.duration(Math.abs(s),\"months\");d(n,(function(e){\"string\"!=typeof e&&\"function\"!=typeof e?\"number\"!=typeof e?y(e)&&x(o,e):o.precision=e:o.template=e}));var k={years:\"y\",months:\"M\",weeks:\"w\",days:\"d\",hours:\"h\",minutes:\"m\",seconds:\"s\",milliseconds:\"S\"},E={escape:/\\[(.+?)\\]/,years:/\\*?[Yy]+/,months:/\\*?M+/,weeks:/\\*?[Ww]+/,days:/\\*?[Dd]+/,hours:/\\*?[Hh]+/,minutes:/\\*?m+/,seconds:/\\*?s+/,milliseconds:/\\*?S+/,general:/.+?/};o.types=i;var L=function(e){return h(i,(function(t){return E[t].test(e)}))},F=new RegExp(v(i,(function(e){return E[e].source})).join(\"|\"),\"g\");o.duration=this;var I=\"function\"==typeof o.template?o.template.apply(o):o.template,N=o.outputTypes,C=o.returnMomentTypes,R=o.largest,G=[];N||(g(o.stopTrim)&&(o.stopTrim=o.stopTrim.join(\"\")),o.stopTrim&&d(o.stopTrim.match(F),(function(e){var t=L(e);\"escape\"!==t&&\"general\"!==t&&G.push(t)})));var U=e.localeData();U||(U={}),d(V(p),(function(e){\"function\"!=typeof p[e]?U[\"_\"+e]||(U[\"_\"+e]=p[e]):U[e]||(U[e]=p[e])})),d(V(U._durationTimeTemplates),(function(e){I=I.replace(\"_\"+e+\"_\",U._durationTimeTemplates[e])}));var q=o.userLocale||e.locale(),z=o.useLeftUnits,H=o.usePlural,W=o.precision,$=o.forceLength,A=o.useGrouping,B=o.trunc,K=o.useSignificantDigits&&W>0,Y=K?o.precision:0,J=Y,Q=o.minValue,X=!1,Z=o.maxValue,ee=!1,te=o.useToLocaleString,ne=o.groupingSeparator,re=o.decimalSeparator,oe=o.grouping;te=te&&(t||r);var ie=o.trim;g(ie)&&(ie=ie.join(\" \")),null===ie&&(R||Z||K)&&(ie=\"all\"),null!==ie&&!0!==ie&&\"left\"!==ie&&\"right\"!==ie||(ie=\"large\"),!1===ie&&(ie=\"\");var ae=function(e){return e.test(ie)},le=/large/,ue=/small/,se=/both/,ce=/mid/,fe=/^all|[^sm]all/,me=/final/,pe=R>0||D([le,se,fe],ae),ge=D([ue,se,fe],ae),ye=D([ce,fe],ae),he=D([me,fe],ae),de=v(I.match(F),(function(e,t){var n=L(e);return\"*\"===e.slice(0,1)&&(e=e.slice(1),\"escape\"!==n&&\"general\"!==n&&G.push(n)),{index:t,length:e.length,text:\"\",token:\"escape\"===n?e.replace(E.escape,\"$1\"):e,type:\"escape\"===n||\"general\"===n?null:n}})),ve={index:0,length:0,token:\"\",text:\"\",type:null},be=[];z&&de.reverse(),d(de,(function(e){if(e.type)return(ve.type||ve.text)&&be.push(ve),void(ve=e);z?ve.text=e.token+ve.text:ve.text+=e.token})),(ve.type||ve.text)&&be.push(ve),z&&be.reverse();var we=T(i,S(w(b(be,\"type\"))));if(!we.length)return b(be,\"text\").join(\"\");we=v(we,(function(e,t){var n,r=t+1===we.length,i=!t;n=\"years\"===e||\"months\"===e?P.as(e):M.as(e);var a=Math.floor(n),l=n-a,u=h(be,(function(t){return e===t.type}));return i&&Z&&n>Z&&(ee=!0),r&&Q&&Math.abs(o.duration.as(e))<Q&&(X=!0),i&&null===$&&u.length>1&&($=!0),M.subtract(a,e),P.subtract(a,e),{rawValue:n,wholeValue:a,decimalValue:r?l:0,isSmallest:r,isLargest:i,type:e,tokenLength:u.length}}));var Se=B?Math.floor:Math.round,Te=function(e,t){var n=Math.pow(10,t);return Se(e*n)/n},Oe=!1,_e=!1,xe=function(e,t){var n={useGrouping:A,groupingSeparator:ne,decimalSeparator:re,grouping:oe,useToLocaleString:te};return K&&(Y<=0?(e.rawValue=0,e.wholeValue=0,e.decimalValue=0):(n.maximumSignificantDigits=Y,e.significantDigits=Y)),ee&&!_e&&(e.isLargest?(e.wholeValue=Z,e.decimalValue=0):(e.wholeValue=0,e.decimalValue=0)),X&&!_e&&(e.isSmallest?(e.wholeValue=Q,e.decimalValue=0):(e.wholeValue=0,e.decimalValue=0)),e.isSmallest||e.significantDigits&&e.significantDigits-e.wholeValue.toString().length<=0?W<0?e.value=Te(e.wholeValue,W):0===W?e.value=Se(e.wholeValue+e.decimalValue):K?(e.value=B?Te(e.rawValue,Y-e.wholeValue.toString().length):e.rawValue,e.wholeValue&&(Y-=e.wholeValue.toString().length)):(n.fractionDigits=W,e.value=B?e.wholeValue+Te(e.decimalValue,W):e.wholeValue+e.decimalValue):K&&e.wholeValue?(e.value=Math.round(Te(e.wholeValue,e.significantDigits-e.wholeValue.toString().length)),Y-=e.wholeValue.toString().length):e.value=e.wholeValue,e.tokenLength>1&&($||Oe)&&(n.minimumIntegerDigits=e.tokenLength,_e&&n.maximumSignificantDigits<e.tokenLength&&delete n.maximumSignificantDigits),!Oe&&(e.value>0||\"\"===ie||h(G,e.type)||h(N,e.type))&&(Oe=!0),e.formattedValue=c(e.value,n,q),n.useGrouping=!1,n.decimalSeparator=\".\",e.formattedValueEn=c(e.value,n,\"en\"),2===e.tokenLength&&\"milliseconds\"===e.type&&(e.formattedValueMS=c(e.value,{minimumIntegerDigits:3,useGrouping:!1},\"en\").slice(0,2)),e};if((we=w(we=v(we,xe))).length>1){var Ve=function(e){return h(we,(function(t){return t.type===e}))},De=function(e){var t=Ve(e.type);t&&d(e.targets,(function(e){var n=Ve(e.type);n&&parseInt(t.formattedValueEn,10)===e.value&&(t.rawValue=0,t.wholeValue=0,t.decimalValue=0,n.rawValue+=1,n.wholeValue+=1,n.decimalValue=0,n.formattedValueEn=n.wholeValue.toString(),_e=!0)}))};d(a,De)}return _e&&(Oe=!1,Y=J,we=w(we=v(we,xe))),!N||ee&&!o.trim?(pe&&(we=O(we,(function(e){return!e.isSmallest&&!e.wholeValue&&!h(G,e.type)}))),R&&we.length&&(we=we.slice(0,R)),ge&&we.length>1&&(we=_(we,(function(e){return!e.wholeValue&&!h(G,e.type)&&!e.isLargest}))),ye&&(we=w(we=v(we,(function(e,t){return t>0&&t<we.length-1&&!e.wholeValue?null:e})))),!he||1!==we.length||we[0].wholeValue||!B&&we[0].isSmallest&&we[0].rawValue<Q||(we=[])):we=w(we=v(we,(function(e){return h(N,(function(t){return e.type===t}))?e:null}))),C?we:(d(be,(function(e){var t=k[e.type],n=h(we,(function(t){return t.type===e.type}));if(t&&n){var r=n.formattedValueEn.split(\".\");r[0]=parseInt(r[0],10),r[1]?r[1]=parseFloat(\"0.\"+r[1],10):r[1]=null;var o=U.durationPluralKey(t,r[0],r[1]),i=m(t,U),a=!1,u={};d(U._durationLabelTypes,(function(t){var n=h(i,(function(e){return e.type===t.type&&e.key===o}));n&&(u[n.type]=n.label,l(e.text,t.string)&&(e.text=e.text.replace(t.string,n.label),a=!0))})),H&&!a&&(i.sort(f),d(i,(function(t){return u[t.type]===t.label?!l(e.text,t.label)&&void 0:l(e.text,t.label)?(e.text=e.text.replace(t.label,u[t.type]),!1):void 0})))}})),(be=v(be,(function(e){if(!e.type)return e.text;var t=h(we,(function(t){return t.type===e.type}));if(!t)return\"\";var n=\"\";return z&&(n+=e.text),(j&&ee||!j&&X)&&(n+=\"< \",ee=!1,X=!1),(j&&X||!j&&ee)&&(n+=\"> \",ee=!1,X=!1),j&&(t.value>0||\"\"===ie||h(G,t.type)||h(N,t.type))&&(n+=\"-\",j=!1),\"milliseconds\"===e.type&&t.formattedValueMS?n+=t.formattedValueMS:n+=t.formattedValue,z||(n+=e.text),n}))).join(\"\").replace(/(,| |:|\\.)*$/,\"\").replace(/^(,| |:|\\.)*/,\"\"))}function L(){var e=this.duration,t=function(t){return e._data[t]},n=h(this.types,t),r=function(e,t){for(var n=e.length;n-=1;)if(t(e[n]))return e[n]}(this.types,t);switch(n){case\"milliseconds\":return\"S __\";case\"seconds\":case\"minutes\":return\"*_MS_\";case\"hours\":return\"_HMS_\";case\"days\":if(n===r)return\"d __\";case\"weeks\":return n===r?\"w __\":(null===this.trim&&(this.trim=\"both\"),\"w __, d __, h __\");case\"months\":if(n===r)return\"M __\";case\"years\":return n===r?\"y __\":(null===this.trim&&(this.trim=\"both\"),\"y __, M __, d __\");default:return null===this.trim&&(this.trim=\"both\"),\"y __, d __, h __, m __, s __\"}}function F(e){if(!e)throw\"Moment Duration Format init cannot find moment instance.\";e.duration.format=k,e.duration.fn.format=E,e.duration.fn.format.defaults={trim:null,stopTrim:null,largest:null,maxValue:null,minValue:null,precision:0,trunc:!1,forceLength:null,userLocale:null,usePlural:!0,useLeftUnits:!1,useGrouping:!0,useSignificantDigits:!1,template:L,useToLocaleString:!0,groupingSeparator:\",\",decimalSeparator:\".\",grouping:[3]},e.updateLocale(\"en\",p)}var I=function(e,t,n){return e.toLocaleString(t,n)};t=function(){try{(0).toLocaleString(\"i\")}catch(e){return\"RangeError\"===e.name}return!1}()&&P(I),n=t&&M(I);var N=function(e,t,n){if(\"undefined\"!=typeof window&&window&&window.Intl&&window.Intl.NumberFormat)return window.Intl.NumberFormat(t,n).format(e)};return r=P(N),o=r&&M(N),F(e),F},o=[n(1)],void 0===(i=\"function\"==typeof(r=l)?r.apply(t,o):r)||(e.exports=i),a&&(a.momentDurationFormatSetup=a.moment?l(a.moment):l)},function(e,t,n){\"use strict\";n.r(t),n.d(t,\"default\",(function(){return _}));var r=n(2),o=n.n(r),i=n(0),a=n.n(i),l=n(1),u=n.n(l);n(5);function s(e){return(s=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function f(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function m(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function p(e,t,n){return t&&m(e.prototype,t),n&&m(e,n),e}function g(e,t){return(g=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function y(e){var t=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=v(e);if(t){var o=v(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return h(this,n)}}function h(e,t){return!t||\"object\"!==s(t)&&\"function\"!=typeof t?d(e):t}function d(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}function v(e){return(v=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function b(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var w=[a.a.string,a.a.number,a.a.array,a.a.object],S=[a.a.string,a.a.array],T=[a.a.object,a.a.bool],O=[a.a.string,a.a.bool],_=function(e){!function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&g(e,t)}(n,e);var t=y(n);function n(e){var r;return function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,n),b(d(r=t.call(this,e)),\"setTimer\",(function(){var e=r.props.interval;r.clearTimer(),n.pooledTimer||0===e||(r.timer=setInterval((function(){r.update(r.props)}),e))})),b(d(r),\"getTitle\",(function(){var e=r.props.titleFormat,t=n.getDatetime(r.props),o=e||n.globalFormat;return t.format(o)})),b(d(r),\"clearTimer\",(function(){!n.pooledTimer&&r.timer&&(clearInterval(r.timer),r.timer=null),n.pooledTimer&&!r.timer&&n.removePooledElement(d(r))})),n.globalMoment||(n.globalMoment=u.a),r.state={content:\"\"},r.timer=null,r}return p(n,null,[{key:\"startPooledTimer\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:6e4;n.clearPooledTimer(),n.pooledTimer=setInterval((function(){n.pooledElements.forEach((function(e){0!==e.props.interval&&e.update()}))}),e)}},{key:\"clearPooledTimer\",value:function(){n.pooledTimer&&(clearInterval(n.pooledTimer),n.pooledTimer=null,n.pooledElements=[])}},{key:\"pushPooledElement\",value:function(e){e instanceof n?-1===n.pooledElements.indexOf(e)&&n.pooledElements.push(e):console.error(\"Element not an instance of Moment.\")}},{key:\"removePooledElement\",value:function(e){var t=n.pooledElements.indexOf(e);-1!==t&&n.pooledElements.splice(t,1)}},{key:\"getDatetime\",value:function(e){var t=e.utc,r=e.unix,o=e.date,i=e.locale,a=e.parse,l=e.tz,u=e.local;o=o||e.children,a=a||n.globalParse,u=u||n.globalLocal,l=l||n.globalTimezone,i=n.globalLocale?n.globalLocale:i||n.globalMoment.locale();var s=null;return s=t?n.globalMoment.utc(o,a,i):r?n.globalMoment(1e3*o,a,i):n.globalMoment(o,a,i),l?s=s.tz(l):u&&(s=s.local()),s}},{key:\"getContent\",value:function(e){var t=e.fromNow,r=e.fromNowDuring,o=e.from,i=e.add,a=e.subtract,l=e.toNow,s=e.to,c=e.ago,f=e.calendar,m=e.diff,p=e.duration,g=e.durationFromNow,y=e.unit,h=e.decimal,d=e.trim,v=e.format;v=v||n.globalFormat;var b=n.getDatetime(e);i&&b.add(i),a&&b.subtract(a);var w=Boolean(r)&&-b.diff(u()())<r,S=\"\";return S=!v||w||g||p?o?b.from(o,c):t||w?b.fromNow(c):s?b.to(s,c):l?b.toNow(c):f?b.calendar(null,f):m?b.diff(m,y,h):p?b.diff(p):g?u()().diff(b):b.toString():b.format(v),(p||g)&&(S=(S=u.a.duration(S)).format(v,{trim:d})),S=(n.globalFilter||e.filter)(S)}}]),p(n,[{key:\"componentDidMount\",value:function(){this.setTimer(),n.pooledTimer&&n.pushPooledElement(this)}},{key:\"componentDidUpdate\",value:function(e){var t=this.props.interval;e.interval!==t&&this.setTimer()}},{key:\"componentWillUnmount\",value:function(){this.clearTimer()}},{key:\"update\",value:function(e){var t=e||this.props,r=t.onChange,o=n.getContent(t);this.setState({content:o},(function(){r(o)}))}},{key:\"render\",value:function(){var e,t,r,i,a=this.props,l=a.withTitle,u=a.element,s=f(a,[\"withTitle\",\"element\"]),m=this.state.content,p=(e=s,t=n.propTypes,r=Object.keys(t),i=Object.assign({},e),Object.keys(i).filter((function(e){return-1!==r.indexOf(e)})).forEach((function(e){return delete i[e]})),i);return l&&(p.title=this.getTitle()),o.a.createElement(u||n.globalElement,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(Object(n),!0).forEach((function(t){b(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({dateTime:n.getDatetime(this.props)},p),m)}}],[{key:\"getDerivedStateFromProps\",value:function(e){return{content:n.getContent(e)}}}]),n}(o.a.Component);b(_,\"propTypes\",{element:a.a.any,date:a.a.oneOfType(w),parse:a.a.oneOfType(S),format:a.a.string,add:a.a.object,subtract:a.a.object,ago:a.a.bool,fromNow:a.a.bool,fromNowDuring:a.a.number,from:a.a.oneOfType(w),toNow:a.a.bool,to:a.a.oneOfType(w),calendar:a.a.oneOfType(T),unix:a.a.bool,utc:a.a.bool,local:a.a.bool,tz:a.a.string,withTitle:a.a.bool,titleFormat:a.a.string,locale:a.a.string,interval:a.a.number,diff:a.a.oneOfType(w),duration:a.a.oneOfType(w),durationFromNow:a.a.bool,trim:a.a.oneOfType(O),unit:a.a.string,decimal:a.a.bool,filter:a.a.func,onChange:a.a.func}),b(_,\"defaultProps\",{element:null,fromNow:!1,toNow:!1,calendar:!1,ago:!1,unix:!1,utc:!1,local:!1,unit:null,withTitle:!1,trim:!1,decimal:!1,titleFormat:\"\",interval:6e4,filter:function(e){return e},onChange:function(){}}),b(_,\"globalMoment\",null),b(_,\"globalLocale\",null),b(_,\"globalLocal\",null),b(_,\"globalFormat\",null),b(_,\"globalParse\",null),b(_,\"globalFilter\",null),b(_,\"globalElement\",\"time\"),b(_,\"globalTimezone\",null),b(_,\"pooledElements\",[]),b(_,\"pooledTimer\",null)}])}));","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar transitionalDefaults = require('../defaults/transitional');\nvar AxiosError = require('../core/AxiosError');\nvar CanceledError = require('../cancel/CanceledError');\nvar parseProtocol = require('../helpers/parseProtocol');\n\nmodule.exports = function xhrAdapter(config) {\n  return new Promise(function dispatchXhrRequest(resolve, reject) {\n    var requestData = config.data;\n    var requestHeaders = config.headers;\n    var responseType = config.responseType;\n    var onCanceled;\n    function done() {\n      if (config.cancelToken) {\n        config.cancelToken.unsubscribe(onCanceled);\n      }\n\n      if (config.signal) {\n        config.signal.removeEventListener('abort', onCanceled);\n      }\n    }\n\n    if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) {\n      delete requestHeaders['Content-Type']; // Let the browser set it\n    }\n\n    var request = new XMLHttpRequest();\n\n    // HTTP basic authentication\n    if (config.auth) {\n      var username = config.auth.username || '';\n      var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n      requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n    }\n\n    var fullPath = buildFullPath(config.baseURL, config.url);\n\n    request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n    // Set the request timeout in MS\n    request.timeout = config.timeout;\n\n    function onloadend() {\n      if (!request) {\n        return;\n      }\n      // Prepare the response\n      var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n      var responseData = !responseType || responseType === 'text' ||  responseType === 'json' ?\n        request.responseText : request.response;\n      var response = {\n        data: responseData,\n        status: request.status,\n        statusText: request.statusText,\n        headers: responseHeaders,\n        config: config,\n        request: request\n      };\n\n      settle(function _resolve(value) {\n        resolve(value);\n        done();\n      }, function _reject(err) {\n        reject(err);\n        done();\n      }, response);\n\n      // Clean up request\n      request = null;\n    }\n\n    if ('onloadend' in request) {\n      // Use onloadend if available\n      request.onloadend = onloadend;\n    } else {\n      // Listen for ready state to emulate onloadend\n      request.onreadystatechange = function handleLoad() {\n        if (!request || request.readyState !== 4) {\n          return;\n        }\n\n        // The request errored out and we didn't get a response, this will be\n        // handled by onerror instead\n        // With one exception: request that using file: protocol, most browsers\n        // will return status as 0 even though it's a successful request\n        if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n          return;\n        }\n        // readystate handler is calling before onerror or ontimeout handlers,\n        // so we should call onloadend on the next 'tick'\n        setTimeout(onloadend);\n      };\n    }\n\n    // Handle browser request cancellation (as opposed to a manual cancellation)\n    request.onabort = function handleAbort() {\n      if (!request) {\n        return;\n      }\n\n      reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle low level network errors\n    request.onerror = function handleError() {\n      // Real errors are hidden from us by the browser\n      // onerror should only fire if it's a network error\n      reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle timeout\n    request.ontimeout = function handleTimeout() {\n      var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n      var transitional = config.transitional || transitionalDefaults;\n      if (config.timeoutErrorMessage) {\n        timeoutErrorMessage = config.timeoutErrorMessage;\n      }\n      reject(new AxiosError(\n        timeoutErrorMessage,\n        transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n        config,\n        request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Add xsrf header\n    // This is only done if running in a standard browser environment.\n    // Specifically not if we're in a web worker, or react-native.\n    if (utils.isStandardBrowserEnv()) {\n      // Add xsrf header\n      var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n        cookies.read(config.xsrfCookieName) :\n        undefined;\n\n      if (xsrfValue) {\n        requestHeaders[config.xsrfHeaderName] = xsrfValue;\n      }\n    }\n\n    // Add headers to the request\n    if ('setRequestHeader' in request) {\n      utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n        if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n          // Remove Content-Type if data is undefined\n          delete requestHeaders[key];\n        } else {\n          // Otherwise add header to the request\n          request.setRequestHeader(key, val);\n        }\n      });\n    }\n\n    // Add withCredentials to request if needed\n    if (!utils.isUndefined(config.withCredentials)) {\n      request.withCredentials = !!config.withCredentials;\n    }\n\n    // Add responseType to request if needed\n    if (responseType && responseType !== 'json') {\n      request.responseType = config.responseType;\n    }\n\n    // Handle progress if needed\n    if (typeof config.onDownloadProgress === 'function') {\n      request.addEventListener('progress', config.onDownloadProgress);\n    }\n\n    // Not all browsers support upload events\n    if (typeof config.onUploadProgress === 'function' && request.upload) {\n      request.upload.addEventListener('progress', config.onUploadProgress);\n    }\n\n    if (config.cancelToken || config.signal) {\n      // Handle cancellation\n      // eslint-disable-next-line func-names\n      onCanceled = function(cancel) {\n        if (!request) {\n          return;\n        }\n        reject(!cancel || (cancel && cancel.type) ? new CanceledError() : cancel);\n        request.abort();\n        request = null;\n      };\n\n      config.cancelToken && config.cancelToken.subscribe(onCanceled);\n      if (config.signal) {\n        config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n      }\n    }\n\n    if (!requestData) {\n      requestData = null;\n    }\n\n    var protocol = parseProtocol(fullPath);\n\n    if (protocol && [ 'http', 'https', 'file' ].indexOf(protocol) === -1) {\n      reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n      return;\n    }\n\n\n    // Send the request\n    request.send(requestData);\n  });\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n  utils.forEach(headers, function processHeader(value, name) {\n    if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n      headers[normalizedName] = value;\n      delete headers[name];\n    }\n  });\n};\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","'use strict';\n\nvar VERSION = require('../env/data').version;\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n  validators[type] = function validator(thing) {\n    return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n  };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n  function formatMessage(opt, desc) {\n    return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n  }\n\n  // eslint-disable-next-line func-names\n  return function(value, opt, opts) {\n    if (validator === false) {\n      throw new AxiosError(\n        formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n        AxiosError.ERR_DEPRECATED\n      );\n    }\n\n    if (version && !deprecatedWarnings[opt]) {\n      deprecatedWarnings[opt] = true;\n      // eslint-disable-next-line no-console\n      console.warn(\n        formatMessage(\n          opt,\n          ' has been deprecated since v' + version + ' and will be removed in the near future'\n        )\n      );\n    }\n\n    return validator ? validator(value, opt, opts) : true;\n  };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n  if (typeof options !== 'object') {\n    throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n  }\n  var keys = Object.keys(options);\n  var i = keys.length;\n  while (i-- > 0) {\n    var opt = keys[i];\n    var validator = schema[opt];\n    if (validator) {\n      var value = options[opt];\n      var result = value === undefined || validator(value, opt, options);\n      if (result !== true) {\n        throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n      }\n      continue;\n    }\n    if (allowUnknown !== true) {\n      throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n    }\n  }\n}\n\nmodule.exports = {\n  assertOptions: assertOptions,\n  validators: validators\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n  Error.call(this);\n  this.message = message;\n  this.name = 'AxiosError';\n  code && (this.code = code);\n  config && (this.config = config);\n  request && (this.request = request);\n  response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n  toJSON: function toJSON() {\n    return {\n      // Standard\n      message: this.message,\n      name: this.name,\n      // Microsoft\n      description: this.description,\n      number: this.number,\n      // Mozilla\n      fileName: this.fileName,\n      lineNumber: this.lineNumber,\n      columnNumber: this.columnNumber,\n      stack: this.stack,\n      // Axios\n      config: this.config,\n      code: this.code,\n      status: this.response && this.response.status ? this.response.status : null\n    };\n  }\n});\n\nvar prototype = AxiosError.prototype;\nvar descriptors = {};\n\n[\n  'ERR_BAD_OPTION_VALUE',\n  'ERR_BAD_OPTION',\n  'ECONNABORTED',\n  'ETIMEDOUT',\n  'ERR_NETWORK',\n  'ERR_FR_TOO_MANY_REDIRECTS',\n  'ERR_DEPRECATED',\n  'ERR_BAD_RESPONSE',\n  'ERR_BAD_REQUEST',\n  'ERR_CANCELED'\n// eslint-disable-next-line func-names\n].forEach(function(code) {\n  descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = function(error, code, config, request, response, customProps) {\n  var axiosError = Object.create(prototype);\n\n  utils.toFlatObject(error, axiosError, function filter(obj) {\n    return obj !== Error.prototype;\n  });\n\n  AxiosError.call(axiosError, error.message, code, config, request, response);\n\n  axiosError.name = error.name;\n\n  customProps && Object.assign(axiosError, customProps);\n\n  return axiosError;\n};\n\nmodule.exports = AxiosError;\n","/** @license React v17.0.2\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),m=require(\"object-assign\"),r=require(\"scheduler\");function y(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}if(!aa)throw Error(y(227));var ba=new Set,ca={};function da(a,b){ea(a,b);ea(a+\"Capture\",b)}\nfunction ea(a,b){ca[a]=b;for(a=0;a<b.length;a++)ba.add(b[a])}\nvar fa=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ha=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,ia=Object.prototype.hasOwnProperty,\nja={},ka={};function la(a){if(ia.call(ka,a))return!0;if(ia.call(ja,a))return!1;if(ha.test(a))return ka[a]=!0;ja[a]=!0;return!1}function ma(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction na(a,b,c,d){if(null===b||\"undefined\"===typeof b||ma(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1]?!1:!0;f||(na(b,c,e,d)&&(c=null),d||null===e?la(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c))))}\nvar ra=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,sa=60103,ta=60106,ua=60107,wa=60108,xa=60114,ya=60109,za=60110,Aa=60112,Ba=60113,Ca=60120,Da=60115,Ea=60116,Fa=60121,Ga=60128,Ha=60129,Ia=60130,Ja=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var E=Symbol.for;sa=E(\"react.element\");ta=E(\"react.portal\");ua=E(\"react.fragment\");wa=E(\"react.strict_mode\");xa=E(\"react.profiler\");ya=E(\"react.provider\");za=E(\"react.context\");Aa=E(\"react.forward_ref\");Ba=E(\"react.suspense\");Ca=E(\"react.suspense_list\");Da=E(\"react.memo\");Ea=E(\"react.lazy\");Fa=E(\"react.block\");E(\"react.scope\");Ga=E(\"react.opaque.id\");Ha=E(\"react.debug_trace_mode\");Ia=E(\"react.offscreen\");Ja=E(\"react.legacy_hidden\")}\nvar Ka=\"function\"===typeof Symbol&&Symbol.iterator;function La(a){if(null===a||\"object\"!==typeof a)return null;a=Ka&&a[Ka]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var Ma;function Na(a){if(void 0===Ma)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);Ma=b&&b[1]||\"\"}return\"\\n\"+Ma+a}var Oa=!1;\nfunction Pa(a,b){if(!a||Oa)return\"\";Oa=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(k){var d=k}Reflect.construct(a,[],b)}else{try{b.call()}catch(k){d=k}a.call(b.prototype)}else{try{throw Error();}catch(k){d=k}a()}}catch(k){if(k&&d&&\"string\"===typeof k.stack){for(var e=k.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(y(91));return m({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(y(92));if(Array.isArray(c)){if(!(1>=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(a,b,c,d,e){return a(b,c,d,e)}function Ib(){}var Jb=Gb,Kb=!1,Lb=!1;function Mb(){if(null!==zb||null!==Ab)Ib(),Fb()}\nfunction Nb(a,b,c){if(Lb)return a(b,c);Lb=!0;try{return Jb(a,b,c)}finally{Lb=!1,Mb()}}\nfunction Ob(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(y(231,b,typeof c));return c}var Pb=!1;if(fa)try{var Qb={};Object.defineProperty(Qb,\"passive\",{get:function(){Pb=!0}});window.addEventListener(\"test\",Qb,Qb);window.removeEventListener(\"test\",Qb,Qb)}catch(a){Pb=!1}function Rb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(n){this.onError(n)}}var Sb=!1,Tb=null,Ub=!1,Vb=null,Wb={onError:function(a){Sb=!0;Tb=a}};function Xb(a,b,c,d,e,f,g,h,k){Sb=!1;Tb=null;Rb.apply(Wb,arguments)}\nfunction Yb(a,b,c,d,e,f,g,h,k){Xb.apply(this,arguments);if(Sb){if(Sb){var l=Tb;Sb=!1;Tb=null}else throw Error(y(198));Ub||(Ub=!0,Vb=l)}}function Zb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function $b(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function ac(a){if(Zb(a)!==a)throw Error(y(188));}\nfunction bc(a){var b=a.alternate;if(!b){b=Zb(a);if(null===b)throw Error(y(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return ac(e),a;if(f===d)return ac(e),b;f=f.sibling}throw Error(y(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(y(189));}}if(c.alternate!==d)throw Error(y(190));}if(3!==c.tag)throw Error(y(188));return c.stateNode.current===c?a:b}function cc(a){a=bc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nfunction dc(a,b){for(var c=a.alternate;null!==b;){if(b===a||b===c)return!0;b=b.return}return!1}var ec,fc,gc,hc,ic=!1,jc=[],kc=null,lc=null,mc=null,nc=new Map,oc=new Map,pc=[],qc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction rc(a,b,c,d,e){return{blockedOn:a,domEventName:b,eventSystemFlags:c|16,nativeEvent:e,targetContainers:[d]}}function sc(a,b){switch(a){case \"focusin\":case \"focusout\":kc=null;break;case \"dragenter\":case \"dragleave\":lc=null;break;case \"mouseover\":case \"mouseout\":mc=null;break;case \"pointerover\":case \"pointerout\":nc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":oc.delete(b.pointerId)}}\nfunction tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a=rc(b,c,d,e,f),null!==b&&(b=Cb(b),null!==b&&fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction uc(a,b,c,d,e){switch(b){case \"focusin\":return kc=tc(kc,a,b,c,d,e),!0;case \"dragenter\":return lc=tc(lc,a,b,c,d,e),!0;case \"mouseover\":return mc=tc(mc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;nc.set(f,tc(nc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,oc.set(f,tc(oc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction vc(a){var b=wc(a.target);if(null!==b){var c=Zb(b);if(null!==c)if(b=c.tag,13===b){if(b=$b(c),null!==b){a.blockedOn=b;hc(a.lanePriority,function(){r.unstable_runWithPriority(a.priority,function(){gc(c)})});return}}else if(3===b&&c.stateNode.hydrate){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null!==c)return b=Cb(c),null!==b&&fc(b),a.blockedOn=c,!1;b.shift()}return!0}function zc(a,b,c){xc(a)&&c.delete(b)}\nfunction Ac(){for(ic=!1;0<jc.length;){var a=jc[0];if(null!==a.blockedOn){a=Cb(a.blockedOn);null!==a&&ec(a);break}for(var b=a.targetContainers;0<b.length;){var c=yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null!==c){a.blockedOn=c;break}b.shift()}null===a.blockedOn&&jc.shift()}null!==kc&&xc(kc)&&(kc=null);null!==lc&&xc(lc)&&(lc=null);null!==mc&&xc(mc)&&(mc=null);nc.forEach(zc);oc.forEach(zc)}\nfunction Bc(a,b){a.blockedOn===b&&(a.blockedOn=null,ic||(ic=!0,r.unstable_scheduleCallback(r.unstable_NormalPriority,Ac)))}\nfunction Cc(a){function b(b){return Bc(b,a)}if(0<jc.length){Bc(jc[0],a);for(var c=1;c<jc.length;c++){var d=jc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==kc&&Bc(kc,a);null!==lc&&Bc(lc,a);null!==mc&&Bc(mc,a);nc.forEach(b);oc.forEach(b);for(c=0;c<pc.length;c++)d=pc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<pc.length&&(c=pc[0],null===c.blockedOn);)vc(c),null===c.blockedOn&&pc.shift()}\nfunction Dc(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Ec={animationend:Dc(\"Animation\",\"AnimationEnd\"),animationiteration:Dc(\"Animation\",\"AnimationIteration\"),animationstart:Dc(\"Animation\",\"AnimationStart\"),transitionend:Dc(\"Transition\",\"TransitionEnd\")},Fc={},Gc={};\nfa&&(Gc=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Ec.animationend.animation,delete Ec.animationiteration.animation,delete Ec.animationstart.animation),\"TransitionEvent\"in window||delete Ec.transitionend.transition);function Hc(a){if(Fc[a])return Fc[a];if(!Ec[a])return a;var b=Ec[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Gc)return Fc[a]=b[c];return a}\nvar Ic=Hc(\"animationend\"),Jc=Hc(\"animationiteration\"),Kc=Hc(\"animationstart\"),Lc=Hc(\"transitionend\"),Mc=new Map,Nc=new Map,Oc=[\"abort\",\"abort\",Ic,\"animationEnd\",Jc,\"animationIteration\",Kc,\"animationStart\",\"canplay\",\"canPlay\",\"canplaythrough\",\"canPlayThrough\",\"durationchange\",\"durationChange\",\"emptied\",\"emptied\",\"encrypted\",\"encrypted\",\"ended\",\"ended\",\"error\",\"error\",\"gotpointercapture\",\"gotPointerCapture\",\"load\",\"load\",\"loadeddata\",\"loadedData\",\"loadedmetadata\",\"loadedMetadata\",\"loadstart\",\"loadStart\",\n\"lostpointercapture\",\"lostPointerCapture\",\"playing\",\"playing\",\"progress\",\"progress\",\"seeking\",\"seeking\",\"stalled\",\"stalled\",\"suspend\",\"suspend\",\"timeupdate\",\"timeUpdate\",Lc,\"transitionEnd\",\"waiting\",\"waiting\"];function Pc(a,b){for(var c=0;c<a.length;c+=2){var d=a[c],e=a[c+1];e=\"on\"+(e[0].toUpperCase()+e.slice(1));Nc.set(d,b);Mc.set(d,e);da(e,[d])}}var Qc=r.unstable_now;Qc();var F=8;\nfunction Rc(a){if(0!==(1&a))return F=15,1;if(0!==(2&a))return F=14,2;if(0!==(4&a))return F=13,4;var b=24&a;if(0!==b)return F=12,b;if(0!==(a&32))return F=11,32;b=192&a;if(0!==b)return F=10,b;if(0!==(a&256))return F=9,256;b=3584&a;if(0!==b)return F=8,b;if(0!==(a&4096))return F=7,4096;b=4186112&a;if(0!==b)return F=6,b;b=62914560&a;if(0!==b)return F=5,b;if(a&67108864)return F=4,67108864;if(0!==(a&134217728))return F=3,134217728;b=805306368&a;if(0!==b)return F=2,b;if(0!==(1073741824&a))return F=1,1073741824;\nF=8;return a}function Sc(a){switch(a){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}function Tc(a){switch(a){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(y(358,a));}}\nfunction Uc(a,b){var c=a.pendingLanes;if(0===c)return F=0;var d=0,e=0,f=a.expiredLanes,g=a.suspendedLanes,h=a.pingedLanes;if(0!==f)d=f,e=F=15;else if(f=c&134217727,0!==f){var k=f&~g;0!==k?(d=Rc(k),e=F):(h&=f,0!==h&&(d=Rc(h),e=F))}else f=c&~g,0!==f?(d=Rc(f),e=F):0!==h&&(d=Rc(h),e=F);if(0===d)return 0;d=31-Vc(d);d=c&((0>d?0:1<<d)<<1)-1;if(0!==b&&b!==d&&0===(b&g)){Rc(b);if(e<=F)return b;F=e}b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-Vc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction Wc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function Xc(a,b){switch(a){case 15:return 1;case 14:return 2;case 12:return a=Yc(24&~b),0===a?Xc(10,b):a;case 10:return a=Yc(192&~b),0===a?Xc(8,b):a;case 8:return a=Yc(3584&~b),0===a&&(a=Yc(4186112&~b),0===a&&(a=512)),a;case 2:return b=Yc(805306368&~b),0===b&&(b=268435456),b}throw Error(y(358,a));}function Yc(a){return a&-a}function Zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0<jc.length&&-1<qc.indexOf(a))a=rc(null,a,b,c,d),jc.push(a);else{var f=yc(a,b,c,d);if(null===f)e&&sc(a,d);else{if(e){if(-1<qc.indexOf(a)){a=rc(f,a,b,c,d);jc.push(a);return}if(uc(f,a,b,c,d))return;sc(a,d)}jd(a,b,d,null,c)}}}}\nfunction yc(a,b,c,d){var e=xb(d);e=wc(e);if(null!==e){var f=Zb(e);if(null===f)e=null;else{var g=f.tag;if(13===g){e=$b(f);if(null!==e)return e;e=null}else if(3===g){if(f.stateNode.hydrate)return 3===f.tag?f.stateNode.containerInfo:null;e=null}else f!==e&&(e=null)}}jd(a,b,d,e,c);return null}var kd=null,ld=null,md=null;\nfunction nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}function od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}m(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=m({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=m({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=m({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=m({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=m({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=m({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=m({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=m({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=m({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=m({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=m({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=m({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=fa&&\"CompositionEvent\"in window,be=null;fa&&\"documentMode\"in document&&(be=document.documentMode);var ce=fa&&\"TextEvent\"in window&&!be,de=fa&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(fa){var xe;if(fa){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));a=re;if(Kb)a(b);else{Kb=!0;try{Gb(a,b)}finally{Kb=!1,Mb()}}}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge,Ie=Object.prototype.hasOwnProperty;\nfunction Je(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++)if(!Ie.call(b,c[d])||!He(a[c[d]],b[c[d]]))return!1;return!0}function Ke(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Le(a,b){var c=Ke(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nPc(\"cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange\".split(\" \"),\n0);Pc(\"drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel\".split(\" \"),1);Pc(Oc,2);for(var Ve=\"change selectionchange textInput compositionstart compositionend compositionupdate\".split(\" \"),We=0;We<Ve.length;We++)Nc.set(Ve[We],0);ea(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);\nea(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ea(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);ea(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);da(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));da(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));da(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);da(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));\nda(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));da(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var Xe=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),Ye=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(Xe));\nfunction Ze(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Yb(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;Ze(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;Ze(e,h,l);f=k}}}if(Ub)throw a=Vb,Ub=!1,Vb=null,a;}\nfunction G(a,b){var c=$e(b),d=a+\"__bubble\";c.has(d)||(af(b,a,2,!1),c.add(d))}var bf=\"_reactListening\"+Math.random().toString(36).slice(2);function cf(a){a[bf]||(a[bf]=!0,ba.forEach(function(b){Ye.has(b)||df(b,!1,a,null);df(b,!0,a,null)}))}\nfunction df(a,b,c,d){var e=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,f=c;\"selectionchange\"===a&&9!==c.nodeType&&(f=c.ownerDocument);if(null!==d&&!b&&Ye.has(a)){if(\"scroll\"!==a)return;e|=2;f=d}var g=$e(f),h=a+\"__\"+(b?\"capture\":\"bubble\");g.has(h)||(b&&(e|=4),af(f,a,e,b),g.add(h))}\nfunction af(a,b,c,d){var e=Nc.get(b);switch(void 0===e?2:e){case 0:e=gd;break;case 1:e=id;break;default:e=hd}c=e.bind(null,b,c,a);e=void 0;!Pb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction jd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Nb(function(){var d=f,e=xb(c),g=[];\na:{var h=Mc.get(a);if(void 0!==h){var k=td,x=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":x=\"focus\";k=Fd;break;case \"focusout\":x=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case Ic:case Jc:case Kc:k=Hd;break;case Lc:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var w=0!==(b&4),z=!w&&\"scroll\"===a,u=w?null!==h?h+\"Capture\":null:h;w=[];for(var t=d,q;null!==\nt;){q=t;var v=q.stateNode;5===q.tag&&null!==v&&(q=v,null!==u&&(v=Ob(t,u),null!=v&&w.push(ef(t,v,q))));if(z)break;t=t.return}0<w.length&&(h=new k(h,x,null,c,e),g.push({event:h,listeners:w}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&0===(b&16)&&(x=c.relatedTarget||c.fromElement)&&(wc(x)||x[ff]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(x=c.relatedTarget||c.toElement,k=d,x=x?wc(x):null,null!==\nx&&(z=Zb(x),x!==z||5!==x.tag&&6!==x.tag))x=null}else k=null,x=d;if(k!==x){w=Bd;v=\"onMouseLeave\";u=\"onMouseEnter\";t=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)w=Td,v=\"onPointerLeave\",u=\"onPointerEnter\",t=\"pointer\";z=null==k?h:ue(k);q=null==x?h:ue(x);h=new w(v,t+\"leave\",k,c,e);h.target=z;h.relatedTarget=q;v=null;wc(e)===d&&(w=new w(u,t+\"enter\",x,c,e),w.target=q,w.relatedTarget=z,v=w);z=v;if(k&&x)b:{w=k;u=x;t=0;for(q=w;q;q=gf(q))t++;q=0;for(v=u;v;v=gf(v))q++;for(;0<t-q;)w=gf(w),t--;for(;0<q-t;)u=\ngf(u),q--;for(;t--;){if(w===u||null!==u&&w===u.alternate)break b;w=gf(w);u=gf(u)}w=null}else w=null;null!==k&&hf(g,h,k,w,!1);null!==x&&null!==z&&hf(g,z,x,w,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var J=ve;else if(me(h))if(we)J=Fe;else{J=De;var K=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(J=Ee);if(J&&(J=J(a,d))){ne(g,J,c,e);break a}K&&K(a,h,d);\"focusout\"===a&&(K=h._wrapperState)&&\nK.controlled&&\"number\"===h.type&&bb(h,\"number\",h.value)}K=d?ue(d):window;switch(a){case \"focusin\":if(me(K)||\"true\"===K.contentEditable)Qe=K,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var Q;if(ae)b:{switch(a){case \"compositionstart\":var L=\"onCompositionStart\";break b;case \"compositionend\":L=\"onCompositionEnd\";break b;\ncase \"compositionupdate\":L=\"onCompositionUpdate\";break b}L=void 0}else ie?ge(a,c)&&(L=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(L=\"onCompositionStart\");L&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==L?\"onCompositionEnd\"===L&&ie&&(Q=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),K=oe(d,L),0<K.length&&(L=new Ld(L,a,null,c,e),g.push({event:L,listeners:K}),Q?L.data=Q:(Q=he(c),null!==Q&&(L.data=Q))));if(Q=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),0<d.length&&(e=new Ld(\"onBeforeInput\",\n\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=Q)}se(g,b)})}function ef(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Ob(a,c),null!=f&&d.unshift(ef(a,f,e)),f=Ob(a,b),null!=f&&d.push(ef(a,f,e)));a=a.return}return d}function gf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction hf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Ob(c,f),null!=k&&g.unshift(ef(c,k,h))):e||(k=Ob(c,f),null!=k&&g.push(ef(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}function jf(){}var kf=null,lf=null;function mf(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction nf(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var of=\"function\"===typeof setTimeout?setTimeout:void 0,pf=\"function\"===typeof clearTimeout?clearTimeout:void 0;function qf(a){1===a.nodeType?a.textContent=\"\":9===a.nodeType&&(a=a.body,null!=a&&(a.textContent=\"\"))}\nfunction rf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}function sf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var tf=0;function uf(a){return{$$typeof:Ga,toString:a,valueOf:a}}var vf=Math.random().toString(36).slice(2),wf=\"__reactFiber$\"+vf,xf=\"__reactProps$\"+vf,ff=\"__reactContainer$\"+vf,yf=\"__reactEvents$\"+vf;\nfunction wc(a){var b=a[wf];if(b)return b;for(var c=a.parentNode;c;){if(b=c[ff]||c[wf]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=sf(a);null!==a;){if(c=a[wf])return c;a=sf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[wf]||a[ff];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(y(33));}function Db(a){return a[xf]||null}\nfunction $e(a){var b=a[yf];void 0===b&&(b=a[yf]=new Set);return b}var zf=[],Af=-1;function Bf(a){return{current:a}}function H(a){0>Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;a<b.length;a++){var c=b[a];do c=c(!0);while(null!==c)}});ag=null}catch(c){throw null!==ag&&(ag=ag.slice(a+1)),Of(Uf,ig),c;}finally{cg=!1}}}var kg=ra.ReactCurrentBatchConfig;function lg(a,b){if(a&&a.defaultProps){b=m({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}var mg=Bf(null),ng=null,og=null,pg=null;function qg(){pg=og=ng=null}\nfunction rg(a){var b=mg.current;H(mg);a.type._context._currentValue=b}function sg(a,b){for(;null!==a;){var c=a.alternate;if((a.childLanes&b)===b)if(null===c||(c.childLanes&b)===b)break;else c.childLanes|=b;else a.childLanes|=b,null!==c&&(c.childLanes|=b);a=a.return}}function tg(a,b){ng=a;pg=og=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(ug=!0),a.firstContext=null)}\nfunction vg(a,b){if(pg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)pg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===og){if(null===ng)throw Error(y(308));og=b;ng.dependencies={lanes:0,firstContext:b,responders:null}}else og=og.next=b}return a._currentValue}var wg=!1;function xg(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}\nfunction yg(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function zg(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}function Ag(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction Bg(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction Cg(a,b,c,d){var e=a.updateQueue;wg=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var n=a.alternate;if(null!==n){n=n.updateQueue;var A=n.lastBaseUpdate;A!==g&&(null===A?n.firstBaseUpdate=l:A.next=l,n.lastBaseUpdate=k)}}if(null!==f){A=e.baseState;g=0;n=l=k=null;do{h=f.lane;var p=f.eventTime;if((d&h)===h){null!==n&&(n=n.next={eventTime:p,lane:0,tag:f.tag,payload:f.payload,callback:f.callback,\nnext:null});a:{var C=a,x=f;h=b;p=c;switch(x.tag){case 1:C=x.payload;if(\"function\"===typeof C){A=C.call(p,A,h);break a}A=C;break a;case 3:C.flags=C.flags&-4097|64;case 0:C=x.payload;h=\"function\"===typeof C?C.call(p,A,h):C;if(null===h||void 0===h)break a;A=m({},A,h);break a;case 2:wg=!0}}null!==f.callback&&(a.flags|=32,h=e.effects,null===h?e.effects=[f]:h.push(f))}else p={eventTime:p,lane:h,tag:f.tag,payload:f.payload,callback:f.callback,next:null},null===n?(l=n=p,k=A):n=n.next=p,g|=h;f=f.next;if(null===\nf)if(h=e.shared.pending,null===h)break;else f=h.next,h.next=null,e.lastBaseUpdate=h,e.shared.pending=null}while(1);null===n&&(k=A);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=n;Dg|=g;a.lanes=g;a.memoizedState=A}}function Eg(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(y(191,e));e.call(d)}}}var Fg=(new aa.Component).refs;\nfunction Gg(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:m({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar Kg={isMounted:function(a){return(a=a._reactInternals)?Zb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=Hg(),e=Ig(a),f=zg(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);Ag(a,f);Jg(a,e,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=Hg(),e=Ig(a),f=zg(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);Ag(a,f);Jg(a,e,d)},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=Hg(),d=Ig(a),e=zg(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=\nb);Ag(a,e);Jg(a,d,c)}};function Lg(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Je(c,d)||!Je(e,f):!0}\nfunction Mg(a,b,c){var d=!1,e=Cf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=vg(f):(e=Ff(b)?Df:M.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Ef(a,e):Cf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Kg;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Ng(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Kg.enqueueReplaceState(b,b.state,null)}\nfunction Og(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=Fg;xg(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=vg(f):(f=Ff(b)?Df:M.current,e.context=Ef(a,f));Cg(a,c,e,d);e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Gg(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||\n(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Kg.enqueueReplaceState(e,e.state,null),Cg(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4)}var Pg=Array.isArray;\nfunction Qg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(y(309));var d=c.stateNode}if(!d)throw Error(y(147,a));var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===Fg&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}if(\"string\"!==typeof a)throw Error(y(284));if(!c._owner)throw Error(y(290,a));}return a}\nfunction Rg(a,b){if(\"textarea\"!==a.type)throw Error(y(31,\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b));}\nfunction Sg(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.flags=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Tg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags=2,\nc):d;b.flags=2;return c}function g(b){a&&null===b.alternate&&(b.flags=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Ug(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){if(null!==b&&b.elementType===c.type)return d=e(b,c.props),d.ref=Qg(a,b,c),d.return=a,d;d=Vg(c.type,c.key,c.props,null,a.mode,d);d.ref=Qg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=\nWg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function n(a,b,c,d,f){if(null===b||7!==b.tag)return b=Xg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function A(a,b,c){if(\"string\"===typeof b||\"number\"===typeof b)return b=Ug(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case sa:return c=Vg(b.type,b.key,b.props,null,a.mode,c),c.ref=Qg(a,null,b),c.return=a,c;case ta:return b=Wg(b,a.mode,c),b.return=a,b}if(Pg(b)||La(b))return b=Xg(b,\na.mode,c,null),b.return=a,b;Rg(a,b)}return null}function p(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case sa:return c.key===e?c.type===ua?n(a,b,c.props.children,d,e):k(a,b,c,d):null;case ta:return c.key===e?l(a,b,c,d):null}if(Pg(c)||La(c))return null!==e?null:n(a,b,c,d,null);Rg(a,c)}return null}function C(a,b,c,d,e){if(\"string\"===typeof d||\"number\"===typeof d)return a=a.get(c)||\nnull,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case sa:return a=a.get(null===d.key?c:d.key)||null,d.type===ua?n(b,a,d.props.children,e,d.key):k(b,a,d,e);case ta:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e)}if(Pg(d)||La(d))return a=a.get(c)||null,n(b,a,d,e,null);Rg(b,d)}return null}function x(e,g,h,k){for(var l=null,t=null,u=g,z=g=0,q=null;null!==u&&z<h.length;z++){u.index>z?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;z<h.length;z++)u=A(e,h[z],k),null!==u&&(g=f(u,g,z),null===t?l=u:t.sibling=u,t=u);return l}for(u=d(e,u);z<h.length;z++)q=C(u,e,z,h[z],k),null!==q&&(a&&null!==q.alternate&&u.delete(null===q.key?z:q.key),g=f(q,g,z),null===t?l=q:t.sibling=q,t=q);a&&u.forEach(function(a){return b(e,a)});return l}function w(e,g,h,k){var l=La(h);if(\"function\"!==typeof l)throw Error(y(150));h=l.call(h);if(null==\nh)throw Error(y(151));for(var t=l=null,u=g,z=g=0,q=null,n=h.next();null!==u&&!n.done;z++,n=h.next()){u.index>z?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;a<th.length;a++)th[a]._workInProgressVersionPrimary=null;th.length=0}var vh=ra.ReactCurrentDispatcher,wh=ra.ReactCurrentBatchConfig,xh=0,R=null,S=null,T=null,yh=!1,zh=!1;function Ah(){throw Error(y(321));}function Bh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Ch(a,b,c,d,e,f){xh=f;R=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;vh.current=null===a||null===a.memoizedState?Dh:Eh;a=c(d,e);if(zh){f=0;do{zh=!1;if(!(25>f))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0<h;){var k=31-Vc(h),v=1<<k;d[k]|=a;h&=~v}}},[c,b,d]);h.useEffect(function(){return d(b._source,function(){var a=p.getSnapshot,c=p.setSnapshot;try{c(a(b._source));var d=Ig(w);e.mutableReadLanes|=d&e.pendingLanes}catch(q){c(function(){throw q;})}})},[b,d]);He(C,c)&&He(x,b)&&He(A,d)||(a={pending:null,dispatch:null,lastRenderedReducer:Jh,lastRenderedState:n},a.dispatch=l=Oh.bind(null,R,a),k.queue=a,k.baseQueue=null,n=Mh(e,b,c),k.memoizedState=k.baseState=n);return n}\nfunction Ph(a,b,c){var d=Ih();return Nh(d,a,b,c)}function Qh(a){var b=Hh();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:Jh,lastRenderedState:a};a=a.dispatch=Oh.bind(null,R,a);return[b.memoizedState,a]}\nfunction Rh(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=R.updateQueue;null===b?(b={lastEffect:null},R.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function Sh(a){var b=Hh();a={current:a};return b.memoizedState=a}function Th(){return Ih().memoizedState}function Uh(a,b,c,d){var e=Hh();R.flags|=a;e.memoizedState=Rh(1|b,c,void 0,void 0===d?null:d)}\nfunction Vh(a,b,c,d){var e=Ih();d=void 0===d?null:d;var f=void 0;if(null!==S){var g=S.memoizedState;f=g.destroy;if(null!==d&&Bh(d,g.deps)){Rh(b,c,f,d);return}}R.flags|=a;e.memoizedState=Rh(1|b,c,f,d)}function Wh(a,b){return Uh(516,4,a,b)}function Xh(a,b){return Vh(516,4,a,b)}function Yh(a,b){return Vh(4,2,a,b)}function Zh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}\nfunction $h(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Vh(4,2,Zh.bind(null,b,a),c)}function ai(){}function bi(a,b){var c=Ih();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Bh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}function ci(a,b){var c=Ih();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Bh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}\nfunction di(a,b){var c=eg();gg(98>c?98:c,function(){a(!0)});gg(97<c?97:c,function(){var c=wh.transition;wh.transition=1;try{a(!1),b()}finally{wh.transition=c}})}\nfunction Oh(a,b,c){var d=Hg(),e=Ig(a),f={lane:e,action:c,eagerReducer:null,eagerState:null,next:null},g=b.pending;null===g?f.next=f:(f.next=g.next,g.next=f);b.pending=f;g=a.alternate;if(a===R||null!==g&&g===R)zh=yh=!0;else{if(0===a.lanes&&(null===g||0===g.lanes)&&(g=b.lastRenderedReducer,null!==g))try{var h=b.lastRenderedState,k=g(h,c);f.eagerReducer=g;f.eagerState=k;if(He(k,h))return}catch(l){}finally{}Jg(a,e,d)}}\nvar Gh={readContext:vg,useCallback:Ah,useContext:Ah,useEffect:Ah,useImperativeHandle:Ah,useLayoutEffect:Ah,useMemo:Ah,useReducer:Ah,useRef:Ah,useState:Ah,useDebugValue:Ah,useDeferredValue:Ah,useTransition:Ah,useMutableSource:Ah,useOpaqueIdentifier:Ah,unstable_isNewReconciler:!1},Dh={readContext:vg,useCallback:function(a,b){Hh().memoizedState=[a,void 0===b?null:b];return a},useContext:vg,useEffect:Wh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Uh(4,2,Zh.bind(null,\nb,a),c)},useLayoutEffect:function(a,b){return Uh(4,2,a,b)},useMemo:function(a,b){var c=Hh();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Hh();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={pending:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=Oh.bind(null,R,a);return[d.memoizedState,a]},useRef:Sh,useState:Qh,useDebugValue:ai,useDeferredValue:function(a){var b=Qh(a),c=b[0],d=b[1];Wh(function(){var b=wh.transition;\nwh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Qh(!1),b=a[0];a=di.bind(null,a[1]);Sh(a);return[a,b]},useMutableSource:function(a,b,c){var d=Hh();d.memoizedState={refs:{getSnapshot:b,setSnapshot:null},source:a,subscribe:c};return Nh(d,a,b,c)},useOpaqueIdentifier:function(){if(lh){var a=!1,b=uf(function(){a||(a=!0,c(\"r:\"+(tf++).toString(36)));throw Error(y(355));}),c=Qh(b)[1];0===(R.mode&2)&&(R.flags|=516,Rh(5,function(){c(\"r:\"+(tf++).toString(36))},\nvoid 0,null));return b}b=\"r:\"+(tf++).toString(36);Qh(b);return b},unstable_isNewReconciler:!1},Eh={readContext:vg,useCallback:bi,useContext:vg,useEffect:Xh,useImperativeHandle:$h,useLayoutEffect:Yh,useMemo:ci,useReducer:Kh,useRef:Th,useState:function(){return Kh(Jh)},useDebugValue:ai,useDeferredValue:function(a){var b=Kh(Jh),c=b[0],d=b[1];Xh(function(){var b=wh.transition;wh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Kh(Jh)[0];return[Th().current,\na]},useMutableSource:Ph,useOpaqueIdentifier:function(){return Kh(Jh)[0]},unstable_isNewReconciler:!1},Fh={readContext:vg,useCallback:bi,useContext:vg,useEffect:Xh,useImperativeHandle:$h,useLayoutEffect:Yh,useMemo:ci,useReducer:Lh,useRef:Th,useState:function(){return Lh(Jh)},useDebugValue:ai,useDeferredValue:function(a){var b=Lh(Jh),c=b[0],d=b[1];Xh(function(){var b=wh.transition;wh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Lh(Jh)[0];return[Th().current,\na]},useMutableSource:Ph,useOpaqueIdentifier:function(){return Lh(Jh)[0]},unstable_isNewReconciler:!1},ei=ra.ReactCurrentOwner,ug=!1;function fi(a,b,c,d){b.child=null===a?Zg(b,null,c,d):Yg(b,a.child,c,d)}function gi(a,b,c,d,e){c=c.render;var f=b.ref;tg(b,e);d=Ch(a,b,c,d,f,e);if(null!==a&&!ug)return b.updateQueue=a.updateQueue,b.flags&=-517,a.lanes&=~e,hi(a,b,e);b.flags|=1;fi(a,b,d,e);return b.child}\nfunction ii(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!ji(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,ki(a,b,g,d,e,f);a=Vg(c.type,null,d,b,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(0===(e&f)&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:Je,c(e,d)&&a.ref===b.ref))return hi(a,b,f);b.flags|=1;a=Tg(g,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction ki(a,b,c,d,e,f){if(null!==a&&Je(a.memoizedProps,d)&&a.ref===b.ref)if(ug=!1,0!==(f&e))0!==(a.flags&16384)&&(ug=!0);else return b.lanes=a.lanes,hi(a,b,f);return li(a,b,c,d,f)}\nfunction mi(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode||\"unstable-defer-without-hiding\"===d.mode)if(0===(b.mode&4))b.memoizedState={baseLanes:0},ni(b,c);else if(0!==(c&1073741824))b.memoizedState={baseLanes:0},ni(b,null!==f?f.baseLanes:c);else return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a},ni(b,a),null;else null!==f?(d=f.baseLanes|c,b.memoizedState=null):d=c,ni(b,d);fi(a,b,e,c);return b.child}\nfunction oi(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=128}function li(a,b,c,d,e){var f=Ff(c)?Df:M.current;f=Ef(b,f);tg(b,e);c=Ch(a,b,c,d,f,e);if(null!==a&&!ug)return b.updateQueue=a.updateQueue,b.flags&=-517,a.lanes&=~e,hi(a,b,e);b.flags|=1;fi(a,b,c,e);return b.child}\nfunction pi(a,b,c,d,e){if(Ff(c)){var f=!0;Jf(b)}else f=!1;tg(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),Mg(b,c,d),Og(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=vg(l):(l=Ff(c)?Df:M.current,l=Ef(b,l));var n=c.getDerivedStateFromProps,A=\"function\"===typeof n||\"function\"===typeof g.getSnapshotBeforeUpdate;A||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Ng(b,g,d,l);wg=!1;var p=b.memoizedState;g.state=p;Cg(b,d,g,e);k=b.memoizedState;h!==d||p!==k||N.current||wg?(\"function\"===typeof n&&(Gg(b,c,n,d),k=b.memoizedState),(h=wg||Lg(b,c,h,d,p,k,l))?(A||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===\ntypeof g.componentDidMount&&(b.flags|=4)):(\"function\"===typeof g.componentDidMount&&(b.flags|=4),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4),d=!1)}else{g=b.stateNode;yg(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:lg(b.type,h);g.props=l;A=b.pendingProps;p=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=vg(k):(k=Ff(c)?Df:M.current,k=Ef(b,k));var C=c.getDerivedStateFromProps;(n=\"function\"===typeof C||\n\"function\"===typeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==A||p!==k)&&Ng(b,g,d,k);wg=!1;p=b.memoizedState;g.state=p;Cg(b,d,g,e);var x=b.memoizedState;h!==A||p!==x||N.current||wg?(\"function\"===typeof C&&(Gg(b,c,C,d),x=b.memoizedState),(l=wg||Lg(b,c,l,d,p,x,k))?(n||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\nx,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,x,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=256)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=256),b.memoizedProps=d,b.memoizedState=x),g.props=d,g.state=x,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||\nh===a.memoizedProps&&p===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=256),d=!1)}return qi(a,b,c,d,f,e)}\nfunction qi(a,b,c,d,e,f){oi(a,b);var g=0!==(b.flags&64);if(!d&&!g)return e&&Kf(b,c,!1),hi(a,b,f);d=b.stateNode;ei.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Yg(b,a.child,null,f),b.child=Yg(b,null,h,f)):fi(a,b,h,f);b.memoizedState=d.state;e&&Kf(b,c,!0);return b.child}function ri(a){var b=a.stateNode;b.pendingContext?Hf(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Hf(a,b.context,!1);eh(a,b.containerInfo)}\nvar si={dehydrated:null,retryLane:0};\nfunction ti(a,b,c){var d=b.pendingProps,e=P.current,f=!1,g;(g=0!==(b.flags&64))||(g=null!==a&&null===a.memoizedState?!1:0!==(e&2));g?(f=!0,b.flags&=-65):null!==a&&null===a.memoizedState||void 0===d.fallback||!0===d.unstable_avoidThisFallback||(e|=1);I(P,e&1);if(null===a){void 0!==d.fallback&&ph(b);a=d.children;e=d.fallback;if(f)return a=ui(b,a,e,c),b.child.memoizedState={baseLanes:c},b.memoizedState=si,a;if(\"number\"===typeof d.unstable_expectedLoadTime)return a=ui(b,a,e,c),b.child.memoizedState={baseLanes:c},\nb.memoizedState=si,b.lanes=33554432,a;c=vi({mode:\"visible\",children:a},b.mode,c,null);c.return=b;return b.child=c}if(null!==a.memoizedState){if(f)return d=wi(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?{baseLanes:c}:{baseLanes:e.baseLanes|c},f.childLanes=a.childLanes&~c,b.memoizedState=si,d;c=xi(a,b,d.children,c);b.memoizedState=null;return c}if(f)return d=wi(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?{baseLanes:c}:\n{baseLanes:e.baseLanes|c},f.childLanes=a.childLanes&~c,b.memoizedState=si,d;c=xi(a,b,d.children,c);b.memoizedState=null;return c}function ui(a,b,c,d){var e=a.mode,f=a.child;b={mode:\"hidden\",children:b};0===(e&2)&&null!==f?(f.childLanes=0,f.pendingProps=b):f=vi(b,e,0,null);c=Xg(c,e,d,null);f.return=a;c.return=a;f.sibling=c;a.child=f;return c}\nfunction xi(a,b,c,d){var e=a.child;a=e.sibling;c=Tg(e,{mode:\"visible\",children:c});0===(b.mode&2)&&(c.lanes=d);c.return=b;c.sibling=null;null!==a&&(a.nextEffect=null,a.flags=8,b.firstEffect=b.lastEffect=a);return b.child=c}\nfunction wi(a,b,c,d,e){var f=b.mode,g=a.child;a=g.sibling;var h={mode:\"hidden\",children:c};0===(f&2)&&b.child!==g?(c=b.child,c.childLanes=0,c.pendingProps=h,g=c.lastEffect,null!==g?(b.firstEffect=c.firstEffect,b.lastEffect=g,g.nextEffect=null):b.firstEffect=b.lastEffect=null):c=Tg(g,h);null!==a?d=Tg(a,d):(d=Xg(d,f,e,null),d.flags|=2);d.return=b;c.return=b;c.sibling=d;b.child=c;return d}function yi(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);sg(a.return,b)}\nfunction zi(a,b,c,d,e,f){var g=a.memoizedState;null===g?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e,lastEffect:f}:(g.isBackwards=b,g.rendering=null,g.renderingStartTime=0,g.last=d,g.tail=c,g.tailMode=e,g.lastEffect=f)}\nfunction Ai(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;fi(a,b,d.children,c);d=P.current;if(0!==(d&2))d=d&1|2,b.flags|=64;else{if(null!==a&&0!==(a.flags&64))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&yi(a,c);else if(19===a.tag)yi(a,c);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}I(P,d);if(0===(b.mode&2))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===ih(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);zi(b,!1,e,c,f,b.lastEffect);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===ih(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}zi(b,!0,c,null,f,b.lastEffect);break;case \"together\":zi(b,!1,null,null,void 0,b.lastEffect);break;default:b.memoizedState=null}return b.child}\nfunction hi(a,b,c){null!==a&&(b.dependencies=a.dependencies);Dg|=b.lanes;if(0!==(c&b.childLanes)){if(null!==a&&b.child!==a.child)throw Error(y(153));if(null!==b.child){a=b.child;c=Tg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Tg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}return null}var Bi,Ci,Di,Ei;\nBi=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Ci=function(){};\nDi=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;dh(ah.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"option\":e=eb(a,e);d=eb(a,d);f=[];break;case \"select\":e=m({},e,{value:void 0});d=m({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=jf)}vb(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===\nl){var h=e[l];for(g in h)h.hasOwnProperty(g)&&(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ca.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||\n(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,c)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ca.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&G(\"scroll\",a),f||h===k||(f=[])):\"object\"===typeof k&&null!==k&&k.$$typeof===Ga?k.toString():(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",\nc);var l=f;if(b.updateQueue=l)b.flags|=4}};Ei=function(a,b,c,d){c!==d&&(b.flags|=4)};function Fi(a,b){if(!lh)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction Gi(a,b,c){var d=b.pendingProps;switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return Ff(b.type)&&Gf(),null;case 3:fh();H(N);H(M);uh();d=b.stateNode;d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)rh(b)?b.flags|=4:d.hydrate||(b.flags|=256);Ci(b);return null;case 5:hh(b);var e=dh(ch.current);c=b.type;if(null!==a&&null!=b.stateNode)Di(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=128);else{if(!d){if(null===\nb.stateNode)throw Error(y(166));return null}a=dh(ah.current);if(rh(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[wf]=b;d[xf]=f;switch(c){case \"dialog\":G(\"cancel\",d);G(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",d);break;case \"video\":case \"audio\":for(a=0;a<Xe.length;a++)G(Xe[a],d);break;case \"source\":G(\"error\",d);break;case \"img\":case \"image\":case \"link\":G(\"error\",d);G(\"load\",d);break;case \"details\":G(\"toggle\",d);break;case \"input\":Za(d,f);G(\"invalid\",d);break;case \"select\":d._wrapperState=\n{wasMultiple:!!f.multiple};G(\"invalid\",d);break;case \"textarea\":hb(d,f),G(\"invalid\",d)}vb(c,f);a=null;for(var g in f)f.hasOwnProperty(g)&&(e=f[g],\"children\"===g?\"string\"===typeof e?d.textContent!==e&&(a=[\"children\",e]):\"number\"===typeof e&&d.textContent!==\"\"+e&&(a=[\"children\",\"\"+e]):ca.hasOwnProperty(g)&&null!=e&&\"onScroll\"===g&&G(\"scroll\",d));switch(c){case \"input\":Va(d);cb(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=\njf)}d=a;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;a===kb.html&&(a=lb(c));a===kb.html?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<Xe.length;e++)G(Xe[e],a);e=d;break;case \"source\":G(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":G(\"error\",a);G(\"load\",a);e=d;break;case \"details\":G(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);G(\"invalid\",a);break;case \"option\":e=eb(a,d);break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=m({},d,{value:void 0});G(\"invalid\",a);break;case \"textarea\":hb(a,d);e=\ngb(a,d);G(\"invalid\",a);break;default:e=d}vb(c,e);var h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?tb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&ob(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==c||\"\"!==k)&&pb(a,k):\"number\"===typeof k&&pb(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ca.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&G(\"scroll\",a):null!=k&&qa(a,f,k,g))}switch(c){case \"input\":Va(a);cb(a,d,!1);\nbreak;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=jf)}mf(c,d)&&(b.flags|=4)}null!==b.ref&&(b.flags|=128)}return null;case 6:if(a&&null!=b.stateNode)Ei(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(y(166));\nc=dh(ch.current);dh(ah.current);rh(b)?(d=b.stateNode,c=b.memoizedProps,d[wf]=b,d.nodeValue!==c&&(b.flags|=4)):(d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[wf]=b,b.stateNode=d)}return null;case 13:H(P);d=b.memoizedState;if(0!==(b.flags&64))return b.lanes=c,b;d=null!==d;c=!1;null===a?void 0!==b.memoizedProps.fallback&&rh(b):c=null!==a.memoizedState;if(d&&!c&&0!==(b.mode&2))if(null===a&&!0!==b.memoizedProps.unstable_avoidThisFallback||0!==(P.current&1))0===V&&(V=3);else{if(0===V||3===V)V=\n4;null===U||0===(Dg&134217727)&&0===(Hi&134217727)||Ii(U,W)}if(d||c)b.flags|=4;return null;case 4:return fh(),Ci(b),null===a&&cf(b.stateNode.containerInfo),null;case 10:return rg(b),null;case 17:return Ff(b.type)&&Gf(),null;case 19:H(P);d=b.memoizedState;if(null===d)return null;f=0!==(b.flags&64);g=d.rendering;if(null===g)if(f)Fi(d,!1);else{if(0!==V||null!==a&&0!==(a.flags&64))for(a=b.child;null!==a;){g=ih(a);if(null!==g){b.flags|=64;Fi(d,!1);f=g.updateQueue;null!==f&&(b.updateQueue=f,b.flags|=4);\nnull===d.lastEffect&&(b.firstEffect=null);b.lastEffect=d.lastEffect;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=2,f.nextEffect=null,f.firstEffect=null,f.lastEffect=null,g=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,\nf.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;I(P,P.current&1|2);return b.child}a=a.sibling}null!==d.tail&&O()>Ji&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;e<f.length;e+=\n2){var g=f[e],h=f[e+1];\"style\"===g?tb(c,h):\"dangerouslySetInnerHTML\"===g?ob(c,h):\"children\"===g?pb(c,h):qa(c,g,h,b)}switch(a){case \"input\":ab(c,d);break;case \"textarea\":ib(c,d);break;case \"select\":a=c._wrapperState.wasMultiple,c._wrapperState.wasMultiple=!!d.multiple,f=d.value,null!=f?fb(c,!!d.multiple,f,!1):a!==!!d.multiple&&(null!=d.defaultValue?fb(c,!!d.multiple,d.defaultValue,!0):fb(c,!!d.multiple,d.multiple?[]:\"\",!1))}}}return;case 6:if(null===b.stateNode)throw Error(y(162));b.stateNode.nodeValue=\nb.memoizedProps;return;case 3:c=b.stateNode;c.hydrate&&(c.hydrate=!1,Cc(c.containerInfo));return;case 12:return;case 13:null!==b.memoizedState&&(jj=O(),aj(b.child,!0));kj(b);return;case 19:kj(b);return;case 17:return;case 23:case 24:aj(b,null!==b.memoizedState);return}throw Error(y(163));}function kj(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Ui);b.forEach(function(b){var d=lj.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction mj(a,b){return null!==a&&(a=a.memoizedState,null===a||null!==a.dehydrated)?(b=b.memoizedState,null!==b&&null===b.dehydrated):!1}var nj=Math.ceil,oj=ra.ReactCurrentDispatcher,pj=ra.ReactCurrentOwner,X=0,U=null,Y=null,W=0,qj=0,rj=Bf(0),V=0,sj=null,tj=0,Dg=0,Hi=0,uj=0,vj=null,jj=0,Ji=Infinity;function wj(){Ji=O()+500}var Z=null,Qi=!1,Ri=null,Ti=null,xj=!1,yj=null,zj=90,Aj=[],Bj=[],Cj=null,Dj=0,Ej=null,Fj=-1,Gj=0,Hj=0,Ij=null,Jj=!1;function Hg(){return 0!==(X&48)?O():-1!==Fj?Fj:Fj=O()}\nfunction Ig(a){a=a.mode;if(0===(a&2))return 1;if(0===(a&4))return 99===eg()?1:2;0===Gj&&(Gj=tj);if(0!==kg.transition){0!==Hj&&(Hj=null!==vj?vj.pendingLanes:0);a=Gj;var b=4186112&~Hj;b&=-b;0===b&&(a=4186112&~a,b=a&-a,0===b&&(b=8192));return b}a=eg();0!==(X&4)&&98===a?a=Xc(12,Gj):(a=Sc(a),a=Xc(a,Gj));return a}\nfunction Jg(a,b,c){if(50<Dj)throw Dj=0,Ej=null,Error(y(185));a=Kj(a,b);if(null===a)return null;$c(a,b,c);a===U&&(Hi|=b,4===V&&Ii(a,W));var d=eg();1===b?0!==(X&8)&&0===(X&48)?Lj(a):(Mj(a,c),0===X&&(wj(),ig())):(0===(X&4)||98!==d&&99!==d||(null===Cj?Cj=new Set([a]):Cj.add(a)),Mj(a,c));vj=a}function Kj(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}\nfunction Mj(a,b){for(var c=a.callbackNode,d=a.suspendedLanes,e=a.pingedLanes,f=a.expirationTimes,g=a.pendingLanes;0<g;){var h=31-Vc(g),k=1<<h,l=f[h];if(-1===l){if(0===(k&d)||0!==(k&e)){l=b;Rc(k);var n=F;f[h]=10<=n?l+250:6<=n?l+5E3:-1}}else l<=b&&(a.expiredLanes|=k);g&=~k}d=Uc(a,a===U?W:0);b=F;if(0===d)null!==c&&(c!==Zf&&Pf(c),a.callbackNode=null,a.callbackPriority=0);else{if(null!==c){if(a.callbackPriority===b)return;c!==Zf&&Pf(c)}15===b?(c=Lj.bind(null,a),null===ag?(ag=[c],bg=Of(Uf,jg)):ag.push(c),\nc=Zf):14===b?c=hg(99,Lj.bind(null,a)):(c=Tc(b),c=hg(c,Nj.bind(null,a)));a.callbackPriority=b;a.callbackNode=c}}\nfunction Nj(a){Fj=-1;Hj=Gj=0;if(0!==(X&48))throw Error(y(327));var b=a.callbackNode;if(Oj()&&a.callbackNode!==b)return null;var c=Uc(a,a===U?W:0);if(0===c)return null;var d=c;var e=X;X|=16;var f=Pj();if(U!==a||W!==d)wj(),Qj(a,d);do try{Rj();break}catch(h){Sj(a,h)}while(1);qg();oj.current=f;X=e;null!==Y?d=0:(U=null,W=0,d=V);if(0!==(tj&Hi))Qj(a,0);else if(0!==d){2===d&&(X|=64,a.hydrate&&(a.hydrate=!1,qf(a.containerInfo)),c=Wc(a),0!==c&&(d=Tj(a,c)));if(1===d)throw b=sj,Qj(a,0),Ii(a,c),Mj(a,O()),b;a.finishedWork=\na.current.alternate;a.finishedLanes=c;switch(d){case 0:case 1:throw Error(y(345));case 2:Uj(a);break;case 3:Ii(a,c);if((c&62914560)===c&&(d=jj+500-O(),10<d)){if(0!==Uc(a,0))break;e=a.suspendedLanes;if((e&c)!==c){Hg();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=of(Uj.bind(null,a),d);break}Uj(a);break;case 4:Ii(a,c);if((c&4186112)===c)break;d=a.eventTimes;for(e=-1;0<c;){var g=31-Vc(c);f=1<<g;g=d[g];g>e&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10<c){a.timeoutHandle=of(Uj.bind(null,a),c);break}Uj(a);break;case 5:Uj(a);break;default:throw Error(y(329));}}Mj(a,O());return a.callbackNode===b?Nj.bind(null,a):null}function Ii(a,b){b&=~uj;b&=~Hi;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-Vc(b),d=1<<c;a[c]=-1;b&=~d}}\nfunction Lj(a){if(0!==(X&48))throw Error(y(327));Oj();if(a===U&&0!==(a.expiredLanes&W)){var b=W;var c=Tj(a,b);0!==(tj&Hi)&&(b=Uc(a,b),c=Tj(a,b))}else b=Uc(a,0),c=Tj(a,b);0!==a.tag&&2===c&&(X|=64,a.hydrate&&(a.hydrate=!1,qf(a.containerInfo)),b=Wc(a),0!==b&&(c=Tj(a,b)));if(1===c)throw c=sj,Qj(a,0),Ii(a,b),Mj(a,O()),c;a.finishedWork=a.current.alternate;a.finishedLanes=b;Uj(a);Mj(a,O());return null}\nfunction Vj(){if(null!==Cj){var a=Cj;Cj=null;a.forEach(function(a){a.expiredLanes|=24&a.pendingLanes;Mj(a,O())})}ig()}function Wj(a,b){var c=X;X|=1;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}}function Xj(a,b){var c=X;X&=-2;X|=8;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}}function ni(a,b){I(rj,qj);qj|=b;tj|=b}function Ki(){qj=rj.current;H(rj)}\nfunction Qj(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,pf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&Gf();break;case 3:fh();H(N);H(M);uh();break;case 5:hh(d);break;case 4:fh();break;case 13:H(P);break;case 19:H(P);break;case 10:rg(d);break;case 23:case 24:Ki()}c=c.return}U=a;Y=Tg(a.current,null);W=qj=tj=b;V=0;sj=null;uj=Hi=Dg=0}\nfunction Sj(a,b){do{var c=Y;try{qg();vh.current=Gh;if(yh){for(var d=R.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}yh=!1}xh=0;T=S=R=null;zh=!1;pj.current=null;if(null===c||null===c.return){V=1;sj=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=W;h.flags|=2048;h.firstEffect=h.lastEffect=null;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k;if(0===(h.mode&2)){var n=h.alternate;n?(h.updateQueue=n.updateQueue,h.memoizedState=n.memoizedState,h.lanes=n.lanes):\n(h.updateQueue=null,h.memoizedState=null)}var A=0!==(P.current&1),p=g;do{var C;if(C=13===p.tag){var x=p.memoizedState;if(null!==x)C=null!==x.dehydrated?!0:!1;else{var w=p.memoizedProps;C=void 0===w.fallback?!1:!0!==w.unstable_avoidThisFallback?!0:A?!1:!0}}if(C){var z=p.updateQueue;if(null===z){var u=new Set;u.add(l);p.updateQueue=u}else z.add(l);if(0===(p.mode&2)){p.flags|=64;h.flags|=16384;h.flags&=-2981;if(1===h.tag)if(null===h.alternate)h.tag=17;else{var t=zg(-1,1);t.tag=2;Ag(h,t)}h.lanes|=1;break a}k=\nvoid 0;h=b;var q=f.pingCache;null===q?(q=f.pingCache=new Oi,k=new Set,q.set(l,k)):(k=q.get(l),void 0===k&&(k=new Set,q.set(l,k)));if(!k.has(h)){k.add(h);var v=Yj.bind(null,f,l,h);l.then(v,v)}p.flags|=4096;p.lanes=b;break a}p=p.return}while(null!==p);k=Error((Ra(h.type)||\"A React component\")+\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1<b.flags&&(null!==\na.lastEffect?a.lastEffect.nextEffect=b:a.firstEffect=b,a.lastEffect=b))}else{c=Li(b);if(null!==c){c.flags&=2047;Y=c;return}null!==a&&(a.firstEffect=a.lastEffect=null,a.flags|=2048)}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===V&&(V=5)}function Uj(a){var b=eg();gg(99,dk.bind(null,a,b));return null}\nfunction dk(a,b){do Oj();while(null!==yj);if(0!==(X&48))throw Error(y(327));var c=a.finishedWork;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(y(177));a.callbackNode=null;var d=c.lanes|c.childLanes,e=d,f=a.pendingLanes&~e;a.pendingLanes=e;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=e;a.mutableReadLanes&=e;a.entangledLanes&=e;e=a.entanglements;for(var g=a.eventTimes,h=a.expirationTimes;0<f;){var k=31-Vc(f),l=1<<k;e[k]=0;g[k]=-1;h[k]=-1;f&=~l}null!==\nCj&&0===(d&24)&&Cj.has(a)&&Cj.delete(a);a===U&&(Y=U=null,W=0);1<c.flags?null!==c.lastEffect?(c.lastEffect.nextEffect=c,d=c.firstEffect):d=c:d=c.firstEffect;if(null!==d){e=X;X|=32;pj.current=null;kf=fd;g=Ne();if(Oe(g)){if(\"selectionStart\"in g)h={start:g.selectionStart,end:g.selectionEnd};else a:if(h=(h=g.ownerDocument)&&h.defaultView||window,(l=h.getSelection&&h.getSelection())&&0!==l.rangeCount){h=l.anchorNode;f=l.anchorOffset;k=l.focusNode;l=l.focusOffset;try{h.nodeType,k.nodeType}catch(va){h=null;\nbreak a}var n=0,A=-1,p=-1,C=0,x=0,w=g,z=null;b:for(;;){for(var u;;){w!==h||0!==f&&3!==w.nodeType||(A=n+f);w!==k||0!==l&&3!==w.nodeType||(p=n+l);3===w.nodeType&&(n+=w.nodeValue.length);if(null===(u=w.firstChild))break;z=w;w=u}for(;;){if(w===g)break b;z===h&&++C===f&&(A=n);z===k&&++x===l&&(p=n);if(null!==(u=w.nextSibling))break;w=z;z=w.parentNode}w=u}h=-1===A||-1===p?null:{start:A,end:p}}else h=null;h=h||{start:0,end:0}}else h=null;lf={focusedElem:g,selectionRange:h};fd=!1;Ij=null;Jj=!1;Z=d;do try{ek()}catch(va){if(null===\nZ)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);Ij=null;Z=d;do try{for(g=a;null!==Z;){var t=Z.flags;t&16&&pb(Z.stateNode,\"\");if(t&128){var q=Z.alternate;if(null!==q){var v=q.ref;null!==v&&(\"function\"===typeof v?v(null):v.current=null)}}switch(t&1038){case 2:fj(Z);Z.flags&=-3;break;case 6:fj(Z);Z.flags&=-3;ij(Z.alternate,Z);break;case 1024:Z.flags&=-1025;break;case 1028:Z.flags&=-1025;ij(Z.alternate,Z);break;case 4:ij(Z.alternate,Z);break;case 8:h=Z;cj(g,h);var J=h.alternate;dj(h);null!==\nJ&&dj(J)}Z=Z.nextEffect}}catch(va){if(null===Z)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);v=lf;q=Ne();t=v.focusedElem;g=v.selectionRange;if(q!==t&&t&&t.ownerDocument&&Me(t.ownerDocument.documentElement,t)){null!==g&&Oe(t)&&(q=g.start,v=g.end,void 0===v&&(v=q),\"selectionStart\"in t?(t.selectionStart=q,t.selectionEnd=Math.min(v,t.value.length)):(v=(q=t.ownerDocument||document)&&q.defaultView||window,v.getSelection&&(v=v.getSelection(),h=t.textContent.length,J=Math.min(g.start,h),g=void 0===\ng.end?J:Math.min(g.end,h),!v.extend&&J>g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;t<q.length;t++)v=q[t],v.element.scrollLeft=v.left,v.element.scrollTop=v.top}fd=!!kf;lf=kf=null;a.current=c;Z=d;do try{for(t=a;null!==Z;){var K=Z.flags;K&36&&Yi(t,Z.alternate,Z);if(K&128){q=void 0;var Q=Z.ref;if(null!==Q){var L=Z.stateNode;switch(Z.tag){case 5:q=L;break;default:q=L}\"function\"===typeof Q?Q(q):Q.current=q}}Z=Z.nextEffect}}catch(va){if(null===Z)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);Z=null;$f();X=e}else a.current=c;if(xj)xj=!1,yj=a,zj=b;else for(Z=d;null!==Z;)b=\nZ.nextEffect,Z.nextEffect=null,Z.flags&8&&(K=Z,K.sibling=null,K.stateNode=null),Z=b;d=a.pendingLanes;0===d&&(Ti=null);1===d?a===Ej?Dj++:(Dj=0,Ej=a):Dj=0;c=c.stateNode;if(Mf&&\"function\"===typeof Mf.onCommitFiberRoot)try{Mf.onCommitFiberRoot(Lf,c,void 0,64===(c.current.flags&64))}catch(va){}Mj(a,O());if(Qi)throw Qi=!1,a=Ri,Ri=null,a;if(0!==(X&8))return null;ig();return null}\nfunction ek(){for(;null!==Z;){var a=Z.alternate;Jj||null===Ij||(0!==(Z.flags&8)?dc(Z,Ij)&&(Jj=!0):13===Z.tag&&mj(a,Z)&&dc(Z,Ij)&&(Jj=!0));var b=Z.flags;0!==(b&256)&&Xi(a,Z);0===(b&512)||xj||(xj=!0,hg(97,function(){Oj();return null}));Z=Z.nextEffect}}function Oj(){if(90!==zj){var a=97<zj?97:zj;zj=90;return gg(a,fk)}return!1}function $i(a,b){Aj.push(b,a);xj||(xj=!0,hg(97,function(){Oj();return null}))}function Zi(a,b){Bj.push(b,a);xj||(xj=!0,hg(97,function(){Oj();return null}))}\nfunction fk(){if(null===yj)return!1;var a=yj;yj=null;if(0!==(X&48))throw Error(y(331));var b=X;X|=32;var c=Bj;Bj=[];for(var d=0;d<c.length;d+=2){var e=c[d],f=c[d+1],g=e.destroy;e.destroy=void 0;if(\"function\"===typeof g)try{g()}catch(k){if(null===f)throw Error(y(330));Wi(f,k)}}c=Aj;Aj=[];for(d=0;d<c.length;d+=2){e=c[d];f=c[d+1];try{var h=e.create;e.destroy=h()}catch(k){if(null===f)throw Error(y(330));Wi(f,k)}}for(h=a.current.firstEffect;null!==h;)a=h.nextEffect,h.nextEffect=null,h.flags&8&&(h.sibling=\nnull,h.stateNode=null),h=a;X=b;ig();return!0}function gk(a,b,c){b=Mi(c,b);b=Pi(a,b,1);Ag(a,b);b=Hg();a=Kj(a,1);null!==a&&($c(a,1,b),Mj(a,b))}\nfunction Wi(a,b){if(3===a.tag)gk(a,a,b);else for(var c=a.return;null!==c;){if(3===c.tag){gk(c,a,b);break}else if(1===c.tag){var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Ti||!Ti.has(d))){a=Mi(b,a);var e=Si(c,a,1);Ag(c,e);e=Hg();c=Kj(c,1);if(null!==c)$c(c,1,e),Mj(c,e);else if(\"function\"===typeof d.componentDidCatch&&(null===Ti||!Ti.has(d)))try{d.componentDidCatch(b,a)}catch(f){}break}}c=c.return}}\nfunction Yj(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=Hg();a.pingedLanes|=a.suspendedLanes&c;U===a&&(W&c)===c&&(4===V||3===V&&(W&62914560)===W&&500>O()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e<a.length;e+=2)f=a[e],f._workInProgressVersionPrimary=a[e+1],th.push(f);c=Zg(b,null,d,c);for(b.child=c;c;)c.flags=c.flags&-3|1024,c=c.sibling}else fi(a,b,d,c),sh();b=b.child}return b;case 5:return gh(b),null===a&&\nph(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,nf(d,e)?g=null:null!==f&&nf(d,f)&&(b.flags|=16),oi(a,b),fi(a,b,g,c),b.child;case 6:return null===a&&ph(b),null;case 13:return ti(a,b,c);case 4:return eh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Yg(b,null,d,c):fi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),gi(a,b,d,e,c);case 7:return fi(a,b,b.pendingProps,c),b.child;case 8:return fi(a,b,b.pendingProps.children,\nc),b.child;case 12:return fi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;I(mg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=He(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!N.current){b=hi(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==k){g=h.child;for(var l=\nk.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=zg(-1,c&-c),l.tag=2,Ag(h,l));h.lanes|=c;l=h.alternate;null!==l&&(l.lanes|=c);sg(h.return,c);k.lanes|=c;break}l=l.next}}else g=10===h.tag?h.type===b.type?null:h.child:h.child;if(null!==g)g.return=h;else for(g=h;null!==g;){if(g===b){g=null;break}h=g.sibling;if(null!==h){h.return=g.return;g=h;break}g=g.return}h=g}fi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,f=b.pendingProps,d=f.children,tg(b,c),e=vg(e,\nf.unstable_observedBits),d=d(e),b.flags|=1,fi(a,b,d,c),b.child;case 14:return e=b.type,f=lg(e,b.pendingProps),f=lg(e.type,f),ii(a,b,e,f,d,c);case 15:return ki(a,b,b.type,b.pendingProps,d,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),b.tag=1,Ff(d)?(a=!0,Jf(b)):a=!1,tg(b,c),Mg(b,d,e),Og(b,d,e,c),qi(null,b,d,!0,a,c);case 19:return Ai(a,b,c);case 23:return mi(a,b,c);case 24:return mi(a,b,c)}throw Error(y(156,b.tag));\n};function ik(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.flags=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childLanes=this.lanes=0;this.alternate=null}function nh(a,b,c,d){return new ik(a,b,c,d)}function ji(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction hk(a){if(\"function\"===typeof a)return ji(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Aa)return 11;if(a===Da)return 14}return 2}\nfunction Tg(a,b){var c=a.alternate;null===c?(c=nh(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Vg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)ji(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ua:return Xg(c.children,e,f,b);case Ha:g=8;e|=16;break;case wa:g=8;e|=1;break;case xa:return a=nh(12,c,b,e|8),a.elementType=xa,a.type=xa,a.lanes=f,a;case Ba:return a=nh(13,c,b,e),a.type=Ba,a.elementType=Ba,a.lanes=f,a;case Ca:return a=nh(19,c,b,e),a.elementType=Ca,a.lanes=f,a;case Ia:return vi(c,e,f,b);case Ja:return a=nh(24,c,b,e),a.elementType=Ja,a.lanes=f,a;default:if(\"object\"===\ntypeof a&&null!==a)switch(a.$$typeof){case ya:g=10;break a;case za:g=9;break a;case Aa:g=11;break a;case Da:g=14;break a;case Ea:g=16;d=null;break a;case Fa:g=22;break a}throw Error(y(130,null==a?a:typeof a,\"\"));}b=nh(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Xg(a,b,c,d){a=nh(7,a,d,b);a.lanes=c;return a}function vi(a,b,c,d){a=nh(23,a,d,b);a.elementType=Ia;a.lanes=c;return a}function Ug(a,b,c){a=nh(6,a,null,b);a.lanes=c;return a}\nfunction Wg(a,b,c){b=nh(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction jk(a,b,c){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.pendingContext=this.context=null;this.hydrate=c;this.callbackNode=null;this.callbackPriority=0;this.eventTimes=Zc(0);this.expirationTimes=Zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=Zc(0);this.mutableSourceEagerHydrationData=null}\nfunction kk(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:ta,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction lk(a,b,c,d){var e=b.current,f=Hg(),g=Ig(e);a:if(c){c=c._reactInternals;b:{if(Zb(c)!==c||1!==c.tag)throw Error(y(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(Ff(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(y(171));}if(1===c.tag){var k=c.type;if(Ff(k)){c=If(c,k,h);break a}}c=h}else c=Cf;null===b.context?b.context=c:b.pendingContext=c;b=zg(f,g);b.payload={element:a};d=void 0===d?null:d;null!==\nd&&(b.callback=d);Ag(e,b);Jg(e,g,f);return g}function mk(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function nk(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function ok(a,b){nk(a,b);(a=a.alternate)&&nk(a,b)}function pk(){return null}\nfunction qk(a,b,c){var d=null!=c&&null!=c.hydrationOptions&&c.hydrationOptions.mutableSources||null;c=new jk(a,b,null!=c&&!0===c.hydrate);b=nh(3,null,null,2===b?7:1===b?3:0);c.current=b;b.stateNode=c;xg(b);a[ff]=c.current;cf(8===a.nodeType?a.parentNode:a);if(d)for(a=0;a<d.length;a++){b=d[a];var e=b._getVersion;e=e(b._source);null==c.mutableSourceEagerHydrationData?c.mutableSourceEagerHydrationData=[b,e]:c.mutableSourceEagerHydrationData.push(b,e)}this._internalRoot=c}\nqk.prototype.render=function(a){lk(a,this._internalRoot,null,null)};qk.prototype.unmount=function(){var a=this._internalRoot,b=a.containerInfo;lk(null,a,null,function(){b[ff]=null})};function rk(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}\nfunction sk(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new qk(a,0,b?{hydrate:!0}:void 0)}\nfunction tk(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f._internalRoot;if(\"function\"===typeof e){var h=e;e=function(){var a=mk(g);h.call(a)}}lk(b,g,a,e)}else{f=c._reactRootContainer=sk(c,d);g=f._internalRoot;if(\"function\"===typeof e){var k=e;e=function(){var a=mk(g);k.call(a)}}Xj(function(){lk(b,g,a,e)})}return mk(g)}ec=function(a){if(13===a.tag){var b=Hg();Jg(a,4,b);ok(a,4)}};fc=function(a){if(13===a.tag){var b=Hg();Jg(a,67108864,b);ok(a,67108864)}};\ngc=function(a){if(13===a.tag){var b=Hg(),c=Ig(a);Jg(a,c,b);ok(a,c)}};hc=function(a,b){return b()};\nyb=function(a,b,c){switch(b){case \"input\":ab(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(y(90));Wa(d);ab(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Wj;\nHb=function(a,b,c,d,e){var f=X;X|=4;try{return gg(98,a.bind(null,b,c,d,e))}finally{X=f,0===X&&(wj(),ig())}};Ib=function(){0===(X&49)&&(Vj(),Oj())};Jb=function(a,b){var c=X;X|=2;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}};function uk(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!rk(b))throw Error(y(200));return kk(a,b,null,c)}var vk={Events:[Cb,ue,Db,Eb,Fb,Oj,{current:!1}]},wk={findFiberByHostInstance:wc,bundleType:0,version:\"17.0.2\",rendererPackageName:\"react-dom\"};\nvar xk={bundleType:wk.bundleType,version:wk.version,rendererPackageName:wk.rendererPackageName,rendererConfig:wk.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ra.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=cc(a);return null===a?null:a.stateNode},findFiberByHostInstance:wk.findFiberByHostInstance||\npk,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var yk=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!yk.isDisabled&&yk.supportsFiber)try{Lf=yk.inject(xk),Mf=yk}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=vk;exports.createPortal=uk;\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(y(188));throw Error(y(268,Object.keys(a)));}a=cc(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a,b){var c=X;if(0!==(c&48))return a(b);X|=1;try{if(a)return gg(99,a.bind(null,b))}finally{X=c,ig()}};exports.hydrate=function(a,b,c){if(!rk(b))throw Error(y(200));return tk(null,a,b,!0,c)};\nexports.render=function(a,b,c){if(!rk(b))throw Error(y(200));return tk(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!rk(a))throw Error(y(40));return a._reactRootContainer?(Xj(function(){tk(null,null,a,!1,function(){a._reactRootContainer=null;a[ff]=null})}),!0):!1};exports.unstable_batchedUpdates=Wj;exports.unstable_createPortal=function(a,b){return uk(a,b,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)};\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!rk(c))throw Error(y(200));if(null==a||void 0===a._reactInternals)throw Error(y(38));return tk(a,b,c,!1,d)};exports.version=\"17.0.2\";\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (format === undefined) {\n      throw new Error('invariant requires an error message argument');\n    }\n  }\n\n  if (!condition) {\n    var error;\n    if (format === undefined) {\n      error = new Error(\n        'Minified exception occurred; use the non-minified dev environment ' +\n        'for the full error message and additional helpful warnings.'\n      );\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(\n        format.replace(/%s/g, function() { return args[argIndex++]; })\n      );\n      error.name = 'Invariant Violation';\n    }\n\n    error.framesToPop = 1; // we don't care about invariant's own frame\n    throw error;\n  }\n};\n\nmodule.exports = invariant;\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n  // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n  // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n  // by any combination of letters, digits, plus, period, or hyphen.\n  return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar AxiosError = require('../core/AxiosError');\nvar transitionalDefaults = require('./transitional');\nvar toFormData = require('../helpers/toFormData');\n\nvar DEFAULT_CONTENT_TYPE = {\n  'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n  if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n    headers['Content-Type'] = value;\n  }\n}\n\nfunction getDefaultAdapter() {\n  var adapter;\n  if (typeof XMLHttpRequest !== 'undefined') {\n    // For browsers use XHR adapter\n    adapter = require('../adapters/xhr');\n  } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n    // For node use HTTP adapter\n    adapter = require('../adapters/http');\n  }\n  return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n  if (utils.isString(rawValue)) {\n    try {\n      (parser || JSON.parse)(rawValue);\n      return utils.trim(rawValue);\n    } catch (e) {\n      if (e.name !== 'SyntaxError') {\n        throw e;\n      }\n    }\n  }\n\n  return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n  transitional: transitionalDefaults,\n\n  adapter: getDefaultAdapter(),\n\n  transformRequest: [function transformRequest(data, headers) {\n    normalizeHeaderName(headers, 'Accept');\n    normalizeHeaderName(headers, 'Content-Type');\n\n    if (utils.isFormData(data) ||\n      utils.isArrayBuffer(data) ||\n      utils.isBuffer(data) ||\n      utils.isStream(data) ||\n      utils.isFile(data) ||\n      utils.isBlob(data)\n    ) {\n      return data;\n    }\n    if (utils.isArrayBufferView(data)) {\n      return data.buffer;\n    }\n    if (utils.isURLSearchParams(data)) {\n      setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n      return data.toString();\n    }\n\n    var isObjectPayload = utils.isObject(data);\n    var contentType = headers && headers['Content-Type'];\n\n    var isFileList;\n\n    if ((isFileList = utils.isFileList(data)) || (isObjectPayload && contentType === 'multipart/form-data')) {\n      var _FormData = this.env && this.env.FormData;\n      return toFormData(isFileList ? {'files[]': data} : data, _FormData && new _FormData());\n    } else if (isObjectPayload || contentType === 'application/json') {\n      setContentTypeIfUnset(headers, 'application/json');\n      return stringifySafely(data);\n    }\n\n    return data;\n  }],\n\n  transformResponse: [function transformResponse(data) {\n    var transitional = this.transitional || defaults.transitional;\n    var silentJSONParsing = transitional && transitional.silentJSONParsing;\n    var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n    var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n    if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n      try {\n        return JSON.parse(data);\n      } catch (e) {\n        if (strictJSONParsing) {\n          if (e.name === 'SyntaxError') {\n            throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n          }\n          throw e;\n        }\n      }\n    }\n\n    return data;\n  }],\n\n  /**\n   * A timeout in milliseconds to abort a request. If set to 0 (default) a\n   * timeout is not created.\n   */\n  timeout: 0,\n\n  xsrfCookieName: 'XSRF-TOKEN',\n  xsrfHeaderName: 'X-XSRF-TOKEN',\n\n  maxContentLength: -1,\n  maxBodyLength: -1,\n\n  env: {\n    FormData: require('./env/FormData')\n  },\n\n  validateStatus: function validateStatus(status) {\n    return status >= 200 && status < 300;\n  },\n\n  headers: {\n    common: {\n      'Accept': 'application/json, text/plain, */*'\n    }\n  }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n  defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n  var context = this || defaults;\n  /*eslint no-param-reassign:0*/\n  utils.forEach(fns, function transform(fn) {\n    data = fn.call(context, data, headers);\n  });\n\n  return data;\n};\n","// eslint-disable-next-line strict\nmodule.exports = null;\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n  'age', 'authorization', 'content-length', 'content-type', 'etag',\n  'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n  'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n  'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n  var parsed = {};\n  var key;\n  var val;\n  var i;\n\n  if (!headers) { return parsed; }\n\n  utils.forEach(headers.split('\\n'), function parser(line) {\n    i = line.indexOf(':');\n    key = utils.trim(line.substr(0, i)).toLowerCase();\n    val = utils.trim(line.substr(i + 1));\n\n    if (key) {\n      if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n        return;\n      }\n      if (key === 'set-cookie') {\n        parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n      } else {\n        parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n      }\n    }\n  });\n\n  return parsed;\n};\n","module.exports = {\n  \"version\": \"0.27.2\"\n};","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","'use strict';\n\nvar AxiosError = require('./AxiosError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n  var validateStatus = response.config.validateStatus;\n  if (!response.status || !validateStatus || validateStatus(response.status)) {\n    resolve(response);\n  } else {\n    reject(new AxiosError(\n      'Request failed with status code ' + response.status,\n      [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n      response.config,\n      response.request,\n      response\n    ));\n  }\n};\n","'use strict';\n\nmodule.exports = function parseProtocol(url) {\n  var match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n  return match && match[1] || '';\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = createChainableTypeChecker;\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n// Mostly taken from ReactPropTypes.\n\nfunction createChainableTypeChecker(validate) {\n  function checkType(isRequired, props, propName, componentName, location, propFullName) {\n    var componentNameSafe = componentName || '<<anonymous>>';\n    var propFullNameSafe = propFullName || propName;\n\n    if (props[propName] == null) {\n      if (isRequired) {\n        return new Error('Required ' + location + ' `' + propFullNameSafe + '` was not specified ' + ('in `' + componentNameSafe + '`.'));\n      }\n\n      return null;\n    }\n\n    for (var _len = arguments.length, args = Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n      args[_key - 6] = arguments[_key];\n    }\n\n    return validate.apply(undefined, [props, propName, componentNameSafe, location, propFullNameSafe].concat(args));\n  }\n\n  var chainedCheckType = checkType.bind(null, false);\n  chainedCheckType.isRequired = checkType.bind(null, true);\n\n  return chainedCheckType;\n}\nmodule.exports = exports['default'];","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","/** @license React v17.0.2\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar A={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},B={};function C(a,b,c){this.props=a;this.context=b;this.refs=B;this.updater=c||A}C.prototype.isReactComponent={};C.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(z(85));this.updater.enqueueSetState(this,a,b,\"setState\")};C.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};\nfunction D(){}D.prototype=C.prototype;function E(a,b,c){this.props=a;this.context=b;this.refs=B;this.updater=c||A}var F=E.prototype=new D;F.constructor=E;l(F,C.prototype);F.isPureReactComponent=!0;var G={current:null},H=Object.prototype.hasOwnProperty,I={key:!0,ref:!0,__self:!0,__source:!0};\nfunction J(a,b,c){var e,d={},k=null,h=null;if(null!=b)for(e in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)H.call(b,e)&&!I.hasOwnProperty(e)&&(d[e]=b[e]);var g=arguments.length-2;if(1===g)d.children=c;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];d.children=f}if(a&&a.defaultProps)for(e in g=a.defaultProps,g)void 0===d[e]&&(d[e]=g[e]);return{$$typeof:n,type:a,key:k,ref:h,props:d,_owner:G.current}}\nfunction K(a,b){return{$$typeof:n,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function L(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===n}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var M=/\\/+/g;function N(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction O(a,b,c,e,d){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case n:case p:h=!0}}if(h)return h=a,d=d(h),a=\"\"===e?\".\"+N(h,0):e,Array.isArray(d)?(c=\"\",null!=a&&(c=a.replace(M,\"$&/\")+\"/\"),O(d,b,c,\"\",function(a){return a})):null!=d&&(L(d)&&(d=K(d,c+(!d.key||h&&h.key===d.key?\"\":(\"\"+d.key).replace(M,\"$&/\")+\"/\")+a)),b.push(d)),1;h=0;e=\"\"===e?\".\":e+\":\";if(Array.isArray(a))for(var g=\n0;g<a.length;g++){k=a[g];var f=e+N(k,g);h+=O(k,b,c,f,d)}else if(f=y(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=e+N(k,g++),h+=O(k,b,c,f,d);else if(\"object\"===k)throw b=\"\"+a,Error(z(31,\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b));return h}function P(a,b,c){if(null==a)return a;var e=[],d=0;O(a,e,\"\",\"\",function(a){return b.call(c,a,d++)});return e}\nfunction Q(a){if(-1===a._status){var b=a._result;b=b();a._status=0;a._result=b;b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)})}if(1===a._status)return a._result;throw a._result;}var R={current:null};function S(){var a=R.current;if(null===a)throw Error(z(321));return a}var T={ReactCurrentDispatcher:R,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:G,IsSomeRendererActing:{current:!1},assign:l};\nexports.Children={map:P,forEach:function(a,b,c){P(a,function(){b.apply(this,arguments)},c)},count:function(a){var b=0;P(a,function(){b++});return b},toArray:function(a){return P(a,function(a){return a})||[]},only:function(a){if(!L(a))throw Error(z(143));return a}};exports.Component=C;exports.PureComponent=E;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=T;\nexports.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error(z(267,a));var e=l({},a.props),d=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=G.current);void 0!==b.key&&(d=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)H.call(b,f)&&!I.hasOwnProperty(f)&&(e[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)e.children=c;else if(1<f){g=Array(f);for(var m=0;m<f;m++)g[m]=arguments[m+2];e.children=g}return{$$typeof:n,type:a.type,\nkey:d,ref:k,props:e,_owner:h}};exports.createContext=function(a,b){void 0===b&&(b=null);a={$$typeof:r,_calculateChangedBits:b,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:q,_context:a};return a.Consumer=a};exports.createElement=J;exports.createFactory=function(a){var b=J.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};exports.forwardRef=function(a){return{$$typeof:t,render:a}};exports.isValidElement=L;\nexports.lazy=function(a){return{$$typeof:v,_payload:{_status:-1,_result:a},_init:Q}};exports.memo=function(a,b){return{$$typeof:u,type:a,compare:void 0===b?null:b}};exports.useCallback=function(a,b){return S().useCallback(a,b)};exports.useContext=function(a,b){return S().useContext(a,b)};exports.useDebugValue=function(){};exports.useEffect=function(a,b){return S().useEffect(a,b)};exports.useImperativeHandle=function(a,b,c){return S().useImperativeHandle(a,b,c)};\nexports.useLayoutEffect=function(a,b){return S().useLayoutEffect(a,b)};exports.useMemo=function(a,b){return S().useMemo(a,b)};exports.useReducer=function(a,b,c){return S().useReducer(a,b,c)};exports.useRef=function(a){return S().useRef(a)};exports.useState=function(a){return S().useState(a)};exports.version=\"17.0.2\";\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar CanceledError = require('../cancel/CanceledError');\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n  if (config.cancelToken) {\n    config.cancelToken.throwIfRequested();\n  }\n\n  if (config.signal && config.signal.aborted) {\n    throw new CanceledError();\n  }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n  throwIfCancellationRequested(config);\n\n  // Ensure headers exist\n  config.headers = config.headers || {};\n\n  // Transform request data\n  config.data = transformData.call(\n    config,\n    config.data,\n    config.headers,\n    config.transformRequest\n  );\n\n  // Flatten headers\n  config.headers = utils.merge(\n    config.headers.common || {},\n    config.headers[config.method] || {},\n    config.headers\n  );\n\n  utils.forEach(\n    ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n    function cleanHeaderConfig(method) {\n      delete config.headers[method];\n    }\n  );\n\n  var adapter = config.adapter || defaults.adapter;\n\n  return adapter(config).then(function onAdapterResolution(response) {\n    throwIfCancellationRequested(config);\n\n    // Transform response data\n    response.data = transformData.call(\n      config,\n      response.data,\n      response.headers,\n      config.transformResponse\n    );\n\n    return response;\n  }, function onAdapterRejection(reason) {\n    if (!isCancel(reason)) {\n      throwIfCancellationRequested(config);\n\n      // Transform response data\n      if (reason && reason.response) {\n        reason.response.data = transformData.call(\n          config,\n          reason.response.data,\n          reason.response.headers,\n          config.transformResponse\n        );\n      }\n    }\n\n    return Promise.reject(reason);\n  });\n};\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.min.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n","//! moment.js\n//! version : 2.30.1\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        var flags = null,\n            parsedParts = false,\n            isNowValid = m._d && !isNaN(m._d.getTime());\n        if (isNowValid) {\n            flags = getParsingFlags(m);\n            parsedParts = some.call(flags.parsedDateParts, function (i) {\n                return i != null;\n            });\n            isNowValid =\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            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        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        D: 'date',\n        dates: 'date',\n        date: 'date',\n        d: 'day',\n        days: 'day',\n        day: 'day',\n        e: 'weekday',\n        weekdays: 'weekday',\n        weekday: 'weekday',\n        E: 'isoWeekday',\n        isoweekdays: 'isoWeekday',\n        isoweekday: 'isoWeekday',\n        DDD: 'dayOfYear',\n        dayofyears: 'dayOfYear',\n        dayofyear: 'dayOfYear',\n        h: 'hour',\n        hours: 'hour',\n        hour: 'hour',\n        ms: 'millisecond',\n        milliseconds: 'millisecond',\n        millisecond: 'millisecond',\n        m: 'minute',\n        minutes: 'minute',\n        minute: 'minute',\n        M: 'month',\n        months: 'month',\n        month: 'month',\n        Q: 'quarter',\n        quarters: 'quarter',\n        quarter: 'quarter',\n        s: 'second',\n        seconds: 'second',\n        second: 'second',\n        gg: 'weekYear',\n        weekyears: 'weekYear',\n        weekyear: 'weekYear',\n        GG: 'isoWeekYear',\n        isoweekyears: 'isoWeekYear',\n        isoweekyear: 'isoWeekYear',\n        w: 'week',\n        weeks: 'week',\n        week: 'week',\n        W: 'isoWeek',\n        isoweeks: 'isoWeek',\n        isoweek: 'isoWeek',\n        y: 'year',\n        years: 'year',\n        year: 'year',\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        date: 9,\n        day: 11,\n        weekday: 11,\n        isoWeekday: 11,\n        dayOfYear: 4,\n        hour: 13,\n        millisecond: 16,\n        minute: 14,\n        month: 8,\n        quarter: 7,\n        second: 15,\n        weekYear: 1,\n        isoWeekYear: 1,\n        week: 5,\n        isoWeek: 5,\n        year: 1,\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    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        match1to2NoLeadingZero = /^[1-9]\\d?/, //         1-99\n        match1to2HasZero = /^([1-9]\\d|\\d)/, //           0-99\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    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    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    function isLeapYear(year) {\n        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\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    // 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    // 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 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        if (!mom.isValid()) {\n            return NaN;\n        }\n\n        var d = mom._d,\n            isUTC = mom._isUTC;\n\n        switch (unit) {\n            case 'Milliseconds':\n                return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n            case 'Seconds':\n                return isUTC ? d.getUTCSeconds() : d.getSeconds();\n            case 'Minutes':\n                return isUTC ? d.getUTCMinutes() : d.getMinutes();\n            case 'Hours':\n                return isUTC ? d.getUTCHours() : d.getHours();\n            case 'Date':\n                return isUTC ? d.getUTCDate() : d.getDate();\n            case 'Day':\n                return isUTC ? d.getUTCDay() : d.getDay();\n            case 'Month':\n                return isUTC ? d.getUTCMonth() : d.getMonth();\n            case 'FullYear':\n                return isUTC ? d.getUTCFullYear() : d.getFullYear();\n            default:\n                return NaN; // Just in case\n        }\n    }\n\n    function set$1(mom, unit, value) {\n        var d, isUTC, year, month, date;\n\n        if (!mom.isValid() || isNaN(value)) {\n            return;\n        }\n\n        d = mom._d;\n        isUTC = mom._isUTC;\n\n        switch (unit) {\n            case 'Milliseconds':\n                return void (isUTC\n                    ? d.setUTCMilliseconds(value)\n                    : d.setMilliseconds(value));\n            case 'Seconds':\n                return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n            case 'Minutes':\n                return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n            case 'Hours':\n                return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n            case 'Date':\n                return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n            // case 'Day': // Not real\n            //    return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n            // case 'Month': // Not used because we need to pass two variables\n            //     return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n            case 'FullYear':\n                break; // See below ...\n            default:\n                return; // Just in case\n        }\n\n        year = value;\n        month = mom.month();\n        date = mom.date();\n        date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n        void (isUTC\n            ? d.setUTCFullYear(year, month, date)\n            : d.setFullYear(year, month, date));\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    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    // PARSING\n\n    addRegexToken('M', match1to2, match1to2NoLeadingZero);\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        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        var month = value,\n            date = mom.date();\n\n        date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n        void (mom._isUTC\n            ? mom._d.setUTCMonth(month, date)\n            : mom._d.setMonth(month, date));\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            shortP,\n            longP;\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            shortP = regexEscape(this.monthsShort(mom, ''));\n            longP = regexEscape(this.months(mom, ''));\n            shortPieces.push(shortP);\n            longPieces.push(longP);\n            mixedPieces.push(longP);\n            mixedPieces.push(shortP);\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\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    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    // PARSING\n\n    addRegexToken('w', match1to2, match1to2NoLeadingZero);\n    addRegexToken('ww', match1to2, match2);\n    addRegexToken('W', match1to2, match1to2NoLeadingZero);\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    // 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\n        var day = get(this, 'Day');\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    // 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, match1to2HasZero);\n    addRegexToken('h', match1to2, match1to2NoLeadingZero);\n    addRegexToken('k', match1to2, match1to2NoLeadingZero);\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        // Ensure name is available and function returns boolean\n        return !!(name && name.match('^[^/\\\\\\\\]*$'));\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            erasName,\n            erasAbbr,\n            erasNarrow,\n            eras = this.eras();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            erasName = regexEscape(eras[i].name);\n            erasAbbr = regexEscape(eras[i].abbr);\n            erasNarrow = regexEscape(eras[i].narrow);\n\n            namePieces.push(erasName);\n            abbrPieces.push(erasAbbr);\n            narrowPieces.push(erasNarrow);\n            mixedPieces.push(erasName);\n            mixedPieces.push(erasAbbr);\n            mixedPieces.push(erasNarrow);\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    // 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() + this.localeData()._week.dow,\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    // 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    // PARSING\n\n    addRegexToken('D', match1to2, match1to2NoLeadingZero);\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    // 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    // PARSING\n\n    addRegexToken('m', match1to2, match1to2HasZero);\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    // PARSING\n\n    addRegexToken('s', match1to2, match1to2HasZero);\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    // 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    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        valueOf$1 = asMilliseconds;\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.30.1';\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","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n// eslint-disable-next-line func-names\nvar kindOf = (function(cache) {\n  // eslint-disable-next-line func-names\n  return function(thing) {\n    var str = toString.call(thing);\n    return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n  };\n})(Object.create(null));\n\nfunction kindOfTest(type) {\n  type = type.toLowerCase();\n  return function isKindOf(thing) {\n    return kindOf(thing) === type;\n  };\n}\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n  return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n  return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n  return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n    && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nvar isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n  var result;\n  if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n    result = ArrayBuffer.isView(val);\n  } else {\n    result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n  }\n  return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n  return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n  return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n  return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n  if (kindOf(val) !== 'object') {\n    return false;\n  }\n\n  var prototype = Object.getPrototypeOf(val);\n  return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nvar isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nvar isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n  return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n  return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} thing The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(thing) {\n  var pattern = '[object FormData]';\n  return thing && (\n    (typeof FormData === 'function' && thing instanceof FormData) ||\n    toString.call(thing) === pattern ||\n    (isFunction(thing.toString) && thing.toString() === pattern)\n  );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nvar isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n  return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n *  typeof window -> undefined\n *  typeof document -> undefined\n *\n * react-native:\n *  navigator.product -> 'ReactNative'\n * nativescript\n *  navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n  if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n                                           navigator.product === 'NativeScript' ||\n                                           navigator.product === 'NS')) {\n    return false;\n  }\n  return (\n    typeof window !== 'undefined' &&\n    typeof document !== 'undefined'\n  );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n  // Don't bother if no value provided\n  if (obj === null || typeof obj === 'undefined') {\n    return;\n  }\n\n  // Force an array if not already something iterable\n  if (typeof obj !== 'object') {\n    /*eslint no-param-reassign:0*/\n    obj = [obj];\n  }\n\n  if (isArray(obj)) {\n    // Iterate over array values\n    for (var i = 0, l = obj.length; i < l; i++) {\n      fn.call(null, obj[i], i, obj);\n    }\n  } else {\n    // Iterate over object keys\n    for (var key in obj) {\n      if (Object.prototype.hasOwnProperty.call(obj, key)) {\n        fn.call(null, obj[key], key, obj);\n      }\n    }\n  }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n  var result = {};\n  function assignValue(val, key) {\n    if (isPlainObject(result[key]) && isPlainObject(val)) {\n      result[key] = merge(result[key], val);\n    } else if (isPlainObject(val)) {\n      result[key] = merge({}, val);\n    } else if (isArray(val)) {\n      result[key] = val.slice();\n    } else {\n      result[key] = val;\n    }\n  }\n\n  for (var i = 0, l = arguments.length; i < l; i++) {\n    forEach(arguments[i], assignValue);\n  }\n  return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n  forEach(b, function assignValue(val, key) {\n    if (thisArg && typeof val === 'function') {\n      a[key] = bind(val, thisArg);\n    } else {\n      a[key] = val;\n    }\n  });\n  return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n  if (content.charCodeAt(0) === 0xFEFF) {\n    content = content.slice(1);\n  }\n  return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n */\n\nfunction inherits(constructor, superConstructor, props, descriptors) {\n  constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n  constructor.prototype.constructor = constructor;\n  props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function} [filter]\n * @returns {Object}\n */\n\nfunction toFlatObject(sourceObj, destObj, filter) {\n  var props;\n  var i;\n  var prop;\n  var merged = {};\n\n  destObj = destObj || {};\n\n  do {\n    props = Object.getOwnPropertyNames(sourceObj);\n    i = props.length;\n    while (i-- > 0) {\n      prop = props[i];\n      if (!merged[prop]) {\n        destObj[prop] = sourceObj[prop];\n        merged[prop] = true;\n      }\n    }\n    sourceObj = Object.getPrototypeOf(sourceObj);\n  } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n  return destObj;\n}\n\n/*\n * determines whether a string ends with the characters of a specified string\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n * @returns {boolean}\n */\nfunction endsWith(str, searchString, position) {\n  str = String(str);\n  if (position === undefined || position > str.length) {\n    position = str.length;\n  }\n  position -= searchString.length;\n  var lastIndex = str.indexOf(searchString, position);\n  return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object\n * @param {*} [thing]\n * @returns {Array}\n */\nfunction toArray(thing) {\n  if (!thing) return null;\n  var i = thing.length;\n  if (isUndefined(i)) return null;\n  var arr = new Array(i);\n  while (i-- > 0) {\n    arr[i] = thing[i];\n  }\n  return arr;\n}\n\n// eslint-disable-next-line func-names\nvar isTypedArray = (function(TypedArray) {\n  // eslint-disable-next-line func-names\n  return function(thing) {\n    return TypedArray && thing instanceof TypedArray;\n  };\n})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));\n\nmodule.exports = {\n  isArray: isArray,\n  isArrayBuffer: isArrayBuffer,\n  isBuffer: isBuffer,\n  isFormData: isFormData,\n  isArrayBufferView: isArrayBufferView,\n  isString: isString,\n  isNumber: isNumber,\n  isObject: isObject,\n  isPlainObject: isPlainObject,\n  isUndefined: isUndefined,\n  isDate: isDate,\n  isFile: isFile,\n  isBlob: isBlob,\n  isFunction: isFunction,\n  isStream: isStream,\n  isURLSearchParams: isURLSearchParams,\n  isStandardBrowserEnv: isStandardBrowserEnv,\n  forEach: forEach,\n  merge: merge,\n  extend: extend,\n  trim: trim,\n  stripBOM: stripBOM,\n  inherits: inherits,\n  toFlatObject: toFlatObject,\n  kindOf: kindOf,\n  kindOfTest: kindOfTest,\n  endsWith: endsWith,\n  toArray: toArray,\n  isTypedArray: isTypedArray,\n  isFileList: isFileList\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n  // eslint-disable-next-line no-param-reassign\n  config2 = config2 || {};\n  var config = {};\n\n  function getMergedValue(target, source) {\n    if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n      return utils.merge(target, source);\n    } else if (utils.isPlainObject(source)) {\n      return utils.merge({}, source);\n    } else if (utils.isArray(source)) {\n      return source.slice();\n    }\n    return source;\n  }\n\n  // eslint-disable-next-line consistent-return\n  function mergeDeepProperties(prop) {\n    if (!utils.isUndefined(config2[prop])) {\n      return getMergedValue(config1[prop], config2[prop]);\n    } else if (!utils.isUndefined(config1[prop])) {\n      return getMergedValue(undefined, config1[prop]);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function valueFromConfig2(prop) {\n    if (!utils.isUndefined(config2[prop])) {\n      return getMergedValue(undefined, config2[prop]);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function defaultToConfig2(prop) {\n    if (!utils.isUndefined(config2[prop])) {\n      return getMergedValue(undefined, config2[prop]);\n    } else if (!utils.isUndefined(config1[prop])) {\n      return getMergedValue(undefined, config1[prop]);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function mergeDirectKeys(prop) {\n    if (prop in config2) {\n      return getMergedValue(config1[prop], config2[prop]);\n    } else if (prop in config1) {\n      return getMergedValue(undefined, config1[prop]);\n    }\n  }\n\n  var mergeMap = {\n    'url': valueFromConfig2,\n    'method': valueFromConfig2,\n    'data': valueFromConfig2,\n    'baseURL': defaultToConfig2,\n    'transformRequest': defaultToConfig2,\n    'transformResponse': defaultToConfig2,\n    'paramsSerializer': defaultToConfig2,\n    'timeout': defaultToConfig2,\n    'timeoutMessage': defaultToConfig2,\n    'withCredentials': defaultToConfig2,\n    'adapter': defaultToConfig2,\n    'responseType': defaultToConfig2,\n    'xsrfCookieName': defaultToConfig2,\n    'xsrfHeaderName': defaultToConfig2,\n    'onUploadProgress': defaultToConfig2,\n    'onDownloadProgress': defaultToConfig2,\n    'decompress': defaultToConfig2,\n    'maxContentLength': defaultToConfig2,\n    'maxBodyLength': defaultToConfig2,\n    'beforeRedirect': defaultToConfig2,\n    'transport': defaultToConfig2,\n    'httpAgent': defaultToConfig2,\n    'httpsAgent': defaultToConfig2,\n    'cancelToken': defaultToConfig2,\n    'socketPath': defaultToConfig2,\n    'responseEncoding': defaultToConfig2,\n    'validateStatus': mergeDirectKeys\n  };\n\n  utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n    var merge = mergeMap[prop] || mergeDeepProperties;\n    var configValue = merge(prop);\n    (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n  });\n\n  return config;\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n  var printWarning = function printWarning(format, args) {\n    var len = arguments.length;\n    args = new Array(len > 1 ? len - 1 : 0);\n    for (var key = 1; key < len; key++) {\n      args[key - 1] = arguments[key];\n    }\n    var argIndex = 0;\n    var message = 'Warning: ' +\n      format.replace(/%s/g, function() {\n        return args[argIndex++];\n      });\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  }\n\n  warning = function(condition, format, args) {\n    var len = arguments.length;\n    args = new Array(len > 2 ? len - 2 : 0);\n    for (var key = 2; key < len; key++) {\n      args[key - 2] = arguments[key];\n    }\n    if (format === undefined) {\n      throw new Error(\n          '`warning(condition, format, ...args)` requires a warning ' +\n          'message argument'\n      );\n    }\n    if (!condition) {\n      printWarning.apply(null, [format].concat(args));\n    }\n  };\n}\n\nmodule.exports = warning;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n  this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n  this.handlers.push({\n    fulfilled: fulfilled,\n    rejected: rejected,\n    synchronous: options ? options.synchronous : false,\n    runWhen: options ? options.runWhen : null\n  });\n  return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n  if (this.handlers[id]) {\n    this.handlers[id] = null;\n  }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n  utils.forEach(this.handlers, function forEachHandler(h) {\n    if (h !== null) {\n      fn(h);\n    }\n  });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n  return encodeURIComponent(val).\n    replace(/%3A/gi, ':').\n    replace(/%24/g, '$').\n    replace(/%2C/gi, ',').\n    replace(/%20/g, '+').\n    replace(/%5B/gi, '[').\n    replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n  /*eslint no-param-reassign:0*/\n  if (!params) {\n    return url;\n  }\n\n  var serializedParams;\n  if (paramsSerializer) {\n    serializedParams = paramsSerializer(params);\n  } else if (utils.isURLSearchParams(params)) {\n    serializedParams = params.toString();\n  } else {\n    var parts = [];\n\n    utils.forEach(params, function serialize(val, key) {\n      if (val === null || typeof val === 'undefined') {\n        return;\n      }\n\n      if (utils.isArray(val)) {\n        key = key + '[]';\n      } else {\n        val = [val];\n      }\n\n      utils.forEach(val, function parseValue(v) {\n        if (utils.isDate(v)) {\n          v = v.toISOString();\n        } else if (utils.isObject(v)) {\n          v = JSON.stringify(v);\n        }\n        parts.push(encode(key) + '=' + encode(v));\n      });\n    });\n\n    serializedParams = parts.join('&');\n  }\n\n  if (serializedParams) {\n    var hashmarkIndex = url.indexOf('#');\n    if (hashmarkIndex !== -1) {\n      url = url.slice(0, hashmarkIndex);\n    }\n\n    url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n  }\n\n  return url;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-dom-server.browser.production.min.js');\n} else {\n  module.exports = require('./cjs/react-dom-server.browser.development.js');\n}\n","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n  'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n    return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n    if (Array.isArray(arg)) {\n        each(arg, context[fn], context);\n        return true;\n    }\n    return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n    var i;\n\n    if (!obj) {\n        return;\n    }\n\n    if (obj.forEach) {\n        obj.forEach(iterator, context);\n    } else if (obj.length !== undefined) {\n        i = 0;\n        while (i < obj.length) {\n            iterator.call(context, obj[i], i, obj);\n            i++;\n        }\n    } else {\n        for (i in obj) {\n            obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n        }\n    }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n    var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n    return function() {\n        var e = new Error('get-stack-trace');\n        var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n            .replace(/^\\s+at\\s+/gm, '')\n            .replace(/^Object.<anonymous>\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n        var log = window.console && (window.console.warn || window.console.log);\n        if (log) {\n            log.call(window.console, deprecationMessage, stack);\n        }\n        return method.apply(this, arguments);\n    };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n    assign = function assign(target) {\n        if (target === undefined || target === null) {\n            throw new TypeError('Cannot convert undefined or null to object');\n        }\n\n        var output = Object(target);\n        for (var index = 1; index < arguments.length; index++) {\n            var source = arguments[index];\n            if (source !== undefined && source !== null) {\n                for (var nextKey in source) {\n                    if (source.hasOwnProperty(nextKey)) {\n                        output[nextKey] = source[nextKey];\n                    }\n                }\n            }\n        }\n        return output;\n    };\n} else {\n    assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n    var keys = Object.keys(src);\n    var i = 0;\n    while (i < keys.length) {\n        if (!merge || (merge && dest[keys[i]] === undefined)) {\n            dest[keys[i]] = src[keys[i]];\n        }\n        i++;\n    }\n    return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n    return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n    var baseP = base.prototype,\n        childP;\n\n    childP = child.prototype = Object.create(baseP);\n    childP.constructor = child;\n    childP._super = baseP;\n\n    if (properties) {\n        assign(childP, properties);\n    }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n    return function boundFn() {\n        return fn.apply(context, arguments);\n    };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n    if (typeof val == TYPE_FUNCTION) {\n        return val.apply(args ? args[0] || undefined : undefined, args);\n    }\n    return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n    return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n    each(splitStr(types), function(type) {\n        target.addEventListener(type, handler, false);\n    });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n    each(splitStr(types), function(type) {\n        target.removeEventListener(type, handler, false);\n    });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n    while (node) {\n        if (node == parent) {\n            return true;\n        }\n        node = node.parentNode;\n    }\n    return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n    return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n    return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n    if (src.indexOf && !findByKey) {\n        return src.indexOf(find);\n    } else {\n        var i = 0;\n        while (i < src.length) {\n            if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n                return i;\n            }\n            i++;\n        }\n        return -1;\n    }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n    return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n    var results = [];\n    var values = [];\n    var i = 0;\n\n    while (i < src.length) {\n        var val = key ? src[i][key] : src[i];\n        if (inArray(values, val) < 0) {\n            results.push(src[i]);\n        }\n        values[i] = val;\n        i++;\n    }\n\n    if (sort) {\n        if (!key) {\n            results = results.sort();\n        } else {\n            results = results.sort(function sortUniqueArray(a, b) {\n                return a[key] > b[key];\n            });\n        }\n    }\n\n    return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n    var prefix, prop;\n    var camelProp = property[0].toUpperCase() + property.slice(1);\n\n    var i = 0;\n    while (i < VENDOR_PREFIXES.length) {\n        prefix = VENDOR_PREFIXES[i];\n        prop = (prefix) ? prefix + camelProp : property;\n\n        if (prop in obj) {\n            return prop;\n        }\n        i++;\n    }\n    return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n    return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n    var doc = element.ownerDocument || element;\n    return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n    var self = this;\n    this.manager = manager;\n    this.callback = callback;\n    this.element = manager.element;\n    this.target = manager.options.inputTarget;\n\n    // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n    // so when disabled the input events are completely bypassed.\n    this.domHandler = function(ev) {\n        if (boolOrFn(manager.options.enable, [manager])) {\n            self.handler(ev);\n        }\n    };\n\n    this.init();\n\n}\n\nInput.prototype = {\n    /**\n     * should handle the inputEvent data and trigger the callback\n     * @virtual\n     */\n    handler: function() { },\n\n    /**\n     * bind the events\n     */\n    init: function() {\n        this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n        this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n        this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n    },\n\n    /**\n     * unbind the events\n     */\n    destroy: function() {\n        this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n        this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n        this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n    }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n    var Type;\n    var inputClass = manager.options.inputClass;\n\n    if (inputClass) {\n        Type = inputClass;\n    } else if (SUPPORT_POINTER_EVENTS) {\n        Type = PointerEventInput;\n    } else if (SUPPORT_ONLY_TOUCH) {\n        Type = TouchInput;\n    } else if (!SUPPORT_TOUCH) {\n        Type = MouseInput;\n    } else {\n        Type = TouchMouseInput;\n    }\n    return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n    var pointersLen = input.pointers.length;\n    var changedPointersLen = input.changedPointers.length;\n    var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n    var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n    input.isFirst = !!isFirst;\n    input.isFinal = !!isFinal;\n\n    if (isFirst) {\n        manager.session = {};\n    }\n\n    // source event is the normalized value of the domEvents\n    // like 'touchstart, mouseup, pointerdown'\n    input.eventType = eventType;\n\n    // compute scale, rotation etc\n    computeInputData(manager, input);\n\n    // emit secret event\n    manager.emit('hammer.input', input);\n\n    manager.recognize(input);\n    manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n    var session = manager.session;\n    var pointers = input.pointers;\n    var pointersLength = pointers.length;\n\n    // store the first input to calculate the distance and direction\n    if (!session.firstInput) {\n        session.firstInput = simpleCloneInputData(input);\n    }\n\n    // to compute scale and rotation we need to store the multiple touches\n    if (pointersLength > 1 && !session.firstMultiple) {\n        session.firstMultiple = simpleCloneInputData(input);\n    } else if (pointersLength === 1) {\n        session.firstMultiple = false;\n    }\n\n    var firstInput = session.firstInput;\n    var firstMultiple = session.firstMultiple;\n    var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n    var center = input.center = getCenter(pointers);\n    input.timeStamp = now();\n    input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n    input.angle = getAngle(offsetCenter, center);\n    input.distance = getDistance(offsetCenter, center);\n\n    computeDeltaXY(session, input);\n    input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n    var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n    input.overallVelocityX = overallVelocity.x;\n    input.overallVelocityY = overallVelocity.y;\n    input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n    input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n    input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n    input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n        session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n    computeIntervalInputData(session, input);\n\n    // find the correct target\n    var target = manager.element;\n    if (hasParent(input.srcEvent.target, target)) {\n        target = input.srcEvent.target;\n    }\n    input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n    var center = input.center;\n    var offset = session.offsetDelta || {};\n    var prevDelta = session.prevDelta || {};\n    var prevInput = session.prevInput || {};\n\n    if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n        prevDelta = session.prevDelta = {\n            x: prevInput.deltaX || 0,\n            y: prevInput.deltaY || 0\n        };\n\n        offset = session.offsetDelta = {\n            x: center.x,\n            y: center.y\n        };\n    }\n\n    input.deltaX = prevDelta.x + (center.x - offset.x);\n    input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n    var last = session.lastInterval || input,\n        deltaTime = input.timeStamp - last.timeStamp,\n        velocity, velocityX, velocityY, direction;\n\n    if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n        var deltaX = input.deltaX - last.deltaX;\n        var deltaY = input.deltaY - last.deltaY;\n\n        var v = getVelocity(deltaTime, deltaX, deltaY);\n        velocityX = v.x;\n        velocityY = v.y;\n        velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n        direction = getDirection(deltaX, deltaY);\n\n        session.lastInterval = input;\n    } else {\n        // use latest velocity info if it doesn't overtake a minimum period\n        velocity = last.velocity;\n        velocityX = last.velocityX;\n        velocityY = last.velocityY;\n        direction = last.direction;\n    }\n\n    input.velocity = velocity;\n    input.velocityX = velocityX;\n    input.velocityY = velocityY;\n    input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n    // make a simple copy of the pointers because we will get a reference if we don't\n    // we only need clientXY for the calculations\n    var pointers = [];\n    var i = 0;\n    while (i < input.pointers.length) {\n        pointers[i] = {\n            clientX: round(input.pointers[i].clientX),\n            clientY: round(input.pointers[i].clientY)\n        };\n        i++;\n    }\n\n    return {\n        timeStamp: now(),\n        pointers: pointers,\n        center: getCenter(pointers),\n        deltaX: input.deltaX,\n        deltaY: input.deltaY\n    };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n    var pointersLength = pointers.length;\n\n    // no need to loop when only one touch\n    if (pointersLength === 1) {\n        return {\n            x: round(pointers[0].clientX),\n            y: round(pointers[0].clientY)\n        };\n    }\n\n    var x = 0, y = 0, i = 0;\n    while (i < pointersLength) {\n        x += pointers[i].clientX;\n        y += pointers[i].clientY;\n        i++;\n    }\n\n    return {\n        x: round(x / pointersLength),\n        y: round(y / pointersLength)\n    };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n    return {\n        x: x / deltaTime || 0,\n        y: y / deltaTime || 0\n    };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n    if (x === y) {\n        return DIRECTION_NONE;\n    }\n\n    if (abs(x) >= abs(y)) {\n        return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n    }\n    return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n    if (!props) {\n        props = PROPS_XY;\n    }\n    var x = p2[props[0]] - p1[props[0]],\n        y = p2[props[1]] - p1[props[1]];\n\n    return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n    if (!props) {\n        props = PROPS_XY;\n    }\n    var x = p2[props[0]] - p1[props[0]],\n        y = p2[props[1]] - p1[props[1]];\n    return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n    return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n    return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n    mousedown: INPUT_START,\n    mousemove: INPUT_MOVE,\n    mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n    this.evEl = MOUSE_ELEMENT_EVENTS;\n    this.evWin = MOUSE_WINDOW_EVENTS;\n\n    this.pressed = false; // mousedown state\n\n    Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n    /**\n     * handle mouse events\n     * @param {Object} ev\n     */\n    handler: function MEhandler(ev) {\n        var eventType = MOUSE_INPUT_MAP[ev.type];\n\n        // on start we want to have the left mouse button down\n        if (eventType & INPUT_START && ev.button === 0) {\n            this.pressed = true;\n        }\n\n        if (eventType & INPUT_MOVE && ev.which !== 1) {\n            eventType = INPUT_END;\n        }\n\n        // mouse must be down\n        if (!this.pressed) {\n            return;\n        }\n\n        if (eventType & INPUT_END) {\n            this.pressed = false;\n        }\n\n        this.callback(this.manager, eventType, {\n            pointers: [ev],\n            changedPointers: [ev],\n            pointerType: INPUT_TYPE_MOUSE,\n            srcEvent: ev\n        });\n    }\n});\n\nvar POINTER_INPUT_MAP = {\n    pointerdown: INPUT_START,\n    pointermove: INPUT_MOVE,\n    pointerup: INPUT_END,\n    pointercancel: INPUT_CANCEL,\n    pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n    2: INPUT_TYPE_TOUCH,\n    3: INPUT_TYPE_PEN,\n    4: INPUT_TYPE_MOUSE,\n    5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n    POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n    POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n    this.evEl = POINTER_ELEMENT_EVENTS;\n    this.evWin = POINTER_WINDOW_EVENTS;\n\n    Input.apply(this, arguments);\n\n    this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n    /**\n     * handle mouse events\n     * @param {Object} ev\n     */\n    handler: function PEhandler(ev) {\n        var store = this.store;\n        var removePointer = false;\n\n        var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n        var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n        var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n        var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n        // get index of the event in the store\n        var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n        // start and mouse must be down\n        if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n            if (storeIndex < 0) {\n                store.push(ev);\n                storeIndex = store.length - 1;\n            }\n        } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n            removePointer = true;\n        }\n\n        // it not found, so the pointer hasn't been down (so it's probably a hover)\n        if (storeIndex < 0) {\n            return;\n        }\n\n        // update the event in the store\n        store[storeIndex] = ev;\n\n        this.callback(this.manager, eventType, {\n            pointers: store,\n            changedPointers: [ev],\n            pointerType: pointerType,\n            srcEvent: ev\n        });\n\n        if (removePointer) {\n            // remove from the store\n            store.splice(storeIndex, 1);\n        }\n    }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n    touchstart: INPUT_START,\n    touchmove: INPUT_MOVE,\n    touchend: INPUT_END,\n    touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n    this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n    this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n    this.started = false;\n\n    Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n    handler: function TEhandler(ev) {\n        var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n        // should we handle the touch events?\n        if (type === INPUT_START) {\n            this.started = true;\n        }\n\n        if (!this.started) {\n            return;\n        }\n\n        var touches = normalizeSingleTouches.call(this, ev, type);\n\n        // when done, reset the started state\n        if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n            this.started = false;\n        }\n\n        this.callback(this.manager, type, {\n            pointers: touches[0],\n            changedPointers: touches[1],\n            pointerType: INPUT_TYPE_TOUCH,\n            srcEvent: ev\n        });\n    }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n    var all = toArray(ev.touches);\n    var changed = toArray(ev.changedTouches);\n\n    if (type & (INPUT_END | INPUT_CANCEL)) {\n        all = uniqueArray(all.concat(changed), 'identifier', true);\n    }\n\n    return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n    touchstart: INPUT_START,\n    touchmove: INPUT_MOVE,\n    touchend: INPUT_END,\n    touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n    this.evTarget = TOUCH_TARGET_EVENTS;\n    this.targetIds = {};\n\n    Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n    handler: function MTEhandler(ev) {\n        var type = TOUCH_INPUT_MAP[ev.type];\n        var touches = getTouches.call(this, ev, type);\n        if (!touches) {\n            return;\n        }\n\n        this.callback(this.manager, type, {\n            pointers: touches[0],\n            changedPointers: touches[1],\n            pointerType: INPUT_TYPE_TOUCH,\n            srcEvent: ev\n        });\n    }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n    var allTouches = toArray(ev.touches);\n    var targetIds = this.targetIds;\n\n    // when there is only one touch, the process can be simplified\n    if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n        targetIds[allTouches[0].identifier] = true;\n        return [allTouches, allTouches];\n    }\n\n    var i,\n        targetTouches,\n        changedTouches = toArray(ev.changedTouches),\n        changedTargetTouches = [],\n        target = this.target;\n\n    // get target touches from touches\n    targetTouches = allTouches.filter(function(touch) {\n        return hasParent(touch.target, target);\n    });\n\n    // collect touches\n    if (type === INPUT_START) {\n        i = 0;\n        while (i < targetTouches.length) {\n            targetIds[targetTouches[i].identifier] = true;\n            i++;\n        }\n    }\n\n    // filter changed touches to only contain touches that exist in the collected target ids\n    i = 0;\n    while (i < changedTouches.length) {\n        if (targetIds[changedTouches[i].identifier]) {\n            changedTargetTouches.push(changedTouches[i]);\n        }\n\n        // cleanup removed touches\n        if (type & (INPUT_END | INPUT_CANCEL)) {\n            delete targetIds[changedTouches[i].identifier];\n        }\n        i++;\n    }\n\n    if (!changedTargetTouches.length) {\n        return;\n    }\n\n    return [\n        // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n        uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n        changedTargetTouches\n    ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n    Input.apply(this, arguments);\n\n    var handler = bindFn(this.handler, this);\n    this.touch = new TouchInput(this.manager, handler);\n    this.mouse = new MouseInput(this.manager, handler);\n\n    this.primaryTouch = null;\n    this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n    /**\n     * handle mouse and touch events\n     * @param {Hammer} manager\n     * @param {String} inputEvent\n     * @param {Object} inputData\n     */\n    handler: function TMEhandler(manager, inputEvent, inputData) {\n        var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n            isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n        if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n            return;\n        }\n\n        // when we're in a touch event, record touches to  de-dupe synthetic mouse event\n        if (isTouch) {\n            recordTouches.call(this, inputEvent, inputData);\n        } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n            return;\n        }\n\n        this.callback(manager, inputEvent, inputData);\n    },\n\n    /**\n     * remove the event listeners\n     */\n    destroy: function destroy() {\n        this.touch.destroy();\n        this.mouse.destroy();\n    }\n});\n\nfunction recordTouches(eventType, eventData) {\n    if (eventType & INPUT_START) {\n        this.primaryTouch = eventData.changedPointers[0].identifier;\n        setLastTouch.call(this, eventData);\n    } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n        setLastTouch.call(this, eventData);\n    }\n}\n\nfunction setLastTouch(eventData) {\n    var touch = eventData.changedPointers[0];\n\n    if (touch.identifier === this.primaryTouch) {\n        var lastTouch = {x: touch.clientX, y: touch.clientY};\n        this.lastTouches.push(lastTouch);\n        var lts = this.lastTouches;\n        var removeLastTouch = function() {\n            var i = lts.indexOf(lastTouch);\n            if (i > -1) {\n                lts.splice(i, 1);\n            }\n        };\n        setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n    }\n}\n\nfunction isSyntheticEvent(eventData) {\n    var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n    for (var i = 0; i < this.lastTouches.length; i++) {\n        var t = this.lastTouches[i];\n        var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n        if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n            return true;\n        }\n    }\n    return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n    this.manager = manager;\n    this.set(value);\n}\n\nTouchAction.prototype = {\n    /**\n     * set the touchAction value on the element or enable the polyfill\n     * @param {String} value\n     */\n    set: function(value) {\n        // find out the touch-action by the event handlers\n        if (value == TOUCH_ACTION_COMPUTE) {\n            value = this.compute();\n        }\n\n        if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n            this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n        }\n        this.actions = value.toLowerCase().trim();\n    },\n\n    /**\n     * just re-set the touchAction value\n     */\n    update: function() {\n        this.set(this.manager.options.touchAction);\n    },\n\n    /**\n     * compute the value for the touchAction property based on the recognizer's settings\n     * @returns {String} value\n     */\n    compute: function() {\n        var actions = [];\n        each(this.manager.recognizers, function(recognizer) {\n            if (boolOrFn(recognizer.options.enable, [recognizer])) {\n                actions = actions.concat(recognizer.getTouchAction());\n            }\n        });\n        return cleanTouchActions(actions.join(' '));\n    },\n\n    /**\n     * this method is called on each input cycle and provides the preventing of the browser behavior\n     * @param {Object} input\n     */\n    preventDefaults: function(input) {\n        var srcEvent = input.srcEvent;\n        var direction = input.offsetDirection;\n\n        // if the touch action did prevented once this session\n        if (this.manager.session.prevented) {\n            srcEvent.preventDefault();\n            return;\n        }\n\n        var actions = this.actions;\n        var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n        var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n        var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n        if (hasNone) {\n            //do not prevent defaults if this is a tap gesture\n\n            var isTapPointer = input.pointers.length === 1;\n            var isTapMovement = input.distance < 2;\n            var isTapTouchTime = input.deltaTime < 250;\n\n            if (isTapPointer && isTapMovement && isTapTouchTime) {\n                return;\n            }\n        }\n\n        if (hasPanX && hasPanY) {\n            // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n            return;\n        }\n\n        if (hasNone ||\n            (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n            (hasPanX && direction & DIRECTION_VERTICAL)) {\n            return this.preventSrc(srcEvent);\n        }\n    },\n\n    /**\n     * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n     * @param {Object} srcEvent\n     */\n    preventSrc: function(srcEvent) {\n        this.manager.session.prevented = true;\n        srcEvent.preventDefault();\n    }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n    // none\n    if (inStr(actions, TOUCH_ACTION_NONE)) {\n        return TOUCH_ACTION_NONE;\n    }\n\n    var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n    var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n    // if both pan-x and pan-y are set (different recognizers\n    // for different directions, e.g. horizontal pan but vertical swipe?)\n    // we need none (as otherwise with pan-x pan-y combined none of these\n    // recognizers will work, since the browser would handle all panning\n    if (hasPanX && hasPanY) {\n        return TOUCH_ACTION_NONE;\n    }\n\n    // pan-x OR pan-y\n    if (hasPanX || hasPanY) {\n        return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n    }\n\n    // manipulation\n    if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n        return TOUCH_ACTION_MANIPULATION;\n    }\n\n    return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n    if (!NATIVE_TOUCH_ACTION) {\n        return false;\n    }\n    var touchMap = {};\n    var cssSupports = window.CSS && window.CSS.supports;\n    ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n        // If css.supports is not supported but there is native touch-action assume it supports\n        // all values. This is the case for IE 10 and 11.\n        touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n    });\n    return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n *               Possible\n *                  |\n *            +-----+---------------+\n *            |                     |\n *      +-----+-----+               |\n *      |           |               |\n *   Failed      Cancelled          |\n *                          +-------+------+\n *                          |              |\n *                      Recognized       Began\n *                                         |\n *                                      Changed\n *                                         |\n *                                  Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n    this.options = assign({}, this.defaults, options || {});\n\n    this.id = uniqueId();\n\n    this.manager = null;\n\n    // default is enable true\n    this.options.enable = ifUndefined(this.options.enable, true);\n\n    this.state = STATE_POSSIBLE;\n\n    this.simultaneous = {};\n    this.requireFail = [];\n}\n\nRecognizer.prototype = {\n    /**\n     * @virtual\n     * @type {Object}\n     */\n    defaults: {},\n\n    /**\n     * set options\n     * @param {Object} options\n     * @return {Recognizer}\n     */\n    set: function(options) {\n        assign(this.options, options);\n\n        // also update the touchAction, in case something changed about the directions/enabled state\n        this.manager && this.manager.touchAction.update();\n        return this;\n    },\n\n    /**\n     * recognize simultaneous with an other recognizer.\n     * @param {Recognizer} otherRecognizer\n     * @returns {Recognizer} this\n     */\n    recognizeWith: function(otherRecognizer) {\n        if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n            return this;\n        }\n\n        var simultaneous = this.simultaneous;\n        otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n        if (!simultaneous[otherRecognizer.id]) {\n            simultaneous[otherRecognizer.id] = otherRecognizer;\n            otherRecognizer.recognizeWith(this);\n        }\n        return this;\n    },\n\n    /**\n     * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n     * @param {Recognizer} otherRecognizer\n     * @returns {Recognizer} this\n     */\n    dropRecognizeWith: function(otherRecognizer) {\n        if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n            return this;\n        }\n\n        otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n        delete this.simultaneous[otherRecognizer.id];\n        return this;\n    },\n\n    /**\n     * recognizer can only run when an other is failing\n     * @param {Recognizer} otherRecognizer\n     * @returns {Recognizer} this\n     */\n    requireFailure: function(otherRecognizer) {\n        if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n            return this;\n        }\n\n        var requireFail = this.requireFail;\n        otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n        if (inArray(requireFail, otherRecognizer) === -1) {\n            requireFail.push(otherRecognizer);\n            otherRecognizer.requireFailure(this);\n        }\n        return this;\n    },\n\n    /**\n     * drop the requireFailure link. it does not remove the link on the other recognizer.\n     * @param {Recognizer} otherRecognizer\n     * @returns {Recognizer} this\n     */\n    dropRequireFailure: function(otherRecognizer) {\n        if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n            return this;\n        }\n\n        otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n        var index = inArray(this.requireFail, otherRecognizer);\n        if (index > -1) {\n            this.requireFail.splice(index, 1);\n        }\n        return this;\n    },\n\n    /**\n     * has require failures boolean\n     * @returns {boolean}\n     */\n    hasRequireFailures: function() {\n        return this.requireFail.length > 0;\n    },\n\n    /**\n     * if the recognizer can recognize simultaneous with an other recognizer\n     * @param {Recognizer} otherRecognizer\n     * @returns {Boolean}\n     */\n    canRecognizeWith: function(otherRecognizer) {\n        return !!this.simultaneous[otherRecognizer.id];\n    },\n\n    /**\n     * You should use `tryEmit` instead of `emit` directly to check\n     * that all the needed recognizers has failed before emitting.\n     * @param {Object} input\n     */\n    emit: function(input) {\n        var self = this;\n        var state = this.state;\n\n        function emit(event) {\n            self.manager.emit(event, input);\n        }\n\n        // 'panstart' and 'panmove'\n        if (state < STATE_ENDED) {\n            emit(self.options.event + stateStr(state));\n        }\n\n        emit(self.options.event); // simple 'eventName' events\n\n        if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n            emit(input.additionalEvent);\n        }\n\n        // panend and pancancel\n        if (state >= STATE_ENDED) {\n            emit(self.options.event + stateStr(state));\n        }\n    },\n\n    /**\n     * Check that all the require failure recognizers has failed,\n     * if true, it emits a gesture event,\n     * otherwise, setup the state to FAILED.\n     * @param {Object} input\n     */\n    tryEmit: function(input) {\n        if (this.canEmit()) {\n            return this.emit(input);\n        }\n        // it's failing anyway\n        this.state = STATE_FAILED;\n    },\n\n    /**\n     * can we emit?\n     * @returns {boolean}\n     */\n    canEmit: function() {\n        var i = 0;\n        while (i < this.requireFail.length) {\n            if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n                return false;\n            }\n            i++;\n        }\n        return true;\n    },\n\n    /**\n     * update the recognizer\n     * @param {Object} inputData\n     */\n    recognize: function(inputData) {\n        // make a new copy of the inputData\n        // so we can change the inputData without messing up the other recognizers\n        var inputDataClone = assign({}, inputData);\n\n        // is is enabled and allow recognizing?\n        if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n            this.reset();\n            this.state = STATE_FAILED;\n            return;\n        }\n\n        // reset when we've reached the end\n        if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n            this.state = STATE_POSSIBLE;\n        }\n\n        this.state = this.process(inputDataClone);\n\n        // the recognizer has recognized a gesture\n        // so trigger an event\n        if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n            this.tryEmit(inputDataClone);\n        }\n    },\n\n    /**\n     * return the state of the recognizer\n     * the actual recognizing happens in this method\n     * @virtual\n     * @param {Object} inputData\n     * @returns {Const} STATE\n     */\n    process: function(inputData) { }, // jshint ignore:line\n\n    /**\n     * return the preferred touch-action\n     * @virtual\n     * @returns {Array}\n     */\n    getTouchAction: function() { },\n\n    /**\n     * called when the gesture isn't allowed to recognize\n     * like when another is being recognized or it is disabled\n     * @virtual\n     */\n    reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n    if (state & STATE_CANCELLED) {\n        return 'cancel';\n    } else if (state & STATE_ENDED) {\n        return 'end';\n    } else if (state & STATE_CHANGED) {\n        return 'move';\n    } else if (state & STATE_BEGAN) {\n        return 'start';\n    }\n    return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n    if (direction == DIRECTION_DOWN) {\n        return 'down';\n    } else if (direction == DIRECTION_UP) {\n        return 'up';\n    } else if (direction == DIRECTION_LEFT) {\n        return 'left';\n    } else if (direction == DIRECTION_RIGHT) {\n        return 'right';\n    }\n    return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n    var manager = recognizer.manager;\n    if (manager) {\n        return manager.get(otherRecognizer);\n    }\n    return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n    Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n    /**\n     * @namespace\n     * @memberof AttrRecognizer\n     */\n    defaults: {\n        /**\n         * @type {Number}\n         * @default 1\n         */\n        pointers: 1\n    },\n\n    /**\n     * Used to check if it the recognizer receives valid input, like input.distance > 10.\n     * @memberof AttrRecognizer\n     * @param {Object} input\n     * @returns {Boolean} recognized\n     */\n    attrTest: function(input) {\n        var optionPointers = this.options.pointers;\n        return optionPointers === 0 || input.pointers.length === optionPointers;\n    },\n\n    /**\n     * Process the input and return the state for the recognizer\n     * @memberof AttrRecognizer\n     * @param {Object} input\n     * @returns {*} State\n     */\n    process: function(input) {\n        var state = this.state;\n        var eventType = input.eventType;\n\n        var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n        var isValid = this.attrTest(input);\n\n        // on cancel input and we've recognized before, return STATE_CANCELLED\n        if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n            return state | STATE_CANCELLED;\n        } else if (isRecognized || isValid) {\n            if (eventType & INPUT_END) {\n                return state | STATE_ENDED;\n            } else if (!(state & STATE_BEGAN)) {\n                return STATE_BEGAN;\n            }\n            return state | STATE_CHANGED;\n        }\n        return STATE_FAILED;\n    }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n    AttrRecognizer.apply(this, arguments);\n\n    this.pX = null;\n    this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n    /**\n     * @namespace\n     * @memberof PanRecognizer\n     */\n    defaults: {\n        event: 'pan',\n        threshold: 10,\n        pointers: 1,\n        direction: DIRECTION_ALL\n    },\n\n    getTouchAction: function() {\n        var direction = this.options.direction;\n        var actions = [];\n        if (direction & DIRECTION_HORIZONTAL) {\n            actions.push(TOUCH_ACTION_PAN_Y);\n        }\n        if (direction & DIRECTION_VERTICAL) {\n            actions.push(TOUCH_ACTION_PAN_X);\n        }\n        return actions;\n    },\n\n    directionTest: function(input) {\n        var options = this.options;\n        var hasMoved = true;\n        var distance = input.distance;\n        var direction = input.direction;\n        var x = input.deltaX;\n        var y = input.deltaY;\n\n        // lock to axis?\n        if (!(direction & options.direction)) {\n            if (options.direction & DIRECTION_HORIZONTAL) {\n                direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n                hasMoved = x != this.pX;\n                distance = Math.abs(input.deltaX);\n            } else {\n                direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n                hasMoved = y != this.pY;\n                distance = Math.abs(input.deltaY);\n            }\n        }\n        input.direction = direction;\n        return hasMoved && distance > options.threshold && direction & options.direction;\n    },\n\n    attrTest: function(input) {\n        return AttrRecognizer.prototype.attrTest.call(this, input) &&\n            (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n    },\n\n    emit: function(input) {\n\n        this.pX = input.deltaX;\n        this.pY = input.deltaY;\n\n        var direction = directionStr(input.direction);\n\n        if (direction) {\n            input.additionalEvent = this.options.event + direction;\n        }\n        this._super.emit.call(this, input);\n    }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n    AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n    /**\n     * @namespace\n     * @memberof PinchRecognizer\n     */\n    defaults: {\n        event: 'pinch',\n        threshold: 0,\n        pointers: 2\n    },\n\n    getTouchAction: function() {\n        return [TOUCH_ACTION_NONE];\n    },\n\n    attrTest: function(input) {\n        return this._super.attrTest.call(this, input) &&\n            (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n    },\n\n    emit: function(input) {\n        if (input.scale !== 1) {\n            var inOut = input.scale < 1 ? 'in' : 'out';\n            input.additionalEvent = this.options.event + inOut;\n        }\n        this._super.emit.call(this, input);\n    }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n    Recognizer.apply(this, arguments);\n\n    this._timer = null;\n    this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n    /**\n     * @namespace\n     * @memberof PressRecognizer\n     */\n    defaults: {\n        event: 'press',\n        pointers: 1,\n        time: 251, // minimal time of the pointer to be pressed\n        threshold: 9 // a minimal movement is ok, but keep it low\n    },\n\n    getTouchAction: function() {\n        return [TOUCH_ACTION_AUTO];\n    },\n\n    process: function(input) {\n        var options = this.options;\n        var validPointers = input.pointers.length === options.pointers;\n        var validMovement = input.distance < options.threshold;\n        var validTime = input.deltaTime > options.time;\n\n        this._input = input;\n\n        // we only allow little movement\n        // and we've reached an end event, so a tap is possible\n        if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n            this.reset();\n        } else if (input.eventType & INPUT_START) {\n            this.reset();\n            this._timer = setTimeoutContext(function() {\n                this.state = STATE_RECOGNIZED;\n                this.tryEmit();\n            }, options.time, this);\n        } else if (input.eventType & INPUT_END) {\n            return STATE_RECOGNIZED;\n        }\n        return STATE_FAILED;\n    },\n\n    reset: function() {\n        clearTimeout(this._timer);\n    },\n\n    emit: function(input) {\n        if (this.state !== STATE_RECOGNIZED) {\n            return;\n        }\n\n        if (input && (input.eventType & INPUT_END)) {\n            this.manager.emit(this.options.event + 'up', input);\n        } else {\n            this._input.timeStamp = now();\n            this.manager.emit(this.options.event, this._input);\n        }\n    }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n    AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n    /**\n     * @namespace\n     * @memberof RotateRecognizer\n     */\n    defaults: {\n        event: 'rotate',\n        threshold: 0,\n        pointers: 2\n    },\n\n    getTouchAction: function() {\n        return [TOUCH_ACTION_NONE];\n    },\n\n    attrTest: function(input) {\n        return this._super.attrTest.call(this, input) &&\n            (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n    }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n    AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n    /**\n     * @namespace\n     * @memberof SwipeRecognizer\n     */\n    defaults: {\n        event: 'swipe',\n        threshold: 10,\n        velocity: 0.3,\n        direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n        pointers: 1\n    },\n\n    getTouchAction: function() {\n        return PanRecognizer.prototype.getTouchAction.call(this);\n    },\n\n    attrTest: function(input) {\n        var direction = this.options.direction;\n        var velocity;\n\n        if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n            velocity = input.overallVelocity;\n        } else if (direction & DIRECTION_HORIZONTAL) {\n            velocity = input.overallVelocityX;\n        } else if (direction & DIRECTION_VERTICAL) {\n            velocity = input.overallVelocityY;\n        }\n\n        return this._super.attrTest.call(this, input) &&\n            direction & input.offsetDirection &&\n            input.distance > this.options.threshold &&\n            input.maxPointers == this.options.pointers &&\n            abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n    },\n\n    emit: function(input) {\n        var direction = directionStr(input.offsetDirection);\n        if (direction) {\n            this.manager.emit(this.options.event + direction, input);\n        }\n\n        this.manager.emit(this.options.event, input);\n    }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n    Recognizer.apply(this, arguments);\n\n    // previous time and center,\n    // used for tap counting\n    this.pTime = false;\n    this.pCenter = false;\n\n    this._timer = null;\n    this._input = null;\n    this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n    /**\n     * @namespace\n     * @memberof PinchRecognizer\n     */\n    defaults: {\n        event: 'tap',\n        pointers: 1,\n        taps: 1,\n        interval: 300, // max time between the multi-tap taps\n        time: 250, // max time of the pointer to be down (like finger on the screen)\n        threshold: 9, // a minimal movement is ok, but keep it low\n        posThreshold: 10 // a multi-tap can be a bit off the initial position\n    },\n\n    getTouchAction: function() {\n        return [TOUCH_ACTION_MANIPULATION];\n    },\n\n    process: function(input) {\n        var options = this.options;\n\n        var validPointers = input.pointers.length === options.pointers;\n        var validMovement = input.distance < options.threshold;\n        var validTouchTime = input.deltaTime < options.time;\n\n        this.reset();\n\n        if ((input.eventType & INPUT_START) && (this.count === 0)) {\n            return this.failTimeout();\n        }\n\n        // we only allow little movement\n        // and we've reached an end event, so a tap is possible\n        if (validMovement && validTouchTime && validPointers) {\n            if (input.eventType != INPUT_END) {\n                return this.failTimeout();\n            }\n\n            var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n            var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n            this.pTime = input.timeStamp;\n            this.pCenter = input.center;\n\n            if (!validMultiTap || !validInterval) {\n                this.count = 1;\n            } else {\n                this.count += 1;\n            }\n\n            this._input = input;\n\n            // if tap count matches we have recognized it,\n            // else it has began recognizing...\n            var tapCount = this.count % options.taps;\n            if (tapCount === 0) {\n                // no failing requirements, immediately trigger the tap event\n                // or wait as long as the multitap interval to trigger\n                if (!this.hasRequireFailures()) {\n                    return STATE_RECOGNIZED;\n                } else {\n                    this._timer = setTimeoutContext(function() {\n                        this.state = STATE_RECOGNIZED;\n                        this.tryEmit();\n                    }, options.interval, this);\n                    return STATE_BEGAN;\n                }\n            }\n        }\n        return STATE_FAILED;\n    },\n\n    failTimeout: function() {\n        this._timer = setTimeoutContext(function() {\n            this.state = STATE_FAILED;\n        }, this.options.interval, this);\n        return STATE_FAILED;\n    },\n\n    reset: function() {\n        clearTimeout(this._timer);\n    },\n\n    emit: function() {\n        if (this.state == STATE_RECOGNIZED) {\n            this._input.tapCount = this.count;\n            this.manager.emit(this.options.event, this._input);\n        }\n    }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n    options = options || {};\n    options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n    return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n    /**\n     * set if DOM events are being triggered.\n     * But this is slower and unused by simple implementations, so disabled by default.\n     * @type {Boolean}\n     * @default false\n     */\n    domEvents: false,\n\n    /**\n     * The value for the touchAction property/fallback.\n     * When set to `compute` it will magically set the correct value based on the added recognizers.\n     * @type {String}\n     * @default compute\n     */\n    touchAction: TOUCH_ACTION_COMPUTE,\n\n    /**\n     * @type {Boolean}\n     * @default true\n     */\n    enable: true,\n\n    /**\n     * EXPERIMENTAL FEATURE -- can be removed/changed\n     * Change the parent input target element.\n     * If Null, then it is being set the to main element.\n     * @type {Null|EventTarget}\n     * @default null\n     */\n    inputTarget: null,\n\n    /**\n     * force an input class\n     * @type {Null|Function}\n     * @default null\n     */\n    inputClass: null,\n\n    /**\n     * Default recognizer setup when calling `Hammer()`\n     * When creating a new Manager these will be skipped.\n     * @type {Array}\n     */\n    preset: [\n        // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n        [RotateRecognizer, {enable: false}],\n        [PinchRecognizer, {enable: false}, ['rotate']],\n        [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n        [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n        [TapRecognizer],\n        [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n        [PressRecognizer]\n    ],\n\n    /**\n     * Some CSS properties can be used to improve the working of Hammer.\n     * Add them to this method and they will be set when creating a new Manager.\n     * @namespace\n     */\n    cssProps: {\n        /**\n         * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n         * @type {String}\n         * @default 'none'\n         */\n        userSelect: 'none',\n\n        /**\n         * Disable the Windows Phone grippers when pressing an element.\n         * @type {String}\n         * @default 'none'\n         */\n        touchSelect: 'none',\n\n        /**\n         * Disables the default callout shown when you touch and hold a touch target.\n         * On iOS, when you touch and hold a touch target such as a link, Safari displays\n         * a callout containing information about the link. This property allows you to disable that callout.\n         * @type {String}\n         * @default 'none'\n         */\n        touchCallout: 'none',\n\n        /**\n         * Specifies whether zooming is enabled. Used by IE10>\n         * @type {String}\n         * @default 'none'\n         */\n        contentZooming: 'none',\n\n        /**\n         * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n         * @type {String}\n         * @default 'none'\n         */\n        userDrag: 'none',\n\n        /**\n         * Overrides the highlight color shown when the user taps a link or a JavaScript\n         * clickable element in iOS. This property obeys the alpha value, if specified.\n         * @type {String}\n         * @default 'rgba(0,0,0,0)'\n         */\n        tapHighlightColor: 'rgba(0,0,0,0)'\n    }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n    this.options = assign({}, Hammer.defaults, options || {});\n\n    this.options.inputTarget = this.options.inputTarget || element;\n\n    this.handlers = {};\n    this.session = {};\n    this.recognizers = [];\n    this.oldCssProps = {};\n\n    this.element = element;\n    this.input = createInputInstance(this);\n    this.touchAction = new TouchAction(this, this.options.touchAction);\n\n    toggleCssProps(this, true);\n\n    each(this.options.recognizers, function(item) {\n        var recognizer = this.add(new (item[0])(item[1]));\n        item[2] && recognizer.recognizeWith(item[2]);\n        item[3] && recognizer.requireFailure(item[3]);\n    }, this);\n}\n\nManager.prototype = {\n    /**\n     * set options\n     * @param {Object} options\n     * @returns {Manager}\n     */\n    set: function(options) {\n        assign(this.options, options);\n\n        // Options that need a little more setup\n        if (options.touchAction) {\n            this.touchAction.update();\n        }\n        if (options.inputTarget) {\n            // Clean up existing event listeners and reinitialize\n            this.input.destroy();\n            this.input.target = options.inputTarget;\n            this.input.init();\n        }\n        return this;\n    },\n\n    /**\n     * stop recognizing for this session.\n     * This session will be discarded, when a new [input]start event is fired.\n     * When forced, the recognizer cycle is stopped immediately.\n     * @param {Boolean} [force]\n     */\n    stop: function(force) {\n        this.session.stopped = force ? FORCED_STOP : STOP;\n    },\n\n    /**\n     * run the recognizers!\n     * called by the inputHandler function on every movement of the pointers (touches)\n     * it walks through all the recognizers and tries to detect the gesture that is being made\n     * @param {Object} inputData\n     */\n    recognize: function(inputData) {\n        var session = this.session;\n        if (session.stopped) {\n            return;\n        }\n\n        // run the touch-action polyfill\n        this.touchAction.preventDefaults(inputData);\n\n        var recognizer;\n        var recognizers = this.recognizers;\n\n        // this holds the recognizer that is being recognized.\n        // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n        // if no recognizer is detecting a thing, it is set to `null`\n        var curRecognizer = session.curRecognizer;\n\n        // reset when the last recognizer is recognized\n        // or when we're in a new session\n        if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n            curRecognizer = session.curRecognizer = null;\n        }\n\n        var i = 0;\n        while (i < recognizers.length) {\n            recognizer = recognizers[i];\n\n            // find out if we are allowed try to recognize the input for this one.\n            // 1.   allow if the session is NOT forced stopped (see the .stop() method)\n            // 2.   allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n            //      that is being recognized.\n            // 3.   allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n            //      this can be setup with the `recognizeWith()` method on the recognizer.\n            if (session.stopped !== FORCED_STOP && ( // 1\n                    !curRecognizer || recognizer == curRecognizer || // 2\n                    recognizer.canRecognizeWith(curRecognizer))) { // 3\n                recognizer.recognize(inputData);\n            } else {\n                recognizer.reset();\n            }\n\n            // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n            // current active recognizer. but only if we don't already have an active recognizer\n            if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n                curRecognizer = session.curRecognizer = recognizer;\n            }\n            i++;\n        }\n    },\n\n    /**\n     * get a recognizer by its event name.\n     * @param {Recognizer|String} recognizer\n     * @returns {Recognizer|Null}\n     */\n    get: function(recognizer) {\n        if (recognizer instanceof Recognizer) {\n            return recognizer;\n        }\n\n        var recognizers = this.recognizers;\n        for (var i = 0; i < recognizers.length; i++) {\n            if (recognizers[i].options.event == recognizer) {\n                return recognizers[i];\n            }\n        }\n        return null;\n    },\n\n    /**\n     * add a recognizer to the manager\n     * existing recognizers with the same event name will be removed\n     * @param {Recognizer} recognizer\n     * @returns {Recognizer|Manager}\n     */\n    add: function(recognizer) {\n        if (invokeArrayArg(recognizer, 'add', this)) {\n            return this;\n        }\n\n        // remove existing\n        var existing = this.get(recognizer.options.event);\n        if (existing) {\n            this.remove(existing);\n        }\n\n        this.recognizers.push(recognizer);\n        recognizer.manager = this;\n\n        this.touchAction.update();\n        return recognizer;\n    },\n\n    /**\n     * remove a recognizer by name or instance\n     * @param {Recognizer|String} recognizer\n     * @returns {Manager}\n     */\n    remove: function(recognizer) {\n        if (invokeArrayArg(recognizer, 'remove', this)) {\n            return this;\n        }\n\n        recognizer = this.get(recognizer);\n\n        // let's make sure this recognizer exists\n        if (recognizer) {\n            var recognizers = this.recognizers;\n            var index = inArray(recognizers, recognizer);\n\n            if (index !== -1) {\n                recognizers.splice(index, 1);\n                this.touchAction.update();\n            }\n        }\n\n        return this;\n    },\n\n    /**\n     * bind event\n     * @param {String} events\n     * @param {Function} handler\n     * @returns {EventEmitter} this\n     */\n    on: function(events, handler) {\n        if (events === undefined) {\n            return;\n        }\n        if (handler === undefined) {\n            return;\n        }\n\n        var handlers = this.handlers;\n        each(splitStr(events), function(event) {\n            handlers[event] = handlers[event] || [];\n            handlers[event].push(handler);\n        });\n        return this;\n    },\n\n    /**\n     * unbind event, leave emit blank to remove all handlers\n     * @param {String} events\n     * @param {Function} [handler]\n     * @returns {EventEmitter} this\n     */\n    off: function(events, handler) {\n        if (events === undefined) {\n            return;\n        }\n\n        var handlers = this.handlers;\n        each(splitStr(events), function(event) {\n            if (!handler) {\n                delete handlers[event];\n            } else {\n                handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n            }\n        });\n        return this;\n    },\n\n    /**\n     * emit event to the listeners\n     * @param {String} event\n     * @param {Object} data\n     */\n    emit: function(event, data) {\n        // we also want to trigger dom events\n        if (this.options.domEvents) {\n            triggerDomEvent(event, data);\n        }\n\n        // no handlers, so skip it all\n        var handlers = this.handlers[event] && this.handlers[event].slice();\n        if (!handlers || !handlers.length) {\n            return;\n        }\n\n        data.type = event;\n        data.preventDefault = function() {\n            data.srcEvent.preventDefault();\n        };\n\n        var i = 0;\n        while (i < handlers.length) {\n            handlers[i](data);\n            i++;\n        }\n    },\n\n    /**\n     * destroy the manager and unbinds all events\n     * it doesn't unbind dom events, that is the user own responsibility\n     */\n    destroy: function() {\n        this.element && toggleCssProps(this, false);\n\n        this.handlers = {};\n        this.session = {};\n        this.input.destroy();\n        this.element = null;\n    }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n    var element = manager.element;\n    if (!element.style) {\n        return;\n    }\n    var prop;\n    each(manager.options.cssProps, function(value, name) {\n        prop = prefixed(element.style, name);\n        if (add) {\n            manager.oldCssProps[prop] = element.style[prop];\n            element.style[prop] = value;\n        } else {\n            element.style[prop] = manager.oldCssProps[prop] || '';\n        }\n    });\n    if (!add) {\n        manager.oldCssProps = {};\n    }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n    var gestureEvent = document.createEvent('Event');\n    gestureEvent.initEvent(event, true, true);\n    gestureEvent.gesture = data;\n    data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n    INPUT_START: INPUT_START,\n    INPUT_MOVE: INPUT_MOVE,\n    INPUT_END: INPUT_END,\n    INPUT_CANCEL: INPUT_CANCEL,\n\n    STATE_POSSIBLE: STATE_POSSIBLE,\n    STATE_BEGAN: STATE_BEGAN,\n    STATE_CHANGED: STATE_CHANGED,\n    STATE_ENDED: STATE_ENDED,\n    STATE_RECOGNIZED: STATE_RECOGNIZED,\n    STATE_CANCELLED: STATE_CANCELLED,\n    STATE_FAILED: STATE_FAILED,\n\n    DIRECTION_NONE: DIRECTION_NONE,\n    DIRECTION_LEFT: DIRECTION_LEFT,\n    DIRECTION_RIGHT: DIRECTION_RIGHT,\n    DIRECTION_UP: DIRECTION_UP,\n    DIRECTION_DOWN: DIRECTION_DOWN,\n    DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n    DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n    DIRECTION_ALL: DIRECTION_ALL,\n\n    Manager: Manager,\n    Input: Input,\n    TouchAction: TouchAction,\n\n    TouchInput: TouchInput,\n    MouseInput: MouseInput,\n    PointerEventInput: PointerEventInput,\n    TouchMouseInput: TouchMouseInput,\n    SingleTouchInput: SingleTouchInput,\n\n    Recognizer: Recognizer,\n    AttrRecognizer: AttrRecognizer,\n    Tap: TapRecognizer,\n    Pan: PanRecognizer,\n    Swipe: SwipeRecognizer,\n    Pinch: PinchRecognizer,\n    Rotate: RotateRecognizer,\n    Press: PressRecognizer,\n\n    on: addEventListeners,\n    off: removeEventListeners,\n    each: each,\n    merge: merge,\n    extend: extend,\n    assign: assign,\n    inherit: inherit,\n    bindFn: bindFn,\n    prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n//  style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (typeof define === 'function' && define.amd) {\n    define(function() {\n        return Hammer;\n    });\n} else if (typeof module != 'undefined' && module.exports) {\n    module.exports = Hammer;\n} else {\n    window[exportName] = Hammer;\n}\n\n})(window, document, 'Hammer');\n","!function t(e,r){if(\"object\"==typeof exports&&\"object\"==typeof module)module.exports=r();else if(\"function\"==typeof define&&define.amd)define([],r);else{var n=r();for(var i in n)(\"object\"==typeof exports?exports:e)[i]=n[i]}}(this,(function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var i in t)r.d(n,i,function(e){return t[e]}.bind(null,i));return n},r.n=function(t){var e=t&&t.__esModule?function e(){return t.default}:function e(){return t};return r.d(e,\"a\",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p=\"\",r(r.s=22)}([function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}();var i={debug:function t(){},info:function t(){},warn:function t(){},error:function t(){}},o=void 0,s=void 0;(e.Log=function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t.reset=function t(){s=3,o=i},t.debug=function t(){if(s>=4){for(var e=arguments.length,r=Array(e),n=0;n<e;n++)r[n]=arguments[n];o.debug.apply(o,Array.from(r))}},t.info=function t(){if(s>=3){for(var e=arguments.length,r=Array(e),n=0;n<e;n++)r[n]=arguments[n];o.info.apply(o,Array.from(r))}},t.warn=function t(){if(s>=2){for(var e=arguments.length,r=Array(e),n=0;n<e;n++)r[n]=arguments[n];o.warn.apply(o,Array.from(r))}},t.error=function t(){if(s>=1){for(var e=arguments.length,r=Array(e),n=0;n<e;n++)r[n]=arguments[n];o.error.apply(o,Array.from(r))}},n(t,null,[{key:\"NONE\",get:function t(){return 0}},{key:\"ERROR\",get:function t(){return 1}},{key:\"WARN\",get:function t(){return 2}},{key:\"INFO\",get:function t(){return 3}},{key:\"DEBUG\",get:function t(){return 4}},{key:\"level\",get:function t(){return s},set:function t(e){if(!(0<=e&&e<=4))throw new Error(\"Invalid log level\");s=e}},{key:\"logger\",get:function t(){return o},set:function t(e){if(!e.debug&&e.info&&(e.debug=e.info),!(e.debug&&e.info&&e.warn&&e.error))throw new Error(\"Invalid logger\");o=e}}]),t}()).reset()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}();var i={setInterval:function(t){function e(e,r){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}((function(t,e){return setInterval(t,e)})),clearInterval:function(t){function e(e){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}((function(t){return clearInterval(t)}))},o=!1,s=null;e.Global=function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t._testing=function t(){o=!0},t.setXMLHttpRequest=function t(e){s=e},n(t,null,[{key:\"location\",get:function t(){if(!o)return location}},{key:\"localStorage\",get:function t(){if(!o&&\"undefined\"!=typeof window)return localStorage}},{key:\"sessionStorage\",get:function t(){if(!o&&\"undefined\"!=typeof window)return sessionStorage}},{key:\"XMLHttpRequest\",get:function t(){if(!o&&\"undefined\"!=typeof window)return s||XMLHttpRequest}},{key:\"timer\",get:function t(){if(!o)return i}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MetadataService=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0),o=r(7);function s(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var a=\".well-known/openid-configuration\";e.MetadataService=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.JsonService;if(s(this,t),!e)throw i.Log.error(\"MetadataService: No settings passed to MetadataService\"),new Error(\"settings\");this._settings=e,this._jsonService=new r([\"application/jwk-set+json\"])}return t.prototype.resetSigningKeys=function t(){this._settings=this._settings||{},this._settings.signingKeys=void 0},t.prototype.getMetadata=function t(){var e=this;return this._settings.metadata?(i.Log.debug(\"MetadataService.getMetadata: Returning metadata from settings\"),Promise.resolve(this._settings.metadata)):this.metadataUrl?(i.Log.debug(\"MetadataService.getMetadata: getting metadata from\",this.metadataUrl),this._jsonService.getJson(this.metadataUrl).then((function(t){i.Log.debug(\"MetadataService.getMetadata: json received\");var r=e._settings.metadataSeed||{};return e._settings.metadata=Object.assign({},r,t),e._settings.metadata}))):(i.Log.error(\"MetadataService.getMetadata: No authority or metadataUrl configured on settings\"),Promise.reject(new Error(\"No authority or metadataUrl configured on settings\")))},t.prototype.getIssuer=function t(){return this._getMetadataProperty(\"issuer\")},t.prototype.getAuthorizationEndpoint=function t(){return this._getMetadataProperty(\"authorization_endpoint\")},t.prototype.getUserInfoEndpoint=function t(){return this._getMetadataProperty(\"userinfo_endpoint\")},t.prototype.getTokenEndpoint=function t(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this._getMetadataProperty(\"token_endpoint\",e)},t.prototype.getCheckSessionIframe=function t(){return this._getMetadataProperty(\"check_session_iframe\",!0)},t.prototype.getEndSessionEndpoint=function t(){return this._getMetadataProperty(\"end_session_endpoint\",!0)},t.prototype.getRevocationEndpoint=function t(){return this._getMetadataProperty(\"revocation_endpoint\",!0)},t.prototype.getKeysEndpoint=function t(){return this._getMetadataProperty(\"jwks_uri\",!0)},t.prototype._getMetadataProperty=function t(e){var r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return i.Log.debug(\"MetadataService.getMetadataProperty for: \"+e),this.getMetadata().then((function(t){if(i.Log.debug(\"MetadataService.getMetadataProperty: metadata recieved\"),void 0===t[e]){if(!0===r)return void i.Log.warn(\"MetadataService.getMetadataProperty: Metadata does not contain optional property \"+e);throw i.Log.error(\"MetadataService.getMetadataProperty: Metadata does not contain property \"+e),new Error(\"Metadata does not contain property \"+e)}return t[e]}))},t.prototype.getSigningKeys=function t(){var e=this;return this._settings.signingKeys?(i.Log.debug(\"MetadataService.getSigningKeys: Returning signingKeys from settings\"),Promise.resolve(this._settings.signingKeys)):this._getMetadataProperty(\"jwks_uri\").then((function(t){return i.Log.debug(\"MetadataService.getSigningKeys: jwks_uri received\",t),e._jsonService.getJson(t).then((function(t){if(i.Log.debug(\"MetadataService.getSigningKeys: key set received\",t),!t.keys)throw i.Log.error(\"MetadataService.getSigningKeys: Missing keys on keyset\"),new Error(\"Missing keys on keyset\");return e._settings.signingKeys=t.keys,e._settings.signingKeys}))}))},n(t,[{key:\"metadataUrl\",get:function t(){return this._metadataUrl||(this._settings.metadataUrl?this._metadataUrl=this._settings.metadataUrl:(this._metadataUrl=this._settings.authority,this._metadataUrl&&this._metadataUrl.indexOf(a)<0&&(\"/\"!==this._metadataUrl[this._metadataUrl.length-1]&&(this._metadataUrl+=\"/\"),this._metadataUrl+=a))),this._metadataUrl}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UrlUtility=void 0;var n=r(0),i=r(1);e.UrlUtility=function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t.addQueryParam=function t(e,r,n){return e.indexOf(\"?\")<0&&(e+=\"?\"),\"?\"!==e[e.length-1]&&(e+=\"&\"),e+=encodeURIComponent(r),e+=\"=\",e+=encodeURIComponent(n)},t.parseUrlFragment=function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"#\",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.Global;\"string\"!=typeof e&&(e=o.location.href);var s=e.lastIndexOf(r);s>=0&&(e=e.substr(s+1)),\"?\"===r&&(s=e.indexOf(\"#\"))>=0&&(e=e.substr(0,s));for(var a,u={},c=/([^&=]+)=([^&]*)/g,h=0;a=c.exec(e);)if(u[decodeURIComponent(a[1])]=decodeURIComponent(a[2].replace(/\\+/g,\" \")),h++>50)return n.Log.error(\"UrlUtility.parseUrlFragment: response exceeded expected number of parameters\",e),{error:\"Response exceeded expected number of parameters\"};for(var l in u)return u;return{}},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.JoseUtil=void 0;var n=r(26),i=function o(t){return t&&t.__esModule?t:{default:t}}(r(33));e.JoseUtil=(0,i.default)({jws:n.jws,KeyUtil:n.KeyUtil,X509:n.X509,crypto:n.crypto,hextob64u:n.hextob64u,b64tohex:n.b64tohex,AllowedSigningAlgs:n.AllowedSigningAlgs})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.OidcClientSettings=void 0;var n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},i=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),o=r(0),s=r(23),a=r(6),u=r(24),c=r(2);function h(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var l=\".well-known/openid-configuration\",f=\"id_token\",g=\"openid\",d=\"client_secret_post\";e.OidcClientSettings=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.authority,i=e.metadataUrl,o=e.metadata,l=e.signingKeys,p=e.metadataSeed,v=e.client_id,y=e.client_secret,m=e.response_type,_=void 0===m?f:m,S=e.scope,b=void 0===S?g:S,w=e.redirect_uri,F=e.post_logout_redirect_uri,E=e.client_authentication,x=void 0===E?d:E,A=e.prompt,k=e.display,P=e.max_age,C=e.ui_locales,T=e.acr_values,R=e.resource,I=e.response_mode,D=e.filterProtocolClaims,L=void 0===D||D,N=e.loadUserInfo,U=void 0===N||N,B=e.staleStateAge,O=void 0===B?900:B,j=e.clockSkew,M=void 0===j?300:j,H=e.clockService,V=void 0===H?new s.ClockService:H,K=e.userInfoJwtIssuer,q=void 0===K?\"OP\":K,J=e.mergeClaims,W=void 0!==J&&J,z=e.stateStore,Y=void 0===z?new a.WebStorageStateStore:z,G=e.ResponseValidatorCtor,X=void 0===G?u.ResponseValidator:G,$=e.MetadataServiceCtor,Q=void 0===$?c.MetadataService:$,Z=e.extraQueryParams,tt=void 0===Z?{}:Z,et=e.extraTokenParams,rt=void 0===et?{}:et;h(this,t),this._authority=r,this._metadataUrl=i,this._metadata=o,this._metadataSeed=p,this._signingKeys=l,this._client_id=v,this._client_secret=y,this._response_type=_,this._scope=b,this._redirect_uri=w,this._post_logout_redirect_uri=F,this._client_authentication=x,this._prompt=A,this._display=k,this._max_age=P,this._ui_locales=C,this._acr_values=T,this._resource=R,this._response_mode=I,this._filterProtocolClaims=!!L,this._loadUserInfo=!!U,this._staleStateAge=O,this._clockSkew=M,this._clockService=V,this._userInfoJwtIssuer=q,this._mergeClaims=!!W,this._stateStore=Y,this._validator=new X(this),this._metadataService=new Q(this),this._extraQueryParams=\"object\"===(void 0===tt?\"undefined\":n(tt))?tt:{},this._extraTokenParams=\"object\"===(void 0===rt?\"undefined\":n(rt))?rt:{}}return t.prototype.getEpochTime=function t(){return this._clockService.getEpochTime()},i(t,[{key:\"client_id\",get:function t(){return this._client_id},set:function t(e){if(this._client_id)throw o.Log.error(\"OidcClientSettings.set_client_id: client_id has already been assigned.\"),new Error(\"client_id has already been assigned.\");this._client_id=e}},{key:\"client_secret\",get:function t(){return this._client_secret}},{key:\"response_type\",get:function t(){return this._response_type}},{key:\"scope\",get:function t(){return this._scope}},{key:\"redirect_uri\",get:function t(){return this._redirect_uri}},{key:\"post_logout_redirect_uri\",get:function t(){return this._post_logout_redirect_uri}},{key:\"client_authentication\",get:function t(){return this._client_authentication}},{key:\"prompt\",get:function t(){return this._prompt}},{key:\"display\",get:function t(){return this._display}},{key:\"max_age\",get:function t(){return this._max_age}},{key:\"ui_locales\",get:function t(){return this._ui_locales}},{key:\"acr_values\",get:function t(){return this._acr_values}},{key:\"resource\",get:function t(){return this._resource}},{key:\"response_mode\",get:function t(){return this._response_mode}},{key:\"authority\",get:function t(){return this._authority},set:function t(e){if(this._authority)throw o.Log.error(\"OidcClientSettings.set_authority: authority has already been assigned.\"),new Error(\"authority has already been assigned.\");this._authority=e}},{key:\"metadataUrl\",get:function t(){return this._metadataUrl||(this._metadataUrl=this.authority,this._metadataUrl&&this._metadataUrl.indexOf(l)<0&&(\"/\"!==this._metadataUrl[this._metadataUrl.length-1]&&(this._metadataUrl+=\"/\"),this._metadataUrl+=l)),this._metadataUrl}},{key:\"metadata\",get:function t(){return this._metadata},set:function t(e){this._metadata=e}},{key:\"metadataSeed\",get:function t(){return this._metadataSeed},set:function t(e){this._metadataSeed=e}},{key:\"signingKeys\",get:function t(){return this._signingKeys},set:function t(e){this._signingKeys=e}},{key:\"filterProtocolClaims\",get:function t(){return this._filterProtocolClaims}},{key:\"loadUserInfo\",get:function t(){return this._loadUserInfo}},{key:\"staleStateAge\",get:function t(){return this._staleStateAge}},{key:\"clockSkew\",get:function t(){return this._clockSkew}},{key:\"userInfoJwtIssuer\",get:function t(){return this._userInfoJwtIssuer}},{key:\"mergeClaims\",get:function t(){return this._mergeClaims}},{key:\"stateStore\",get:function t(){return this._stateStore}},{key:\"validator\",get:function t(){return this._validator}},{key:\"metadataService\",get:function t(){return this._metadataService}},{key:\"extraQueryParams\",get:function t(){return this._extraQueryParams},set:function t(e){\"object\"===(void 0===e?\"undefined\":n(e))?this._extraQueryParams=e:this._extraQueryParams={}}},{key:\"extraTokenParams\",get:function t(){return this._extraTokenParams},set:function t(e){\"object\"===(void 0===e?\"undefined\":n(e))?this._extraTokenParams=e:this._extraTokenParams={}}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.WebStorageStateStore=void 0;var n=r(0),i=r(1);function o(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.WebStorageStateStore=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.prefix,n=void 0===r?\"oidc.\":r,s=e.store,a=void 0===s?i.Global.localStorage:s;o(this,t),this._store=a,this._prefix=n}return t.prototype.set=function t(e,r){return n.Log.debug(\"WebStorageStateStore.set\",e),e=this._prefix+e,this._store.setItem(e,r),Promise.resolve()},t.prototype.get=function t(e){n.Log.debug(\"WebStorageStateStore.get\",e),e=this._prefix+e;var r=this._store.getItem(e);return Promise.resolve(r)},t.prototype.remove=function t(e){n.Log.debug(\"WebStorageStateStore.remove\",e),e=this._prefix+e;var r=this._store.getItem(e);return this._store.removeItem(e),Promise.resolve(r)},t.prototype.getAllKeys=function t(){n.Log.debug(\"WebStorageStateStore.getAllKeys\");for(var e=[],r=0;r<this._store.length;r++){var i=this._store.key(r);0===i.indexOf(this._prefix)&&e.push(i.substr(this._prefix.length))}return Promise.resolve(e)},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.JsonService=void 0;var n=r(0),i=r(1);function o(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.JsonService=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i.Global.XMLHttpRequest,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;o(this,t),e&&Array.isArray(e)?this._contentTypes=e.slice():this._contentTypes=[],this._contentTypes.push(\"application/json\"),n&&this._contentTypes.push(\"application/jwt\"),this._XMLHttpRequest=r,this._jwtHandler=n}return t.prototype.getJson=function t(e,r){var i=this;if(!e)throw n.Log.error(\"JsonService.getJson: No url passed\"),new Error(\"url\");return n.Log.debug(\"JsonService.getJson, url: \",e),new Promise((function(t,o){var s=new i._XMLHttpRequest;s.open(\"GET\",e);var a=i._contentTypes,u=i._jwtHandler;s.onload=function(){if(n.Log.debug(\"JsonService.getJson: HTTP response received, status\",s.status),200===s.status){var r=s.getResponseHeader(\"Content-Type\");if(r){var i=a.find((function(t){if(r.startsWith(t))return!0}));if(\"application/jwt\"==i)return void u(s).then(t,o);if(i)try{return void t(JSON.parse(s.responseText))}catch(t){return n.Log.error(\"JsonService.getJson: Error parsing JSON response\",t.message),void o(t)}}o(Error(\"Invalid response Content-Type: \"+r+\", from URL: \"+e))}else o(Error(s.statusText+\" (\"+s.status+\")\"))},s.onerror=function(){n.Log.error(\"JsonService.getJson: network error\"),o(Error(\"Network Error\"))},r&&(n.Log.debug(\"JsonService.getJson: token passed, setting Authorization header\"),s.setRequestHeader(\"Authorization\",\"Bearer \"+r)),s.send()}))},t.prototype.postForm=function t(e,r,i){var o=this;if(!e)throw n.Log.error(\"JsonService.postForm: No url passed\"),new Error(\"url\");return n.Log.debug(\"JsonService.postForm, url: \",e),new Promise((function(t,s){var a=new o._XMLHttpRequest;a.open(\"POST\",e);var u=o._contentTypes;a.onload=function(){if(n.Log.debug(\"JsonService.postForm: HTTP response received, status\",a.status),200!==a.status){if(400===a.status)if(i=a.getResponseHeader(\"Content-Type\"))if(u.find((function(t){if(i.startsWith(t))return!0})))try{var r=JSON.parse(a.responseText);if(r&&r.error)return n.Log.error(\"JsonService.postForm: Error from server: \",r.error),void s(new Error(r.error))}catch(t){return n.Log.error(\"JsonService.postForm: Error parsing JSON response\",t.message),void s(t)}s(Error(a.statusText+\" (\"+a.status+\")\"))}else{var i;if((i=a.getResponseHeader(\"Content-Type\"))&&u.find((function(t){if(i.startsWith(t))return!0})))try{return void t(JSON.parse(a.responseText))}catch(t){return n.Log.error(\"JsonService.postForm: Error parsing JSON response\",t.message),void s(t)}s(Error(\"Invalid response Content-Type: \"+i+\", from URL: \"+e))}},a.onerror=function(){n.Log.error(\"JsonService.postForm: network error\"),s(Error(\"Network Error\"))};var c=\"\";for(var h in r){var l=r[h];l&&(c.length>0&&(c+=\"&\"),c+=encodeURIComponent(h),c+=\"=\",c+=encodeURIComponent(l))}a.setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded\"),void 0!==i&&a.setRequestHeader(\"Authorization\",\"Basic \"+btoa(i)),a.send(c)}))},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SigninRequest=void 0;var n=r(0),i=r(3),o=r(13);e.SigninRequest=function(){function t(e){var r=e.url,s=e.client_id,a=e.redirect_uri,u=e.response_type,c=e.scope,h=e.authority,l=e.data,f=e.prompt,g=e.display,d=e.max_age,p=e.ui_locales,v=e.id_token_hint,y=e.login_hint,m=e.acr_values,_=e.resource,S=e.response_mode,b=e.request,w=e.request_uri,F=e.extraQueryParams,E=e.request_type,x=e.client_secret,A=e.extraTokenParams,k=e.skipUserInfo;if(function P(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),!r)throw n.Log.error(\"SigninRequest.ctor: No url passed\"),new Error(\"url\");if(!s)throw n.Log.error(\"SigninRequest.ctor: No client_id passed\"),new Error(\"client_id\");if(!a)throw n.Log.error(\"SigninRequest.ctor: No redirect_uri passed\"),new Error(\"redirect_uri\");if(!u)throw n.Log.error(\"SigninRequest.ctor: No response_type passed\"),new Error(\"response_type\");if(!c)throw n.Log.error(\"SigninRequest.ctor: No scope passed\"),new Error(\"scope\");if(!h)throw n.Log.error(\"SigninRequest.ctor: No authority passed\"),new Error(\"authority\");var C=t.isOidc(u),T=t.isCode(u);S||(S=t.isCode(u)?\"query\":null),this.state=new o.SigninState({nonce:C,data:l,client_id:s,authority:h,redirect_uri:a,code_verifier:T,request_type:E,response_mode:S,client_secret:x,scope:c,extraTokenParams:A,skipUserInfo:k}),r=i.UrlUtility.addQueryParam(r,\"client_id\",s),r=i.UrlUtility.addQueryParam(r,\"redirect_uri\",a),r=i.UrlUtility.addQueryParam(r,\"response_type\",u),r=i.UrlUtility.addQueryParam(r,\"scope\",c),r=i.UrlUtility.addQueryParam(r,\"state\",this.state.id),C&&(r=i.UrlUtility.addQueryParam(r,\"nonce\",this.state.nonce)),T&&(r=i.UrlUtility.addQueryParam(r,\"code_challenge\",this.state.code_challenge),r=i.UrlUtility.addQueryParam(r,\"code_challenge_method\",\"S256\"));var R={prompt:f,display:g,max_age:d,ui_locales:p,id_token_hint:v,login_hint:y,acr_values:m,resource:_,request:b,request_uri:w,response_mode:S};for(var I in R)R[I]&&(r=i.UrlUtility.addQueryParam(r,I,R[I]));for(var D in F)r=i.UrlUtility.addQueryParam(r,D,F[D]);this.url=r}return t.isOidc=function t(e){return!!e.split(/\\s+/g).filter((function(t){return\"id_token\"===t}))[0]},t.isOAuth=function t(e){return!!e.split(/\\s+/g).filter((function(t){return\"token\"===t}))[0]},t.isCode=function t(e){return!!e.split(/\\s+/g).filter((function(t){return\"code\"===t}))[0]},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.State=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0),o=function s(t){return t&&t.__esModule?t:{default:t}}(r(14));function a(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.State=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.id,n=e.data,i=e.created,s=e.request_type;a(this,t),this._id=r||(0,o.default)(),this._data=n,this._created=\"number\"==typeof i&&i>0?i:parseInt(Date.now()/1e3),this._request_type=s}return t.prototype.toStorageString=function t(){return i.Log.debug(\"State.toStorageString\"),JSON.stringify({id:this.id,data:this.data,created:this.created,request_type:this.request_type})},t.fromStorageString=function e(r){return i.Log.debug(\"State.fromStorageString\"),new t(JSON.parse(r))},t.clearStaleState=function e(r,n){var o=Date.now()/1e3-n;return r.getAllKeys().then((function(e){i.Log.debug(\"State.clearStaleState: got keys\",e);for(var n=[],s=function s(a){var c=e[a];u=r.get(c).then((function(e){var n=!1;if(e)try{var s=t.fromStorageString(e);i.Log.debug(\"State.clearStaleState: got item from key: \",c,s.created),s.created<=o&&(n=!0)}catch(t){i.Log.error(\"State.clearStaleState: Error parsing state for key\",c,t.message),n=!0}else i.Log.debug(\"State.clearStaleState: no item in storage for key: \",c),n=!0;if(n)return i.Log.debug(\"State.clearStaleState: removed item for key: \",c),r.remove(c)})),n.push(u)},a=0;a<e.length;a++){var u;s(a)}return i.Log.debug(\"State.clearStaleState: waiting on promise count:\",n.length),Promise.all(n)}))},n(t,[{key:\"id\",get:function t(){return this._id}},{key:\"data\",get:function t(){return this._data}},{key:\"created\",get:function t(){return this._created}},{key:\"request_type\",get:function t(){return this._request_type}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.OidcClient=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0),o=r(5),s=r(12),a=r(8),u=r(34),c=r(35),h=r(36),l=r(13),f=r(9);function g(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.OidcClient=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};g(this,t),e instanceof o.OidcClientSettings?this._settings=e:this._settings=new o.OidcClientSettings(e)}return t.prototype.createSigninRequest=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=r.response_type,o=r.scope,s=r.redirect_uri,u=r.data,c=r.state,h=r.prompt,l=r.display,f=r.max_age,g=r.ui_locales,d=r.id_token_hint,p=r.login_hint,v=r.acr_values,y=r.resource,m=r.request,_=r.request_uri,S=r.response_mode,b=r.extraQueryParams,w=r.extraTokenParams,F=r.request_type,E=r.skipUserInfo,x=arguments[1];i.Log.debug(\"OidcClient.createSigninRequest\");var A=this._settings.client_id;n=n||this._settings.response_type,o=o||this._settings.scope,s=s||this._settings.redirect_uri,h=h||this._settings.prompt,l=l||this._settings.display,f=f||this._settings.max_age,g=g||this._settings.ui_locales,v=v||this._settings.acr_values,y=y||this._settings.resource,S=S||this._settings.response_mode,b=b||this._settings.extraQueryParams,w=w||this._settings.extraTokenParams;var k=this._settings.authority;return a.SigninRequest.isCode(n)&&\"code\"!==n?Promise.reject(new Error(\"OpenID Connect hybrid flow is not supported\")):this._metadataService.getAuthorizationEndpoint().then((function(t){i.Log.debug(\"OidcClient.createSigninRequest: Received authorization endpoint\",t);var r=new a.SigninRequest({url:t,client_id:A,redirect_uri:s,response_type:n,scope:o,data:u||c,authority:k,prompt:h,display:l,max_age:f,ui_locales:g,id_token_hint:d,login_hint:p,acr_values:v,resource:y,request:m,request_uri:_,extraQueryParams:b,extraTokenParams:w,request_type:F,response_mode:S,client_secret:e._settings.client_secret,skipUserInfo:E}),P=r.state;return(x=x||e._stateStore).set(P.id,P.toStorageString()).then((function(){return r}))}))},t.prototype.readSigninResponseState=function t(e,r){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];i.Log.debug(\"OidcClient.readSigninResponseState\");var o=\"query\"===this._settings.response_mode||!this._settings.response_mode&&a.SigninRequest.isCode(this._settings.response_type),s=o?\"?\":\"#\",c=new u.SigninResponse(e,s);if(!c.state)return i.Log.error(\"OidcClient.readSigninResponseState: No state in response\"),Promise.reject(new Error(\"No state in response\"));r=r||this._stateStore;var h=n?r.remove.bind(r):r.get.bind(r);return h(c.state).then((function(t){if(!t)throw i.Log.error(\"OidcClient.readSigninResponseState: No matching state found in storage\"),new Error(\"No matching state found in storage\");return{state:l.SigninState.fromStorageString(t),response:c}}))},t.prototype.processSigninResponse=function t(e,r){var n=this;return i.Log.debug(\"OidcClient.processSigninResponse\"),this.readSigninResponseState(e,r,!0).then((function(t){var e=t.state,r=t.response;return i.Log.debug(\"OidcClient.processSigninResponse: Received state from storage; validating response\"),n._validator.validateSigninResponse(e,r)}))},t.prototype.createSignoutRequest=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=r.id_token_hint,o=r.data,s=r.state,a=r.post_logout_redirect_uri,u=r.extraQueryParams,h=r.request_type,l=arguments[1];return i.Log.debug(\"OidcClient.createSignoutRequest\"),a=a||this._settings.post_logout_redirect_uri,u=u||this._settings.extraQueryParams,this._metadataService.getEndSessionEndpoint().then((function(t){if(!t)throw i.Log.error(\"OidcClient.createSignoutRequest: No end session endpoint url returned\"),new Error(\"no end session endpoint\");i.Log.debug(\"OidcClient.createSignoutRequest: Received end session endpoint\",t);var r=new c.SignoutRequest({url:t,id_token_hint:n,post_logout_redirect_uri:a,data:o||s,extraQueryParams:u,request_type:h}),f=r.state;return f&&(i.Log.debug(\"OidcClient.createSignoutRequest: Signout request has state to persist\"),(l=l||e._stateStore).set(f.id,f.toStorageString())),r}))},t.prototype.readSignoutResponseState=function t(e,r){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];i.Log.debug(\"OidcClient.readSignoutResponseState\");var o=new h.SignoutResponse(e);if(!o.state)return i.Log.debug(\"OidcClient.readSignoutResponseState: No state in response\"),o.error?(i.Log.warn(\"OidcClient.readSignoutResponseState: Response was error: \",o.error),Promise.reject(new s.ErrorResponse(o))):Promise.resolve({state:void 0,response:o});var a=o.state;r=r||this._stateStore;var u=n?r.remove.bind(r):r.get.bind(r);return u(a).then((function(t){if(!t)throw i.Log.error(\"OidcClient.readSignoutResponseState: No matching state found in storage\"),new Error(\"No matching state found in storage\");return{state:f.State.fromStorageString(t),response:o}}))},t.prototype.processSignoutResponse=function t(e,r){var n=this;return i.Log.debug(\"OidcClient.processSignoutResponse\"),this.readSignoutResponseState(e,r,!0).then((function(t){var e=t.state,r=t.response;return e?(i.Log.debug(\"OidcClient.processSignoutResponse: Received state from storage; validating response\"),n._validator.validateSignoutResponse(e,r)):(i.Log.debug(\"OidcClient.processSignoutResponse: No state from storage; skipping validating response\"),r)}))},t.prototype.clearStaleState=function t(e){return i.Log.debug(\"OidcClient.clearStaleState\"),e=e||this._stateStore,f.State.clearStaleState(e,this.settings.staleStateAge)},n(t,[{key:\"_stateStore\",get:function t(){return this.settings.stateStore}},{key:\"_validator\",get:function t(){return this.settings.validator}},{key:\"_metadataService\",get:function t(){return this.settings.metadataService}},{key:\"settings\",get:function t(){return this._settings}},{key:\"metadataService\",get:function t(){return this._metadataService}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TokenClient=void 0;var n=r(7),i=r(2),o=r(0);function s(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.TokenClient=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.JsonService,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.MetadataService;if(s(this,t),!e)throw o.Log.error(\"TokenClient.ctor: No settings passed\"),new Error(\"settings\");this._settings=e,this._jsonService=new r,this._metadataService=new a(this._settings)}return t.prototype.exchangeCode=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(r=Object.assign({},r)).grant_type=r.grant_type||\"authorization_code\",r.client_id=r.client_id||this._settings.client_id,r.client_secret=r.client_secret||this._settings.client_secret,r.redirect_uri=r.redirect_uri||this._settings.redirect_uri;var n=void 0,i=r._client_authentication||this._settings._client_authentication;return delete r._client_authentication,r.code?r.redirect_uri?r.code_verifier?r.client_id?r.client_secret||\"client_secret_basic\"!=i?(\"client_secret_basic\"==i&&(n=r.client_id+\":\"+r.client_secret,delete r.client_id,delete r.client_secret),this._metadataService.getTokenEndpoint(!1).then((function(t){return o.Log.debug(\"TokenClient.exchangeCode: Received token endpoint\"),e._jsonService.postForm(t,r,n).then((function(t){return o.Log.debug(\"TokenClient.exchangeCode: response received\"),t}))}))):(o.Log.error(\"TokenClient.exchangeCode: No client_secret passed\"),Promise.reject(new Error(\"A client_secret is required\"))):(o.Log.error(\"TokenClient.exchangeCode: No client_id passed\"),Promise.reject(new Error(\"A client_id is required\"))):(o.Log.error(\"TokenClient.exchangeCode: No code_verifier passed\"),Promise.reject(new Error(\"A code_verifier is required\"))):(o.Log.error(\"TokenClient.exchangeCode: No redirect_uri passed\"),Promise.reject(new Error(\"A redirect_uri is required\"))):(o.Log.error(\"TokenClient.exchangeCode: No code passed\"),Promise.reject(new Error(\"A code is required\")))},t.prototype.exchangeRefreshToken=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(r=Object.assign({},r)).grant_type=r.grant_type||\"refresh_token\",r.client_id=r.client_id||this._settings.client_id,r.client_secret=r.client_secret||this._settings.client_secret;var n=void 0,i=r._client_authentication||this._settings._client_authentication;return delete r._client_authentication,r.refresh_token?r.client_id?(\"client_secret_basic\"==i&&(n=r.client_id+\":\"+r.client_secret,delete r.client_id,delete r.client_secret),this._metadataService.getTokenEndpoint(!1).then((function(t){return o.Log.debug(\"TokenClient.exchangeRefreshToken: Received token endpoint\"),e._jsonService.postForm(t,r,n).then((function(t){return o.Log.debug(\"TokenClient.exchangeRefreshToken: response received\"),t}))}))):(o.Log.error(\"TokenClient.exchangeRefreshToken: No client_id passed\"),Promise.reject(new Error(\"A client_id is required\"))):(o.Log.error(\"TokenClient.exchangeRefreshToken: No refresh_token passed\"),Promise.reject(new Error(\"A refresh_token is required\")))},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ErrorResponse=void 0;var n=r(0);function i(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}e.ErrorResponse=function(t){function e(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=r.error,a=r.error_description,u=r.error_uri,c=r.state,h=r.session_state;if(i(this,e),!s)throw n.Log.error(\"No error passed to ErrorResponse\"),new Error(\"error\");var l=o(this,t.call(this,a||s));return l.name=\"ErrorResponse\",l.error=s,l.error_description=a,l.error_uri=u,l.state=c,l.session_state=h,l}return function r(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e}(Error)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SigninState=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0),o=r(9),s=r(4),a=function u(t){return t&&t.__esModule?t:{default:t}}(r(14));function c(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function h(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}e.SigninState=function(t){function e(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=r.nonce,i=r.authority,o=r.client_id,u=r.redirect_uri,l=r.code_verifier,f=r.response_mode,g=r.client_secret,d=r.scope,p=r.extraTokenParams,v=r.skipUserInfo;c(this,e);var y=h(this,t.call(this,arguments[0]));if(!0===n?y._nonce=(0,a.default)():n&&(y._nonce=n),!0===l?y._code_verifier=(0,a.default)()+(0,a.default)()+(0,a.default)():l&&(y._code_verifier=l),y.code_verifier){var m=s.JoseUtil.hashString(y.code_verifier,\"SHA256\");y._code_challenge=s.JoseUtil.hexToBase64Url(m)}return y._redirect_uri=u,y._authority=i,y._client_id=o,y._response_mode=f,y._client_secret=g,y._scope=d,y._extraTokenParams=p,y._skipUserInfo=v,y}return function r(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.toStorageString=function t(){return i.Log.debug(\"SigninState.toStorageString\"),JSON.stringify({id:this.id,data:this.data,created:this.created,request_type:this.request_type,nonce:this.nonce,code_verifier:this.code_verifier,redirect_uri:this.redirect_uri,authority:this.authority,client_id:this.client_id,response_mode:this.response_mode,client_secret:this.client_secret,scope:this.scope,extraTokenParams:this.extraTokenParams,skipUserInfo:this.skipUserInfo})},e.fromStorageString=function t(r){return i.Log.debug(\"SigninState.fromStorageString\"),new e(JSON.parse(r))},n(e,[{key:\"nonce\",get:function t(){return this._nonce}},{key:\"authority\",get:function t(){return this._authority}},{key:\"client_id\",get:function t(){return this._client_id}},{key:\"redirect_uri\",get:function t(){return this._redirect_uri}},{key:\"code_verifier\",get:function t(){return this._code_verifier}},{key:\"code_challenge\",get:function t(){return this._code_challenge}},{key:\"response_mode\",get:function t(){return this._response_mode}},{key:\"client_secret\",get:function t(){return this._client_secret}},{key:\"scope\",get:function t(){return this._scope}},{key:\"extraTokenParams\",get:function t(){return this._extraTokenParams}},{key:\"skipUserInfo\",get:function t(){return this._skipUserInfo}}]),e}(o.State)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=function n(){return(\"undefined\"!=i&&null!==i&&void 0!==i.getRandomValues?o:s)().replace(/-/g,\"\")};var i=\"undefined\"!=typeof window?window.crypto||window.msCrypto:null;function o(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,(function(t){return(t^i.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16)}))}function s(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,(function(t){return(t^16*Math.random()>>t/4).toString(16)}))}t.exports=e.default},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.User=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0);e.User=function(){function t(e){var r=e.id_token,n=e.session_state,i=e.access_token,o=e.refresh_token,s=e.token_type,a=e.scope,u=e.profile,c=e.expires_at,h=e.state;!function l(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this.id_token=r,this.session_state=n,this.access_token=i,this.refresh_token=o,this.token_type=s,this.scope=a,this.profile=u,this.expires_at=c,this.state=h}return t.prototype.toStorageString=function t(){return i.Log.debug(\"User.toStorageString\"),JSON.stringify({id_token:this.id_token,session_state:this.session_state,access_token:this.access_token,refresh_token:this.refresh_token,token_type:this.token_type,scope:this.scope,profile:this.profile,expires_at:this.expires_at})},t.fromStorageString=function e(r){return i.Log.debug(\"User.fromStorageString\"),new t(JSON.parse(r))},n(t,[{key:\"expires_in\",get:function t(){if(this.expires_at){var e=parseInt(Date.now()/1e3);return this.expires_at-e}},set:function t(e){var r=parseInt(e);if(\"number\"==typeof r&&r>0){var n=parseInt(Date.now()/1e3);this.expires_at=n+r}}},{key:\"expired\",get:function t(){var e=this.expires_in;if(void 0!==e)return e<=0}},{key:\"scopes\",get:function t(){return(this.scope||\"\").split(\" \")}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AccessTokenEvents=void 0;var n=r(0),i=r(46);function o(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.AccessTokenEvents=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.accessTokenExpiringNotificationTime,n=void 0===r?60:r,s=e.accessTokenExpiringTimer,a=void 0===s?new i.Timer(\"Access token expiring\"):s,u=e.accessTokenExpiredTimer,c=void 0===u?new i.Timer(\"Access token expired\"):u;o(this,t),this._accessTokenExpiringNotificationTime=n,this._accessTokenExpiring=a,this._accessTokenExpired=c}return t.prototype.load=function t(e){if(e.access_token&&void 0!==e.expires_in){var r=e.expires_in;if(n.Log.debug(\"AccessTokenEvents.load: access token present, remaining duration:\",r),r>0){var i=r-this._accessTokenExpiringNotificationTime;i<=0&&(i=1),n.Log.debug(\"AccessTokenEvents.load: registering expiring timer in:\",i),this._accessTokenExpiring.init(i)}else n.Log.debug(\"AccessTokenEvents.load: canceling existing expiring timer becase we're past expiration.\"),this._accessTokenExpiring.cancel();var o=r+1;n.Log.debug(\"AccessTokenEvents.load: registering expired timer in:\",o),this._accessTokenExpired.init(o)}else this._accessTokenExpiring.cancel(),this._accessTokenExpired.cancel()},t.prototype.unload=function t(){n.Log.debug(\"AccessTokenEvents.unload: canceling existing access token timers\"),this._accessTokenExpiring.cancel(),this._accessTokenExpired.cancel()},t.prototype.addAccessTokenExpiring=function t(e){this._accessTokenExpiring.addHandler(e)},t.prototype.removeAccessTokenExpiring=function t(e){this._accessTokenExpiring.removeHandler(e)},t.prototype.addAccessTokenExpired=function t(e){this._accessTokenExpired.addHandler(e)},t.prototype.removeAccessTokenExpired=function t(e){this._accessTokenExpired.removeHandler(e)},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Event=void 0;var n=r(0);e.Event=function(){function t(e){!function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this._name=e,this._callbacks=[]}return t.prototype.addHandler=function t(e){this._callbacks.push(e)},t.prototype.removeHandler=function t(e){var r=this._callbacks.findIndex((function(t){return t===e}));r>=0&&this._callbacks.splice(r,1)},t.prototype.raise=function t(){n.Log.debug(\"Event: Raising event: \"+this._name);for(var e=0;e<this._callbacks.length;e++){var r;(r=this._callbacks)[e].apply(r,arguments)}},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SessionMonitor=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0),o=r(19),s=r(1);function a(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.SessionMonitor=function(){function t(e){var r=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.CheckSessionIFrame,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:s.Global.timer;if(a(this,t),!e)throw i.Log.error(\"SessionMonitor.ctor: No user manager passed to SessionMonitor\"),new Error(\"userManager\");this._userManager=e,this._CheckSessionIFrameCtor=n,this._timer=u,this._userManager.events.addUserLoaded(this._start.bind(this)),this._userManager.events.addUserUnloaded(this._stop.bind(this)),Promise.resolve(this._userManager.getUser().then((function(t){t?r._start(t):r._settings.monitorAnonymousSession&&r._userManager.querySessionStatus().then((function(t){var e={session_state:t.session_state};t.sub&&t.sid&&(e.profile={sub:t.sub,sid:t.sid}),r._start(e)})).catch((function(t){i.Log.error(\"SessionMonitor ctor: error from querySessionStatus:\",t.message)}))})).catch((function(t){i.Log.error(\"SessionMonitor ctor: error from getUser:\",t.message)})))}return t.prototype._start=function t(e){var r=this,n=e.session_state;n&&(e.profile?(this._sub=e.profile.sub,this._sid=e.profile.sid,i.Log.debug(\"SessionMonitor._start: session_state:\",n,\", sub:\",this._sub)):(this._sub=void 0,this._sid=void 0,i.Log.debug(\"SessionMonitor._start: session_state:\",n,\", anonymous user\")),this._checkSessionIFrame?this._checkSessionIFrame.start(n):this._metadataService.getCheckSessionIframe().then((function(t){if(t){i.Log.debug(\"SessionMonitor._start: Initializing check session iframe\");var e=r._client_id,o=r._checkSessionInterval,s=r._stopCheckSessionOnError;r._checkSessionIFrame=new r._CheckSessionIFrameCtor(r._callback.bind(r),e,t,o,s),r._checkSessionIFrame.load().then((function(){r._checkSessionIFrame.start(n)}))}else i.Log.warn(\"SessionMonitor._start: No check session iframe found in the metadata\")})).catch((function(t){i.Log.error(\"SessionMonitor._start: Error from getCheckSessionIframe:\",t.message)})))},t.prototype._stop=function t(){var e=this;if(this._sub=void 0,this._sid=void 0,this._checkSessionIFrame&&(i.Log.debug(\"SessionMonitor._stop\"),this._checkSessionIFrame.stop()),this._settings.monitorAnonymousSession)var r=this._timer.setInterval((function(){e._timer.clearInterval(r),e._userManager.querySessionStatus().then((function(t){var r={session_state:t.session_state};t.sub&&t.sid&&(r.profile={sub:t.sub,sid:t.sid}),e._start(r)})).catch((function(t){i.Log.error(\"SessionMonitor: error from querySessionStatus:\",t.message)}))}),1e3)},t.prototype._callback=function t(){var e=this;this._userManager.querySessionStatus().then((function(t){var r=!0;t?t.sub===e._sub?(r=!1,e._checkSessionIFrame.start(t.session_state),t.sid===e._sid?i.Log.debug(\"SessionMonitor._callback: Same sub still logged in at OP, restarting check session iframe; session_state:\",t.session_state):(i.Log.debug(\"SessionMonitor._callback: Same sub still logged in at OP, session state has changed, restarting check session iframe; session_state:\",t.session_state),e._userManager.events._raiseUserSessionChanged())):i.Log.debug(\"SessionMonitor._callback: Different subject signed into OP:\",t.sub):i.Log.debug(\"SessionMonitor._callback: Subject no longer signed into OP\"),r&&(e._sub?(i.Log.debug(\"SessionMonitor._callback: SessionMonitor._callback; raising signed out event\"),e._userManager.events._raiseUserSignedOut()):(i.Log.debug(\"SessionMonitor._callback: SessionMonitor._callback; raising signed in event\"),e._userManager.events._raiseUserSignedIn()))})).catch((function(t){e._sub&&(i.Log.debug(\"SessionMonitor._callback: Error calling queryCurrentSigninSession; raising signed out event\",t.message),e._userManager.events._raiseUserSignedOut())}))},n(t,[{key:\"_settings\",get:function t(){return this._userManager.settings}},{key:\"_metadataService\",get:function t(){return this._userManager.metadataService}},{key:\"_client_id\",get:function t(){return this._settings.client_id}},{key:\"_checkSessionInterval\",get:function t(){return this._settings.checkSessionInterval}},{key:\"_stopCheckSessionOnError\",get:function t(){return this._settings.stopCheckSessionOnError}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CheckSessionIFrame=void 0;var n=r(0);function i(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.CheckSessionIFrame=function(){function t(e,r,n,o){var s=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];i(this,t),this._callback=e,this._client_id=r,this._url=n,this._interval=o||2e3,this._stopOnError=s;var a=n.indexOf(\"/\",n.indexOf(\"//\")+2);this._frame_origin=n.substr(0,a),this._frame=window.document.createElement(\"iframe\"),this._frame.style.visibility=\"hidden\",this._frame.style.position=\"absolute\",this._frame.style.display=\"none\",this._frame.width=0,this._frame.height=0,this._frame.src=n}return t.prototype.load=function t(){var e=this;return new Promise((function(t){e._frame.onload=function(){t()},window.document.body.appendChild(e._frame),e._boundMessageEvent=e._message.bind(e),window.addEventListener(\"message\",e._boundMessageEvent,!1)}))},t.prototype._message=function t(e){e.origin===this._frame_origin&&e.source===this._frame.contentWindow&&(\"error\"===e.data?(n.Log.error(\"CheckSessionIFrame: error message from check session op iframe\"),this._stopOnError&&this.stop()):\"changed\"===e.data?(n.Log.debug(\"CheckSessionIFrame: changed message from check session op iframe\"),this.stop(),this._callback()):n.Log.debug(\"CheckSessionIFrame: \"+e.data+\" message from check session op iframe\"))},t.prototype.start=function t(e){var r=this;if(this._session_state!==e){n.Log.debug(\"CheckSessionIFrame.start\"),this.stop(),this._session_state=e;var i=function t(){r._frame.contentWindow.postMessage(r._client_id+\" \"+r._session_state,r._frame_origin)};i(),this._timer=window.setInterval(i,this._interval)}},t.prototype.stop=function t(){this._session_state=null,this._timer&&(n.Log.debug(\"CheckSessionIFrame.stop\"),window.clearInterval(this._timer),this._timer=null)},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TokenRevocationClient=void 0;var n=r(0),i=r(2),o=r(1);function s(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var a=\"access_token\",u=\"refresh_token\";e.TokenRevocationClient=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.Global.XMLHttpRequest,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.MetadataService;if(s(this,t),!e)throw n.Log.error(\"TokenRevocationClient.ctor: No settings provided\"),new Error(\"No settings provided.\");this._settings=e,this._XMLHttpRequestCtor=r,this._metadataService=new a(this._settings)}return t.prototype.revoke=function t(e,r){var i=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"access_token\";if(!e)throw n.Log.error(\"TokenRevocationClient.revoke: No token provided\"),new Error(\"No token provided.\");if(o!==a&&o!=u)throw n.Log.error(\"TokenRevocationClient.revoke: Invalid token type\"),new Error(\"Invalid token type.\");return this._metadataService.getRevocationEndpoint().then((function(t){if(t){n.Log.debug(\"TokenRevocationClient.revoke: Revoking \"+o);var s=i._settings.client_id,a=i._settings.client_secret;return i._revoke(t,s,a,e,o)}if(r)throw n.Log.error(\"TokenRevocationClient.revoke: Revocation not supported\"),new Error(\"Revocation not supported\")}))},t.prototype._revoke=function t(e,r,i,o,s){var a=this;return new Promise((function(t,u){var c=new a._XMLHttpRequestCtor;c.open(\"POST\",e),c.onload=function(){n.Log.debug(\"TokenRevocationClient.revoke: HTTP response received, status\",c.status),200===c.status?t():u(Error(c.statusText+\" (\"+c.status+\")\"))},c.onerror=function(){n.Log.debug(\"TokenRevocationClient.revoke: Network Error.\"),u(\"Network Error\")};var h=\"client_id=\"+encodeURIComponent(r);i&&(h+=\"&client_secret=\"+encodeURIComponent(i)),h+=\"&token_type_hint=\"+encodeURIComponent(s),h+=\"&token=\"+encodeURIComponent(o),c.setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded\"),c.send(h)}))},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CordovaPopupWindow=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0);e.CordovaPopupWindow=function(){function t(e){var r=this;!function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this._promise=new Promise((function(t,e){r._resolve=t,r._reject=e})),this.features=e.popupWindowFeatures||\"location=no,toolbar=no,zoom=no\",this.target=e.popupWindowTarget||\"_blank\",this.redirect_uri=e.startUrl,i.Log.debug(\"CordovaPopupWindow.ctor: redirect_uri: \"+this.redirect_uri)}return t.prototype._isInAppBrowserInstalled=function t(e){return[\"cordova-plugin-inappbrowser\",\"cordova-plugin-inappbrowser.inappbrowser\",\"org.apache.cordova.inappbrowser\"].some((function(t){return e.hasOwnProperty(t)}))},t.prototype.navigate=function t(e){if(e&&e.url){if(!window.cordova)return this._error(\"cordova is undefined\");var r=window.cordova.require(\"cordova/plugin_list\").metadata;if(!1===this._isInAppBrowserInstalled(r))return this._error(\"InAppBrowser plugin not found\");this._popup=cordova.InAppBrowser.open(e.url,this.target,this.features),this._popup?(i.Log.debug(\"CordovaPopupWindow.navigate: popup successfully created\"),this._exitCallbackEvent=this._exitCallback.bind(this),this._loadStartCallbackEvent=this._loadStartCallback.bind(this),this._popup.addEventListener(\"exit\",this._exitCallbackEvent,!1),this._popup.addEventListener(\"loadstart\",this._loadStartCallbackEvent,!1)):this._error(\"Error opening popup window\")}else this._error(\"No url provided\");return this.promise},t.prototype._loadStartCallback=function t(e){0===e.url.indexOf(this.redirect_uri)&&this._success({url:e.url})},t.prototype._exitCallback=function t(e){this._error(e)},t.prototype._success=function t(e){this._cleanup(),i.Log.debug(\"CordovaPopupWindow: Successful response from cordova popup window\"),this._resolve(e)},t.prototype._error=function t(e){this._cleanup(),i.Log.error(e),this._reject(new Error(e))},t.prototype.close=function t(){this._cleanup()},t.prototype._cleanup=function t(){this._popup&&(i.Log.debug(\"CordovaPopupWindow: cleaning up popup\"),this._popup.removeEventListener(\"exit\",this._exitCallbackEvent,!1),this._popup.removeEventListener(\"loadstart\",this._loadStartCallbackEvent,!1),this._popup.close()),this._popup=null},n(t,[{key:\"promise\",get:function t(){return this._promise}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(0),i=r(10),o=r(5),s=r(6),a=r(37),u=r(38),c=r(16),h=r(2),l=r(48),f=r(49),g=r(19),d=r(20),p=r(18),v=r(1),y=r(15),m=r(50);e.default={Version:m.Version,Log:n.Log,OidcClient:i.OidcClient,OidcClientSettings:o.OidcClientSettings,WebStorageStateStore:s.WebStorageStateStore,InMemoryWebStorage:a.InMemoryWebStorage,UserManager:u.UserManager,AccessTokenEvents:c.AccessTokenEvents,MetadataService:h.MetadataService,CordovaPopupNavigator:l.CordovaPopupNavigator,CordovaIFrameNavigator:f.CordovaIFrameNavigator,CheckSessionIFrame:g.CheckSessionIFrame,TokenRevocationClient:d.TokenRevocationClient,SessionMonitor:p.SessionMonitor,Global:v.Global,User:y.User},t.exports=e.default},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});e.ClockService=function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t.prototype.getEpochTime=function t(){return Promise.resolve(Date.now()/1e3|0)},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ResponseValidator=void 0;var n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},i=r(0),o=r(2),s=r(25),a=r(11),u=r(12),c=r(4);function h(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var l=[\"nonce\",\"at_hash\",\"iat\",\"nbf\",\"exp\",\"aud\",\"iss\",\"c_hash\"];e.ResponseValidator=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.MetadataService,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:s.UserInfoService,u=arguments.length>3&&void 0!==arguments[3]?arguments[3]:c.JoseUtil,l=arguments.length>4&&void 0!==arguments[4]?arguments[4]:a.TokenClient;if(h(this,t),!e)throw i.Log.error(\"ResponseValidator.ctor: No settings passed to ResponseValidator\"),new Error(\"settings\");this._settings=e,this._metadataService=new r(this._settings),this._userInfoService=new n(this._settings),this._joseUtil=u,this._tokenClient=new l(this._settings)}return t.prototype.validateSigninResponse=function t(e,r){var n=this;return i.Log.debug(\"ResponseValidator.validateSigninResponse\"),this._processSigninParams(e,r).then((function(t){return i.Log.debug(\"ResponseValidator.validateSigninResponse: state processed\"),n._validateTokens(e,t).then((function(t){return i.Log.debug(\"ResponseValidator.validateSigninResponse: tokens validated\"),n._processClaims(e,t).then((function(t){return i.Log.debug(\"ResponseValidator.validateSigninResponse: claims processed\"),t}))}))}))},t.prototype.validateSignoutResponse=function t(e,r){return e.id!==r.state?(i.Log.error(\"ResponseValidator.validateSignoutResponse: State does not match\"),Promise.reject(new Error(\"State does not match\"))):(i.Log.debug(\"ResponseValidator.validateSignoutResponse: state validated\"),r.state=e.data,r.error?(i.Log.warn(\"ResponseValidator.validateSignoutResponse: Response was error\",r.error),Promise.reject(new u.ErrorResponse(r))):Promise.resolve(r))},t.prototype._processSigninParams=function t(e,r){if(e.id!==r.state)return i.Log.error(\"ResponseValidator._processSigninParams: State does not match\"),Promise.reject(new Error(\"State does not match\"));if(!e.client_id)return i.Log.error(\"ResponseValidator._processSigninParams: No client_id on state\"),Promise.reject(new Error(\"No client_id on state\"));if(!e.authority)return i.Log.error(\"ResponseValidator._processSigninParams: No authority on state\"),Promise.reject(new Error(\"No authority on state\"));if(this._settings.authority){if(this._settings.authority&&this._settings.authority!==e.authority)return i.Log.error(\"ResponseValidator._processSigninParams: authority mismatch on settings vs. signin state\"),Promise.reject(new Error(\"authority mismatch on settings vs. signin state\"))}else this._settings.authority=e.authority;if(this._settings.client_id){if(this._settings.client_id&&this._settings.client_id!==e.client_id)return i.Log.error(\"ResponseValidator._processSigninParams: client_id mismatch on settings vs. signin state\"),Promise.reject(new Error(\"client_id mismatch on settings vs. signin state\"))}else this._settings.client_id=e.client_id;return i.Log.debug(\"ResponseValidator._processSigninParams: state validated\"),r.state=e.data,r.error?(i.Log.warn(\"ResponseValidator._processSigninParams: Response was error\",r.error),Promise.reject(new u.ErrorResponse(r))):e.nonce&&!r.id_token?(i.Log.error(\"ResponseValidator._processSigninParams: Expecting id_token in response\"),Promise.reject(new Error(\"No id_token in response\"))):!e.nonce&&r.id_token?(i.Log.error(\"ResponseValidator._processSigninParams: Not expecting id_token in response\"),Promise.reject(new Error(\"Unexpected id_token in response\"))):e.code_verifier&&!r.code?(i.Log.error(\"ResponseValidator._processSigninParams: Expecting code in response\"),Promise.reject(new Error(\"No code in response\"))):!e.code_verifier&&r.code?(i.Log.error(\"ResponseValidator._processSigninParams: Not expecting code in response\"),Promise.reject(new Error(\"Unexpected code in response\"))):(r.scope||(r.scope=e.scope),Promise.resolve(r))},t.prototype._processClaims=function t(e,r){var n=this;if(r.isOpenIdConnect){if(i.Log.debug(\"ResponseValidator._processClaims: response is OIDC, processing claims\"),r.profile=this._filterProtocolClaims(r.profile),!0!==e.skipUserInfo&&this._settings.loadUserInfo&&r.access_token)return i.Log.debug(\"ResponseValidator._processClaims: loading user info\"),this._userInfoService.getClaims(r.access_token).then((function(t){return i.Log.debug(\"ResponseValidator._processClaims: user info claims received from user info endpoint\"),t.sub!==r.profile.sub?(i.Log.error(\"ResponseValidator._processClaims: sub from user info endpoint does not match sub in id_token\"),Promise.reject(new Error(\"sub from user info endpoint does not match sub in id_token\"))):(r.profile=n._mergeClaims(r.profile,t),i.Log.debug(\"ResponseValidator._processClaims: user info claims received, updated profile:\",r.profile),r)}));i.Log.debug(\"ResponseValidator._processClaims: not loading user info\")}else i.Log.debug(\"ResponseValidator._processClaims: response is not OIDC, not processing claims\");return Promise.resolve(r)},t.prototype._mergeClaims=function t(e,r){var i=Object.assign({},e);for(var o in r){var s=r[o];Array.isArray(s)||(s=[s]);for(var a=0;a<s.length;a++){var u=s[a];i[o]?Array.isArray(i[o])?i[o].indexOf(u)<0&&i[o].push(u):i[o]!==u&&(\"object\"===(void 0===u?\"undefined\":n(u))&&this._settings.mergeClaims?i[o]=this._mergeClaims(i[o],u):i[o]=[i[o],u]):i[o]=u}}return i},t.prototype._filterProtocolClaims=function t(e){i.Log.debug(\"ResponseValidator._filterProtocolClaims, incoming claims:\",e);var r=Object.assign({},e);return this._settings._filterProtocolClaims?(l.forEach((function(t){delete r[t]})),i.Log.debug(\"ResponseValidator._filterProtocolClaims: protocol claims filtered\",r)):i.Log.debug(\"ResponseValidator._filterProtocolClaims: protocol claims not filtered\"),r},t.prototype._validateTokens=function t(e,r){return r.code?(i.Log.debug(\"ResponseValidator._validateTokens: Validating code\"),this._processCode(e,r)):r.id_token?r.access_token?(i.Log.debug(\"ResponseValidator._validateTokens: Validating id_token and access_token\"),this._validateIdTokenAndAccessToken(e,r)):(i.Log.debug(\"ResponseValidator._validateTokens: Validating id_token\"),this._validateIdToken(e,r)):(i.Log.debug(\"ResponseValidator._validateTokens: No code to process or id_token to validate\"),Promise.resolve(r))},t.prototype._processCode=function t(e,r){var o=this,s={client_id:e.client_id,client_secret:e.client_secret,code:r.code,redirect_uri:e.redirect_uri,code_verifier:e.code_verifier};return e.extraTokenParams&&\"object\"===n(e.extraTokenParams)&&Object.assign(s,e.extraTokenParams),this._tokenClient.exchangeCode(s).then((function(t){for(var n in t)r[n]=t[n];return r.id_token?(i.Log.debug(\"ResponseValidator._processCode: token response successful, processing id_token\"),o._validateIdTokenAttributes(e,r)):(i.Log.debug(\"ResponseValidator._processCode: token response successful, returning response\"),r)}))},t.prototype._validateIdTokenAttributes=function t(e,r){var n=this;return this._metadataService.getIssuer().then((function(t){var o=e.client_id,s=n._settings.clockSkew;return i.Log.debug(\"ResponseValidator._validateIdTokenAttributes: Validaing JWT attributes; using clock skew (in seconds) of: \",s),n._settings.getEpochTime().then((function(a){return n._joseUtil.validateJwtAttributes(r.id_token,t,o,s,a).then((function(t){return e.nonce&&e.nonce!==t.nonce?(i.Log.error(\"ResponseValidator._validateIdTokenAttributes: Invalid nonce in id_token\"),Promise.reject(new Error(\"Invalid nonce in id_token\"))):t.sub?(r.profile=t,r):(i.Log.error(\"ResponseValidator._validateIdTokenAttributes: No sub present in id_token\"),Promise.reject(new Error(\"No sub present in id_token\")))}))}))}))},t.prototype._validateIdTokenAndAccessToken=function t(e,r){var n=this;return this._validateIdToken(e,r).then((function(t){return n._validateAccessToken(t)}))},t.prototype._getSigningKeyForJwt=function t(e){var r=this;return this._metadataService.getSigningKeys().then((function(t){var n=e.header.kid;if(!t)return i.Log.error(\"ResponseValidator._validateIdToken: No signing keys from metadata\"),Promise.reject(new Error(\"No signing keys from metadata\"));i.Log.debug(\"ResponseValidator._validateIdToken: Received signing keys\");var o=void 0;if(n)o=t.filter((function(t){return t.kid===n}))[0];else{if((t=r._filterByAlg(t,e.header.alg)).length>1)return i.Log.error(\"ResponseValidator._validateIdToken: No kid found in id_token and more than one key found in metadata\"),Promise.reject(new Error(\"No kid found in id_token and more than one key found in metadata\"));o=t[0]}return Promise.resolve(o)}))},t.prototype._getSigningKeyForJwtWithSingleRetry=function t(e){var r=this;return this._getSigningKeyForJwt(e).then((function(t){return t?Promise.resolve(t):(r._metadataService.resetSigningKeys(),r._getSigningKeyForJwt(e))}))},t.prototype._validateIdToken=function t(e,r){var n=this;if(!e.nonce)return i.Log.error(\"ResponseValidator._validateIdToken: No nonce on state\"),Promise.reject(new Error(\"No nonce on state\"));var o=this._joseUtil.parseJwt(r.id_token);return o&&o.header&&o.payload?e.nonce!==o.payload.nonce?(i.Log.error(\"ResponseValidator._validateIdToken: Invalid nonce in id_token\"),Promise.reject(new Error(\"Invalid nonce in id_token\"))):this._metadataService.getIssuer().then((function(t){return i.Log.debug(\"ResponseValidator._validateIdToken: Received issuer\"),n._getSigningKeyForJwtWithSingleRetry(o).then((function(s){if(!s)return i.Log.error(\"ResponseValidator._validateIdToken: No key matching kid or alg found in signing keys\"),Promise.reject(new Error(\"No key matching kid or alg found in signing keys\"));var a=e.client_id,u=n._settings.clockSkew;return i.Log.debug(\"ResponseValidator._validateIdToken: Validaing JWT; using clock skew (in seconds) of: \",u),n._joseUtil.validateJwt(r.id_token,s,t,a,u).then((function(){return i.Log.debug(\"ResponseValidator._validateIdToken: JWT validation successful\"),o.payload.sub?(r.profile=o.payload,r):(i.Log.error(\"ResponseValidator._validateIdToken: No sub present in id_token\"),Promise.reject(new Error(\"No sub present in id_token\")))}))}))})):(i.Log.error(\"ResponseValidator._validateIdToken: Failed to parse id_token\",o),Promise.reject(new Error(\"Failed to parse id_token\")))},t.prototype._filterByAlg=function t(e,r){var n=null;if(r.startsWith(\"RS\"))n=\"RSA\";else if(r.startsWith(\"PS\"))n=\"PS\";else{if(!r.startsWith(\"ES\"))return i.Log.debug(\"ResponseValidator._filterByAlg: alg not supported: \",r),[];n=\"EC\"}return i.Log.debug(\"ResponseValidator._filterByAlg: Looking for keys that match kty: \",n),e=e.filter((function(t){return t.kty===n})),i.Log.debug(\"ResponseValidator._filterByAlg: Number of keys that match kty: \",n,e.length),e},t.prototype._validateAccessToken=function t(e){if(!e.profile)return i.Log.error(\"ResponseValidator._validateAccessToken: No profile loaded from id_token\"),Promise.reject(new Error(\"No profile loaded from id_token\"));if(!e.profile.at_hash)return i.Log.error(\"ResponseValidator._validateAccessToken: No at_hash in id_token\"),Promise.reject(new Error(\"No at_hash in id_token\"));if(!e.id_token)return i.Log.error(\"ResponseValidator._validateAccessToken: No id_token\"),Promise.reject(new Error(\"No id_token\"));var r=this._joseUtil.parseJwt(e.id_token);if(!r||!r.header)return i.Log.error(\"ResponseValidator._validateAccessToken: Failed to parse id_token\",r),Promise.reject(new Error(\"Failed to parse id_token\"));var n=r.header.alg;if(!n||5!==n.length)return i.Log.error(\"ResponseValidator._validateAccessToken: Unsupported alg:\",n),Promise.reject(new Error(\"Unsupported alg: \"+n));var o=n.substr(2,3);if(!o)return i.Log.error(\"ResponseValidator._validateAccessToken: Unsupported alg:\",n,o),Promise.reject(new Error(\"Unsupported alg: \"+n));if(256!==(o=parseInt(o))&&384!==o&&512!==o)return i.Log.error(\"ResponseValidator._validateAccessToken: Unsupported alg:\",n,o),Promise.reject(new Error(\"Unsupported alg: \"+n));var s=\"sha\"+o,a=this._joseUtil.hashString(e.access_token,s);if(!a)return i.Log.error(\"ResponseValidator._validateAccessToken: access_token hash failed:\",s),Promise.reject(new Error(\"Failed to validate at_hash\"));var u=a.substr(0,a.length/2),c=this._joseUtil.hexToBase64Url(u);return c!==e.profile.at_hash?(i.Log.error(\"ResponseValidator._validateAccessToken: Failed to validate at_hash\",c,e.profile.at_hash),Promise.reject(new Error(\"Failed to validate at_hash\"))):(i.Log.debug(\"ResponseValidator._validateAccessToken: success\"),Promise.resolve(e))},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UserInfoService=void 0;var n=r(7),i=r(2),o=r(0),s=r(4);function a(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.UserInfoService=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.JsonService,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.MetadataService,c=arguments.length>3&&void 0!==arguments[3]?arguments[3]:s.JoseUtil;if(a(this,t),!e)throw o.Log.error(\"UserInfoService.ctor: No settings passed\"),new Error(\"settings\");this._settings=e,this._jsonService=new r(void 0,void 0,this._getClaimsFromJwt.bind(this)),this._metadataService=new u(this._settings),this._joseUtil=c}return t.prototype.getClaims=function t(e){var r=this;return e?this._metadataService.getUserInfoEndpoint().then((function(t){return o.Log.debug(\"UserInfoService.getClaims: received userinfo url\",t),r._jsonService.getJson(t,e).then((function(t){return o.Log.debug(\"UserInfoService.getClaims: claims received\",t),t}))})):(o.Log.error(\"UserInfoService.getClaims: No token passed\"),Promise.reject(new Error(\"A token is required\")))},t.prototype._getClaimsFromJwt=function t(e){var r=this;try{var n=this._joseUtil.parseJwt(e.responseText);if(!n||!n.header||!n.payload)return o.Log.error(\"UserInfoService._getClaimsFromJwt: Failed to parse JWT\",n),Promise.reject(new Error(\"Failed to parse id_token\"));var i=n.header.kid,s=void 0;switch(this._settings.userInfoJwtIssuer){case\"OP\":s=this._metadataService.getIssuer();break;case\"ANY\":s=Promise.resolve(n.payload.iss);break;default:s=Promise.resolve(this._settings.userInfoJwtIssuer)}return s.then((function(t){return o.Log.debug(\"UserInfoService._getClaimsFromJwt: Received issuer:\"+t),r._metadataService.getSigningKeys().then((function(s){if(!s)return o.Log.error(\"UserInfoService._getClaimsFromJwt: No signing keys from metadata\"),Promise.reject(new Error(\"No signing keys from metadata\"));o.Log.debug(\"UserInfoService._getClaimsFromJwt: Received signing keys\");var a=void 0;if(i)a=s.filter((function(t){return t.kid===i}))[0];else{if((s=r._filterByAlg(s,n.header.alg)).length>1)return o.Log.error(\"UserInfoService._getClaimsFromJwt: No kid found in id_token and more than one key found in metadata\"),Promise.reject(new Error(\"No kid found in id_token and more than one key found in metadata\"));a=s[0]}if(!a)return o.Log.error(\"UserInfoService._getClaimsFromJwt: No key matching kid or alg found in signing keys\"),Promise.reject(new Error(\"No key matching kid or alg found in signing keys\"));var u=r._settings.client_id,c=r._settings.clockSkew;return o.Log.debug(\"UserInfoService._getClaimsFromJwt: Validaing JWT; using clock skew (in seconds) of: \",c),r._joseUtil.validateJwt(e.responseText,a,t,u,c,void 0,!0).then((function(){return o.Log.debug(\"UserInfoService._getClaimsFromJwt: JWT validation successful\"),n.payload}))}))}))}catch(t){return o.Log.error(\"UserInfoService._getClaimsFromJwt: Error parsing JWT response\",t.message),void reject(t)}},t.prototype._filterByAlg=function t(e,r){var n=null;if(r.startsWith(\"RS\"))n=\"RSA\";else if(r.startsWith(\"PS\"))n=\"PS\";else{if(!r.startsWith(\"ES\"))return o.Log.debug(\"UserInfoService._filterByAlg: alg not supported: \",r),[];n=\"EC\"}return o.Log.debug(\"UserInfoService._filterByAlg: Looking for keys that match kty: \",n),e=e.filter((function(t){return t.kty===n})),o.Log.debug(\"UserInfoService._filterByAlg: Number of keys that match kty: \",n,e.length),e},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AllowedSigningAlgs=e.b64tohex=e.hextob64u=e.crypto=e.X509=e.KeyUtil=e.jws=void 0;var n=r(27);e.jws=n.jws,e.KeyUtil=n.KEYUTIL,e.X509=n.X509,e.crypto=n.crypto,e.hextob64u=n.hextob64u,e.b64tohex=n.b64tohex,e.AllowedSigningAlgs=[\"RS256\",\"RS384\",\"RS512\",\"PS256\",\"PS384\",\"PS512\",\"ES256\",\"ES384\",\"ES512\"]},function(t,e,r){\"use strict\";(function(t){Object.defineProperty(e,\"__esModule\",{value:!0});var r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},n={userAgent:!1},i={};\n/*!\nCopyright (c) 2011, Yahoo! Inc. All rights reserved.\nCode licensed under the BSD License:\nhttp://developer.yahoo.com/yui/license.html\nversion: 2.9.0\n*/\nif(void 0===o)var o={};o.lang={extend:function t(e,r,i){if(!r||!e)throw new Error(\"YAHOO.lang.extend failed, please check that all dependencies are included.\");var o=function t(){};if(o.prototype=r.prototype,e.prototype=new o,e.prototype.constructor=e,e.superclass=r.prototype,r.prototype.constructor==Object.prototype.constructor&&(r.prototype.constructor=r),i){var s;for(s in i)e.prototype[s]=i[s];var a=function t(){},u=[\"toString\",\"valueOf\"];try{/MSIE/.test(n.userAgent)&&(a=function t(e,r){for(s=0;s<u.length;s+=1){var n=u[s],i=r[n];\"function\"==typeof i&&i!=Object.prototype[n]&&(e[n]=i)}})}catch(t){}a(e.prototype,i)}}};\n/*! CryptoJS v3.1.2 core-fix.js\n * code.google.com/p/crypto-js\n * (c) 2009-2013 by Jeff Mott. All rights reserved.\n * code.google.com/p/crypto-js/wiki/License\n * THIS IS FIX of 'core.js' to fix Hmac issue.\n * https://code.google.com/p/crypto-js/issues/detail?id=84\n * https://crypto-js.googlecode.com/svn-history/r667/branches/3.x/src/core.js\n */\nvar s,a,u,c,h,l,f,g,d,p,v,y=y||(s=Math,u=(a={}).lib={},c=u.Base=function(){function t(){}return{extend:function e(r){t.prototype=this;var n=new t;return r&&n.mixIn(r),n.hasOwnProperty(\"init\")||(n.init=function(){n.$super.init.apply(this,arguments)}),n.init.prototype=n,n.$super=this,n},create:function t(){var e=this.extend();return e.init.apply(e,arguments),e},init:function t(){},mixIn:function t(e){for(var r in e)e.hasOwnProperty(r)&&(this[r]=e[r]);e.hasOwnProperty(\"toString\")&&(this.toString=e.toString)},clone:function t(){return this.init.prototype.extend(this)}}}(),h=u.WordArray=c.extend({init:function t(e,r){e=this.words=e||[],this.sigBytes=null!=r?r:4*e.length},toString:function t(e){return(e||f).stringify(this)},concat:function t(e){var r=this.words,n=e.words,i=this.sigBytes,o=e.sigBytes;if(this.clamp(),i%4)for(var s=0;s<o;s++){var a=n[s>>>2]>>>24-s%4*8&255;r[i+s>>>2]|=a<<24-(i+s)%4*8}else for(s=0;s<o;s+=4)r[i+s>>>2]=n[s>>>2];return this.sigBytes+=o,this},clamp:function t(){var e=this.words,r=this.sigBytes;e[r>>>2]&=4294967295<<32-r%4*8,e.length=s.ceil(r/4)},clone:function t(){var e=c.clone.call(this);return e.words=this.words.slice(0),e},random:function t(e){for(var r=[],n=0;n<e;n+=4)r.push(4294967296*s.random()|0);return new h.init(r,e)}}),l=a.enc={},f=l.Hex={stringify:function t(e){for(var r=e.words,n=e.sigBytes,i=[],o=0;o<n;o++){var s=r[o>>>2]>>>24-o%4*8&255;i.push((s>>>4).toString(16)),i.push((15&s).toString(16))}return i.join(\"\")},parse:function t(e){for(var r=e.length,n=[],i=0;i<r;i+=2)n[i>>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new h.init(n,r/2)}},g=l.Latin1={stringify:function t(e){for(var r=e.words,n=e.sigBytes,i=[],o=0;o<n;o++){var s=r[o>>>2]>>>24-o%4*8&255;i.push(String.fromCharCode(s))}return i.join(\"\")},parse:function t(e){for(var r=e.length,n=[],i=0;i<r;i++)n[i>>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new h.init(n,r)}},d=l.Utf8={stringify:function t(e){try{return decodeURIComponent(escape(g.stringify(e)))}catch(t){throw new Error(\"Malformed UTF-8 data\")}},parse:function t(e){return g.parse(unescape(encodeURIComponent(e)))}},p=u.BufferedBlockAlgorithm=c.extend({reset:function t(){this._data=new h.init,this._nDataBytes=0},_append:function t(e){\"string\"==typeof e&&(e=d.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function t(e){var r=this._data,n=r.words,i=r.sigBytes,o=this.blockSize,a=i/(4*o),u=(a=e?s.ceil(a):s.max((0|a)-this._minBufferSize,0))*o,c=s.min(4*u,i);if(u){for(var l=0;l<u;l+=o)this._doProcessBlock(n,l);var f=n.splice(0,u);r.sigBytes-=c}return new h.init(f,c)},clone:function t(){var e=c.clone.call(this);return e._data=this._data.clone(),e},_minBufferSize:0}),u.Hasher=p.extend({cfg:c.extend(),init:function t(e){this.cfg=this.cfg.extend(e),this.reset()},reset:function t(){p.reset.call(this),this._doReset()},update:function t(e){return this._append(e),this._process(),this},finalize:function t(e){return e&&this._append(e),this._doFinalize()},blockSize:16,_createHelper:function t(e){return function(t,r){return new e.init(r).finalize(t)}},_createHmacHelper:function t(e){return function(t,r){return new v.HMAC.init(e,r).finalize(t)}}}),v=a.algo={},a);!function(t){var e,r=(e=y).lib,n=r.Base,i=r.WordArray;(e=e.x64={}).Word=n.extend({init:function t(e,r){this.high=e,this.low=r}}),e.WordArray=n.extend({init:function t(e,r){e=this.words=e||[],this.sigBytes=null!=r?r:8*e.length},toX32:function t(){for(var e=this.words,r=e.length,n=[],o=0;o<r;o++){var s=e[o];n.push(s.high),n.push(s.low)}return i.create(n,this.sigBytes)},clone:function t(){for(var e=n.clone.call(this),r=e.words=this.words.slice(0),i=r.length,o=0;o<i;o++)r[o]=r[o].clone();return e}})}(),function(){var t=y,e=t.lib.WordArray;t.enc.Base64={stringify:function t(e){var r=e.words,n=e.sigBytes,i=this._map;e.clamp(),e=[];for(var o=0;o<n;o+=3)for(var s=(r[o>>>2]>>>24-o%4*8&255)<<16|(r[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|r[o+2>>>2]>>>24-(o+2)%4*8&255,a=0;4>a&&o+.75*a<n;a++)e.push(i.charAt(s>>>6*(3-a)&63));if(r=i.charAt(64))for(;e.length%4;)e.push(r);return e.join(\"\")},parse:function t(r){var n=r.length,i=this._map;(o=i.charAt(64))&&(-1!=(o=r.indexOf(o))&&(n=o));for(var o=[],s=0,a=0;a<n;a++)if(a%4){var u=i.indexOf(r.charAt(a-1))<<a%4*2,c=i.indexOf(r.charAt(a))>>>6-a%4*2;o[s>>>2]|=(u|c)<<24-s%4*8,s++}return e.create(o,s)},_map:\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\"}}(),function(t){for(var e=y,r=(i=e.lib).WordArray,n=i.Hasher,i=e.algo,o=[],s=[],a=function t(e){return 4294967296*(e-(0|e))|0},u=2,c=0;64>c;){var h;t:{h=u;for(var l=t.sqrt(h),f=2;f<=l;f++)if(!(h%f)){h=!1;break t}h=!0}h&&(8>c&&(o[c]=a(t.pow(u,.5))),s[c]=a(t.pow(u,1/3)),c++),u++}var g=[];i=i.SHA256=n.extend({_doReset:function t(){this._hash=new r.init(o.slice(0))},_doProcessBlock:function t(e,r){for(var n=this._hash.words,i=n[0],o=n[1],a=n[2],u=n[3],c=n[4],h=n[5],l=n[6],f=n[7],d=0;64>d;d++){if(16>d)g[d]=0|e[r+d];else{var p=g[d-15],v=g[d-2];g[d]=((p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3)+g[d-7]+((v<<15|v>>>17)^(v<<13|v>>>19)^v>>>10)+g[d-16]}p=f+((c<<26|c>>>6)^(c<<21|c>>>11)^(c<<7|c>>>25))+(c&h^~c&l)+s[d]+g[d],v=((i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22))+(i&o^i&a^o&a),f=l,l=h,h=c,c=u+p|0,u=a,a=o,o=i,i=p+v|0}n[0]=n[0]+i|0,n[1]=n[1]+o|0,n[2]=n[2]+a|0,n[3]=n[3]+u|0,n[4]=n[4]+c|0,n[5]=n[5]+h|0,n[6]=n[6]+l|0,n[7]=n[7]+f|0},_doFinalize:function e(){var r=this._data,n=r.words,i=8*this._nDataBytes,o=8*r.sigBytes;return n[o>>>5]|=128<<24-o%32,n[14+(o+64>>>9<<4)]=t.floor(i/4294967296),n[15+(o+64>>>9<<4)]=i,r.sigBytes=4*n.length,this._process(),this._hash},clone:function t(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});e.SHA256=n._createHelper(i),e.HmacSHA256=n._createHmacHelper(i)}(Math),function(){function t(){return n.create.apply(n,arguments)}for(var e=y,r=e.lib.Hasher,n=(o=e.x64).Word,i=o.WordArray,o=e.algo,s=[t(1116352408,3609767458),t(1899447441,602891725),t(3049323471,3964484399),t(3921009573,2173295548),t(961987163,4081628472),t(1508970993,3053834265),t(2453635748,2937671579),t(2870763221,3664609560),t(3624381080,2734883394),t(310598401,1164996542),t(607225278,1323610764),t(1426881987,3590304994),t(1925078388,4068182383),t(2162078206,991336113),t(2614888103,633803317),t(3248222580,3479774868),t(3835390401,2666613458),t(4022224774,944711139),t(264347078,2341262773),t(604807628,2007800933),t(770255983,1495990901),t(1249150122,1856431235),t(1555081692,3175218132),t(1996064986,2198950837),t(2554220882,3999719339),t(2821834349,766784016),t(2952996808,2566594879),t(3210313671,3203337956),t(3336571891,1034457026),t(3584528711,2466948901),t(113926993,3758326383),t(338241895,168717936),t(666307205,1188179964),t(773529912,1546045734),t(1294757372,1522805485),t(1396182291,2643833823),t(1695183700,2343527390),t(1986661051,1014477480),t(2177026350,1206759142),t(2456956037,344077627),t(2730485921,1290863460),t(2820302411,3158454273),t(3259730800,3505952657),t(3345764771,106217008),t(3516065817,3606008344),t(3600352804,1432725776),t(4094571909,1467031594),t(275423344,851169720),t(430227734,3100823752),t(506948616,1363258195),t(659060556,3750685593),t(883997877,3785050280),t(958139571,3318307427),t(1322822218,3812723403),t(1537002063,2003034995),t(1747873779,3602036899),t(1955562222,1575990012),t(2024104815,1125592928),t(2227730452,2716904306),t(2361852424,442776044),t(2428436474,593698344),t(2756734187,3733110249),t(3204031479,2999351573),t(3329325298,3815920427),t(3391569614,3928383900),t(3515267271,566280711),t(3940187606,3454069534),t(4118630271,4000239992),t(116418474,1914138554),t(174292421,2731055270),t(289380356,3203993006),t(460393269,320620315),t(685471733,587496836),t(852142971,1086792851),t(1017036298,365543100),t(1126000580,2618297676),t(1288033470,3409855158),t(1501505948,4234509866),t(1607167915,987167468),t(1816402316,1246189591)],a=[],u=0;80>u;u++)a[u]=t();o=o.SHA512=r.extend({_doReset:function t(){this._hash=new i.init([new n.init(1779033703,4089235720),new n.init(3144134277,2227873595),new n.init(1013904242,4271175723),new n.init(2773480762,1595750129),new n.init(1359893119,2917565137),new n.init(2600822924,725511199),new n.init(528734635,4215389547),new n.init(1541459225,327033209)])},_doProcessBlock:function t(e,r){for(var n=(f=this._hash.words)[0],i=f[1],o=f[2],u=f[3],c=f[4],h=f[5],l=f[6],f=f[7],g=n.high,d=n.low,p=i.high,v=i.low,y=o.high,m=o.low,_=u.high,S=u.low,b=c.high,w=c.low,F=h.high,E=h.low,x=l.high,A=l.low,k=f.high,P=f.low,C=g,T=d,R=p,I=v,D=y,L=m,N=_,U=S,B=b,O=w,j=F,M=E,H=x,V=A,K=k,q=P,J=0;80>J;J++){var W=a[J];if(16>J)var z=W.high=0|e[r+2*J],Y=W.low=0|e[r+2*J+1];else{z=((Y=(z=a[J-15]).high)>>>1|(G=z.low)<<31)^(Y>>>8|G<<24)^Y>>>7;var G=(G>>>1|Y<<31)^(G>>>8|Y<<24)^(G>>>7|Y<<25),X=((Y=(X=a[J-2]).high)>>>19|($=X.low)<<13)^(Y<<3|$>>>29)^Y>>>6,$=($>>>19|Y<<13)^($<<3|Y>>>29)^($>>>6|Y<<26),Q=(Y=a[J-7]).high,Z=(tt=a[J-16]).high,tt=tt.low;z=(z=(z=z+Q+((Y=G+Y.low)>>>0<G>>>0?1:0))+X+((Y=Y+$)>>>0<$>>>0?1:0))+Z+((Y=Y+tt)>>>0<tt>>>0?1:0);W.high=z,W.low=Y}Q=B&j^~B&H,tt=O&M^~O&V,W=C&R^C&D^R&D;var et=T&I^T&L^I&L,rt=(G=(C>>>28|T<<4)^(C<<30|T>>>2)^(C<<25|T>>>7),X=(T>>>28|C<<4)^(T<<30|C>>>2)^(T<<25|C>>>7),($=s[J]).high),nt=$.low;Z=K+((B>>>14|O<<18)^(B>>>18|O<<14)^(B<<23|O>>>9))+(($=q+((O>>>14|B<<18)^(O>>>18|B<<14)^(O<<23|B>>>9)))>>>0<q>>>0?1:0),K=H,q=V,H=j,V=M,j=B,M=O,B=N+(Z=(Z=(Z=Z+Q+(($=$+tt)>>>0<tt>>>0?1:0))+rt+(($=$+nt)>>>0<nt>>>0?1:0))+z+(($=$+Y)>>>0<Y>>>0?1:0))+((O=U+$|0)>>>0<U>>>0?1:0)|0,N=D,U=L,D=R,L=I,R=C,I=T,C=Z+(W=G+W+((Y=X+et)>>>0<X>>>0?1:0))+((T=$+Y|0)>>>0<$>>>0?1:0)|0}d=n.low=d+T,n.high=g+C+(d>>>0<T>>>0?1:0),v=i.low=v+I,i.high=p+R+(v>>>0<I>>>0?1:0),m=o.low=m+L,o.high=y+D+(m>>>0<L>>>0?1:0),S=u.low=S+U,u.high=_+N+(S>>>0<U>>>0?1:0),w=c.low=w+O,c.high=b+B+(w>>>0<O>>>0?1:0),E=h.low=E+M,h.high=F+j+(E>>>0<M>>>0?1:0),A=l.low=A+V,l.high=x+H+(A>>>0<V>>>0?1:0),P=f.low=P+q,f.high=k+K+(P>>>0<q>>>0?1:0)},_doFinalize:function t(){var e=this._data,r=e.words,n=8*this._nDataBytes,i=8*e.sigBytes;return r[i>>>5]|=128<<24-i%32,r[30+(i+128>>>10<<5)]=Math.floor(n/4294967296),r[31+(i+128>>>10<<5)]=n,e.sigBytes=4*r.length,this._process(),this._hash.toX32()},clone:function t(){var e=r.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32}),e.SHA512=r._createHelper(o),e.HmacSHA512=r._createHmacHelper(o)}(),function(){var t=y,e=(i=t.x64).Word,r=i.WordArray,n=(i=t.algo).SHA512,i=i.SHA384=n.extend({_doReset:function t(){this._hash=new r.init([new e.init(3418070365,3238371032),new e.init(1654270250,914150663),new e.init(2438529370,812702999),new e.init(355462360,4144912697),new e.init(1731405415,4290775857),new e.init(2394180231,1750603025),new e.init(3675008525,1694076839),new e.init(1203062813,3204075428)])},_doFinalize:function t(){var e=n._doFinalize.call(this);return e.sigBytes-=16,e}});t.SHA384=n._createHelper(i),t.HmacSHA384=n._createHmacHelper(i)}();\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */\nvar m,_=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";function S(t){var e,r,n=\"\";for(e=0;e+3<=t.length;e+=3)r=parseInt(t.substring(e,e+3),16),n+=_.charAt(r>>6)+_.charAt(63&r);for(e+1==t.length?(r=parseInt(t.substring(e,e+1),16),n+=_.charAt(r<<2)):e+2==t.length&&(r=parseInt(t.substring(e,e+2),16),n+=_.charAt(r>>2)+_.charAt((3&r)<<4)),\"=\";(3&n.length)>0;)n+=\"=\";return n}function b(t){var e,r,n,i=\"\",o=0;for(e=0;e<t.length&&\"=\"!=t.charAt(e);++e)(n=_.indexOf(t.charAt(e)))<0||(0==o?(i+=R(n>>2),r=3&n,o=1):1==o?(i+=R(r<<2|n>>4),r=15&n,o=2):2==o?(i+=R(r),i+=R(n>>2),r=3&n,o=3):(i+=R(r<<2|n>>4),i+=R(15&n),o=0));return 1==o&&(i+=R(r<<2)),i}function w(t){var e,r=b(t),n=new Array;for(e=0;2*e<r.length;++e)n[e]=parseInt(r.substring(2*e,2*e+2),16);return n}function F(t,e,r){null!=t&&(\"number\"==typeof t?this.fromNumber(t,e,r):null==e&&\"string\"!=typeof t?this.fromString(t,256):this.fromString(t,e))}function E(){return new F(null)}\"Microsoft Internet Explorer\"==n.appName?(F.prototype.am=function x(t,e,r,n,i,o){for(var s=32767&e,a=e>>15;--o>=0;){var u=32767&this[t],c=this[t++]>>15,h=a*u+c*s;i=((u=s*u+((32767&h)<<15)+r[n]+(1073741823&i))>>>30)+(h>>>15)+a*c+(i>>>30),r[n++]=1073741823&u}return i},m=30):\"Netscape\"!=n.appName?(F.prototype.am=function A(t,e,r,n,i,o){for(;--o>=0;){var s=e*this[t++]+r[n]+i;i=Math.floor(s/67108864),r[n++]=67108863&s}return i},m=26):(F.prototype.am=function k(t,e,r,n,i,o){for(var s=16383&e,a=e>>14;--o>=0;){var u=16383&this[t],c=this[t++]>>14,h=a*u+c*s;i=((u=s*u+((16383&h)<<14)+r[n]+i)>>28)+(h>>14)+a*c,r[n++]=268435455&u}return i},m=28),F.prototype.DB=m,F.prototype.DM=(1<<m)-1,F.prototype.DV=1<<m;F.prototype.FV=Math.pow(2,52),F.prototype.F1=52-m,F.prototype.F2=2*m-52;var P,C,T=new Array;for(P=\"0\".charCodeAt(0),C=0;C<=9;++C)T[P++]=C;for(P=\"a\".charCodeAt(0),C=10;C<36;++C)T[P++]=C;for(P=\"A\".charCodeAt(0),C=10;C<36;++C)T[P++]=C;function R(t){return\"0123456789abcdefghijklmnopqrstuvwxyz\".charAt(t)}function I(t,e){var r=T[t.charCodeAt(e)];return null==r?-1:r}function D(t){var e=E();return e.fromInt(t),e}function L(t){var e,r=1;return 0!=(e=t>>>16)&&(t=e,r+=16),0!=(e=t>>8)&&(t=e,r+=8),0!=(e=t>>4)&&(t=e,r+=4),0!=(e=t>>2)&&(t=e,r+=2),0!=(e=t>>1)&&(t=e,r+=1),r}function N(t){this.m=t}function U(t){this.m=t,this.mp=t.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<<t.DB-15)-1,this.mt2=2*t.t}function B(t,e){return t&e}function O(t,e){return t|e}function j(t,e){return t^e}function M(t,e){return t&~e}function H(t){if(0==t)return-1;var e=0;return 0==(65535&t)&&(t>>=16,e+=16),0==(255&t)&&(t>>=8,e+=8),0==(15&t)&&(t>>=4,e+=4),0==(3&t)&&(t>>=2,e+=2),0==(1&t)&&++e,e}function V(t){for(var e=0;0!=t;)t&=t-1,++e;return e}function K(){}function q(t){return t}function J(t){this.r2=E(),this.q3=E(),F.ONE.dlShiftTo(2*t.t,this.r2),this.mu=this.r2.divide(t),this.m=t}N.prototype.convert=function W(t){return t.s<0||t.compareTo(this.m)>=0?t.mod(this.m):t},N.prototype.revert=function z(t){return t},N.prototype.reduce=function Y(t){t.divRemTo(this.m,null,t)},N.prototype.mulTo=function G(t,e,r){t.multiplyTo(e,r),this.reduce(r)},N.prototype.sqrTo=function X(t,e){t.squareTo(e),this.reduce(e)},U.prototype.convert=function $(t){var e=E();return t.abs().dlShiftTo(this.m.t,e),e.divRemTo(this.m,null,e),t.s<0&&e.compareTo(F.ZERO)>0&&this.m.subTo(e,e),e},U.prototype.revert=function Q(t){var e=E();return t.copyTo(e),this.reduce(e),e},U.prototype.reduce=function Z(t){for(;t.t<=this.mt2;)t[t.t++]=0;for(var e=0;e<this.m.t;++e){var r=32767&t[e],n=r*this.mpl+((r*this.mph+(t[e]>>15)*this.mpl&this.um)<<15)&t.DM;for(t[r=e+this.m.t]+=this.m.am(0,n,t,e,0,this.m.t);t[r]>=t.DV;)t[r]-=t.DV,t[++r]++}t.clamp(),t.drShiftTo(this.m.t,t),t.compareTo(this.m)>=0&&t.subTo(this.m,t)},U.prototype.mulTo=function tt(t,e,r){t.multiplyTo(e,r),this.reduce(r)},U.prototype.sqrTo=function et(t,e){t.squareTo(e),this.reduce(e)},F.prototype.copyTo=function rt(t){for(var e=this.t-1;e>=0;--e)t[e]=this[e];t.t=this.t,t.s=this.s},F.prototype.fromInt=function nt(t){this.t=1,this.s=t<0?-1:0,t>0?this[0]=t:t<-1?this[0]=t+this.DV:this.t=0},F.prototype.fromString=function it(t,e){var r;if(16==e)r=4;else if(8==e)r=3;else if(256==e)r=8;else if(2==e)r=1;else if(32==e)r=5;else{if(4!=e)return void this.fromRadix(t,e);r=2}this.t=0,this.s=0;for(var n=t.length,i=!1,o=0;--n>=0;){var s=8==r?255&t[n]:I(t,n);s<0?\"-\"==t.charAt(n)&&(i=!0):(i=!1,0==o?this[this.t++]=s:o+r>this.DB?(this[this.t-1]|=(s&(1<<this.DB-o)-1)<<o,this[this.t++]=s>>this.DB-o):this[this.t-1]|=s<<o,(o+=r)>=this.DB&&(o-=this.DB))}8==r&&0!=(128&t[0])&&(this.s=-1,o>0&&(this[this.t-1]|=(1<<this.DB-o)-1<<o)),this.clamp(),i&&F.ZERO.subTo(this,this)},F.prototype.clamp=function ot(){for(var t=this.s&this.DM;this.t>0&&this[this.t-1]==t;)--this.t},F.prototype.dlShiftTo=function st(t,e){var r;for(r=this.t-1;r>=0;--r)e[r+t]=this[r];for(r=t-1;r>=0;--r)e[r]=0;e.t=this.t+t,e.s=this.s},F.prototype.drShiftTo=function at(t,e){for(var r=t;r<this.t;++r)e[r-t]=this[r];e.t=Math.max(this.t-t,0),e.s=this.s},F.prototype.lShiftTo=function ut(t,e){var r,n=t%this.DB,i=this.DB-n,o=(1<<i)-1,s=Math.floor(t/this.DB),a=this.s<<n&this.DM;for(r=this.t-1;r>=0;--r)e[r+s+1]=this[r]>>i|a,a=(this[r]&o)<<n;for(r=s-1;r>=0;--r)e[r]=0;e[s]=a,e.t=this.t+s+1,e.s=this.s,e.clamp()},F.prototype.rShiftTo=function ct(t,e){e.s=this.s;var r=Math.floor(t/this.DB);if(r>=this.t)e.t=0;else{var n=t%this.DB,i=this.DB-n,o=(1<<n)-1;e[0]=this[r]>>n;for(var s=r+1;s<this.t;++s)e[s-r-1]|=(this[s]&o)<<i,e[s-r]=this[s]>>n;n>0&&(e[this.t-r-1]|=(this.s&o)<<i),e.t=this.t-r,e.clamp()}},F.prototype.subTo=function ht(t,e){for(var r=0,n=0,i=Math.min(t.t,this.t);r<i;)n+=this[r]-t[r],e[r++]=n&this.DM,n>>=this.DB;if(t.t<this.t){for(n-=t.s;r<this.t;)n+=this[r],e[r++]=n&this.DM,n>>=this.DB;n+=this.s}else{for(n+=this.s;r<t.t;)n-=t[r],e[r++]=n&this.DM,n>>=this.DB;n-=t.s}e.s=n<0?-1:0,n<-1?e[r++]=this.DV+n:n>0&&(e[r++]=n),e.t=r,e.clamp()},F.prototype.multiplyTo=function lt(t,e){var r=this.abs(),n=t.abs(),i=r.t;for(e.t=i+n.t;--i>=0;)e[i]=0;for(i=0;i<n.t;++i)e[i+r.t]=r.am(0,n[i],e,i,0,r.t);e.s=0,e.clamp(),this.s!=t.s&&F.ZERO.subTo(e,e)},F.prototype.squareTo=function ft(t){for(var e=this.abs(),r=t.t=2*e.t;--r>=0;)t[r]=0;for(r=0;r<e.t-1;++r){var n=e.am(r,e[r],t,2*r,0,1);(t[r+e.t]+=e.am(r+1,2*e[r],t,2*r+1,n,e.t-r-1))>=e.DV&&(t[r+e.t]-=e.DV,t[r+e.t+1]=1)}t.t>0&&(t[t.t-1]+=e.am(r,e[r],t,2*r,0,1)),t.s=0,t.clamp()},F.prototype.divRemTo=function gt(t,e,r){var n=t.abs();if(!(n.t<=0)){var i=this.abs();if(i.t<n.t)return null!=e&&e.fromInt(0),void(null!=r&&this.copyTo(r));null==r&&(r=E());var o=E(),s=this.s,a=t.s,u=this.DB-L(n[n.t-1]);u>0?(n.lShiftTo(u,o),i.lShiftTo(u,r)):(n.copyTo(o),i.copyTo(r));var c=o.t,h=o[c-1];if(0!=h){var l=h*(1<<this.F1)+(c>1?o[c-2]>>this.F2:0),f=this.FV/l,g=(1<<this.F1)/l,d=1<<this.F2,p=r.t,v=p-c,y=null==e?E():e;for(o.dlShiftTo(v,y),r.compareTo(y)>=0&&(r[r.t++]=1,r.subTo(y,r)),F.ONE.dlShiftTo(c,y),y.subTo(o,o);o.t<c;)o[o.t++]=0;for(;--v>=0;){var m=r[--p]==h?this.DM:Math.floor(r[p]*f+(r[p-1]+d)*g);if((r[p]+=o.am(0,m,r,v,0,c))<m)for(o.dlShiftTo(v,y),r.subTo(y,r);r[p]<--m;)r.subTo(y,r)}null!=e&&(r.drShiftTo(c,e),s!=a&&F.ZERO.subTo(e,e)),r.t=c,r.clamp(),u>0&&r.rShiftTo(u,r),s<0&&F.ZERO.subTo(r,r)}}},F.prototype.invDigit=function dt(){if(this.t<1)return 0;var t=this[0];if(0==(1&t))return 0;var e=3&t;return(e=(e=(e=(e=e*(2-(15&t)*e)&15)*(2-(255&t)*e)&255)*(2-((65535&t)*e&65535))&65535)*(2-t*e%this.DV)%this.DV)>0?this.DV-e:-e},F.prototype.isEven=function pt(){return 0==(this.t>0?1&this[0]:this.s)},F.prototype.exp=function vt(t,e){if(t>4294967295||t<1)return F.ONE;var r=E(),n=E(),i=e.convert(this),o=L(t)-1;for(i.copyTo(r);--o>=0;)if(e.sqrTo(r,n),(t&1<<o)>0)e.mulTo(n,i,r);else{var s=r;r=n,n=s}return e.revert(r)},F.prototype.toString=function yt(t){if(this.s<0)return\"-\"+this.negate().toString(t);var e;if(16==t)e=4;else if(8==t)e=3;else if(2==t)e=1;else if(32==t)e=5;else{if(4!=t)return this.toRadix(t);e=2}var r,n=(1<<e)-1,i=!1,o=\"\",s=this.t,a=this.DB-s*this.DB%e;if(s-- >0)for(a<this.DB&&(r=this[s]>>a)>0&&(i=!0,o=R(r));s>=0;)a<e?(r=(this[s]&(1<<a)-1)<<e-a,r|=this[--s]>>(a+=this.DB-e)):(r=this[s]>>(a-=e)&n,a<=0&&(a+=this.DB,--s)),r>0&&(i=!0),i&&(o+=R(r));return i?o:\"0\"},F.prototype.negate=function mt(){var t=E();return F.ZERO.subTo(this,t),t},F.prototype.abs=function _t(){return this.s<0?this.negate():this},F.prototype.compareTo=function St(t){var e=this.s-t.s;if(0!=e)return e;var r=this.t;if(0!=(e=r-t.t))return this.s<0?-e:e;for(;--r>=0;)if(0!=(e=this[r]-t[r]))return e;return 0},F.prototype.bitLength=function bt(){return this.t<=0?0:this.DB*(this.t-1)+L(this[this.t-1]^this.s&this.DM)},F.prototype.mod=function wt(t){var e=E();return this.abs().divRemTo(t,null,e),this.s<0&&e.compareTo(F.ZERO)>0&&t.subTo(e,e),e},F.prototype.modPowInt=function Ft(t,e){var r;return r=t<256||e.isEven()?new N(e):new U(e),this.exp(t,r)},F.ZERO=D(0),F.ONE=D(1),K.prototype.convert=q,K.prototype.revert=q,K.prototype.mulTo=function Et(t,e,r){t.multiplyTo(e,r)},K.prototype.sqrTo=function xt(t,e){t.squareTo(e)},J.prototype.convert=function At(t){if(t.s<0||t.t>2*this.m.t)return t.mod(this.m);if(t.compareTo(this.m)<0)return t;var e=E();return t.copyTo(e),this.reduce(e),e},J.prototype.revert=function kt(t){return t},J.prototype.reduce=function Pt(t){for(t.drShiftTo(this.m.t-1,this.r2),t.t>this.m.t+1&&(t.t=this.m.t+1,t.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);t.compareTo(this.r2)<0;)t.dAddOffset(1,this.m.t+1);for(t.subTo(this.r2,t);t.compareTo(this.m)>=0;)t.subTo(this.m,t)},J.prototype.mulTo=function Ct(t,e,r){t.multiplyTo(e,r),this.reduce(r)},J.prototype.sqrTo=function Tt(t,e){t.squareTo(e),this.reduce(e)};var Rt=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],It=(1<<26)/Rt[Rt.length-1];\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */\nfunction Dt(){this.i=0,this.j=0,this.S=new Array}F.prototype.chunkSize=function Lt(t){return Math.floor(Math.LN2*this.DB/Math.log(t))},F.prototype.toRadix=function Nt(t){if(null==t&&(t=10),0==this.signum()||t<2||t>36)return\"0\";var e=this.chunkSize(t),r=Math.pow(t,e),n=D(r),i=E(),o=E(),s=\"\";for(this.divRemTo(n,i,o);i.signum()>0;)s=(r+o.intValue()).toString(t).substr(1)+s,i.divRemTo(n,i,o);return o.intValue().toString(t)+s},F.prototype.fromRadix=function Ut(t,e){this.fromInt(0),null==e&&(e=10);for(var r=this.chunkSize(e),n=Math.pow(e,r),i=!1,o=0,s=0,a=0;a<t.length;++a){var u=I(t,a);u<0?\"-\"==t.charAt(a)&&0==this.signum()&&(i=!0):(s=e*s+u,++o>=r&&(this.dMultiply(n),this.dAddOffset(s,0),o=0,s=0))}o>0&&(this.dMultiply(Math.pow(e,o)),this.dAddOffset(s,0)),i&&F.ZERO.subTo(this,this)},F.prototype.fromNumber=function Bt(t,e,r){if(\"number\"==typeof e)if(t<2)this.fromInt(1);else for(this.fromNumber(t,r),this.testBit(t-1)||this.bitwiseTo(F.ONE.shiftLeft(t-1),O,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(e);)this.dAddOffset(2,0),this.bitLength()>t&&this.subTo(F.ONE.shiftLeft(t-1),this);else{var n=new Array,i=7&t;n.length=1+(t>>3),e.nextBytes(n),i>0?n[0]&=(1<<i)-1:n[0]=0,this.fromString(n,256)}},F.prototype.bitwiseTo=function Ot(t,e,r){var n,i,o=Math.min(t.t,this.t);for(n=0;n<o;++n)r[n]=e(this[n],t[n]);if(t.t<this.t){for(i=t.s&this.DM,n=o;n<this.t;++n)r[n]=e(this[n],i);r.t=this.t}else{for(i=this.s&this.DM,n=o;n<t.t;++n)r[n]=e(i,t[n]);r.t=t.t}r.s=e(this.s,t.s),r.clamp()},F.prototype.changeBit=function jt(t,e){var r=F.ONE.shiftLeft(t);return this.bitwiseTo(r,e,r),r},F.prototype.addTo=function Mt(t,e){for(var r=0,n=0,i=Math.min(t.t,this.t);r<i;)n+=this[r]+t[r],e[r++]=n&this.DM,n>>=this.DB;if(t.t<this.t){for(n+=t.s;r<this.t;)n+=this[r],e[r++]=n&this.DM,n>>=this.DB;n+=this.s}else{for(n+=this.s;r<t.t;)n+=t[r],e[r++]=n&this.DM,n>>=this.DB;n+=t.s}e.s=n<0?-1:0,n>0?e[r++]=n:n<-1&&(e[r++]=this.DV+n),e.t=r,e.clamp()},F.prototype.dMultiply=function Ht(t){this[this.t]=this.am(0,t-1,this,0,0,this.t),++this.t,this.clamp()},F.prototype.dAddOffset=function Vt(t,e){if(0!=t){for(;this.t<=e;)this[this.t++]=0;for(this[e]+=t;this[e]>=this.DV;)this[e]-=this.DV,++e>=this.t&&(this[this.t++]=0),++this[e]}},F.prototype.multiplyLowerTo=function Kt(t,e,r){var n,i=Math.min(this.t+t.t,e);for(r.s=0,r.t=i;i>0;)r[--i]=0;for(n=r.t-this.t;i<n;++i)r[i+this.t]=this.am(0,t[i],r,i,0,this.t);for(n=Math.min(t.t,e);i<n;++i)this.am(0,t[i],r,i,0,e-i);r.clamp()},F.prototype.multiplyUpperTo=function qt(t,e,r){--e;var n=r.t=this.t+t.t-e;for(r.s=0;--n>=0;)r[n]=0;for(n=Math.max(e-this.t,0);n<t.t;++n)r[this.t+n-e]=this.am(e-n,t[n],r,0,0,this.t+n-e);r.clamp(),r.drShiftTo(1,r)},F.prototype.modInt=function Jt(t){if(t<=0)return 0;var e=this.DV%t,r=this.s<0?t-1:0;if(this.t>0)if(0==e)r=this[0]%t;else for(var n=this.t-1;n>=0;--n)r=(e*r+this[n])%t;return r},F.prototype.millerRabin=function Wt(t){var e=this.subtract(F.ONE),r=e.getLowestSetBit();if(r<=0)return!1;var n=e.shiftRight(r);(t=t+1>>1)>Rt.length&&(t=Rt.length);for(var i=E(),o=0;o<t;++o){i.fromInt(Rt[Math.floor(Math.random()*Rt.length)]);var s=i.modPow(n,this);if(0!=s.compareTo(F.ONE)&&0!=s.compareTo(e)){for(var a=1;a++<r&&0!=s.compareTo(e);)if(0==(s=s.modPowInt(2,this)).compareTo(F.ONE))return!1;if(0!=s.compareTo(e))return!1}}return!0},F.prototype.clone=\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */\nfunction zt(){var t=E();return this.copyTo(t),t},F.prototype.intValue=function Yt(){if(this.s<0){if(1==this.t)return this[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<<this.DB|this[0]},F.prototype.byteValue=function Gt(){return 0==this.t?this.s:this[0]<<24>>24},F.prototype.shortValue=function Xt(){return 0==this.t?this.s:this[0]<<16>>16},F.prototype.signum=function $t(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},F.prototype.toByteArray=function Qt(){var t=this.t,e=new Array;e[0]=this.s;var r,n=this.DB-t*this.DB%8,i=0;if(t-- >0)for(n<this.DB&&(r=this[t]>>n)!=(this.s&this.DM)>>n&&(e[i++]=r|this.s<<this.DB-n);t>=0;)n<8?(r=(this[t]&(1<<n)-1)<<8-n,r|=this[--t]>>(n+=this.DB-8)):(r=this[t]>>(n-=8)&255,n<=0&&(n+=this.DB,--t)),0!=(128&r)&&(r|=-256),0==i&&(128&this.s)!=(128&r)&&++i,(i>0||r!=this.s)&&(e[i++]=r);return e},F.prototype.equals=function Zt(t){return 0==this.compareTo(t)},F.prototype.min=function te(t){return this.compareTo(t)<0?this:t},F.prototype.max=function ee(t){return this.compareTo(t)>0?this:t},F.prototype.and=function re(t){var e=E();return this.bitwiseTo(t,B,e),e},F.prototype.or=function ne(t){var e=E();return this.bitwiseTo(t,O,e),e},F.prototype.xor=function ie(t){var e=E();return this.bitwiseTo(t,j,e),e},F.prototype.andNot=function oe(t){var e=E();return this.bitwiseTo(t,M,e),e},F.prototype.not=function se(){for(var t=E(),e=0;e<this.t;++e)t[e]=this.DM&~this[e];return t.t=this.t,t.s=~this.s,t},F.prototype.shiftLeft=function ae(t){var e=E();return t<0?this.rShiftTo(-t,e):this.lShiftTo(t,e),e},F.prototype.shiftRight=function ue(t){var e=E();return t<0?this.lShiftTo(-t,e):this.rShiftTo(t,e),e},F.prototype.getLowestSetBit=function ce(){for(var t=0;t<this.t;++t)if(0!=this[t])return t*this.DB+H(this[t]);return this.s<0?this.t*this.DB:-1},F.prototype.bitCount=function he(){for(var t=0,e=this.s&this.DM,r=0;r<this.t;++r)t+=V(this[r]^e);return t},F.prototype.testBit=function le(t){var e=Math.floor(t/this.DB);return e>=this.t?0!=this.s:0!=(this[e]&1<<t%this.DB)},F.prototype.setBit=function fe(t){return this.changeBit(t,O)},F.prototype.clearBit=function ge(t){return this.changeBit(t,M)},F.prototype.flipBit=function de(t){return this.changeBit(t,j)},F.prototype.add=function pe(t){var e=E();return this.addTo(t,e),e},F.prototype.subtract=function ve(t){var e=E();return this.subTo(t,e),e},F.prototype.multiply=function ye(t){var e=E();return this.multiplyTo(t,e),e},F.prototype.divide=function me(t){var e=E();return this.divRemTo(t,e,null),e},F.prototype.remainder=function _e(t){var e=E();return this.divRemTo(t,null,e),e},F.prototype.divideAndRemainder=function Se(t){var e=E(),r=E();return this.divRemTo(t,e,r),new Array(e,r)},F.prototype.modPow=function be(t,e){var r,n,i=t.bitLength(),o=D(1);if(i<=0)return o;r=i<18?1:i<48?3:i<144?4:i<768?5:6,n=i<8?new N(e):e.isEven()?new J(e):new U(e);var s=new Array,a=3,u=r-1,c=(1<<r)-1;if(s[1]=n.convert(this),r>1){var h=E();for(n.sqrTo(s[1],h);a<=c;)s[a]=E(),n.mulTo(h,s[a-2],s[a]),a+=2}var l,f,g=t.t-1,d=!0,p=E();for(i=L(t[g])-1;g>=0;){for(i>=u?l=t[g]>>i-u&c:(l=(t[g]&(1<<i+1)-1)<<u-i,g>0&&(l|=t[g-1]>>this.DB+i-u)),a=r;0==(1&l);)l>>=1,--a;if((i-=a)<0&&(i+=this.DB,--g),d)s[l].copyTo(o),d=!1;else{for(;a>1;)n.sqrTo(o,p),n.sqrTo(p,o),a-=2;a>0?n.sqrTo(o,p):(f=o,o=p,p=f),n.mulTo(p,s[l],o)}for(;g>=0&&0==(t[g]&1<<i);)n.sqrTo(o,p),f=o,o=p,p=f,--i<0&&(i=this.DB-1,--g)}return n.revert(o)},F.prototype.modInverse=function we(t){var e=t.isEven();if(this.isEven()&&e||0==t.signum())return F.ZERO;for(var r=t.clone(),n=this.clone(),i=D(1),o=D(0),s=D(0),a=D(1);0!=r.signum();){for(;r.isEven();)r.rShiftTo(1,r),e?(i.isEven()&&o.isEven()||(i.addTo(this,i),o.subTo(t,o)),i.rShiftTo(1,i)):o.isEven()||o.subTo(t,o),o.rShiftTo(1,o);for(;n.isEven();)n.rShiftTo(1,n),e?(s.isEven()&&a.isEven()||(s.addTo(this,s),a.subTo(t,a)),s.rShiftTo(1,s)):a.isEven()||a.subTo(t,a),a.rShiftTo(1,a);r.compareTo(n)>=0?(r.subTo(n,r),e&&i.subTo(s,i),o.subTo(a,o)):(n.subTo(r,n),e&&s.subTo(i,s),a.subTo(o,a))}return 0!=n.compareTo(F.ONE)?F.ZERO:a.compareTo(t)>=0?a.subtract(t):a.signum()<0?(a.addTo(t,a),a.signum()<0?a.add(t):a):a},F.prototype.pow=function Fe(t){return this.exp(t,new K)},F.prototype.gcd=function Ee(t){var e=this.s<0?this.negate():this.clone(),r=t.s<0?t.negate():t.clone();if(e.compareTo(r)<0){var n=e;e=r,r=n}var i=e.getLowestSetBit(),o=r.getLowestSetBit();if(o<0)return e;for(i<o&&(o=i),o>0&&(e.rShiftTo(o,e),r.rShiftTo(o,r));e.signum()>0;)(i=e.getLowestSetBit())>0&&e.rShiftTo(i,e),(i=r.getLowestSetBit())>0&&r.rShiftTo(i,r),e.compareTo(r)>=0?(e.subTo(r,e),e.rShiftTo(1,e)):(r.subTo(e,r),r.rShiftTo(1,r));return o>0&&r.lShiftTo(o,r),r},F.prototype.isProbablePrime=function xe(t){var e,r=this.abs();if(1==r.t&&r[0]<=Rt[Rt.length-1]){for(e=0;e<Rt.length;++e)if(r[0]==Rt[e])return!0;return!1}if(r.isEven())return!1;for(e=1;e<Rt.length;){for(var n=Rt[e],i=e+1;i<Rt.length&&n<It;)n*=Rt[i++];for(n=r.modInt(n);e<i;)if(n%Rt[e++]==0)return!1}return r.millerRabin(t)},F.prototype.square=function Ae(){var t=E();return this.squareTo(t),t},Dt.prototype.init=function ke(t){var e,r,n;for(e=0;e<256;++e)this.S[e]=e;for(r=0,e=0;e<256;++e)r=r+this.S[e]+t[e%t.length]&255,n=this.S[e],this.S[e]=this.S[r],this.S[r]=n;this.i=0,this.j=0},Dt.prototype.next=function Pe(){var t;return this.i=this.i+1&255,this.j=this.j+this.S[this.i]&255,t=this.S[this.i],this.S[this.i]=this.S[this.j],this.S[this.j]=t,this.S[t+this.S[this.i]&255]};var Ce,Te,Re;\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */function Ie(){!function t(e){Te[Re++]^=255&e,Te[Re++]^=e>>8&255,Te[Re++]^=e>>16&255,Te[Re++]^=e>>24&255,Re>=256&&(Re-=256)}((new Date).getTime())}if(null==Te){var De;if(Te=new Array,Re=0,void 0!==i&&(void 0!==i.crypto||void 0!==i.msCrypto)){var Le=i.crypto||i.msCrypto;if(Le.getRandomValues){var Ne=new Uint8Array(32);for(Le.getRandomValues(Ne),De=0;De<32;++De)Te[Re++]=Ne[De]}else if(\"Netscape\"==n.appName&&n.appVersion<\"5\"){var Ue=i.crypto.random(32);for(De=0;De<Ue.length;++De)Te[Re++]=255&Ue.charCodeAt(De)}}for(;Re<256;)De=Math.floor(65536*Math.random()),Te[Re++]=De>>>8,Te[Re++]=255&De;Re=0,Ie()}function Be(){if(null==Ce){for(Ie(),(Ce=function t(){return new Dt}()).init(Te),Re=0;Re<Te.length;++Re)Te[Re]=0;Re=0}return Ce.next()}function Oe(){}\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */\nfunction je(t,e){return new F(t,e)}function Me(t,e,r){for(var n=\"\",i=0;n.length<e;)n+=r(String.fromCharCode.apply(String,t.concat([(4278190080&i)>>24,(16711680&i)>>16,(65280&i)>>8,255&i]))),i+=1;return n}function He(){this.n=null,this.e=0,this.d=null,this.p=null,this.q=null,this.dmp1=null,this.dmq1=null,this.coeff=null}\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */\nfunction Ve(t,e){this.x=e,this.q=t}function Ke(t,e,r,n){this.curve=t,this.x=e,this.y=r,this.z=null==n?F.ONE:n,this.zinv=null}function qe(t,e,r){this.q=t,this.a=this.fromBigInteger(e),this.b=this.fromBigInteger(r),this.infinity=new Ke(this,null,null)}Oe.prototype.nextBytes=function Je(t){var e;for(e=0;e<t.length;++e)t[e]=Be()},He.prototype.doPublic=function We(t){return t.modPowInt(this.e,this.n)},He.prototype.setPublic=function ze(t,e){if(this.isPublic=!0,this.isPrivate=!1,\"string\"!=typeof t)this.n=t,this.e=e;else{if(!(null!=t&&null!=e&&t.length>0&&e.length>0))throw\"Invalid RSA public key\";this.n=je(t,16),this.e=parseInt(e,16)}},He.prototype.encrypt=function Ye(t){var e=function r(t,e){if(e<t.length+11)throw\"Message too long for RSA\";for(var r=new Array,n=t.length-1;n>=0&&e>0;){var i=t.charCodeAt(n--);i<128?r[--e]=i:i>127&&i<2048?(r[--e]=63&i|128,r[--e]=i>>6|192):(r[--e]=63&i|128,r[--e]=i>>6&63|128,r[--e]=i>>12|224)}r[--e]=0;for(var o=new Oe,s=new Array;e>2;){for(s[0]=0;0==s[0];)o.nextBytes(s);r[--e]=s[0]}return r[--e]=2,r[--e]=0,new F(r)}(t,this.n.bitLength()+7>>3);if(null==e)return null;var n=this.doPublic(e);if(null==n)return null;var i=n.toString(16);return 0==(1&i.length)?i:\"0\"+i},He.prototype.encryptOAEP=function Ge(t,e,r){var n=function i(t,e,r,n){var i=br.crypto.MessageDigest,o=br.crypto.Util,s=null;if(r||(r=\"sha1\"),\"string\"==typeof r&&(s=i.getCanonicalAlgName(r),n=i.getHashLength(s),r=function t(e){return Nr(o.hashHex(Ur(e),s))}),t.length+2*n+2>e)throw\"Message too long for RSA\";var a,u=\"\";for(a=0;a<e-t.length-2*n-2;a+=1)u+=\"\\0\";var c=r(\"\")+u+\"\u0001\"+t,h=new Array(n);(new Oe).nextBytes(h);var l=Me(h,c.length,r),f=[];for(a=0;a<c.length;a+=1)f[a]=c.charCodeAt(a)^l.charCodeAt(a);var g=Me(f,h.length,r),d=[0];for(a=0;a<h.length;a+=1)d[a+1]=h[a]^g.charCodeAt(a);return new F(d.concat(f))}(t,this.n.bitLength()+7>>3,e,r);if(null==n)return null;var o=this.doPublic(n);if(null==o)return null;var s=o.toString(16);return 0==(1&s.length)?s:\"0\"+s},He.prototype.type=\"RSA\",Ve.prototype.equals=function Xe(t){return t==this||this.q.equals(t.q)&&this.x.equals(t.x)},Ve.prototype.toBigInteger=function $e(){return this.x},Ve.prototype.negate=function Qe(){return new Ve(this.q,this.x.negate().mod(this.q))},Ve.prototype.add=function Ze(t){return new Ve(this.q,this.x.add(t.toBigInteger()).mod(this.q))},Ve.prototype.subtract=function tr(t){return new Ve(this.q,this.x.subtract(t.toBigInteger()).mod(this.q))},Ve.prototype.multiply=function er(t){return new Ve(this.q,this.x.multiply(t.toBigInteger()).mod(this.q))},Ve.prototype.square=function rr(){return new Ve(this.q,this.x.square().mod(this.q))},Ve.prototype.divide=function nr(t){return new Ve(this.q,this.x.multiply(t.toBigInteger().modInverse(this.q)).mod(this.q))},Ke.prototype.getX=function ir(){return null==this.zinv&&(this.zinv=this.z.modInverse(this.curve.q)),this.curve.fromBigInteger(this.x.toBigInteger().multiply(this.zinv).mod(this.curve.q))},Ke.prototype.getY=function or(){return null==this.zinv&&(this.zinv=this.z.modInverse(this.curve.q)),this.curve.fromBigInteger(this.y.toBigInteger().multiply(this.zinv).mod(this.curve.q))},Ke.prototype.equals=function sr(t){return t==this||(this.isInfinity()?t.isInfinity():t.isInfinity()?this.isInfinity():!!t.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(t.z)).mod(this.curve.q).equals(F.ZERO)&&t.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(t.z)).mod(this.curve.q).equals(F.ZERO))},Ke.prototype.isInfinity=function ar(){return null==this.x&&null==this.y||this.z.equals(F.ZERO)&&!this.y.toBigInteger().equals(F.ZERO)},Ke.prototype.negate=function ur(){return new Ke(this.curve,this.x,this.y.negate(),this.z)},Ke.prototype.add=function cr(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(t.z)).mod(this.curve.q),r=t.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(t.z)).mod(this.curve.q);if(F.ZERO.equals(r))return F.ZERO.equals(e)?this.twice():this.curve.getInfinity();var n=new F(\"3\"),i=this.x.toBigInteger(),o=this.y.toBigInteger(),s=(t.x.toBigInteger(),t.y.toBigInteger(),r.square()),a=s.multiply(r),u=i.multiply(s),c=e.square().multiply(this.z),h=c.subtract(u.shiftLeft(1)).multiply(t.z).subtract(a).multiply(r).mod(this.curve.q),l=u.multiply(n).multiply(e).subtract(o.multiply(a)).subtract(c.multiply(e)).multiply(t.z).add(e.multiply(a)).mod(this.curve.q),f=a.multiply(this.z).multiply(t.z).mod(this.curve.q);return new Ke(this.curve,this.curve.fromBigInteger(h),this.curve.fromBigInteger(l),f)},Ke.prototype.twice=function hr(){if(this.isInfinity())return this;if(0==this.y.toBigInteger().signum())return this.curve.getInfinity();var t=new F(\"3\"),e=this.x.toBigInteger(),r=this.y.toBigInteger(),n=r.multiply(this.z),i=n.multiply(r).mod(this.curve.q),o=this.curve.a.toBigInteger(),s=e.square().multiply(t);F.ZERO.equals(o)||(s=s.add(this.z.square().multiply(o)));var a=(s=s.mod(this.curve.q)).square().subtract(e.shiftLeft(3).multiply(i)).shiftLeft(1).multiply(n).mod(this.curve.q),u=s.multiply(t).multiply(e).subtract(i.shiftLeft(1)).shiftLeft(2).multiply(i).subtract(s.square().multiply(s)).mod(this.curve.q),c=n.square().multiply(n).shiftLeft(3).mod(this.curve.q);return new Ke(this.curve,this.curve.fromBigInteger(a),this.curve.fromBigInteger(u),c)},Ke.prototype.multiply=function lr(t){if(this.isInfinity())return this;if(0==t.signum())return this.curve.getInfinity();var e,r=t,n=r.multiply(new F(\"3\")),i=this.negate(),o=this,s=this.curve.q.subtract(t),a=s.multiply(new F(\"3\")),u=new Ke(this.curve,this.x,this.y),c=u.negate();for(e=n.bitLength()-2;e>0;--e){o=o.twice();var h=n.testBit(e);h!=r.testBit(e)&&(o=o.add(h?this:i))}for(e=a.bitLength()-2;e>0;--e){u=u.twice();var l=a.testBit(e);l!=s.testBit(e)&&(u=u.add(l?u:c))}return o},Ke.prototype.multiplyTwo=function fr(t,e,r){var n;n=t.bitLength()>r.bitLength()?t.bitLength()-1:r.bitLength()-1;for(var i=this.curve.getInfinity(),o=this.add(e);n>=0;)i=i.twice(),t.testBit(n)?i=r.testBit(n)?i.add(o):i.add(this):r.testBit(n)&&(i=i.add(e)),--n;return i},qe.prototype.getQ=function gr(){return this.q},qe.prototype.getA=function dr(){return this.a},qe.prototype.getB=function pr(){return this.b},qe.prototype.equals=function vr(t){return t==this||this.q.equals(t.q)&&this.a.equals(t.a)&&this.b.equals(t.b)},qe.prototype.getInfinity=function yr(){return this.infinity},qe.prototype.fromBigInteger=function mr(t){return new Ve(this.q,t)},qe.prototype.decodePointHex=function _r(t){switch(parseInt(t.substr(0,2),16)){case 0:return this.infinity;case 2:case 3:return null;case 4:case 6:case 7:var e=(t.length-2)/2,r=t.substr(2,e),n=t.substr(e+2,e);return new Ke(this,this.fromBigInteger(new F(r,16)),this.fromBigInteger(new F(n,16)));default:return null}},\n/*! (c) Stefan Thomas | https://github.com/bitcoinjs/bitcoinjs-lib\n */\nVe.prototype.getByteLength=function(){return Math.floor((this.toBigInteger().bitLength()+7)/8)},Ke.prototype.getEncoded=function(t){var e=function t(e,r){var n=e.toByteArrayUnsigned();if(r<n.length)n=n.slice(n.length-r);else for(;r>n.length;)n.unshift(0);return n},r=this.getX().toBigInteger(),n=this.getY().toBigInteger(),i=e(r,32);return t?n.isEven()?i.unshift(2):i.unshift(3):(i.unshift(4),i=i.concat(e(n,32))),i},Ke.decodeFrom=function(t,e){e[0];var r=e.length-1,n=e.slice(1,1+r/2),i=e.slice(1+r/2,1+r);n.unshift(0),i.unshift(0);var o=new F(n),s=new F(i);return new Ke(t,t.fromBigInteger(o),t.fromBigInteger(s))},Ke.decodeFromHex=function(t,e){e.substr(0,2);var r=e.length-2,n=e.substr(2,r/2),i=e.substr(2+r/2,r/2),o=new F(n,16),s=new F(i,16);return new Ke(t,t.fromBigInteger(o),t.fromBigInteger(s))},Ke.prototype.add2D=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;if(this.x.equals(t.x))return this.y.equals(t.y)?this.twice():this.curve.getInfinity();var e=t.x.subtract(this.x),r=t.y.subtract(this.y).divide(e),n=r.square().subtract(this.x).subtract(t.x),i=r.multiply(this.x.subtract(n)).subtract(this.y);return new Ke(this.curve,n,i)},Ke.prototype.twice2D=function(){if(this.isInfinity())return this;if(0==this.y.toBigInteger().signum())return this.curve.getInfinity();var t=this.curve.fromBigInteger(F.valueOf(2)),e=this.curve.fromBigInteger(F.valueOf(3)),r=this.x.square().multiply(e).add(this.curve.a).divide(this.y.multiply(t)),n=r.square().subtract(this.x.multiply(t)),i=r.multiply(this.x.subtract(n)).subtract(this.y);return new Ke(this.curve,n,i)},Ke.prototype.multiply2D=function(t){if(this.isInfinity())return this;if(0==t.signum())return this.curve.getInfinity();var e,r=t,n=r.multiply(new F(\"3\")),i=this.negate(),o=this;for(e=n.bitLength()-2;e>0;--e){o=o.twice();var s=n.testBit(e);s!=r.testBit(e)&&(o=o.add2D(s?this:i))}return o},Ke.prototype.isOnCurve=function(){var t=this.getX().toBigInteger(),e=this.getY().toBigInteger(),r=this.curve.getA().toBigInteger(),n=this.curve.getB().toBigInteger(),i=this.curve.getQ(),o=e.multiply(e).mod(i),s=t.multiply(t).multiply(t).add(r.multiply(t)).add(n).mod(i);return o.equals(s)},Ke.prototype.toString=function(){return\"(\"+this.getX().toBigInteger().toString()+\",\"+this.getY().toBigInteger().toString()+\")\"},Ke.prototype.validate=function(){var t=this.curve.getQ();if(this.isInfinity())throw new Error(\"Point is at infinity.\");var e=this.getX().toBigInteger(),r=this.getY().toBigInteger();if(e.compareTo(F.ONE)<0||e.compareTo(t.subtract(F.ONE))>0)throw new Error(\"x coordinate out of bounds\");if(r.compareTo(F.ONE)<0||r.compareTo(t.subtract(F.ONE))>0)throw new Error(\"y coordinate out of bounds\");if(!this.isOnCurve())throw new Error(\"Point is not on the curve.\");if(this.multiply(t).isInfinity())throw new Error(\"Point is not a scalar multiple of G.\");return!0};\n/*! Mike Samuel (c) 2009 | code.google.com/p/json-sans-eval\n */\nvar Sr=function(){var t=new RegExp('(?:false|true|null|[\\\\{\\\\}\\\\[\\\\]]|(?:-?\\\\b(?:0|[1-9][0-9]*)(?:\\\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?\\\\b)|(?:\"(?:[^\\\\0-\\\\x08\\\\x0a-\\\\x1f\"\\\\\\\\]|\\\\\\\\(?:[\"/\\\\\\\\bfnrt]|u[0-9A-Fa-f]{4}))*\"))',\"g\"),e=new RegExp(\"\\\\\\\\(?:([^u])|u(.{4}))\",\"g\"),n={'\"':'\"',\"/\":\"/\",\"\\\\\":\"\\\\\",b:\"\\b\",f:\"\\f\",n:\"\\n\",r:\"\\r\",t:\"\\t\"};function i(t,e,r){return e?n[e]:String.fromCharCode(parseInt(r,16))}var o=new String(\"\"),s=Object.hasOwnProperty;return function(n,a){var u,c,h=n.match(t),l=h[0],f=!1;\"{\"===l?u={}:\"[\"===l?u=[]:(u=[],f=!0);for(var g=[u],d=1-f,p=h.length;d<p;++d){var v;switch((l=h[d]).charCodeAt(0)){default:(v=g[0])[c||v.length]=+l,c=void 0;break;case 34:if(-1!==(l=l.substring(1,l.length-1)).indexOf(\"\\\\\")&&(l=l.replace(e,i)),v=g[0],!c){if(!(v instanceof Array)){c=l||o;break}c=v.length}v[c]=l,c=void 0;break;case 91:v=g[0],g.unshift(v[c||v.length]=[]),c=void 0;break;case 93:g.shift();break;case 102:(v=g[0])[c||v.length]=!1,c=void 0;break;case 110:(v=g[0])[c||v.length]=null,c=void 0;break;case 116:(v=g[0])[c||v.length]=!0,c=void 0;break;case 123:v=g[0],g.unshift(v[c||v.length]={}),c=void 0;break;case 125:g.shift()}}if(f){if(1!==g.length)throw new Error;u=u[0]}else if(g.length)throw new Error;if(a){u=function t(e,n){var i=e[n];if(i&&\"object\"===(void 0===i?\"undefined\":r(i))){var o=null;for(var u in i)if(s.call(i,u)&&i!==e){var c=t(i,u);void 0!==c?i[u]=c:(o||(o=[]),o.push(u))}if(o)for(var h=o.length;--h>=0;)delete i[o[h]]}return a.call(e,n,i)}({\"\":u},\"\")}return u}}();void 0!==br&&br||(e.KJUR=br={}),void 0!==br.asn1&&br.asn1||(br.asn1={}),br.asn1.ASN1Util=new function(){this.integerToByteHex=function(t){var e=t.toString(16);return e.length%2==1&&(e=\"0\"+e),e},this.bigIntToMinTwosComplementsHex=function(t){var e=t.toString(16);if(\"-\"!=e.substr(0,1))e.length%2==1?e=\"0\"+e:e.match(/^[0-7]/)||(e=\"00\"+e);else{var r=e.substr(1).length;r%2==1?r+=1:e.match(/^[0-7]/)||(r+=2);for(var n=\"\",i=0;i<r;i++)n+=\"f\";e=new F(n,16).xor(t).add(F.ONE).toString(16).replace(/^-/,\"\")}return e},this.getPEMStringFromHex=function(t,e){return Mr(t,e)},this.newObject=function(t){var e=br.asn1,r=e.ASN1Object,n=e.DERBoolean,i=e.DERInteger,o=e.DERBitString,s=e.DEROctetString,a=e.DERNull,u=e.DERObjectIdentifier,c=e.DEREnumerated,h=e.DERUTF8String,l=e.DERNumericString,f=e.DERPrintableString,g=e.DERTeletexString,d=e.DERIA5String,p=e.DERUTCTime,v=e.DERGeneralizedTime,y=e.DERVisibleString,m=e.DERBMPString,_=e.DERSequence,S=e.DERSet,b=e.DERTaggedObject,w=e.ASN1Util.newObject;if(t instanceof e.ASN1Object)return t;var F=Object.keys(t);if(1!=F.length)throw new Error(\"key of param shall be only one.\");var E=F[0];if(-1==\":asn1:bool:int:bitstr:octstr:null:oid:enum:utf8str:numstr:prnstr:telstr:ia5str:utctime:gentime:visstr:bmpstr:seq:set:tag:\".indexOf(\":\"+E+\":\"))throw new Error(\"undefined key: \"+E);if(\"bool\"==E)return new n(t[E]);if(\"int\"==E)return new i(t[E]);if(\"bitstr\"==E)return new o(t[E]);if(\"octstr\"==E)return new s(t[E]);if(\"null\"==E)return new a(t[E]);if(\"oid\"==E)return new u(t[E]);if(\"enum\"==E)return new c(t[E]);if(\"utf8str\"==E)return new h(t[E]);if(\"numstr\"==E)return new l(t[E]);if(\"prnstr\"==E)return new f(t[E]);if(\"telstr\"==E)return new g(t[E]);if(\"ia5str\"==E)return new d(t[E]);if(\"utctime\"==E)return new p(t[E]);if(\"gentime\"==E)return new v(t[E]);if(\"visstr\"==E)return new y(t[E]);if(\"bmpstr\"==E)return new m(t[E]);if(\"asn1\"==E)return new r(t[E]);if(\"seq\"==E){for(var x=t[E],A=[],k=0;k<x.length;k++){var P=w(x[k]);A.push(P)}return new _({array:A})}if(\"set\"==E){for(x=t[E],A=[],k=0;k<x.length;k++){P=w(x[k]);A.push(P)}return new S({array:A})}if(\"tag\"==E){var C=t[E];if(\"[object Array]\"===Object.prototype.toString.call(C)&&3==C.length){var T=w(C[2]);return new b({tag:C[0],explicit:C[1],obj:T})}return new b(C)}},this.jsonToASN1HEX=function(t){return this.newObject(t).getEncodedHex()}},br.asn1.ASN1Util.oidHexToInt=function(t){for(var e=\"\",r=parseInt(t.substr(0,2),16),n=(e=Math.floor(r/40)+\".\"+r%40,\"\"),i=2;i<t.length;i+=2){var o=(\"00000000\"+parseInt(t.substr(i,2),16).toString(2)).slice(-8);if(n+=o.substr(1,7),\"0\"==o.substr(0,1))e=e+\".\"+new F(n,2).toString(10),n=\"\"}return e},br.asn1.ASN1Util.oidIntToHex=function(t){var e=function t(e){var r=e.toString(16);return 1==r.length&&(r=\"0\"+r),r},r=function t(r){var n=\"\",i=new F(r,10).toString(2),o=7-i.length%7;7==o&&(o=0);for(var s=\"\",a=0;a<o;a++)s+=\"0\";i=s+i;for(a=0;a<i.length-1;a+=7){var u=i.substr(a,7);a!=i.length-7&&(u=\"1\"+u),n+=e(parseInt(u,2))}return n};if(!t.match(/^[0-9.]+$/))throw\"malformed oid string: \"+t;var n=\"\",i=t.split(\".\"),o=40*parseInt(i[0])+parseInt(i[1]);n+=e(o),i.splice(0,2);for(var s=0;s<i.length;s++)n+=r(i[s]);return n},br.asn1.ASN1Object=function(t){this.params=null,this.getLengthHexFromValue=function(){if(void 0===this.hV||null==this.hV)throw new Error(\"this.hV is null or undefined\");if(this.hV.length%2==1)throw new Error(\"value hex must be even length: n=\"+\"\".length+\",v=\"+this.hV);var t=this.hV.length/2,e=t.toString(16);if(e.length%2==1&&(e=\"0\"+e),t<128)return e;var r=e.length/2;if(r>15)throw\"ASN.1 length too long to represent by 8x: n = \"+t.toString(16);return(128+r).toString(16)+e},this.getEncodedHex=function(){return(null==this.hTLV||this.isModified)&&(this.hV=this.getFreshValueHex(),this.hL=this.getLengthHexFromValue(),this.hTLV=this.hT+this.hL+this.hV,this.isModified=!1),this.hTLV},this.getValueHex=function(){return this.getEncodedHex(),this.hV},this.getFreshValueHex=function(){return\"\"},this.setByParam=function(t){this.params=t},null!=t&&null!=t.tlv&&(this.hTLV=t.tlv,this.isModified=!1)},br.asn1.DERAbstractString=function(t){br.asn1.DERAbstractString.superclass.constructor.call(this);this.getString=function(){return this.s},this.setString=function(t){this.hTLV=null,this.isModified=!0,this.s=t,this.hV=Dr(this.s).toLowerCase()},this.setStringHex=function(t){this.hTLV=null,this.isModified=!0,this.s=null,this.hV=t},this.getFreshValueHex=function(){return this.hV},void 0!==t&&(\"string\"==typeof t?this.setString(t):void 0!==t.str?this.setString(t.str):void 0!==t.hex&&this.setStringHex(t.hex))},o.lang.extend(br.asn1.DERAbstractString,br.asn1.ASN1Object),br.asn1.DERAbstractTime=function(t){br.asn1.DERAbstractTime.superclass.constructor.call(this);this.localDateToUTC=function(t){var e=t.getTime()+6e4*t.getTimezoneOffset();return new Date(e)},this.formatDate=function(t,e,r){var n=this.zeroPadding,i=this.localDateToUTC(t),o=String(i.getFullYear());\"utc\"==e&&(o=o.substr(2,2));var s=o+n(String(i.getMonth()+1),2)+n(String(i.getDate()),2)+n(String(i.getHours()),2)+n(String(i.getMinutes()),2)+n(String(i.getSeconds()),2);if(!0===r){var a=i.getMilliseconds();if(0!=a){var u=n(String(a),3);s=s+\".\"+(u=u.replace(/[0]+$/,\"\"))}}return s+\"Z\"},this.zeroPadding=function(t,e){return t.length>=e?t:new Array(e-t.length+1).join(\"0\")+t},this.getString=function(){return this.s},this.setString=function(t){this.hTLV=null,this.isModified=!0,this.s=t,this.hV=Pr(t)},this.setByDateValue=function(t,e,r,n,i,o){var s=new Date(Date.UTC(t,e-1,r,n,i,o,0));this.setByDate(s)},this.getFreshValueHex=function(){return this.hV}},o.lang.extend(br.asn1.DERAbstractTime,br.asn1.ASN1Object),br.asn1.DERAbstractStructured=function(t){br.asn1.DERAbstractString.superclass.constructor.call(this);this.setByASN1ObjectArray=function(t){this.hTLV=null,this.isModified=!0,this.asn1Array=t},this.appendASN1Object=function(t){this.hTLV=null,this.isModified=!0,this.asn1Array.push(t)},this.asn1Array=new Array,void 0!==t&&void 0!==t.array&&(this.asn1Array=t.array)},o.lang.extend(br.asn1.DERAbstractStructured,br.asn1.ASN1Object),br.asn1.DERBoolean=function(t){br.asn1.DERBoolean.superclass.constructor.call(this),this.hT=\"01\",this.hTLV=0==t?\"010100\":\"0101ff\"},o.lang.extend(br.asn1.DERBoolean,br.asn1.ASN1Object),br.asn1.DERInteger=function(t){br.asn1.DERInteger.superclass.constructor.call(this),this.hT=\"02\",this.setByBigInteger=function(t){this.hTLV=null,this.isModified=!0,this.hV=br.asn1.ASN1Util.bigIntToMinTwosComplementsHex(t)},this.setByInteger=function(t){var e=new F(String(t),10);this.setByBigInteger(e)},this.setValueHex=function(t){this.hV=t},this.getFreshValueHex=function(){return this.hV},void 0!==t&&(void 0!==t.bigint?this.setByBigInteger(t.bigint):void 0!==t.int?this.setByInteger(t.int):\"number\"==typeof t?this.setByInteger(t):void 0!==t.hex&&this.setValueHex(t.hex))},o.lang.extend(br.asn1.DERInteger,br.asn1.ASN1Object),br.asn1.DERBitString=function(t){if(void 0!==t&&void 0!==t.obj){var e=br.asn1.ASN1Util.newObject(t.obj);t.hex=\"00\"+e.getEncodedHex()}br.asn1.DERBitString.superclass.constructor.call(this),this.hT=\"03\",this.setHexValueIncludingUnusedBits=function(t){this.hTLV=null,this.isModified=!0,this.hV=t},this.setUnusedBitsAndHexValue=function(t,e){if(t<0||7<t)throw\"unused bits shall be from 0 to 7: u = \"+t;var r=\"0\"+t;this.hTLV=null,this.isModified=!0,this.hV=r+e},this.setByBinaryString=function(t){var e=8-(t=t.replace(/0+$/,\"\")).length%8;8==e&&(e=0);for(var r=0;r<=e;r++)t+=\"0\";var n=\"\";for(r=0;r<t.length-1;r+=8){var i=t.substr(r,8),o=parseInt(i,2).toString(16);1==o.length&&(o=\"0\"+o),n+=o}this.hTLV=null,this.isModified=!0,this.hV=\"0\"+e+n},this.setByBooleanArray=function(t){for(var e=\"\",r=0;r<t.length;r++)1==t[r]?e+=\"1\":e+=\"0\";this.setByBinaryString(e)},this.newFalseArray=function(t){for(var e=new Array(t),r=0;r<t;r++)e[r]=!1;return e},this.getFreshValueHex=function(){return this.hV},void 0!==t&&(\"string\"==typeof t&&t.toLowerCase().match(/^[0-9a-f]+$/)?this.setHexValueIncludingUnusedBits(t):void 0!==t.hex?this.setHexValueIncludingUnusedBits(t.hex):void 0!==t.bin?this.setByBinaryString(t.bin):void 0!==t.array&&this.setByBooleanArray(t.array))},o.lang.extend(br.asn1.DERBitString,br.asn1.ASN1Object),br.asn1.DEROctetString=function(t){if(void 0!==t&&void 0!==t.obj){var e=br.asn1.ASN1Util.newObject(t.obj);t.hex=e.getEncodedHex()}br.asn1.DEROctetString.superclass.constructor.call(this,t),this.hT=\"04\"},o.lang.extend(br.asn1.DEROctetString,br.asn1.DERAbstractString),br.asn1.DERNull=function(){br.asn1.DERNull.superclass.constructor.call(this),this.hT=\"05\",this.hTLV=\"0500\"},o.lang.extend(br.asn1.DERNull,br.asn1.ASN1Object),br.asn1.DERObjectIdentifier=function(t){br.asn1.DERObjectIdentifier.superclass.constructor.call(this),this.hT=\"06\",this.setValueHex=function(t){this.hTLV=null,this.isModified=!0,this.s=null,this.hV=t},this.setValueOidString=function(t){var e=function r(t){var e=function t(e){var r=e.toString(16);return 1==r.length&&(r=\"0\"+r),r},r=function t(r){var n=\"\",i=parseInt(r,10).toString(2),o=7-i.length%7;7==o&&(o=0);for(var s=\"\",a=0;a<o;a++)s+=\"0\";i=s+i;for(a=0;a<i.length-1;a+=7){var u=i.substr(a,7);a!=i.length-7&&(u=\"1\"+u),n+=e(parseInt(u,2))}return n};try{if(!t.match(/^[0-9.]+$/))return null;var n=\"\",i=t.split(\".\"),o=40*parseInt(i[0],10)+parseInt(i[1],10);n+=e(o),i.splice(0,2);for(var s=0;s<i.length;s++)n+=r(i[s]);return n}catch(t){return null}}(t);if(null==e)throw new Error(\"malformed oid string: \"+t);this.hTLV=null,this.isModified=!0,this.s=null,this.hV=e},this.setValueName=function(t){var e=br.asn1.x509.OID.name2oid(t);if(\"\"===e)throw new Error(\"DERObjectIdentifier oidName undefined: \"+t);this.setValueOidString(e)},this.setValueNameOrOid=function(t){t.match(/^[0-2].[0-9.]+$/)?this.setValueOidString(t):this.setValueName(t)},this.getFreshValueHex=function(){return this.hV},this.setByParam=function(t){\"string\"==typeof t?this.setValueNameOrOid(t):void 0!==t.oid?this.setValueNameOrOid(t.oid):void 0!==t.name?this.setValueNameOrOid(t.name):void 0!==t.hex&&this.setValueHex(t.hex)},void 0!==t&&this.setByParam(t)},o.lang.extend(br.asn1.DERObjectIdentifier,br.asn1.ASN1Object),br.asn1.DEREnumerated=function(t){br.asn1.DEREnumerated.superclass.constructor.call(this),this.hT=\"0a\",this.setByBigInteger=function(t){this.hTLV=null,this.isModified=!0,this.hV=br.asn1.ASN1Util.bigIntToMinTwosComplementsHex(t)},this.setByInteger=function(t){var e=new F(String(t),10);this.setByBigInteger(e)},this.setValueHex=function(t){this.hV=t},this.getFreshValueHex=function(){return this.hV},void 0!==t&&(void 0!==t.int?this.setByInteger(t.int):\"number\"==typeof t?this.setByInteger(t):void 0!==t.hex&&this.setValueHex(t.hex))},o.lang.extend(br.asn1.DEREnumerated,br.asn1.ASN1Object),br.asn1.DERUTF8String=function(t){br.asn1.DERUTF8String.superclass.constructor.call(this,t),this.hT=\"0c\"},o.lang.extend(br.asn1.DERUTF8String,br.asn1.DERAbstractString),br.asn1.DERNumericString=function(t){br.asn1.DERNumericString.superclass.constructor.call(this,t),this.hT=\"12\"},o.lang.extend(br.asn1.DERNumericString,br.asn1.DERAbstractString),br.asn1.DERPrintableString=function(t){br.asn1.DERPrintableString.superclass.constructor.call(this,t),this.hT=\"13\"},o.lang.extend(br.asn1.DERPrintableString,br.asn1.DERAbstractString),br.asn1.DERTeletexString=function(t){br.asn1.DERTeletexString.superclass.constructor.call(this,t),this.hT=\"14\"},o.lang.extend(br.asn1.DERTeletexString,br.asn1.DERAbstractString),br.asn1.DERIA5String=function(t){br.asn1.DERIA5String.superclass.constructor.call(this,t),this.hT=\"16\"},o.lang.extend(br.asn1.DERIA5String,br.asn1.DERAbstractString),br.asn1.DERVisibleString=function(t){br.asn1.DERIA5String.superclass.constructor.call(this,t),this.hT=\"1a\"},o.lang.extend(br.asn1.DERVisibleString,br.asn1.DERAbstractString),br.asn1.DERBMPString=function(t){br.asn1.DERBMPString.superclass.constructor.call(this,t),this.hT=\"1e\"},o.lang.extend(br.asn1.DERBMPString,br.asn1.DERAbstractString),br.asn1.DERUTCTime=function(t){br.asn1.DERUTCTime.superclass.constructor.call(this,t),this.hT=\"17\",this.setByDate=function(t){this.hTLV=null,this.isModified=!0,this.date=t,this.s=this.formatDate(this.date,\"utc\"),this.hV=Pr(this.s)},this.getFreshValueHex=function(){return void 0===this.date&&void 0===this.s&&(this.date=new Date,this.s=this.formatDate(this.date,\"utc\"),this.hV=Pr(this.s)),this.hV},void 0!==t&&(void 0!==t.str?this.setString(t.str):\"string\"==typeof t&&t.match(/^[0-9]{12}Z$/)?this.setString(t):void 0!==t.hex?this.setStringHex(t.hex):void 0!==t.date&&this.setByDate(t.date))},o.lang.extend(br.asn1.DERUTCTime,br.asn1.DERAbstractTime),br.asn1.DERGeneralizedTime=function(t){br.asn1.DERGeneralizedTime.superclass.constructor.call(this,t),this.hT=\"18\",this.withMillis=!1,this.setByDate=function(t){this.hTLV=null,this.isModified=!0,this.date=t,this.s=this.formatDate(this.date,\"gen\",this.withMillis),this.hV=Pr(this.s)},this.getFreshValueHex=function(){return void 0===this.date&&void 0===this.s&&(this.date=new Date,this.s=this.formatDate(this.date,\"gen\",this.withMillis),this.hV=Pr(this.s)),this.hV},void 0!==t&&(void 0!==t.str?this.setString(t.str):\"string\"==typeof t&&t.match(/^[0-9]{14}Z$/)?this.setString(t):void 0!==t.hex?this.setStringHex(t.hex):void 0!==t.date&&this.setByDate(t.date),!0===t.millis&&(this.withMillis=!0))},o.lang.extend(br.asn1.DERGeneralizedTime,br.asn1.DERAbstractTime),br.asn1.DERSequence=function(t){br.asn1.DERSequence.superclass.constructor.call(this,t),this.hT=\"30\",this.getFreshValueHex=function(){for(var t=\"\",e=0;e<this.asn1Array.length;e++){t+=this.asn1Array[e].getEncodedHex()}return this.hV=t,this.hV}},o.lang.extend(br.asn1.DERSequence,br.asn1.DERAbstractStructured),br.asn1.DERSet=function(t){br.asn1.DERSet.superclass.constructor.call(this,t),this.hT=\"31\",this.sortFlag=!0,this.getFreshValueHex=function(){for(var t=new Array,e=0;e<this.asn1Array.length;e++){var r=this.asn1Array[e];t.push(r.getEncodedHex())}return 1==this.sortFlag&&t.sort(),this.hV=t.join(\"\"),this.hV},void 0!==t&&void 0!==t.sortflag&&0==t.sortflag&&(this.sortFlag=!1)},o.lang.extend(br.asn1.DERSet,br.asn1.DERAbstractStructured),br.asn1.DERTaggedObject=function(t){br.asn1.DERTaggedObject.superclass.constructor.call(this);var e=br.asn1;this.hT=\"a0\",this.hV=\"\",this.isExplicit=!0,this.asn1Object=null,this.setASN1Object=function(t,e,r){this.hT=e,this.isExplicit=t,this.asn1Object=r,this.isExplicit?(this.hV=this.asn1Object.getEncodedHex(),this.hTLV=null,this.isModified=!0):(this.hV=null,this.hTLV=r.getEncodedHex(),this.hTLV=this.hTLV.replace(/^../,e),this.isModified=!1)},this.getFreshValueHex=function(){return this.hV},this.setByParam=function(t){null!=t.tag&&(this.hT=t.tag),null!=t.explicit&&(this.isExplicit=t.explicit),null!=t.tage&&(this.hT=t.tage,this.isExplicit=!0),null!=t.tagi&&(this.hT=t.tagi,this.isExplicit=!1),null!=t.obj&&(t.obj instanceof e.ASN1Object?(this.asn1Object=t.obj,this.setASN1Object(this.isExplicit,this.hT,this.asn1Object)):\"object\"==r(t.obj)&&(this.asn1Object=e.ASN1Util.newObject(t.obj),this.setASN1Object(this.isExplicit,this.hT,this.asn1Object)))},null!=t&&this.setByParam(t)},o.lang.extend(br.asn1.DERTaggedObject,br.asn1.ASN1Object);var br,wr,Fr,Er=new function(){};function xr(t){for(var e=new Array,r=0;r<t.length;r++)e[r]=t.charCodeAt(r);return e}function Ar(t){for(var e=\"\",r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return e}function kr(t){for(var e=\"\",r=0;r<t.length;r++){var n=t[r].toString(16);1==n.length&&(n=\"0\"+n),e+=n}return e}function Pr(t){return kr(xr(t))}function Cr(t){return t=(t=(t=t.replace(/\\=/g,\"\")).replace(/\\+/g,\"-\")).replace(/\\//g,\"_\")}function Tr(t){return t.length%4==2?t+=\"==\":t.length%4==3&&(t+=\"=\"),t=(t=t.replace(/-/g,\"+\")).replace(/_/g,\"/\")}function Rr(t){return t.length%2==1&&(t=\"0\"+t),Cr(S(t))}function Ir(t){return b(Tr(t))}function Dr(t){return qr(Gr(t))}function Lr(t){return decodeURIComponent(Jr(t))}function Nr(t){for(var e=\"\",r=0;r<t.length-1;r+=2)e+=String.fromCharCode(parseInt(t.substr(r,2),16));return e}function Ur(t){for(var e=\"\",r=0;r<t.length;r++)e+=(\"0\"+t.charCodeAt(r).toString(16)).slice(-2);return e}function Br(t){return S(t)}function Or(t){var e=Br(t).replace(/(.{64})/g,\"$1\\r\\n\");return e=e.replace(/\\r\\n$/,\"\")}function jr(t){return b(t.replace(/[^0-9A-Za-z\\/+=]*/g,\"\"))}function Mr(t,e){return\"-----BEGIN \"+e+\"-----\\r\\n\"+Or(t)+\"\\r\\n-----END \"+e+\"-----\\r\\n\"}function Hr(t,e){if(-1==t.indexOf(\"-----BEGIN \"))throw\"can't find PEM header: \"+e;return jr(t=void 0!==e?(t=t.replace(new RegExp(\"^[^]*-----BEGIN \"+e+\"-----\"),\"\")).replace(new RegExp(\"-----END \"+e+\"-----[^]*$\"),\"\"):(t=t.replace(/^[^]*-----BEGIN [^-]+-----/,\"\")).replace(/-----END [^-]+-----[^]*$/,\"\"))}function Vr(t){var e,r,n,i,o,s,a,u,c,h,l;if(l=t.match(/^(\\d{2}|\\d{4})(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(|\\.\\d+)Z$/))return u=l[1],e=parseInt(u),2===u.length&&(50<=e&&e<100?e=1900+e:0<=e&&e<50&&(e=2e3+e)),r=parseInt(l[2])-1,n=parseInt(l[3]),i=parseInt(l[4]),o=parseInt(l[5]),s=parseInt(l[6]),a=0,\"\"!==(c=l[7])&&(h=(c.substr(1)+\"00\").substr(0,3),a=parseInt(h)),Date.UTC(e,r,n,i,o,s,a);throw\"unsupported zulu format: \"+t}function Kr(t){return~~(Vr(t)/1e3)}function qr(t){return t.replace(/%/g,\"\")}function Jr(t){return t.replace(/(..)/g,\"%$1\")}function Wr(t){var e=\"malformed IPv6 address\";if(!t.match(/^[0-9A-Fa-f:]+$/))throw e;var r=(t=t.toLowerCase()).split(\":\").length-1;if(r<2)throw e;var n=\":\".repeat(7-r+2),i=(t=t.replace(\"::\",n)).split(\":\");if(8!=i.length)throw e;for(var o=0;o<8;o++)i[o]=(\"0000\"+i[o]).slice(-4);return i.join(\"\")}function zr(t){if(!t.match(/^[0-9A-Fa-f]{32}$/))throw\"malformed IPv6 address octet\";for(var e=(t=t.toLowerCase()).match(/.{1,4}/g),r=0;r<8;r++)e[r]=e[r].replace(/^0+/,\"\"),\"\"==e[r]&&(e[r]=\"0\");var n=(t=\":\"+e.join(\":\")+\":\").match(/:(0:){2,}/g);if(null===n)return t.slice(1,-1);var i=\"\";for(r=0;r<n.length;r++)n[r].length>i.length&&(i=n[r]);return(t=t.replace(i,\"::\")).slice(1,-1)}function Yr(t){var e=\"malformed hex value\";if(!t.match(/^([0-9A-Fa-f][0-9A-Fa-f]){1,}$/))throw e;if(8!=t.length)return 32==t.length?zr(t):t;try{return parseInt(t.substr(0,2),16)+\".\"+parseInt(t.substr(2,2),16)+\".\"+parseInt(t.substr(4,2),16)+\".\"+parseInt(t.substr(6,2),16)}catch(t){throw e}}function Gr(t){for(var e=encodeURIComponent(t),r=\"\",n=0;n<e.length;n++)\"%\"==e[n]?(r+=e.substr(n,3),n+=2):r=r+\"%\"+Pr(e[n]);return r}function Xr(t){return!(t.length%2!=0||!t.match(/^[0-9a-f]+$/)&&!t.match(/^[0-9A-F]+$/))}function $r(t){return t.length%2==1?\"0\"+t:t.substr(0,1)>\"7\"?\"00\"+t:t}Er.getLblen=function(t,e){if(\"8\"!=t.substr(e+2,1))return 1;var r=parseInt(t.substr(e+3,1));return 0==r?-1:0<r&&r<10?r+1:-2},Er.getL=function(t,e){var r=Er.getLblen(t,e);return r<1?\"\":t.substr(e+2,2*r)},Er.getVblen=function(t,e){var r;return\"\"==(r=Er.getL(t,e))?-1:(\"8\"===r.substr(0,1)?new F(r.substr(2),16):new F(r,16)).intValue()},Er.getVidx=function(t,e){var r=Er.getLblen(t,e);return r<0?r:e+2*(r+1)},Er.getV=function(t,e){var r=Er.getVidx(t,e),n=Er.getVblen(t,e);return t.substr(r,2*n)},Er.getTLV=function(t,e){return t.substr(e,2)+Er.getL(t,e)+Er.getV(t,e)},Er.getTLVblen=function(t,e){return 2+2*Er.getLblen(t,e)+2*Er.getVblen(t,e)},Er.getNextSiblingIdx=function(t,e){return Er.getVidx(t,e)+2*Er.getVblen(t,e)},Er.getChildIdx=function(t,e){var r,n,i,o=Er,s=[];r=o.getVidx(t,e),n=2*o.getVblen(t,e),\"03\"==t.substr(e,2)&&(r+=2,n-=2),i=0;for(var a=r;i<=n;){var u=o.getTLVblen(t,a);if((i+=u)<=n&&s.push(a),a+=u,i>=n)break}return s},Er.getNthChildIdx=function(t,e,r){return Er.getChildIdx(t,e)[r]},Er.getIdxbyList=function(t,e,r,n){var i,o,s=Er;return 0==r.length?void 0!==n&&t.substr(e,2)!==n?-1:e:(i=r.shift())>=(o=s.getChildIdx(t,e)).length?-1:s.getIdxbyList(t,o[i],r,n)},Er.getIdxbyListEx=function(t,e,r,n){var i,o,s=Er;if(0==r.length)return void 0!==n&&t.substr(e,2)!==n?-1:e;i=r.shift(),o=s.getChildIdx(t,e);for(var a=0,u=0;u<o.length;u++){var c=t.substr(o[u],2);if(\"number\"==typeof i&&!s.isContextTag(c)&&a==i||\"string\"==typeof i&&s.isContextTag(c,i))return s.getIdxbyListEx(t,o[u],r,n);s.isContextTag(c)||a++}return-1},Er.getTLVbyList=function(t,e,r,n){var i=Er,o=i.getIdxbyList(t,e,r,n);return-1==o||o>=t.length?null:i.getTLV(t,o)},Er.getTLVbyListEx=function(t,e,r,n){var i=Er,o=i.getIdxbyListEx(t,e,r,n);return-1==o?null:i.getTLV(t,o)},Er.getVbyList=function(t,e,r,n,i){var o,s,a=Er;return-1==(o=a.getIdxbyList(t,e,r,n))||o>=t.length?null:(s=a.getV(t,o),!0===i&&(s=s.substr(2)),s)},Er.getVbyListEx=function(t,e,r,n,i){var o,s,a=Er;return-1==(o=a.getIdxbyListEx(t,e,r,n))?null:(s=a.getV(t,o),\"03\"==t.substr(o,2)&&!1!==i&&(s=s.substr(2)),s)},Er.getInt=function(t,e,r){null==r&&(r=-1);try{var n=t.substr(e,2);if(\"02\"!=n&&\"03\"!=n)return r;var i=Er.getV(t,e);return\"02\"==n?parseInt(i,16):function o(t){try{var e=t.substr(0,2);if(\"00\"==e)return parseInt(t.substr(2),16);var r=parseInt(e,16),n=t.substr(2),i=parseInt(n,16).toString(2);return\"0\"==i&&(i=\"00000000\"),i=i.slice(0,0-r),parseInt(i,2)}catch(t){return-1}}(i)}catch(t){return r}},Er.getOID=function(t,e,r){null==r&&(r=null);try{return\"06\"!=t.substr(e,2)?r:function n(t){if(!Xr(t))return null;try{var e=[],r=t.substr(0,2),n=parseInt(r,16);e[0]=new String(Math.floor(n/40)),e[1]=new String(n%40);for(var i=t.substr(2),o=[],s=0;s<i.length/2;s++)o.push(parseInt(i.substr(2*s,2),16));var a=[],u=\"\";for(s=0;s<o.length;s++)128&o[s]?u+=Qr((127&o[s]).toString(2),7):(u+=Qr((127&o[s]).toString(2),7),a.push(new String(parseInt(u,2))),u=\"\");var c=e.join(\".\");return a.length>0&&(c=c+\".\"+a.join(\".\")),c}catch(t){return null}}(Er.getV(t,e))}catch(t){return r}},Er.getOIDName=function(t,e,r){null==r&&(r=null);try{var n=Er.getOID(t,e,r);if(n==r)return r;var i=br.asn1.x509.OID.oid2name(n);return\"\"==i?n:i}catch(t){return r}},Er.getString=function(t,e,r){null==r&&(r=null);try{return Nr(Er.getV(t,e))}catch(t){return r}},Er.hextooidstr=function(t){var e=function t(e,r){return e.length>=r?e:new Array(r-e.length+1).join(\"0\")+e},r=[],n=t.substr(0,2),i=parseInt(n,16);r[0]=new String(Math.floor(i/40)),r[1]=new String(i%40);for(var o=t.substr(2),s=[],a=0;a<o.length/2;a++)s.push(parseInt(o.substr(2*a,2),16));var u=[],c=\"\";for(a=0;a<s.length;a++)128&s[a]?c+=e((127&s[a]).toString(2),7):(c+=e((127&s[a]).toString(2),7),u.push(new String(parseInt(c,2))),c=\"\");var h=r.join(\".\");return u.length>0&&(h=h+\".\"+u.join(\".\")),h},Er.dump=function(t,e,r,n){var i=Er,o=i.getV,s=i.dump,a=i.getChildIdx,u=t;t instanceof br.asn1.ASN1Object&&(u=t.getEncodedHex());var c=function t(e,r){return e.length<=2*r?e:e.substr(0,r)+\"..(total \"+e.length/2+\"bytes)..\"+e.substr(e.length-r,r)};void 0===e&&(e={ommit_long_octet:32}),void 0===r&&(r=0),void 0===n&&(n=\"\");var h,l=e.ommit_long_octet;if(\"01\"==(h=u.substr(r,2)))return\"00\"==(f=o(u,r))?n+\"BOOLEAN FALSE\\n\":n+\"BOOLEAN TRUE\\n\";if(\"02\"==h)return n+\"INTEGER \"+c(f=o(u,r),l)+\"\\n\";if(\"03\"==h){var f=o(u,r);if(i.isASN1HEX(f.substr(2))){var g=n+\"BITSTRING, encapsulates\\n\";return g+=s(f.substr(2),e,0,n+\"  \")}return n+\"BITSTRING \"+c(f,l)+\"\\n\"}if(\"04\"==h){f=o(u,r);if(i.isASN1HEX(f)){g=n+\"OCTETSTRING, encapsulates\\n\";return g+=s(f,e,0,n+\"  \")}return n+\"OCTETSTRING \"+c(f,l)+\"\\n\"}if(\"05\"==h)return n+\"NULL\\n\";if(\"06\"==h){var d=o(u,r),p=br.asn1.ASN1Util.oidHexToInt(d),v=br.asn1.x509.OID.oid2name(p),y=p.replace(/\\./g,\" \");return\"\"!=v?n+\"ObjectIdentifier \"+v+\" (\"+y+\")\\n\":n+\"ObjectIdentifier (\"+y+\")\\n\"}if(\"0a\"==h)return n+\"ENUMERATED \"+parseInt(o(u,r))+\"\\n\";if(\"0c\"==h)return n+\"UTF8String '\"+Lr(o(u,r))+\"'\\n\";if(\"13\"==h)return n+\"PrintableString '\"+Lr(o(u,r))+\"'\\n\";if(\"14\"==h)return n+\"TeletexString '\"+Lr(o(u,r))+\"'\\n\";if(\"16\"==h)return n+\"IA5String '\"+Lr(o(u,r))+\"'\\n\";if(\"17\"==h)return n+\"UTCTime \"+Lr(o(u,r))+\"\\n\";if(\"18\"==h)return n+\"GeneralizedTime \"+Lr(o(u,r))+\"\\n\";if(\"1a\"==h)return n+\"VisualString '\"+Lr(o(u,r))+\"'\\n\";if(\"1e\"==h)return n+\"BMPString '\"+Lr(o(u,r))+\"'\\n\";if(\"30\"==h){if(\"3000\"==u.substr(r,4))return n+\"SEQUENCE {}\\n\";g=n+\"SEQUENCE\\n\";var m=e;if((2==(b=a(u,r)).length||3==b.length)&&\"06\"==u.substr(b[0],2)&&\"04\"==u.substr(b[b.length-1],2)){v=i.oidname(o(u,b[0]));var _=JSON.parse(JSON.stringify(e));_.x509ExtName=v,m=_}for(var S=0;S<b.length;S++)g+=s(u,m,b[S],n+\"  \");return g}if(\"31\"==h){g=n+\"SET\\n\";var b=a(u,r);for(S=0;S<b.length;S++)g+=s(u,e,b[S],n+\"  \");return g}if(0!=(128&(h=parseInt(h,16)))){var w=31&h;if(0!=(32&h)){for(g=n+\"[\"+w+\"]\\n\",b=a(u,r),S=0;S<b.length;S++)g+=s(u,e,b[S],n+\"  \");return g}f=o(u,r);if(Er.isASN1HEX(f)){var g=n+\"[\"+w+\"]\\n\";return g+=s(f,e,0,n+\"  \")}return(\"68747470\"==f.substr(0,8)||\"subjectAltName\"===e.x509ExtName&&2==w)&&(f=Lr(f)),g=n+\"[\"+w+\"] \"+f+\"\\n\"}return n+\"UNKNOWN(\"+h+\") \"+o(u,r)+\"\\n\"},Er.isContextTag=function(t,e){var r,n;t=t.toLowerCase();try{r=parseInt(t,16)}catch(t){return-1}if(void 0===e)return 128==(192&r);try{return null!=e.match(/^\\[[0-9]+\\]$/)&&(!((n=parseInt(e.substr(1,e.length-1),10))>31)&&(128==(192&r)&&(31&r)==n))}catch(t){return!1}},Er.isASN1HEX=function(t){var e=Er;if(t.length%2==1)return!1;var r=e.getVblen(t,0),n=t.substr(0,2),i=e.getL(t,0);return t.length-n.length-i.length==2*r},Er.checkStrictDER=function(t,e,r,n,i){var o=Er;if(void 0===r){if(\"string\"!=typeof t)throw new Error(\"not hex string\");if(t=t.toLowerCase(),!br.lang.String.isHex(t))throw new Error(\"not hex string\");r=t.length,i=(n=t.length/2)<128?1:Math.ceil(n.toString(16))+1}if(o.getL(t,e).length>2*i)throw new Error(\"L of TLV too long: idx=\"+e);var s=o.getVblen(t,e);if(s>n)throw new Error(\"value of L too long than hex: idx=\"+e);var a=o.getTLV(t,e),u=a.length-2-o.getL(t,e).length;if(u!==2*s)throw new Error(\"V string length and L's value not the same:\"+u+\"/\"+2*s);if(0===e&&t.length!=a.length)throw new Error(\"total length and TLV length unmatch:\"+t.length+\"!=\"+a.length);var c=t.substr(e,2);if(\"02\"===c){var h=o.getVidx(t,e);if(\"00\"==t.substr(h,2)&&t.charCodeAt(h+2)<56)throw new Error(\"not least zeros for DER INTEGER\")}if(32&parseInt(c,16)){for(var l=o.getVblen(t,e),f=0,g=o.getChildIdx(t,e),d=0;d<g.length;d++){f+=o.getTLV(t,g[d]).length,o.checkStrictDER(t,g[d],r,n,i)}if(2*l!=f)throw new Error(\"sum of children's TLV length and L unmatch: \"+2*l+\"!=\"+f)}},Er.oidname=function(t){var e=br.asn1;br.lang.String.isHex(t)&&(t=e.ASN1Util.oidHexToInt(t));var r=e.x509.OID.oid2name(t);return\"\"===r&&(r=t),r},void 0!==br&&br||(e.KJUR=br={}),void 0!==br.lang&&br.lang||(br.lang={}),br.lang.String=function(){},\"function\"==typeof t?(e.utf8tob64u=wr=function e(r){return Cr(t.from(r,\"utf8\").toString(\"base64\"))},e.b64utoutf8=Fr=function e(r){return t.from(Tr(r),\"base64\").toString(\"utf8\")}):(e.utf8tob64u=wr=function t(e){return Rr(qr(Gr(e)))},e.b64utoutf8=Fr=function t(e){return decodeURIComponent(Jr(Ir(e)))}),br.lang.String.isInteger=function(t){return!!t.match(/^[0-9]+$/)||!!t.match(/^-[0-9]+$/)},br.lang.String.isHex=function(t){return Xr(t)},br.lang.String.isBase64=function(t){return!(!(t=t.replace(/\\s+/g,\"\")).match(/^[0-9A-Za-z+\\/]+={0,3}$/)||t.length%4!=0)},br.lang.String.isBase64URL=function(t){return!t.match(/[+/=]/)&&(t=Tr(t),br.lang.String.isBase64(t))},br.lang.String.isIntegerArray=function(t){return!!(t=t.replace(/\\s+/g,\"\")).match(/^\\[[0-9,]+\\]$/)},br.lang.String.isPrintable=function(t){return null!==t.match(/^[0-9A-Za-z '()+,-./:=?]*$/)},br.lang.String.isIA5=function(t){return null!==t.match(/^[\\x20-\\x21\\x23-\\x7f]*$/)},br.lang.String.isMail=function(t){return null!==t.match(/^[A-Za-z0-9]{1}[A-Za-z0-9_.-]*@{1}[A-Za-z0-9_.-]{1,}\\.[A-Za-z0-9]{1,}$/)};var Qr=function t(e,r,n){return null==n&&(n=\"0\"),e.length>=r?e:new Array(r-e.length+1).join(n)+e};void 0!==br&&br||(e.KJUR=br={}),void 0!==br.crypto&&br.crypto||(br.crypto={}),br.crypto.Util=new function(){this.DIGESTINFOHEAD={sha1:\"3021300906052b0e03021a05000414\",sha224:\"302d300d06096086480165030402040500041c\",sha256:\"3031300d060960864801650304020105000420\",sha384:\"3041300d060960864801650304020205000430\",sha512:\"3051300d060960864801650304020305000440\",md2:\"3020300c06082a864886f70d020205000410\",md5:\"3020300c06082a864886f70d020505000410\",ripemd160:\"3021300906052b2403020105000414\"},this.DEFAULTPROVIDER={md5:\"cryptojs\",sha1:\"cryptojs\",sha224:\"cryptojs\",sha256:\"cryptojs\",sha384:\"cryptojs\",sha512:\"cryptojs\",ripemd160:\"cryptojs\",hmacmd5:\"cryptojs\",hmacsha1:\"cryptojs\",hmacsha224:\"cryptojs\",hmacsha256:\"cryptojs\",hmacsha384:\"cryptojs\",hmacsha512:\"cryptojs\",hmacripemd160:\"cryptojs\",MD5withRSA:\"cryptojs/jsrsa\",SHA1withRSA:\"cryptojs/jsrsa\",SHA224withRSA:\"cryptojs/jsrsa\",SHA256withRSA:\"cryptojs/jsrsa\",SHA384withRSA:\"cryptojs/jsrsa\",SHA512withRSA:\"cryptojs/jsrsa\",RIPEMD160withRSA:\"cryptojs/jsrsa\",MD5withECDSA:\"cryptojs/jsrsa\",SHA1withECDSA:\"cryptojs/jsrsa\",SHA224withECDSA:\"cryptojs/jsrsa\",SHA256withECDSA:\"cryptojs/jsrsa\",SHA384withECDSA:\"cryptojs/jsrsa\",SHA512withECDSA:\"cryptojs/jsrsa\",RIPEMD160withECDSA:\"cryptojs/jsrsa\",SHA1withDSA:\"cryptojs/jsrsa\",SHA224withDSA:\"cryptojs/jsrsa\",SHA256withDSA:\"cryptojs/jsrsa\",MD5withRSAandMGF1:\"cryptojs/jsrsa\",SHAwithRSAandMGF1:\"cryptojs/jsrsa\",SHA1withRSAandMGF1:\"cryptojs/jsrsa\",SHA224withRSAandMGF1:\"cryptojs/jsrsa\",SHA256withRSAandMGF1:\"cryptojs/jsrsa\",SHA384withRSAandMGF1:\"cryptojs/jsrsa\",SHA512withRSAandMGF1:\"cryptojs/jsrsa\",RIPEMD160withRSAandMGF1:\"cryptojs/jsrsa\"},this.CRYPTOJSMESSAGEDIGESTNAME={md5:y.algo.MD5,sha1:y.algo.SHA1,sha224:y.algo.SHA224,sha256:y.algo.SHA256,sha384:y.algo.SHA384,sha512:y.algo.SHA512,ripemd160:y.algo.RIPEMD160},this.getDigestInfoHex=function(t,e){if(void 0===this.DIGESTINFOHEAD[e])throw\"alg not supported in Util.DIGESTINFOHEAD: \"+e;return this.DIGESTINFOHEAD[e]+t},this.getPaddedDigestInfoHex=function(t,e,r){var n=this.getDigestInfoHex(t,e),i=r/4;if(n.length+22>i)throw\"key is too short for SigAlg: keylen=\"+r+\",\"+e;for(var o=\"0001\",s=\"00\"+n,a=\"\",u=i-o.length-s.length,c=0;c<u;c+=2)a+=\"ff\";return o+a+s},this.hashString=function(t,e){return new br.crypto.MessageDigest({alg:e}).digestString(t)},this.hashHex=function(t,e){return new br.crypto.MessageDigest({alg:e}).digestHex(t)},this.sha1=function(t){return this.hashString(t,\"sha1\")},this.sha256=function(t){return this.hashString(t,\"sha256\")},this.sha256Hex=function(t){return this.hashHex(t,\"sha256\")},this.sha512=function(t){return this.hashString(t,\"sha512\")},this.sha512Hex=function(t){return this.hashHex(t,\"sha512\")},this.isKey=function(t){return t instanceof He||t instanceof br.crypto.DSA||t instanceof br.crypto.ECDSA}},br.crypto.Util.md5=function(t){return new br.crypto.MessageDigest({alg:\"md5\",prov:\"cryptojs\"}).digestString(t)},br.crypto.Util.ripemd160=function(t){return new br.crypto.MessageDigest({alg:\"ripemd160\",prov:\"cryptojs\"}).digestString(t)},br.crypto.Util.SECURERANDOMGEN=new Oe,br.crypto.Util.getRandomHexOfNbytes=function(t){var e=new Array(t);return br.crypto.Util.SECURERANDOMGEN.nextBytes(e),kr(e)},br.crypto.Util.getRandomBigIntegerOfNbytes=function(t){return new F(br.crypto.Util.getRandomHexOfNbytes(t),16)},br.crypto.Util.getRandomHexOfNbits=function(t){var e=t%8,r=new Array((t-e)/8+1);return br.crypto.Util.SECURERANDOMGEN.nextBytes(r),r[0]=(255<<e&255^255)&r[0],kr(r)},br.crypto.Util.getRandomBigIntegerOfNbits=function(t){return new F(br.crypto.Util.getRandomHexOfNbits(t),16)},br.crypto.Util.getRandomBigIntegerZeroToMax=function(t){for(var e=t.bitLength();;){var r=br.crypto.Util.getRandomBigIntegerOfNbits(e);if(-1!=t.compareTo(r))return r}},br.crypto.Util.getRandomBigIntegerMinToMax=function(t,e){var r=t.compareTo(e);if(1==r)throw\"biMin is greater than biMax\";if(0==r)return t;var n=e.subtract(t);return br.crypto.Util.getRandomBigIntegerZeroToMax(n).add(t)},br.crypto.MessageDigest=function(t){this.setAlgAndProvider=function(t,e){if(null!==(t=br.crypto.MessageDigest.getCanonicalAlgName(t))&&void 0===e&&(e=br.crypto.Util.DEFAULTPROVIDER[t]),-1!=\":md5:sha1:sha224:sha256:sha384:sha512:ripemd160:\".indexOf(t)&&\"cryptojs\"==e){try{this.md=br.crypto.Util.CRYPTOJSMESSAGEDIGESTNAME[t].create()}catch(e){throw\"setAlgAndProvider hash alg set fail alg=\"+t+\"/\"+e}this.updateString=function(t){this.md.update(t)},this.updateHex=function(t){var e=y.enc.Hex.parse(t);this.md.update(e)},this.digest=function(){return this.md.finalize().toString(y.enc.Hex)},this.digestString=function(t){return this.updateString(t),this.digest()},this.digestHex=function(t){return this.updateHex(t),this.digest()}}if(-1!=\":sha256:\".indexOf(t)&&\"sjcl\"==e){try{this.md=new sjcl.hash.sha256}catch(e){throw\"setAlgAndProvider hash alg set fail alg=\"+t+\"/\"+e}this.updateString=function(t){this.md.update(t)},this.updateHex=function(t){var e=sjcl.codec.hex.toBits(t);this.md.update(e)},this.digest=function(){var t=this.md.finalize();return sjcl.codec.hex.fromBits(t)},this.digestString=function(t){return this.updateString(t),this.digest()},this.digestHex=function(t){return this.updateHex(t),this.digest()}}},this.updateString=function(t){throw\"updateString(str) not supported for this alg/prov: \"+this.algName+\"/\"+this.provName},this.updateHex=function(t){throw\"updateHex(hex) not supported for this alg/prov: \"+this.algName+\"/\"+this.provName},this.digest=function(){throw\"digest() not supported for this alg/prov: \"+this.algName+\"/\"+this.provName},this.digestString=function(t){throw\"digestString(str) not supported for this alg/prov: \"+this.algName+\"/\"+this.provName},this.digestHex=function(t){throw\"digestHex(hex) not supported for this alg/prov: \"+this.algName+\"/\"+this.provName},void 0!==t&&void 0!==t.alg&&(this.algName=t.alg,void 0===t.prov&&(this.provName=br.crypto.Util.DEFAULTPROVIDER[this.algName]),this.setAlgAndProvider(this.algName,this.provName))},br.crypto.MessageDigest.getCanonicalAlgName=function(t){return\"string\"==typeof t&&(t=(t=t.toLowerCase()).replace(/-/,\"\")),t},br.crypto.MessageDigest.getHashLength=function(t){var e=br.crypto.MessageDigest,r=e.getCanonicalAlgName(t);if(void 0===e.HASHLENGTH[r])throw\"not supported algorithm: \"+t;return e.HASHLENGTH[r]},br.crypto.MessageDigest.HASHLENGTH={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,ripemd160:20},br.crypto.Mac=function(t){this.setAlgAndProvider=function(t,e){if(null==(t=t.toLowerCase())&&(t=\"hmacsha1\"),\"hmac\"!=(t=t.toLowerCase()).substr(0,4))throw\"setAlgAndProvider unsupported HMAC alg: \"+t;void 0===e&&(e=br.crypto.Util.DEFAULTPROVIDER[t]),this.algProv=t+\"/\"+e;var r=t.substr(4);if(-1!=\":md5:sha1:sha224:sha256:sha384:sha512:ripemd160:\".indexOf(r)&&\"cryptojs\"==e){try{var n=br.crypto.Util.CRYPTOJSMESSAGEDIGESTNAME[r];this.mac=y.algo.HMAC.create(n,this.pass)}catch(t){throw\"setAlgAndProvider hash alg set fail hashAlg=\"+r+\"/\"+t}this.updateString=function(t){this.mac.update(t)},this.updateHex=function(t){var e=y.enc.Hex.parse(t);this.mac.update(e)},this.doFinal=function(){return this.mac.finalize().toString(y.enc.Hex)},this.doFinalString=function(t){return this.updateString(t),this.doFinal()},this.doFinalHex=function(t){return this.updateHex(t),this.doFinal()}}},this.updateString=function(t){throw\"updateString(str) not supported for this alg/prov: \"+this.algProv},this.updateHex=function(t){throw\"updateHex(hex) not supported for this alg/prov: \"+this.algProv},this.doFinal=function(){throw\"digest() not supported for this alg/prov: \"+this.algProv},this.doFinalString=function(t){throw\"digestString(str) not supported for this alg/prov: \"+this.algProv},this.doFinalHex=function(t){throw\"digestHex(hex) not supported for this alg/prov: \"+this.algProv},this.setPassword=function(t){if(\"string\"==typeof t){var e=t;return t.length%2!=1&&t.match(/^[0-9A-Fa-f]+$/)||(e=Ur(t)),void(this.pass=y.enc.Hex.parse(e))}if(\"object\"!=(void 0===t?\"undefined\":r(t)))throw\"KJUR.crypto.Mac unsupported password type: \"+t;e=null;if(void 0!==t.hex){if(t.hex.length%2!=0||!t.hex.match(/^[0-9A-Fa-f]+$/))throw\"Mac: wrong hex password: \"+t.hex;e=t.hex}if(void 0!==t.utf8&&(e=Dr(t.utf8)),void 0!==t.rstr&&(e=Ur(t.rstr)),void 0!==t.b64&&(e=b(t.b64)),void 0!==t.b64u&&(e=Ir(t.b64u)),null==e)throw\"KJUR.crypto.Mac unsupported password type: \"+t;this.pass=y.enc.Hex.parse(e)},void 0!==t&&(void 0!==t.pass&&this.setPassword(t.pass),void 0!==t.alg&&(this.algName=t.alg,void 0===t.prov&&(this.provName=br.crypto.Util.DEFAULTPROVIDER[this.algName]),this.setAlgAndProvider(this.algName,this.provName)))},br.crypto.Signature=function(t){var e=null;if(this._setAlgNames=function(){var t=this.algName.match(/^(.+)with(.+)$/);t&&(this.mdAlgName=t[1].toLowerCase(),this.pubkeyAlgName=t[2].toLowerCase(),\"rsaandmgf1\"==this.pubkeyAlgName&&\"sha\"==this.mdAlgName&&(this.mdAlgName=\"sha1\"))},this._zeroPaddingOfSignature=function(t,e){for(var r=\"\",n=e/4-t.length,i=0;i<n;i++)r+=\"0\";return r+t},this.setAlgAndProvider=function(t,e){if(this._setAlgNames(),\"cryptojs/jsrsa\"!=e)throw new Error(\"provider not supported: \"+e);if(-1!=\":md5:sha1:sha224:sha256:sha384:sha512:ripemd160:\".indexOf(this.mdAlgName)){try{this.md=new br.crypto.MessageDigest({alg:this.mdAlgName})}catch(t){throw new Error(\"setAlgAndProvider hash alg set fail alg=\"+this.mdAlgName+\"/\"+t)}this.init=function(t,e){var r=null;try{r=void 0===e?Zr.getKey(t):Zr.getKey(t,e)}catch(t){throw\"init failed:\"+t}if(!0===r.isPrivate)this.prvKey=r,this.state=\"SIGN\";else{if(!0!==r.isPublic)throw\"init failed.:\"+r;this.pubKey=r,this.state=\"VERIFY\"}},this.updateString=function(t){this.md.updateString(t)},this.updateHex=function(t){this.md.updateHex(t)},this.sign=function(){if(this.sHashHex=this.md.digest(),void 0===this.prvKey&&void 0!==this.ecprvhex&&void 0!==this.eccurvename&&void 0!==br.crypto.ECDSA&&(this.prvKey=new br.crypto.ECDSA({curve:this.eccurvename,prv:this.ecprvhex})),this.prvKey instanceof He&&\"rsaandmgf1\"===this.pubkeyAlgName)this.hSign=this.prvKey.signWithMessageHashPSS(this.sHashHex,this.mdAlgName,this.pssSaltLen);else if(this.prvKey instanceof He&&\"rsa\"===this.pubkeyAlgName)this.hSign=this.prvKey.signWithMessageHash(this.sHashHex,this.mdAlgName);else if(this.prvKey instanceof br.crypto.ECDSA)this.hSign=this.prvKey.signWithMessageHash(this.sHashHex);else{if(!(this.prvKey instanceof br.crypto.DSA))throw\"Signature: unsupported private key alg: \"+this.pubkeyAlgName;this.hSign=this.prvKey.signWithMessageHash(this.sHashHex)}return this.hSign},this.signString=function(t){return this.updateString(t),this.sign()},this.signHex=function(t){return this.updateHex(t),this.sign()},this.verify=function(t){if(this.sHashHex=this.md.digest(),void 0===this.pubKey&&void 0!==this.ecpubhex&&void 0!==this.eccurvename&&void 0!==br.crypto.ECDSA&&(this.pubKey=new br.crypto.ECDSA({curve:this.eccurvename,pub:this.ecpubhex})),this.pubKey instanceof He&&\"rsaandmgf1\"===this.pubkeyAlgName)return this.pubKey.verifyWithMessageHashPSS(this.sHashHex,t,this.mdAlgName,this.pssSaltLen);if(this.pubKey instanceof He&&\"rsa\"===this.pubkeyAlgName)return this.pubKey.verifyWithMessageHash(this.sHashHex,t);if(void 0!==br.crypto.ECDSA&&this.pubKey instanceof br.crypto.ECDSA)return this.pubKey.verifyWithMessageHash(this.sHashHex,t);if(void 0!==br.crypto.DSA&&this.pubKey instanceof br.crypto.DSA)return this.pubKey.verifyWithMessageHash(this.sHashHex,t);throw\"Signature: unsupported public key alg: \"+this.pubkeyAlgName}}},this.init=function(t,e){throw\"init(key, pass) not supported for this alg:prov=\"+this.algProvName},this.updateString=function(t){throw\"updateString(str) not supported for this alg:prov=\"+this.algProvName},this.updateHex=function(t){throw\"updateHex(hex) not supported for this alg:prov=\"+this.algProvName},this.sign=function(){throw\"sign() not supported for this alg:prov=\"+this.algProvName},this.signString=function(t){throw\"digestString(str) not supported for this alg:prov=\"+this.algProvName},this.signHex=function(t){throw\"digestHex(hex) not supported for this alg:prov=\"+this.algProvName},this.verify=function(t){throw\"verify(hSigVal) not supported for this alg:prov=\"+this.algProvName},this.initParams=t,void 0!==t&&(void 0!==t.alg&&(this.algName=t.alg,void 0===t.prov?this.provName=br.crypto.Util.DEFAULTPROVIDER[this.algName]:this.provName=t.prov,this.algProvName=this.algName+\":\"+this.provName,this.setAlgAndProvider(this.algName,this.provName),this._setAlgNames()),void 0!==t.psssaltlen&&(this.pssSaltLen=t.psssaltlen),void 0!==t.prvkeypem)){if(void 0!==t.prvkeypas)throw\"both prvkeypem and prvkeypas parameters not supported\";try{e=Zr.getKey(t.prvkeypem);this.init(e)}catch(t){throw\"fatal error to load pem private key: \"+t}}},br.crypto.Cipher=function(t){},br.crypto.Cipher.encrypt=function(t,e,r){if(e instanceof He&&e.isPublic){var n=br.crypto.Cipher.getAlgByKeyAndName(e,r);if(\"RSA\"===n)return e.encrypt(t);if(\"RSAOAEP\"===n)return e.encryptOAEP(t,\"sha1\");var i=n.match(/^RSAOAEP(\\d+)$/);if(null!==i)return e.encryptOAEP(t,\"sha\"+i[1]);throw\"Cipher.encrypt: unsupported algorithm for RSAKey: \"+r}throw\"Cipher.encrypt: unsupported key or algorithm\"},br.crypto.Cipher.decrypt=function(t,e,r){if(e instanceof He&&e.isPrivate){var n=br.crypto.Cipher.getAlgByKeyAndName(e,r);if(\"RSA\"===n)return e.decrypt(t);if(\"RSAOAEP\"===n)return e.decryptOAEP(t,\"sha1\");var i=n.match(/^RSAOAEP(\\d+)$/);if(null!==i)return e.decryptOAEP(t,\"sha\"+i[1]);throw\"Cipher.decrypt: unsupported algorithm for RSAKey: \"+r}throw\"Cipher.decrypt: unsupported key or algorithm\"},br.crypto.Cipher.getAlgByKeyAndName=function(t,e){if(t instanceof He){if(-1!=\":RSA:RSAOAEP:RSAOAEP224:RSAOAEP256:RSAOAEP384:RSAOAEP512:\".indexOf(e))return e;if(null==e)return\"RSA\";throw\"getAlgByKeyAndName: not supported algorithm name for RSAKey: \"+e}throw\"getAlgByKeyAndName: not supported algorithm name: \"+e},br.crypto.OID=new function(){this.oidhex2name={\"2a864886f70d010101\":\"rsaEncryption\",\"2a8648ce3d0201\":\"ecPublicKey\",\"2a8648ce380401\":\"dsa\",\"2a8648ce3d030107\":\"secp256r1\",\"2b8104001f\":\"secp192k1\",\"2b81040021\":\"secp224r1\",\"2b8104000a\":\"secp256k1\",\"2b81040023\":\"secp521r1\",\"2b81040022\":\"secp384r1\",\"2a8648ce380403\":\"SHA1withDSA\",\"608648016503040301\":\"SHA224withDSA\",\"608648016503040302\":\"SHA256withDSA\"}},void 0!==br&&br||(e.KJUR=br={}),void 0!==br.crypto&&br.crypto||(br.crypto={}),br.crypto.ECDSA=function(t){var e=Error,n=F,i=Ke,o=br.crypto.ECDSA,s=br.crypto.ECParameterDB,a=o.getName,u=Er,c=u.getVbyListEx,h=u.isASN1HEX,l=new Oe;this.type=\"EC\",this.isPrivate=!1,this.isPublic=!1,this.getBigRandom=function(t){return new n(t.bitLength(),l).mod(t.subtract(n.ONE)).add(n.ONE)},this.setNamedCurve=function(t){this.ecparams=s.getByName(t),this.prvKeyHex=null,this.pubKeyHex=null,this.curveName=t},this.setPrivateKeyHex=function(t){this.isPrivate=!0,this.prvKeyHex=t},this.setPublicKeyHex=function(t){this.isPublic=!0,this.pubKeyHex=t},this.getPublicKeyXYHex=function(){var t=this.pubKeyHex;if(\"04\"!==t.substr(0,2))throw\"this method supports uncompressed format(04) only\";var e=this.ecparams.keylen/4;if(t.length!==2+2*e)throw\"malformed public key hex length\";var r={};return r.x=t.substr(2,e),r.y=t.substr(2+e),r},this.getShortNISTPCurveName=function(){var t=this.curveName;return\"secp256r1\"===t||\"NIST P-256\"===t||\"P-256\"===t||\"prime256v1\"===t?\"P-256\":\"secp384r1\"===t||\"NIST P-384\"===t||\"P-384\"===t?\"P-384\":null},this.generateKeyPairHex=function(){var t=this.ecparams.n,e=this.getBigRandom(t),r=this.ecparams.G.multiply(e),n=r.getX().toBigInteger(),i=r.getY().toBigInteger(),o=this.ecparams.keylen/4,s=(\"0000000000\"+e.toString(16)).slice(-o),a=\"04\"+(\"0000000000\"+n.toString(16)).slice(-o)+(\"0000000000\"+i.toString(16)).slice(-o);return this.setPrivateKeyHex(s),this.setPublicKeyHex(a),{ecprvhex:s,ecpubhex:a}},this.signWithMessageHash=function(t){return this.signHex(t,this.prvKeyHex)},this.signHex=function(t,e){var r=new n(e,16),i=this.ecparams.n,s=new n(t.substring(0,this.ecparams.keylen/4),16);do{var a=this.getBigRandom(i),u=this.ecparams.G.multiply(a).getX().toBigInteger().mod(i)}while(u.compareTo(n.ZERO)<=0);var c=a.modInverse(i).multiply(s.add(r.multiply(u))).mod(i);return o.biRSSigToASN1Sig(u,c)},this.sign=function(t,e){var r=e,i=this.ecparams.n,o=n.fromByteArrayUnsigned(t);do{var s=this.getBigRandom(i),a=this.ecparams.G.multiply(s).getX().toBigInteger().mod(i)}while(a.compareTo(F.ZERO)<=0);var u=s.modInverse(i).multiply(o.add(r.multiply(a))).mod(i);return this.serializeSig(a,u)},this.verifyWithMessageHash=function(t,e){return this.verifyHex(t,e,this.pubKeyHex)},this.verifyHex=function(t,e,r){try{var s,a,u=o.parseSigHex(e);s=u.r,a=u.s;var c=i.decodeFromHex(this.ecparams.curve,r),h=new n(t.substring(0,this.ecparams.keylen/4),16);return this.verifyRaw(h,s,a,c)}catch(t){return!1}},this.verify=function(t,e,o){var s,a,u;if(Bitcoin.Util.isArray(e)){var c=this.parseSig(e);s=c.r,a=c.s}else{if(\"object\"!==(void 0===e?\"undefined\":r(e))||!e.r||!e.s)throw\"Invalid value for signature\";s=e.r,a=e.s}if(o instanceof Ke)u=o;else{if(!Bitcoin.Util.isArray(o))throw\"Invalid format for pubkey value, must be byte array or ECPointFp\";u=i.decodeFrom(this.ecparams.curve,o)}var h=n.fromByteArrayUnsigned(t);return this.verifyRaw(h,s,a,u)},this.verifyRaw=function(t,e,r,i){var o=this.ecparams.n,s=this.ecparams.G;if(e.compareTo(n.ONE)<0||e.compareTo(o)>=0)return!1;if(r.compareTo(n.ONE)<0||r.compareTo(o)>=0)return!1;var a=r.modInverse(o),u=t.multiply(a).mod(o),c=e.multiply(a).mod(o);return s.multiply(u).add(i.multiply(c)).getX().toBigInteger().mod(o).equals(e)},this.serializeSig=function(t,e){var r=t.toByteArraySigned(),n=e.toByteArraySigned(),i=[];return i.push(2),i.push(r.length),(i=i.concat(r)).push(2),i.push(n.length),(i=i.concat(n)).unshift(i.length),i.unshift(48),i},this.parseSig=function(t){var e;if(48!=t[0])throw new Error(\"Signature not a valid DERSequence\");if(2!=t[e=2])throw new Error(\"First element in signature must be a DERInteger\");var r=t.slice(e+2,e+2+t[e+1]);if(2!=t[e+=2+t[e+1]])throw new Error(\"Second element in signature must be a DERInteger\");var i=t.slice(e+2,e+2+t[e+1]);return e+=2+t[e+1],{r:n.fromByteArrayUnsigned(r),s:n.fromByteArrayUnsigned(i)}},this.parseSigCompact=function(t){if(65!==t.length)throw\"Signature has the wrong length\";var e=t[0]-27;if(e<0||e>7)throw\"Invalid signature type\";var r=this.ecparams.n;return{r:n.fromByteArrayUnsigned(t.slice(1,33)).mod(r),s:n.fromByteArrayUnsigned(t.slice(33,65)).mod(r),i:e}},this.readPKCS5PrvKeyHex=function(t){if(!1===h(t))throw new Error(\"not ASN.1 hex string\");var e,r,n;try{e=c(t,0,[\"[0]\",0],\"06\"),r=c(t,0,[1],\"04\");try{n=c(t,0,[\"[1]\",0],\"03\")}catch(t){}}catch(t){throw new Error(\"malformed PKCS#1/5 plain ECC private key\")}if(this.curveName=a(e),void 0===this.curveName)throw\"unsupported curve name\";this.setNamedCurve(this.curveName),this.setPublicKeyHex(n),this.setPrivateKeyHex(r),this.isPublic=!1},this.readPKCS8PrvKeyHex=function(t){if(!1===h(t))throw new e(\"not ASN.1 hex string\");var r,n,i;try{c(t,0,[1,0],\"06\"),r=c(t,0,[1,1],\"06\"),n=c(t,0,[2,0,1],\"04\");try{i=c(t,0,[2,0,\"[1]\",0],\"03\")}catch(t){}}catch(t){throw new e(\"malformed PKCS#8 plain ECC private key\")}if(this.curveName=a(r),void 0===this.curveName)throw new e(\"unsupported curve name\");this.setNamedCurve(this.curveName),this.setPublicKeyHex(i),this.setPrivateKeyHex(n),this.isPublic=!1},this.readPKCS8PubKeyHex=function(t){if(!1===h(t))throw new e(\"not ASN.1 hex string\");var r,n;try{c(t,0,[0,0],\"06\"),r=c(t,0,[0,1],\"06\"),n=c(t,0,[1],\"03\")}catch(t){throw new e(\"malformed PKCS#8 ECC public key\")}if(this.curveName=a(r),null===this.curveName)throw new e(\"unsupported curve name\");this.setNamedCurve(this.curveName),this.setPublicKeyHex(n)},this.readCertPubKeyHex=function(t,r){if(!1===h(t))throw new e(\"not ASN.1 hex string\");var n,i;try{n=c(t,0,[0,5,0,1],\"06\"),i=c(t,0,[0,5,1],\"03\")}catch(t){throw new e(\"malformed X.509 certificate ECC public key\")}if(this.curveName=a(n),null===this.curveName)throw new e(\"unsupported curve name\");this.setNamedCurve(this.curveName),this.setPublicKeyHex(i)},void 0!==t&&void 0!==t.curve&&(this.curveName=t.curve),void 0===this.curveName&&(this.curveName=\"secp256r1\"),this.setNamedCurve(this.curveName),void 0!==t&&(void 0!==t.prv&&this.setPrivateKeyHex(t.prv),void 0!==t.pub&&this.setPublicKeyHex(t.pub))},br.crypto.ECDSA.parseSigHex=function(t){var e=br.crypto.ECDSA.parseSigHexInHexRS(t);return{r:new F(e.r,16),s:new F(e.s,16)}},br.crypto.ECDSA.parseSigHexInHexRS=function(t){var e=Er,r=e.getChildIdx,n=e.getV;if(e.checkStrictDER(t,0),\"30\"!=t.substr(0,2))throw new Error(\"signature is not a ASN.1 sequence\");var i=r(t,0);if(2!=i.length)throw new Error(\"signature shall have two elements\");var o=i[0],s=i[1];if(\"02\"!=t.substr(o,2))throw new Error(\"1st item not ASN.1 integer\");if(\"02\"!=t.substr(s,2))throw new Error(\"2nd item not ASN.1 integer\");return{r:n(t,o),s:n(t,s)}},br.crypto.ECDSA.asn1SigToConcatSig=function(t){var e=br.crypto.ECDSA.parseSigHexInHexRS(t),r=e.r,n=e.s;if(\"00\"==r.substr(0,2)&&r.length%32==2&&(r=r.substr(2)),\"00\"==n.substr(0,2)&&n.length%32==2&&(n=n.substr(2)),r.length%32==30&&(r=\"00\"+r),n.length%32==30&&(n=\"00\"+n),r.length%32!=0)throw\"unknown ECDSA sig r length error\";if(n.length%32!=0)throw\"unknown ECDSA sig s length error\";return r+n},br.crypto.ECDSA.concatSigToASN1Sig=function(t){if(t.length/2*8%128!=0)throw\"unknown ECDSA concatinated r-s sig  length error\";var e=t.substr(0,t.length/2),r=t.substr(t.length/2);return br.crypto.ECDSA.hexRSSigToASN1Sig(e,r)},br.crypto.ECDSA.hexRSSigToASN1Sig=function(t,e){var r=new F(t,16),n=new F(e,16);return br.crypto.ECDSA.biRSSigToASN1Sig(r,n)},br.crypto.ECDSA.biRSSigToASN1Sig=function(t,e){var r=br.asn1,n=new r.DERInteger({bigint:t}),i=new r.DERInteger({bigint:e});return new r.DERSequence({array:[n,i]}).getEncodedHex()},br.crypto.ECDSA.getName=function(t){return\"2b8104001f\"===t?\"secp192k1\":\"2a8648ce3d030107\"===t?\"secp256r1\":\"2b8104000a\"===t?\"secp256k1\":\"2b81040021\"===t?\"secp224r1\":\"2b81040022\"===t?\"secp384r1\":-1!==\"|secp256r1|NIST P-256|P-256|prime256v1|\".indexOf(t)?\"secp256r1\":-1!==\"|secp256k1|\".indexOf(t)?\"secp256k1\":-1!==\"|secp224r1|NIST P-224|P-224|\".indexOf(t)?\"secp224r1\":-1!==\"|secp384r1|NIST P-384|P-384|\".indexOf(t)?\"secp384r1\":null},void 0!==br&&br||(e.KJUR=br={}),void 0!==br.crypto&&br.crypto||(br.crypto={}),br.crypto.ECParameterDB=new function(){var t={},e={};function r(t){return new F(t,16)}this.getByName=function(r){var n=r;if(void 0!==e[n]&&(n=e[r]),void 0!==t[n])return t[n];throw\"unregistered EC curve name: \"+n},this.regist=function(n,i,o,s,a,u,c,h,l,f,g,d){t[n]={};var p=r(o),v=r(s),y=r(a),m=r(u),_=r(c),S=new qe(p,v,y),b=S.decodePointHex(\"04\"+h+l);t[n].name=n,t[n].keylen=i,t[n].curve=S,t[n].G=b,t[n].n=m,t[n].h=_,t[n].oid=g,t[n].info=d;for(var w=0;w<f.length;w++)e[f[w]]=n}},br.crypto.ECParameterDB.regist(\"secp128r1\",128,\"FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF\",\"FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFC\",\"E87579C11079F43DD824993C2CEE5ED3\",\"FFFFFFFE0000000075A30D1B9038A115\",\"1\",\"161FF7528B899B2D0C28607CA52C5B86\",\"CF5AC8395BAFEB13C02DA292DDED7A83\",[],\"\",\"secp128r1 : SECG curve over a 128 bit prime field\"),br.crypto.ECParameterDB.regist(\"secp160k1\",160,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC73\",\"0\",\"7\",\"0100000000000000000001B8FA16DFAB9ACA16B6B3\",\"1\",\"3B4C382CE37AA192A4019E763036F4F5DD4D7EBB\",\"938CF935318FDCED6BC28286531733C3F03C4FEE\",[],\"\",\"secp160k1 : SECG curve over a 160 bit prime field\"),br.crypto.ECParameterDB.regist(\"secp160r1\",160,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFC\",\"1C97BEFC54BD7A8B65ACF89F81D4D4ADC565FA45\",\"0100000000000000000001F4C8F927AED3CA752257\",\"1\",\"4A96B5688EF573284664698968C38BB913CBFC82\",\"23A628553168947D59DCC912042351377AC5FB32\",[],\"\",\"secp160r1 : SECG curve over a 160 bit prime field\"),br.crypto.ECParameterDB.regist(\"secp192k1\",192,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFEE37\",\"0\",\"3\",\"FFFFFFFFFFFFFFFFFFFFFFFE26F2FC170F69466A74DEFD8D\",\"1\",\"DB4FF10EC057E9AE26B07D0280B7F4341DA5D1B1EAE06C7D\",\"9B2F2F6D9C5628A7844163D015BE86344082AA88D95E2F9D\",[]),br.crypto.ECParameterDB.regist(\"secp192r1\",192,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC\",\"64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1\",\"FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831\",\"1\",\"188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF1012\",\"07192B95FFC8DA78631011ED6B24CDD573F977A11E794811\",[]),br.crypto.ECParameterDB.regist(\"secp224r1\",224,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE\",\"B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D\",\"1\",\"B70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21\",\"BD376388B5F723FB4C22DFE6CD4375A05A07476444D5819985007E34\",[]),br.crypto.ECParameterDB.regist(\"secp256k1\",256,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F\",\"0\",\"7\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141\",\"1\",\"79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798\",\"483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8\",[]),br.crypto.ECParameterDB.regist(\"secp256r1\",256,\"FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF\",\"FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC\",\"5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B\",\"FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551\",\"1\",\"6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296\",\"4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5\",[\"NIST P-256\",\"P-256\",\"prime256v1\"]),br.crypto.ECParameterDB.regist(\"secp384r1\",384,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFF\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFC\",\"B3312FA7E23EE7E4988E056BE3F82D19181D9C6EFE8141120314088F5013875AC656398D8A2ED19D2A85C8EDD3EC2AEF\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7634D81F4372DDF581A0DB248B0A77AECEC196ACCC52973\",\"1\",\"AA87CA22BE8B05378EB1C71EF320AD746E1D3B628BA79B9859F741E082542A385502F25DBF55296C3A545E3872760AB7\",\"3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f\",[\"NIST P-384\",\"P-384\"]),br.crypto.ECParameterDB.regist(\"secp521r1\",521,\"1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC\",\"051953EB9618E1C9A1F929A21A0B68540EEA2DA725B99B315F3B8B489918EF109E156193951EC7E937B1652C0BD3BB1BF073573DF883D2C34F1EF451FD46B503F00\",\"1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386409\",\"1\",\"C6858E06B70404E9CD9E3ECB662395B4429C648139053FB521F828AF606B4D3DBAA14B5E77EFE75928FE1DC127A2FFA8DE3348B3C1856A429BF97E7E31C2E5BD66\",\"011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650\",[\"NIST P-521\",\"P-521\"]);var Zr=function(){var t=function t(r,n,i){return e(y.AES,r,n,i)},e=function t(e,r,n,i){var o=y.enc.Hex.parse(r),s=y.enc.Hex.parse(n),a=y.enc.Hex.parse(i),u={};u.key=s,u.iv=a,u.ciphertext=o;var c=e.decrypt(u,s,{iv:a});return y.enc.Hex.stringify(c)},r=function t(e,r,i){return n(y.AES,e,r,i)},n=function t(e,r,n,i){var o=y.enc.Hex.parse(r),s=y.enc.Hex.parse(n),a=y.enc.Hex.parse(i),u=e.encrypt(o,s,{iv:a}),c=y.enc.Hex.parse(u.toString());return y.enc.Base64.stringify(c)},i={\"AES-256-CBC\":{proc:t,eproc:r,keylen:32,ivlen:16},\"AES-192-CBC\":{proc:t,eproc:r,keylen:24,ivlen:16},\"AES-128-CBC\":{proc:t,eproc:r,keylen:16,ivlen:16},\"DES-EDE3-CBC\":{proc:function t(r,n,i){return e(y.TripleDES,r,n,i)},eproc:function t(e,r,i){return n(y.TripleDES,e,r,i)},keylen:24,ivlen:8},\"DES-CBC\":{proc:function t(r,n,i){return e(y.DES,r,n,i)},eproc:function t(e,r,i){return n(y.DES,e,r,i)},keylen:8,ivlen:8}},o=function t(e){var r={},n=e.match(new RegExp(\"DEK-Info: ([^,]+),([0-9A-Fa-f]+)\",\"m\"));n&&(r.cipher=n[1],r.ivsalt=n[2]);var i=e.match(new RegExp(\"-----BEGIN ([A-Z]+) PRIVATE KEY-----\"));i&&(r.type=i[1]);var o=-1,s=0;-1!=e.indexOf(\"\\r\\n\\r\\n\")&&(o=e.indexOf(\"\\r\\n\\r\\n\"),s=2),-1!=e.indexOf(\"\\n\\n\")&&(o=e.indexOf(\"\\n\\n\"),s=1);var a=e.indexOf(\"-----END\");if(-1!=o&&-1!=a){var u=e.substring(o+2*s,a-s);u=u.replace(/\\s+/g,\"\"),r.data=u}return r},s=function t(e,r,n){for(var o=n.substring(0,16),s=y.enc.Hex.parse(o),a=y.enc.Utf8.parse(r),u=i[e].keylen+i[e].ivlen,c=\"\",h=null;;){var l=y.algo.MD5.create();if(null!=h&&l.update(h),l.update(a),l.update(s),h=l.finalize(),(c+=y.enc.Hex.stringify(h)).length>=2*u)break}var f={};return f.keyhex=c.substr(0,2*i[e].keylen),f.ivhex=c.substr(2*i[e].keylen,2*i[e].ivlen),f},a=function t(e,r,n,o){var s=y.enc.Base64.parse(e),a=y.enc.Hex.stringify(s);return(0,i[r].proc)(a,n,o)};return{version:\"1.0.0\",parsePKCS5PEM:function t(e){return o(e)},getKeyAndUnusedIvByPasscodeAndIvsalt:function t(e,r,n){return s(e,r,n)},decryptKeyB64:function t(e,r,n,i){return a(e,r,n,i)},getDecryptedKeyHex:function t(e,r){var n=o(e),i=(n.type,n.cipher),u=n.ivsalt,c=n.data,h=s(i,r,u).keyhex;return a(c,i,h,u)},getEncryptedPKCS5PEMFromPrvKeyHex:function t(e,r,n,o,a){var u=\"\";if(void 0!==o&&null!=o||(o=\"AES-256-CBC\"),void 0===i[o])throw\"KEYUTIL unsupported algorithm: \"+o;void 0!==a&&null!=a||(a=function t(e){var r=y.lib.WordArray.random(e);return y.enc.Hex.stringify(r)}(i[o].ivlen).toUpperCase());var c=function t(e,r,n,o){return(0,i[r].eproc)(e,n,o)}(r,o,s(o,n,a).keyhex,a);u=\"-----BEGIN \"+e+\" PRIVATE KEY-----\\r\\n\";return u+=\"Proc-Type: 4,ENCRYPTED\\r\\n\",u+=\"DEK-Info: \"+o+\",\"+a+\"\\r\\n\",u+=\"\\r\\n\",u+=c.replace(/(.{64})/g,\"$1\\r\\n\"),u+=\"\\r\\n-----END \"+e+\" PRIVATE KEY-----\\r\\n\"},parseHexOfEncryptedPKCS8:function t(e){var r=Er,n=r.getChildIdx,i=r.getV,o={},s=n(e,0);if(2!=s.length)throw\"malformed format: SEQUENCE(0).items != 2: \"+s.length;o.ciphertext=i(e,s[1]);var a=n(e,s[0]);if(2!=a.length)throw\"malformed format: SEQUENCE(0.0).items != 2: \"+a.length;if(\"2a864886f70d01050d\"!=i(e,a[0]))throw\"this only supports pkcs5PBES2\";var u=n(e,a[1]);if(2!=a.length)throw\"malformed format: SEQUENCE(0.0.1).items != 2: \"+u.length;var c=n(e,u[1]);if(2!=c.length)throw\"malformed format: SEQUENCE(0.0.1.1).items != 2: \"+c.length;if(\"2a864886f70d0307\"!=i(e,c[0]))throw\"this only supports TripleDES\";o.encryptionSchemeAlg=\"TripleDES\",o.encryptionSchemeIV=i(e,c[1]);var h=n(e,u[0]);if(2!=h.length)throw\"malformed format: SEQUENCE(0.0.1.0).items != 2: \"+h.length;if(\"2a864886f70d01050c\"!=i(e,h[0]))throw\"this only supports pkcs5PBKDF2\";var l=n(e,h[1]);if(l.length<2)throw\"malformed format: SEQUENCE(0.0.1.0.1).items < 2: \"+l.length;o.pbkdf2Salt=i(e,l[0]);var f=i(e,l[1]);try{o.pbkdf2Iter=parseInt(f,16)}catch(t){throw\"malformed format pbkdf2Iter: \"+f}return o},getPBKDF2KeyHexFromParam:function t(e,r){var n=y.enc.Hex.parse(e.pbkdf2Salt),i=e.pbkdf2Iter,o=y.PBKDF2(r,n,{keySize:6,iterations:i});return y.enc.Hex.stringify(o)},_getPlainPKCS8HexFromEncryptedPKCS8PEM:function t(e,r){var n=Hr(e,\"ENCRYPTED PRIVATE KEY\"),i=this.parseHexOfEncryptedPKCS8(n),o=Zr.getPBKDF2KeyHexFromParam(i,r),s={};s.ciphertext=y.enc.Hex.parse(i.ciphertext);var a=y.enc.Hex.parse(o),u=y.enc.Hex.parse(i.encryptionSchemeIV),c=y.TripleDES.decrypt(s,a,{iv:u});return y.enc.Hex.stringify(c)},getKeyFromEncryptedPKCS8PEM:function t(e,r){var n=this._getPlainPKCS8HexFromEncryptedPKCS8PEM(e,r);return this.getKeyFromPlainPrivatePKCS8Hex(n)},parsePlainPrivatePKCS8Hex:function t(e){var r=Er,n=r.getChildIdx,i=r.getV,o={algparam:null};if(\"30\"!=e.substr(0,2))throw\"malformed plain PKCS8 private key(code:001)\";var s=n(e,0);if(3!=s.length)throw\"malformed plain PKCS8 private key(code:002)\";if(\"30\"!=e.substr(s[1],2))throw\"malformed PKCS8 private key(code:003)\";var a=n(e,s[1]);if(2!=a.length)throw\"malformed PKCS8 private key(code:004)\";if(\"06\"!=e.substr(a[0],2))throw\"malformed PKCS8 private key(code:005)\";if(o.algoid=i(e,a[0]),\"06\"==e.substr(a[1],2)&&(o.algparam=i(e,a[1])),\"04\"!=e.substr(s[2],2))throw\"malformed PKCS8 private key(code:006)\";return o.keyidx=r.getVidx(e,s[2]),o},getKeyFromPlainPrivatePKCS8PEM:function t(e){var r=Hr(e,\"PRIVATE KEY\");return this.getKeyFromPlainPrivatePKCS8Hex(r)},getKeyFromPlainPrivatePKCS8Hex:function t(e){var r,n=this.parsePlainPrivatePKCS8Hex(e);if(\"2a864886f70d010101\"==n.algoid)r=new He;else if(\"2a8648ce380401\"==n.algoid)r=new br.crypto.DSA;else{if(\"2a8648ce3d0201\"!=n.algoid)throw\"unsupported private key algorithm\";r=new br.crypto.ECDSA}return r.readPKCS8PrvKeyHex(e),r},_getKeyFromPublicPKCS8Hex:function t(e){var r,n=Er.getVbyList(e,0,[0,0],\"06\");if(\"2a864886f70d010101\"===n)r=new He;else if(\"2a8648ce380401\"===n)r=new br.crypto.DSA;else{if(\"2a8648ce3d0201\"!==n)throw\"unsupported PKCS#8 public key hex\";r=new br.crypto.ECDSA}return r.readPKCS8PubKeyHex(e),r},parsePublicRawRSAKeyHex:function t(e){var r=Er,n=r.getChildIdx,i=r.getV,o={};if(\"30\"!=e.substr(0,2))throw\"malformed RSA key(code:001)\";var s=n(e,0);if(2!=s.length)throw\"malformed RSA key(code:002)\";if(\"02\"!=e.substr(s[0],2))throw\"malformed RSA key(code:003)\";if(o.n=i(e,s[0]),\"02\"!=e.substr(s[1],2))throw\"malformed RSA key(code:004)\";return o.e=i(e,s[1]),o},parsePublicPKCS8Hex:function t(e){var r=Er,n=r.getChildIdx,i=r.getV,o={algparam:null},s=n(e,0);if(2!=s.length)throw\"outer DERSequence shall have 2 elements: \"+s.length;var a=s[0];if(\"30\"!=e.substr(a,2))throw\"malformed PKCS8 public key(code:001)\";var u=n(e,a);if(2!=u.length)throw\"malformed PKCS8 public key(code:002)\";if(\"06\"!=e.substr(u[0],2))throw\"malformed PKCS8 public key(code:003)\";if(o.algoid=i(e,u[0]),\"06\"==e.substr(u[1],2)?o.algparam=i(e,u[1]):\"30\"==e.substr(u[1],2)&&(o.algparam={},o.algparam.p=r.getVbyList(e,u[1],[0],\"02\"),o.algparam.q=r.getVbyList(e,u[1],[1],\"02\"),o.algparam.g=r.getVbyList(e,u[1],[2],\"02\")),\"03\"!=e.substr(s[1],2))throw\"malformed PKCS8 public key(code:004)\";return o.key=i(e,s[1]).substr(2),o}}}();Zr.getKey=function(t,e,r){var n=(v=Er).getChildIdx,i=(v.getV,v.getVbyList),o=br.crypto,s=o.ECDSA,a=o.DSA,u=He,c=Hr,h=Zr;if(void 0!==u&&t instanceof u)return t;if(void 0!==s&&t instanceof s)return t;if(void 0!==a&&t instanceof a)return t;if(void 0!==t.curve&&void 0!==t.xy&&void 0===t.d)return new s({pub:t.xy,curve:t.curve});if(void 0!==t.curve&&void 0!==t.d)return new s({prv:t.d,curve:t.curve});if(void 0===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0===t.d)return(P=new u).setPublic(t.n,t.e),P;if(void 0===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0!==t.d&&void 0!==t.p&&void 0!==t.q&&void 0!==t.dp&&void 0!==t.dq&&void 0!==t.co&&void 0===t.qi)return(P=new u).setPrivateEx(t.n,t.e,t.d,t.p,t.q,t.dp,t.dq,t.co),P;if(void 0===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0!==t.d&&void 0===t.p)return(P=new u).setPrivate(t.n,t.e,t.d),P;if(void 0!==t.p&&void 0!==t.q&&void 0!==t.g&&void 0!==t.y&&void 0===t.x)return(P=new a).setPublic(t.p,t.q,t.g,t.y),P;if(void 0!==t.p&&void 0!==t.q&&void 0!==t.g&&void 0!==t.y&&void 0!==t.x)return(P=new a).setPrivate(t.p,t.q,t.g,t.y,t.x),P;if(\"RSA\"===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0===t.d)return(P=new u).setPublic(Ir(t.n),Ir(t.e)),P;if(\"RSA\"===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0!==t.d&&void 0!==t.p&&void 0!==t.q&&void 0!==t.dp&&void 0!==t.dq&&void 0!==t.qi)return(P=new u).setPrivateEx(Ir(t.n),Ir(t.e),Ir(t.d),Ir(t.p),Ir(t.q),Ir(t.dp),Ir(t.dq),Ir(t.qi)),P;if(\"RSA\"===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0!==t.d)return(P=new u).setPrivate(Ir(t.n),Ir(t.e),Ir(t.d)),P;if(\"EC\"===t.kty&&void 0!==t.crv&&void 0!==t.x&&void 0!==t.y&&void 0===t.d){var l=(k=new s({curve:t.crv})).ecparams.keylen/4,f=\"04\"+(\"0000000000\"+Ir(t.x)).slice(-l)+(\"0000000000\"+Ir(t.y)).slice(-l);return k.setPublicKeyHex(f),k}if(\"EC\"===t.kty&&void 0!==t.crv&&void 0!==t.x&&void 0!==t.y&&void 0!==t.d){l=(k=new s({curve:t.crv})).ecparams.keylen/4,f=\"04\"+(\"0000000000\"+Ir(t.x)).slice(-l)+(\"0000000000\"+Ir(t.y)).slice(-l);var g=(\"0000000000\"+Ir(t.d)).slice(-l);return k.setPublicKeyHex(f),k.setPrivateKeyHex(g),k}if(\"pkcs5prv\"===r){var d,p=t,v=Er;if(9===(d=n(p,0)).length)(P=new u).readPKCS5PrvKeyHex(p);else if(6===d.length)(P=new a).readPKCS5PrvKeyHex(p);else{if(!(d.length>2&&\"04\"===p.substr(d[1],2)))throw\"unsupported PKCS#1/5 hexadecimal key\";(P=new s).readPKCS5PrvKeyHex(p)}return P}if(\"pkcs8prv\"===r)return P=h.getKeyFromPlainPrivatePKCS8Hex(t);if(\"pkcs8pub\"===r)return h._getKeyFromPublicPKCS8Hex(t);if(\"x509pub\"===r)return on.getPublicKeyFromCertHex(t);if(-1!=t.indexOf(\"-END CERTIFICATE-\",0)||-1!=t.indexOf(\"-END X509 CERTIFICATE-\",0)||-1!=t.indexOf(\"-END TRUSTED CERTIFICATE-\",0))return on.getPublicKeyFromCertPEM(t);if(-1!=t.indexOf(\"-END PUBLIC KEY-\")){var y=Hr(t,\"PUBLIC KEY\");return h._getKeyFromPublicPKCS8Hex(y)}if(-1!=t.indexOf(\"-END RSA PRIVATE KEY-\")&&-1==t.indexOf(\"4,ENCRYPTED\")){var m=c(t,\"RSA PRIVATE KEY\");return h.getKey(m,null,\"pkcs5prv\")}if(-1!=t.indexOf(\"-END DSA PRIVATE KEY-\")&&-1==t.indexOf(\"4,ENCRYPTED\")){var _=i(R=c(t,\"DSA PRIVATE KEY\"),0,[1],\"02\"),S=i(R,0,[2],\"02\"),b=i(R,0,[3],\"02\"),w=i(R,0,[4],\"02\"),E=i(R,0,[5],\"02\");return(P=new a).setPrivate(new F(_,16),new F(S,16),new F(b,16),new F(w,16),new F(E,16)),P}if(-1!=t.indexOf(\"-END EC PRIVATE KEY-\")&&-1==t.indexOf(\"4,ENCRYPTED\")){m=c(t,\"EC PRIVATE KEY\");return h.getKey(m,null,\"pkcs5prv\")}if(-1!=t.indexOf(\"-END PRIVATE KEY-\"))return h.getKeyFromPlainPrivatePKCS8PEM(t);if(-1!=t.indexOf(\"-END RSA PRIVATE KEY-\")&&-1!=t.indexOf(\"4,ENCRYPTED\")){var x=h.getDecryptedKeyHex(t,e),A=new He;return A.readPKCS5PrvKeyHex(x),A}if(-1!=t.indexOf(\"-END EC PRIVATE KEY-\")&&-1!=t.indexOf(\"4,ENCRYPTED\")){var k,P=i(R=h.getDecryptedKeyHex(t,e),0,[1],\"04\"),C=i(R,0,[2,0],\"06\"),T=i(R,0,[3,0],\"03\").substr(2);if(void 0===br.crypto.OID.oidhex2name[C])throw\"undefined OID(hex) in KJUR.crypto.OID: \"+C;return(k=new s({curve:br.crypto.OID.oidhex2name[C]})).setPublicKeyHex(T),k.setPrivateKeyHex(P),k.isPublic=!1,k}if(-1!=t.indexOf(\"-END DSA PRIVATE KEY-\")&&-1!=t.indexOf(\"4,ENCRYPTED\")){var R;_=i(R=h.getDecryptedKeyHex(t,e),0,[1],\"02\"),S=i(R,0,[2],\"02\"),b=i(R,0,[3],\"02\"),w=i(R,0,[4],\"02\"),E=i(R,0,[5],\"02\");return(P=new a).setPrivate(new F(_,16),new F(S,16),new F(b,16),new F(w,16),new F(E,16)),P}if(-1!=t.indexOf(\"-END ENCRYPTED PRIVATE KEY-\"))return h.getKeyFromEncryptedPKCS8PEM(t,e);throw new Error(\"not supported argument\")},Zr.generateKeypair=function(t,e){if(\"RSA\"==t){var r=e;(s=new He).generate(r,\"10001\"),s.isPrivate=!0,s.isPublic=!0;var n=new He,i=s.n.toString(16),o=s.e.toString(16);return n.setPublic(i,o),n.isPrivate=!1,n.isPublic=!0,(a={}).prvKeyObj=s,a.pubKeyObj=n,a}if(\"EC\"==t){var s,a,u=e,c=new br.crypto.ECDSA({curve:u}).generateKeyPairHex();return(s=new br.crypto.ECDSA({curve:u})).setPublicKeyHex(c.ecpubhex),s.setPrivateKeyHex(c.ecprvhex),s.isPrivate=!0,s.isPublic=!1,(n=new br.crypto.ECDSA({curve:u})).setPublicKeyHex(c.ecpubhex),n.isPrivate=!1,n.isPublic=!0,(a={}).prvKeyObj=s,a.pubKeyObj=n,a}throw\"unknown algorithm: \"+t},Zr.getPEM=function(t,e,r,n,i,o){var s=br,a=s.asn1,u=a.DERObjectIdentifier,c=a.DERInteger,h=a.ASN1Util.newObject,l=a.x509.SubjectPublicKeyInfo,f=s.crypto,g=f.DSA,d=f.ECDSA,p=He;function v(t){return h({seq:[{int:0},{int:{bigint:t.n}},{int:t.e},{int:{bigint:t.d}},{int:{bigint:t.p}},{int:{bigint:t.q}},{int:{bigint:t.dmp1}},{int:{bigint:t.dmq1}},{int:{bigint:t.coeff}}]})}function m(t){return h({seq:[{int:1},{octstr:{hex:t.prvKeyHex}},{tag:[\"a0\",!0,{oid:{name:t.curveName}}]},{tag:[\"a1\",!0,{bitstr:{hex:\"00\"+t.pubKeyHex}}]}]})}function _(t){return h({seq:[{int:0},{int:{bigint:t.p}},{int:{bigint:t.q}},{int:{bigint:t.g}},{int:{bigint:t.y}},{int:{bigint:t.x}}]})}if((void 0!==p&&t instanceof p||void 0!==g&&t instanceof g||void 0!==d&&t instanceof d)&&1==t.isPublic&&(void 0===e||\"PKCS8PUB\"==e))return Mr(F=new l(t).getEncodedHex(),\"PUBLIC KEY\");if(\"PKCS1PRV\"==e&&void 0!==p&&t instanceof p&&(void 0===r||null==r)&&1==t.isPrivate)return Mr(F=v(t).getEncodedHex(),\"RSA PRIVATE KEY\");if(\"PKCS1PRV\"==e&&void 0!==d&&t instanceof d&&(void 0===r||null==r)&&1==t.isPrivate){var S=new u({name:t.curveName}).getEncodedHex(),b=m(t).getEncodedHex(),w=\"\";return w+=Mr(S,\"EC PARAMETERS\"),w+=Mr(b,\"EC PRIVATE KEY\")}if(\"PKCS1PRV\"==e&&void 0!==g&&t instanceof g&&(void 0===r||null==r)&&1==t.isPrivate)return Mr(F=_(t).getEncodedHex(),\"DSA PRIVATE KEY\");if(\"PKCS5PRV\"==e&&void 0!==p&&t instanceof p&&void 0!==r&&null!=r&&1==t.isPrivate){var F=v(t).getEncodedHex();return void 0===n&&(n=\"DES-EDE3-CBC\"),this.getEncryptedPKCS5PEMFromPrvKeyHex(\"RSA\",F,r,n,o)}if(\"PKCS5PRV\"==e&&void 0!==d&&t instanceof d&&void 0!==r&&null!=r&&1==t.isPrivate){F=m(t).getEncodedHex();return void 0===n&&(n=\"DES-EDE3-CBC\"),this.getEncryptedPKCS5PEMFromPrvKeyHex(\"EC\",F,r,n,o)}if(\"PKCS5PRV\"==e&&void 0!==g&&t instanceof g&&void 0!==r&&null!=r&&1==t.isPrivate){F=_(t).getEncodedHex();return void 0===n&&(n=\"DES-EDE3-CBC\"),this.getEncryptedPKCS5PEMFromPrvKeyHex(\"DSA\",F,r,n,o)}var E=function t(e,r){var n=x(e,r);return new h({seq:[{seq:[{oid:{name:\"pkcs5PBES2\"}},{seq:[{seq:[{oid:{name:\"pkcs5PBKDF2\"}},{seq:[{octstr:{hex:n.pbkdf2Salt}},{int:n.pbkdf2Iter}]}]},{seq:[{oid:{name:\"des-EDE3-CBC\"}},{octstr:{hex:n.encryptionSchemeIV}}]}]}]},{octstr:{hex:n.ciphertext}}]}).getEncodedHex()},x=function t(e,r){var n=y.lib.WordArray.random(8),i=y.lib.WordArray.random(8),o=y.PBKDF2(r,n,{keySize:6,iterations:100}),s=y.enc.Hex.parse(e),a=y.TripleDES.encrypt(s,o,{iv:i})+\"\",u={};return u.ciphertext=a,u.pbkdf2Salt=y.enc.Hex.stringify(n),u.pbkdf2Iter=100,u.encryptionSchemeAlg=\"DES-EDE3-CBC\",u.encryptionSchemeIV=y.enc.Hex.stringify(i),u};if(\"PKCS8PRV\"==e&&null!=p&&t instanceof p&&1==t.isPrivate){var A=v(t).getEncodedHex();F=h({seq:[{int:0},{seq:[{oid:{name:\"rsaEncryption\"}},{null:!0}]},{octstr:{hex:A}}]}).getEncodedHex();return void 0===r||null==r?Mr(F,\"PRIVATE KEY\"):Mr(b=E(F,r),\"ENCRYPTED PRIVATE KEY\")}if(\"PKCS8PRV\"==e&&void 0!==d&&t instanceof d&&1==t.isPrivate){A=new h({seq:[{int:1},{octstr:{hex:t.prvKeyHex}},{tag:[\"a1\",!0,{bitstr:{hex:\"00\"+t.pubKeyHex}}]}]}).getEncodedHex(),F=h({seq:[{int:0},{seq:[{oid:{name:\"ecPublicKey\"}},{oid:{name:t.curveName}}]},{octstr:{hex:A}}]}).getEncodedHex();return void 0===r||null==r?Mr(F,\"PRIVATE KEY\"):Mr(b=E(F,r),\"ENCRYPTED PRIVATE KEY\")}if(\"PKCS8PRV\"==e&&void 0!==g&&t instanceof g&&1==t.isPrivate){A=new c({bigint:t.x}).getEncodedHex(),F=h({seq:[{int:0},{seq:[{oid:{name:\"dsa\"}},{seq:[{int:{bigint:t.p}},{int:{bigint:t.q}},{int:{bigint:t.g}}]}]},{octstr:{hex:A}}]}).getEncodedHex();return void 0===r||null==r?Mr(F,\"PRIVATE KEY\"):Mr(b=E(F,r),\"ENCRYPTED PRIVATE KEY\")}throw new Error(\"unsupported object nor format\")},Zr.getKeyFromCSRPEM=function(t){var e=Hr(t,\"CERTIFICATE REQUEST\");return Zr.getKeyFromCSRHex(e)},Zr.getKeyFromCSRHex=function(t){var e=Zr.parseCSRHex(t);return Zr.getKey(e.p8pubkeyhex,null,\"pkcs8pub\")},Zr.parseCSRHex=function(t){var e=Er,r=e.getChildIdx,n=e.getTLV,i={},o=t;if(\"30\"!=o.substr(0,2))throw\"malformed CSR(code:001)\";var s=r(o,0);if(s.length<1)throw\"malformed CSR(code:002)\";if(\"30\"!=o.substr(s[0],2))throw\"malformed CSR(code:003)\";var a=r(o,s[0]);if(a.length<3)throw\"malformed CSR(code:004)\";return i.p8pubkeyhex=n(o,a[2]),i},Zr.getKeyID=function(t){var e=Zr,r=Er;\"string\"==typeof t&&-1!=t.indexOf(\"BEGIN \")&&(t=e.getKey(t));var n=Hr(e.getPEM(t)),i=r.getIdxbyList(n,0,[1]),o=r.getV(n,i).substring(2);return br.crypto.Util.hashHex(o,\"sha1\")},Zr.getJWKFromKey=function(t){var e={};if(t instanceof He&&t.isPrivate)return e.kty=\"RSA\",e.n=Rr(t.n.toString(16)),e.e=Rr(t.e.toString(16)),e.d=Rr(t.d.toString(16)),e.p=Rr(t.p.toString(16)),e.q=Rr(t.q.toString(16)),e.dp=Rr(t.dmp1.toString(16)),e.dq=Rr(t.dmq1.toString(16)),e.qi=Rr(t.coeff.toString(16)),e;if(t instanceof He&&t.isPublic)return e.kty=\"RSA\",e.n=Rr(t.n.toString(16)),e.e=Rr(t.e.toString(16)),e;if(t instanceof br.crypto.ECDSA&&t.isPrivate){if(\"P-256\"!==(n=t.getShortNISTPCurveName())&&\"P-384\"!==n)throw\"unsupported curve name for JWT: \"+n;var r=t.getPublicKeyXYHex();return e.kty=\"EC\",e.crv=n,e.x=Rr(r.x),e.y=Rr(r.y),e.d=Rr(t.prvKeyHex),e}if(t instanceof br.crypto.ECDSA&&t.isPublic){var n;if(\"P-256\"!==(n=t.getShortNISTPCurveName())&&\"P-384\"!==n)throw\"unsupported curve name for JWT: \"+n;r=t.getPublicKeyXYHex();return e.kty=\"EC\",e.crv=n,e.x=Rr(r.x),e.y=Rr(r.y),e}throw\"not supported key object\"},He.getPosArrayOfChildrenFromHex=function(t){return Er.getChildIdx(t,0)},He.getHexValueArrayOfChildrenFromHex=function(t){var e,r=Er.getV,n=r(t,(e=He.getPosArrayOfChildrenFromHex(t))[0]),i=r(t,e[1]),o=r(t,e[2]),s=r(t,e[3]),a=r(t,e[4]),u=r(t,e[5]),c=r(t,e[6]),h=r(t,e[7]),l=r(t,e[8]);return(e=new Array).push(n,i,o,s,a,u,c,h,l),e},He.prototype.readPrivateKeyFromPEMString=function(t){var e=Hr(t),r=He.getHexValueArrayOfChildrenFromHex(e);this.setPrivateEx(r[1],r[2],r[3],r[4],r[5],r[6],r[7],r[8])},He.prototype.readPKCS5PrvKeyHex=function(t){var e=He.getHexValueArrayOfChildrenFromHex(t);this.setPrivateEx(e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8])},He.prototype.readPKCS8PrvKeyHex=function(t){var e,r,n,i,o,s,a,u,c=Er,h=c.getVbyListEx;if(!1===c.isASN1HEX(t))throw new Error(\"not ASN.1 hex string\");try{e=h(t,0,[2,0,1],\"02\"),r=h(t,0,[2,0,2],\"02\"),n=h(t,0,[2,0,3],\"02\"),i=h(t,0,[2,0,4],\"02\"),o=h(t,0,[2,0,5],\"02\"),s=h(t,0,[2,0,6],\"02\"),a=h(t,0,[2,0,7],\"02\"),u=h(t,0,[2,0,8],\"02\")}catch(t){throw new Error(\"malformed PKCS#8 plain RSA private key\")}this.setPrivateEx(e,r,n,i,o,s,a,u)},He.prototype.readPKCS5PubKeyHex=function(t){var e=Er,r=e.getV;if(!1===e.isASN1HEX(t))throw new Error(\"keyHex is not ASN.1 hex string\");var n=e.getChildIdx(t,0);if(2!==n.length||\"02\"!==t.substr(n[0],2)||\"02\"!==t.substr(n[1],2))throw new Error(\"wrong hex for PKCS#5 public key\");var i=r(t,n[0]),o=r(t,n[1]);this.setPublic(i,o)},He.prototype.readPKCS8PubKeyHex=function(t){var e=Er;if(!1===e.isASN1HEX(t))throw new Error(\"not ASN.1 hex string\");if(\"06092a864886f70d010101\"!==e.getTLVbyListEx(t,0,[0,0]))throw new Error(\"not PKCS8 RSA public key\");var r=e.getTLVbyListEx(t,0,[1,0]);this.readPKCS5PubKeyHex(r)},He.prototype.readCertPubKeyHex=function(t,e){var r,n;(r=new on).readCertHex(t),n=r.getPublicKeyHex(),this.readPKCS8PubKeyHex(n)};var tn=new RegExp(\"[^0-9a-f]\",\"gi\");function en(t,e){for(var r=\"\",n=e/4-t.length,i=0;i<n;i++)r+=\"0\";return r+t}function rn(t,e,r){for(var n=\"\",i=0;n.length<e;)n+=Nr(r(Ur(t+String.fromCharCode.apply(String,[(4278190080&i)>>24,(16711680&i)>>16,(65280&i)>>8,255&i])))),i+=1;return n}function nn(t){for(var e in br.crypto.Util.DIGESTINFOHEAD){var r=br.crypto.Util.DIGESTINFOHEAD[e],n=r.length;if(t.substring(0,n)==r)return[e,t.substring(n)]}return[]}function on(t){var e,r=Er,n=r.getChildIdx,i=r.getV,o=r.getTLV,s=r.getVbyList,a=r.getVbyListEx,u=r.getTLVbyList,c=r.getTLVbyListEx,h=r.getIdxbyList,l=r.getIdxbyListEx,f=r.getVidx,g=r.oidname,d=r.hextooidstr,p=on,v=Hr;try{e=br.asn1.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV}catch(t){}this.HEX2STAG={\"0c\":\"utf8\",13:\"prn\",16:\"ia5\",\"1a\":\"vis\",\"1e\":\"bmp\"},this.hex=null,this.version=0,this.foffset=0,this.aExtInfo=null,this.getVersion=function(){return null===this.hex||0!==this.version?this.version:\"a003020102\"!==u(this.hex,0,[0,0])?(this.version=1,this.foffset=-1,1):(this.version=3,3)},this.getSerialNumberHex=function(){return a(this.hex,0,[0,0],\"02\")},this.getSignatureAlgorithmField=function(){var t=c(this.hex,0,[0,1]);return this.getAlgorithmIdentifierName(t)},this.getAlgorithmIdentifierName=function(t){for(var r in e)if(t===e[r])return r;return g(a(t,0,[0],\"06\"))},this.getIssuer=function(){return this.getX500Name(this.getIssuerHex())},this.getIssuerHex=function(){return u(this.hex,0,[0,3+this.foffset],\"30\")},this.getIssuerString=function(){return p.hex2dn(this.getIssuerHex())},this.getSubject=function(){return this.getX500Name(this.getSubjectHex())},this.getSubjectHex=function(){return u(this.hex,0,[0,5+this.foffset],\"30\")},this.getSubjectString=function(){return p.hex2dn(this.getSubjectHex())},this.getNotBefore=function(){var t=s(this.hex,0,[0,4+this.foffset,0]);return t=t.replace(/(..)/g,\"%$1\"),t=decodeURIComponent(t)},this.getNotAfter=function(){var t=s(this.hex,0,[0,4+this.foffset,1]);return t=t.replace(/(..)/g,\"%$1\"),t=decodeURIComponent(t)},this.getPublicKeyHex=function(){return r.getTLVbyList(this.hex,0,[0,6+this.foffset],\"30\")},this.getPublicKeyIdx=function(){return h(this.hex,0,[0,6+this.foffset],\"30\")},this.getPublicKeyContentIdx=function(){var t=this.getPublicKeyIdx();return h(this.hex,t,[1,0],\"30\")},this.getPublicKey=function(){return Zr.getKey(this.getPublicKeyHex(),null,\"pkcs8pub\")},this.getSignatureAlgorithmName=function(){var t=u(this.hex,0,[1],\"30\");return this.getAlgorithmIdentifierName(t)},this.getSignatureValueHex=function(){return s(this.hex,0,[2],\"03\",!0)},this.verifySignature=function(t){var e=this.getSignatureAlgorithmField(),r=this.getSignatureValueHex(),n=u(this.hex,0,[0],\"30\"),i=new br.crypto.Signature({alg:e});return i.init(t),i.updateHex(n),i.verify(r)},this.parseExt=function(t){var e,o,a;if(void 0===t){if(a=this.hex,3!==this.version)return-1;e=h(a,0,[0,7,0],\"30\"),o=n(a,e)}else{a=Hr(t);var u=h(a,0,[0,3,0,0],\"06\");if(\"2a864886f70d01090e\"!=i(a,u))return void(this.aExtInfo=new Array);e=h(a,0,[0,3,0,1,0],\"30\"),o=n(a,e),this.hex=a}this.aExtInfo=new Array;for(var c=0;c<o.length;c++){var l={critical:!1},g=0;3===n(a,o[c]).length&&(l.critical=!0,g=1),l.oid=r.hextooidstr(s(a,o[c],[0],\"06\"));var d=h(a,o[c],[1+g]);l.vidx=f(a,d),this.aExtInfo.push(l)}},this.getExtInfo=function(t){var e=this.aExtInfo,r=t;if(t.match(/^[0-9.]+$/)||(r=br.asn1.x509.OID.name2oid(t)),\"\"!==r)for(var n=0;n<e.length;n++)if(e[n].oid===r)return e[n]},this.getExtBasicConstraints=function(t,e){if(void 0===t&&void 0===e){var r=this.getExtInfo(\"basicConstraints\");if(void 0===r)return;t=o(this.hex,r.vidx),e=r.critical}var n={extname:\"basicConstraints\"};if(e&&(n.critical=!0),\"3000\"===t)return n;if(\"30030101ff\"===t)return n.cA=!0,n;if(\"30060101ff02\"===t.substr(0,12)){var s=i(t,10),a=parseInt(s,16);return n.cA=!0,n.pathLen=a,n}throw new Error(\"hExtV parse error: \"+t)},this.getExtKeyUsage=function(t,e){if(void 0===t&&void 0===e){var r=this.getExtInfo(\"keyUsage\");if(void 0===r)return;t=o(this.hex,r.vidx),e=r.critical}var n={extname:\"keyUsage\"};return e&&(n.critical=!0),n.names=this.getExtKeyUsageString(t).split(\",\"),n},this.getExtKeyUsageBin=function(t){if(void 0===t){var e=this.getExtInfo(\"keyUsage\");if(void 0===e)return\"\";t=o(this.hex,e.vidx)}if(8!=t.length&&10!=t.length)throw new Error(\"malformed key usage value: \"+t);var r=\"000000000000000\"+parseInt(t.substr(6),16).toString(2);return 8==t.length&&(r=r.slice(-8)),10==t.length&&(r=r.slice(-16)),\"\"==(r=r.replace(/0+$/,\"\"))&&(r=\"0\"),r},this.getExtKeyUsageString=function(t){for(var e=this.getExtKeyUsageBin(t),r=new Array,n=0;n<e.length;n++)\"1\"==e.substr(n,1)&&r.push(on.KEYUSAGE_NAME[n]);return r.join(\",\")},this.getExtSubjectKeyIdentifier=function(t,e){if(void 0===t&&void 0===e){var r=this.getExtInfo(\"subjectKeyIdentifier\");if(void 0===r)return;t=o(this.hex,r.vidx),e=r.critical}var n={extname:\"subjectKeyIdentifier\"};e&&(n.critical=!0);var s=i(t,0);return n.kid={hex:s},n},this.getExtAuthorityKeyIdentifier=function(t,e){if(void 0===t&&void 0===e){var r=this.getExtInfo(\"authorityKeyIdentifier\");if(void 0===r)return;t=o(this.hex,r.vidx),e=r.critical}var s={extname:\"authorityKeyIdentifier\"};e&&(s.critical=!0);for(var a=n(t,0),u=0;u<a.length;u++){var c=t.substr(a[u],2);if(\"80\"===c&&(s.kid={hex:i(t,a[u])}),\"a1\"===c){var h=o(t,a[u]),l=this.getGeneralNames(h);s.issuer=l[0].dn}\"82\"===c&&(s.sn={hex:i(t,a[u])})}return s},this.getExtExtKeyUsage=function(t,e){if(void 0===t&&void 0===e){var r=this.getExtInfo(\"extKeyUsage\");if(void 0===r)return;t=o(this.hex,r.vidx),e=r.critical}var s={extname:\"extKeyUsage\",array:[]};e&&(s.critical=!0);for(var a=n(t,0),u=0;u<a.length;u++)s.array.push(g(i(t,a[u])));return s},this.getExtExtKeyUsageName=function(){var t=this.getExtInfo(\"extKeyUsage\");if(void 0===t)return t;var e=new Array,r=o(this.hex,t.vidx);if(\"\"===r)return e;for(var s=n(r,0),a=0;a<s.length;a++)e.push(g(i(r,s[a])));return e},this.getExtSubjectAltName=function(t,e){if(void 0===t&&void 0===e){var r=this.getExtInfo(\"subjectAltName\");if(void 0===r)return;t=o(this.hex,r.vidx),e=r.critical}var n={extname:\"subjectAltName\",array:[]};return e&&(n.critical=!0),n.array=this.getGeneralNames(t),n},this.getExtIssuerAltName=function(t,e){if(void 0===t&&void 0===e){var r=this.getExtInfo(\"issuerAltName\");if(void 0===r)return;t=o(this.hex,r.vidx),e=r.critical}var n={extname:\"issuerAltName\",array:[]};return e&&(n.critical=!0),n.array=this.getGeneralNames(t),n},this.getGeneralNames=function(t){for(var e=n(t,0),r=[],i=0;i<e.length;i++){var s=this.getGeneralName(o(t,e[i]));void 0!==s&&r.push(s)}return r},this.getGeneralName=function(t){var e=t.substr(0,2),r=i(t,0),n=Nr(r);return\"81\"==e?{rfc822:n}:\"82\"==e?{dns:n}:\"86\"==e?{uri:n}:\"87\"==e?{ip:Yr(r)}:\"a4\"==e?{dn:this.getX500Name(r)}:void 0},this.getExtSubjectAltName2=function(){var t,e,r,s=this.getExtInfo(\"subjectAltName\");if(void 0===s)return s;for(var a=new Array,u=o(this.hex,s.vidx),c=n(u,0),h=0;h<c.length;h++)r=u.substr(c[h],2),t=i(u,c[h]),\"81\"===r&&(e=Lr(t),a.push([\"MAIL\",e])),\"82\"===r&&(e=Lr(t),a.push([\"DNS\",e])),\"84\"===r&&(e=on.hex2dn(t,0),a.push([\"DN\",e])),\"86\"===r&&(e=Lr(t),a.push([\"URI\",e])),\"87\"===r&&(e=Yr(t),a.push([\"IP\",e]));return a},this.getExtCRLDistributionPoints=function(t,e){if(void 0===t&&void 0===e){var r=this.getExtInfo(\"cRLDistributionPoints\");if(void 0===r)return;t=o(this.hex,r.vidx),e=r.critical}var i={extname:\"cRLDistributionPoints\",array:[]};e&&(i.critical=!0);for(var s=n(t,0),a=0;a<s.length;a++){var u=o(t,s[a]);i.array.push(this.getDistributionPoint(u))}return i},this.getDistributionPoint=function(t){for(var e={},r=n(t,0),i=0;i<r.length;i++){var s=t.substr(r[i],2),a=o(t,r[i]);\"a0\"==s&&(e.dpname=this.getDistributionPointName(a))}return e},this.getDistributionPointName=function(t){for(var e={},r=n(t,0),i=0;i<r.length;i++){var s=t.substr(r[i],2),a=o(t,r[i]);\"a0\"==s&&(e.full=this.getGeneralNames(a))}return e},this.getExtCRLDistributionPointsURI=function(){var t=this.getExtInfo(\"cRLDistributionPoints\");if(void 0===t)return t;for(var e=new Array,r=n(this.hex,t.vidx),i=0;i<r.length;i++)try{var o=Lr(s(this.hex,r[i],[0,0,0],\"86\"));e.push(o)}catch(t){}return e},this.getExtAIAInfo=function(){var t=this.getExtInfo(\"authorityInfoAccess\");if(void 0===t)return t;for(var e={ocsp:[],caissuer:[]},r=n(this.hex,t.vidx),i=0;i<r.length;i++){var o=s(this.hex,r[i],[0],\"06\"),a=s(this.hex,r[i],[1],\"86\");\"2b06010505073001\"===o&&e.ocsp.push(Lr(a)),\"2b06010505073002\"===o&&e.caissuer.push(Lr(a))}return e},this.getExtAuthorityInfoAccess=function(t,e){if(void 0===t&&void 0===e){var r=this.getExtInfo(\"authorityInfoAccess\");if(void 0===r)return;t=o(this.hex,r.vidx),e=r.critical}var i={extname:\"authorityInfoAccess\",array:[]};e&&(i.critical=!0);for(var u=n(t,0),c=0;c<u.length;c++){var h=a(t,u[c],[0],\"06\"),l=Lr(s(t,u[c],[1],\"86\"));if(\"2b06010505073001\"==h)i.array.push({ocsp:l});else{if(\"2b06010505073002\"!=h)throw new Error(\"unknown method: \"+h);i.array.push({caissuer:l})}}return i},this.getExtCertificatePolicies=function(t,e){if(void 0===t&&void 0===e){var r=this.getExtInfo(\"certificatePolicies\");if(void 0===r)return;t=o(this.hex,r.vidx),e=r.critical}var i={extname:\"certificatePolicies\",array:[]};e&&(i.critical=!0);for(var s=n(t,0),a=0;a<s.length;a++){var u=o(t,s[a]),c=this.getPolicyInformation(u);i.array.push(c)}return i},this.getPolicyInformation=function(t){var e={},r=s(t,0,[0],\"06\");e.policyoid=g(r);var i=l(t,0,[1],\"30\");if(-1!=i){e.array=[];for(var a=n(t,i),u=0;u<a.length;u++){var c=o(t,a[u]),h=this.getPolicyQualifierInfo(c);e.array.push(h)}}return e},this.getPolicyQualifierInfo=function(t){var e={},r=s(t,0,[0],\"06\");if(\"2b06010505070201\"===r){var n=a(t,0,[1],\"16\");e.cps=Nr(n)}else if(\"2b06010505070202\"===r){var i=u(t,0,[1],\"30\");e.unotice=this.getUserNotice(i)}return e},this.getUserNotice=function(t){for(var e={},r=n(t,0),i=0;i<r.length;i++){var s=o(t,r[i]);\"30\"!=s.substr(0,2)&&(e.exptext=this.getDisplayText(s))}return e},this.getDisplayText=function(t){var e={};return e.type={\"0c\":\"utf8\",16:\"ia5\",\"1a\":\"vis\",\"1e\":\"bmp\"}[t.substr(0,2)],e.str=Nr(i(t,0)),e},this.getExtCRLNumber=function(t,e){var r={extname:\"cRLNumber\"};if(e&&(r.critical=!0),\"02\"==t.substr(0,2))return r.num={hex:i(t,0)},r;throw new Error(\"hExtV parse error: \"+t)},this.getExtCRLReason=function(t,e){var r={extname:\"cRLReason\"};if(e&&(r.critical=!0),\"0a\"==t.substr(0,2))return r.code=parseInt(i(t,0),16),r;throw new Error(\"hExtV parse error: \"+t)},this.getExtOcspNonce=function(t,e){var r={extname:\"ocspNonce\"};e&&(r.critical=!0);var n=i(t,0);return r.hex=n,r},this.getExtOcspNoCheck=function(t,e){var r={extname:\"ocspNoCheck\"};return e&&(r.critical=!0),r},this.getExtAdobeTimeStamp=function(t,e){if(void 0===t&&void 0===e){var r=this.getExtInfo(\"adobeTimeStamp\");if(void 0===r)return;t=o(this.hex,r.vidx),e=r.critical}var i={extname:\"adobeTimeStamp\"};e&&(i.critical=!0);var s=n(t,0);if(s.length>1){var a=o(t,s[1]),u=this.getGeneralName(a);null!=u.uri&&(i.uri=u.uri)}if(s.length>2){var c=o(t,s[2]);\"0101ff\"==c&&(i.reqauth=!0),\"010100\"==c&&(i.reqauth=!1)}return i},this.getX500NameRule=function(t){for(var e=null,r=[],n=0;n<t.length;n++)for(var i=t[n],o=0;o<i.length;o++)r.push(i[o]);for(n=0;n<r.length;n++){var s=r[n],a=s.ds,u=s.value,c=s.type;if(\":\"+a,\"prn\"!=a&&\"utf8\"!=a&&\"ia5\"!=a)return\"mixed\";if(\"ia5\"==a){if(\"CN\"!=c)return\"mixed\";if(br.lang.String.isMail(u))continue;return\"mixed\"}if(\"C\"==c){if(\"prn\"==a)continue;return\"mixed\"}if(\":\"+a,null==e)e=a;else if(e!==a)return\"mixed\"}return null==e?\"prn\":e},this.getX500Name=function(t){var e=this.getX500NameArray(t);return{array:e,str:this.dnarraytostr(e)}},this.getX500NameArray=function(t){for(var e=[],r=n(t,0),i=0;i<r.length;i++)e.push(this.getRDN(o(t,r[i])));return e},this.getRDN=function(t){for(var e=[],r=n(t,0),i=0;i<r.length;i++)e.push(this.getAttrTypeAndValue(o(t,r[i])));return e},this.getAttrTypeAndValue=function(t){var e={type:null,value:null,ds:null},r=n(t,0),i=s(t,r[0],[],\"06\"),o=s(t,r[1],[]),a=br.asn1.ASN1Util.oidHexToInt(i);return e.type=br.asn1.x509.OID.oid2atype(a),e.value=Nr(o),e.ds=this.HEX2STAG[t.substr(r[1],2)],e},this.readCertPEM=function(t){this.readCertHex(v(t))},this.readCertHex=function(t){this.hex=t,this.getVersion();try{h(this.hex,0,[0,7],\"a3\"),this.parseExt()}catch(t){}},this.getParam=function(){var t={};return t.version=this.getVersion(),t.serial={hex:this.getSerialNumberHex()},t.sigalg=this.getSignatureAlgorithmField(),t.issuer=this.getIssuer(),t.notbefore=this.getNotBefore(),t.notafter=this.getNotAfter(),t.subject=this.getSubject(),t.sbjpubkey=Mr(this.getPublicKeyHex(),\"PUBLIC KEY\"),this.aExtInfo.length>0&&(t.ext=this.getExtParamArray()),t.sighex=this.getSignatureValueHex(),t},this.getExtParamArray=function(t){null==t&&(-1!=l(this.hex,0,[0,\"[3]\"])&&(t=c(this.hex,0,[0,\"[3]\",0],\"30\")));for(var e=[],r=n(t,0),i=0;i<r.length;i++){var s=o(t,r[i]),a=this.getExtParam(s);null!=a&&e.push(a)}return e},this.getExtParam=function(t){var e=n(t,0).length;if(2!=e&&3!=e)throw new Error(\"wrong number elements in Extension: \"+e+\" \"+t);var r=d(s(t,0,[0],\"06\")),i=!1;3==e&&\"0101ff\"==u(t,0,[1])&&(i=!0);var o=u(t,0,[e-1,0]),a=void 0;if(\"2.5.29.14\"==r?a=this.getExtSubjectKeyIdentifier(o,i):\"2.5.29.15\"==r?a=this.getExtKeyUsage(o,i):\"2.5.29.17\"==r?a=this.getExtSubjectAltName(o,i):\"2.5.29.18\"==r?a=this.getExtIssuerAltName(o,i):\"2.5.29.19\"==r?a=this.getExtBasicConstraints(o,i):\"2.5.29.31\"==r?a=this.getExtCRLDistributionPoints(o,i):\"2.5.29.32\"==r?a=this.getExtCertificatePolicies(o,i):\"2.5.29.35\"==r?a=this.getExtAuthorityKeyIdentifier(o,i):\"2.5.29.37\"==r?a=this.getExtExtKeyUsage(o,i):\"1.3.6.1.5.5.7.1.1\"==r?a=this.getExtAuthorityInfoAccess(o,i):\"2.5.29.20\"==r?a=this.getExtCRLNumber(o,i):\"2.5.29.21\"==r?a=this.getExtCRLReason(o,i):\"1.3.6.1.5.5.7.48.1.2\"==r?a=this.getExtOcspNonce(o,i):\"1.3.6.1.5.5.7.48.1.5\"==r?a=this.getExtOcspNoCheck(o,i):\"1.2.840.113583.1.1.9.1\"==r&&(a=this.getExtAdobeTimeStamp(o,i)),null!=a)return a;var c={extname:r,extn:o};return i&&(c.critical=!0),c},this.findExt=function(t,e){for(var r=0;r<t.length;r++)if(t[r].extname==e)return t[r];return null},this.updateExtCDPFullURI=function(t,e){var r=this.findExt(t,\"cRLDistributionPoints\");if(null!=r&&null!=r.array)for(var n=r.array,i=0;i<n.length;i++)if(null!=n[i].dpname&&null!=n[i].dpname.full)for(var o=n[i].dpname.full,s=0;s<o.length;s++){var a=o[i];null!=a.uri&&(a.uri=e)}},this.updateExtAIAOCSP=function(t,e){var r=this.findExt(t,\"authorityInfoAccess\");if(null!=r&&null!=r.array)for(var n=r.array,i=0;i<n.length;i++)null!=n[i].ocsp&&(n[i].ocsp=e)},this.updateExtAIACAIssuer=function(t,e){var r=this.findExt(t,\"authorityInfoAccess\");if(null!=r&&null!=r.array)for(var n=r.array,i=0;i<n.length;i++)null!=n[i].caissuer&&(n[i].caissuer=e)},this.dnarraytostr=function(t){return\"/\"+t.map((function(t){return function e(t){return t.map((function(t){return function e(t){return t.type+\"=\"+t.value}(t)})).join(\"+\")}(t)})).join(\"/\")},this.getInfo=function(){var t,e,r,n=function t(e){return JSON.stringify(e.array).replace(/[\\[\\]\\{\\}\\\"]/g,\"\")},i=function t(e){for(var r=\"\",n=e.array,i=0;i<n.length;i++){var o=n[i];if(r+=\"    policy oid: \"+o.policyoid+\"\\n\",void 0!==o.array)for(var s=0;s<o.array.length;s++){var a=o.array[s];void 0!==a.cps&&(r+=\"    cps: \"+a.cps+\"\\n\")}}return r},o=function t(e){for(var r=\"\",n=e.array,i=0;i<n.length;i++){var o=n[i];try{void 0!==o.dpname.full[0].uri&&(r+=\"    \"+o.dpname.full[0].uri+\"\\n\")}catch(t){}try{void 0!==o.dname.full[0].dn.hex&&(r+=\"    \"+on.hex2dn(o.dpname.full[0].dn.hex)+\"\\n\")}catch(t){}}return r},s=function t(e){for(var r=\"\",n=e.array,i=0;i<n.length;i++){var o=n[i];void 0!==o.caissuer&&(r+=\"    caissuer: \"+o.caissuer+\"\\n\"),void 0!==o.ocsp&&(r+=\"    ocsp: \"+o.ocsp+\"\\n\")}return r};if(t=\"Basic Fields\\n\",t+=\"  serial number: \"+this.getSerialNumberHex()+\"\\n\",t+=\"  signature algorithm: \"+this.getSignatureAlgorithmField()+\"\\n\",t+=\"  issuer: \"+this.getIssuerString()+\"\\n\",t+=\"  notBefore: \"+this.getNotBefore()+\"\\n\",t+=\"  notAfter: \"+this.getNotAfter()+\"\\n\",t+=\"  subject: \"+this.getSubjectString()+\"\\n\",t+=\"  subject public key info: \\n\",t+=\"    key algorithm: \"+(e=this.getPublicKey()).type+\"\\n\",\"RSA\"===e.type&&(t+=\"    n=\"+$r(e.n.toString(16)).substr(0,16)+\"...\\n\",t+=\"    e=\"+$r(e.e.toString(16))+\"\\n\"),null!=(r=this.aExtInfo)){t+=\"X509v3 Extensions:\\n\";for(var a=0;a<r.length;a++){var u=r[a],c=br.asn1.x509.OID.oid2name(u.oid);\"\"===c&&(c=u.oid);var h=\"\";if(!0===u.critical&&(h=\"CRITICAL\"),t+=\"  \"+c+\" \"+h+\":\\n\",\"basicConstraints\"===c){var l=this.getExtBasicConstraints();void 0===l.cA?t+=\"    {}\\n\":(t+=\"    cA=true\",void 0!==l.pathLen&&(t+=\", pathLen=\"+l.pathLen),t+=\"\\n\")}else if(\"keyUsage\"===c)t+=\"    \"+this.getExtKeyUsageString()+\"\\n\";else if(\"subjectKeyIdentifier\"===c)t+=\"    \"+this.getExtSubjectKeyIdentifier().kid.hex+\"\\n\";else if(\"authorityKeyIdentifier\"===c){var f=this.getExtAuthorityKeyIdentifier();void 0!==f.kid&&(t+=\"    kid=\"+f.kid.hex+\"\\n\")}else{if(\"extKeyUsage\"===c)t+=\"    \"+this.getExtExtKeyUsage().array.join(\", \")+\"\\n\";else if(\"subjectAltName\"===c)t+=\"    \"+n(this.getExtSubjectAltName())+\"\\n\";else if(\"cRLDistributionPoints\"===c)t+=o(this.getExtCRLDistributionPoints());else if(\"authorityInfoAccess\"===c)t+=s(this.getExtAuthorityInfoAccess());else\"certificatePolicies\"===c&&(t+=i(this.getExtCertificatePolicies()))}}}return t+=\"signature algorithm: \"+this.getSignatureAlgorithmName()+\"\\n\",t+=\"signature: \"+this.getSignatureValueHex().substr(0,16)+\"...\\n\"},\"string\"==typeof t&&(-1!=t.indexOf(\"-----BEGIN\")?this.readCertPEM(t):br.lang.String.isHex(t)&&this.readCertHex(t))}He.prototype.sign=function(t,e){var r=function t(r){return br.crypto.Util.hashString(r,e)}(t);return this.signWithMessageHash(r,e)},He.prototype.signWithMessageHash=function(t,e){var r=je(br.crypto.Util.getPaddedDigestInfoHex(t,e,this.n.bitLength()),16);return en(this.doPrivate(r).toString(16),this.n.bitLength())},He.prototype.signPSS=function(t,e,r){var n=function t(r){return br.crypto.Util.hashHex(r,e)}(Ur(t));return void 0===r&&(r=-1),this.signWithMessageHashPSS(n,e,r)},He.prototype.signWithMessageHashPSS=function(t,e,r){var n,i=Nr(t),o=i.length,s=this.n.bitLength()-1,a=Math.ceil(s/8),u=function t(r){return br.crypto.Util.hashHex(r,e)};if(-1===r||void 0===r)r=o;else if(-2===r)r=a-o-2;else if(r<-2)throw new Error(\"invalid salt length\");if(a<o+r+2)throw new Error(\"data too long\");var c=\"\";r>0&&(c=new Array(r),(new Oe).nextBytes(c),c=String.fromCharCode.apply(String,c));var h=Nr(u(Ur(\"\\0\\0\\0\\0\\0\\0\\0\\0\"+i+c))),l=[];for(n=0;n<a-r-o-2;n+=1)l[n]=0;var f=String.fromCharCode.apply(String,l)+\"\u0001\"+c,g=rn(h,f.length,u),d=[];for(n=0;n<f.length;n+=1)d[n]=f.charCodeAt(n)^g.charCodeAt(n);var p=65280>>8*a-s&255;for(d[0]&=~p,n=0;n<o;n++)d.push(h.charCodeAt(n));return d.push(188),en(this.doPrivate(new F(d)).toString(16),this.n.bitLength())},He.prototype.verify=function(t,e){var r=je(e=(e=e.replace(tn,\"\")).replace(/[ \\n]+/g,\"\"),16);if(r.bitLength()>this.n.bitLength())return 0;var n=nn(this.doPublic(r).toString(16).replace(/^1f+00/,\"\"));if(0==n.length)return!1;var i=n[0];return n[1]==function t(e){return br.crypto.Util.hashString(e,i)}(t)},He.prototype.verifyWithMessageHash=function(t,e){if(e.length!=Math.ceil(this.n.bitLength()/4))return!1;var r=je(e,16);if(r.bitLength()>this.n.bitLength())return 0;var n=nn(this.doPublic(r).toString(16).replace(/^1f+00/,\"\"));if(0==n.length)return!1;n[0];return n[1]==t},He.prototype.verifyPSS=function(t,e,r,n){var i=function t(e){return br.crypto.Util.hashHex(e,r)}(Ur(t));return void 0===n&&(n=-1),this.verifyWithMessageHashPSS(i,e,r,n)},He.prototype.verifyWithMessageHashPSS=function(t,e,r,n){if(e.length!=Math.ceil(this.n.bitLength()/4))return!1;var i,o=new F(e,16),s=function t(e){return br.crypto.Util.hashHex(e,r)},a=Nr(t),u=a.length,c=this.n.bitLength()-1,h=Math.ceil(c/8);if(-1===n||void 0===n)n=u;else if(-2===n)n=h-u-2;else if(n<-2)throw new Error(\"invalid salt length\");if(h<u+n+2)throw new Error(\"data too long\");var l=this.doPublic(o).toByteArray();for(i=0;i<l.length;i+=1)l[i]&=255;for(;l.length<h;)l.unshift(0);if(188!==l[h-1])throw new Error(\"encoded message does not end in 0xbc\");var f=(l=String.fromCharCode.apply(String,l)).substr(0,h-u-1),g=l.substr(f.length,u),d=65280>>8*h-c&255;if(0!=(f.charCodeAt(0)&d))throw new Error(\"bits beyond keysize not zero\");var p=rn(g,f.length,s),v=[];for(i=0;i<f.length;i+=1)v[i]=f.charCodeAt(i)^p.charCodeAt(i);v[0]&=~d;var y=h-u-n-2;for(i=0;i<y;i+=1)if(0!==v[i])throw new Error(\"leftmost octets not zero\");if(1!==v[y])throw new Error(\"0x01 marker not found\");return g===Nr(s(Ur(\"\\0\\0\\0\\0\\0\\0\\0\\0\"+a+String.fromCharCode.apply(String,v.slice(-n)))))},He.SALT_LEN_HLEN=-1,He.SALT_LEN_MAX=-2,He.SALT_LEN_RECOVER=-2,on.hex2dn=function(t,e){if(void 0===e&&(e=0),\"30\"!==t.substr(e,2))throw new Error(\"malformed DN\");for(var r=new Array,n=Er.getChildIdx(t,e),i=0;i<n.length;i++)r.push(on.hex2rdn(t,n[i]));return\"/\"+(r=r.map((function(t){return t.replace(\"/\",\"\\\\/\")}))).join(\"/\")},on.hex2rdn=function(t,e){if(void 0===e&&(e=0),\"31\"!==t.substr(e,2))throw new Error(\"malformed RDN\");for(var r=new Array,n=Er.getChildIdx(t,e),i=0;i<n.length;i++)r.push(on.hex2attrTypeValue(t,n[i]));return(r=r.map((function(t){return t.replace(\"+\",\"\\\\+\")}))).join(\"+\")},on.hex2attrTypeValue=function(t,e){var r=Er,n=r.getV;if(void 0===e&&(e=0),\"30\"!==t.substr(e,2))throw new Error(\"malformed attribute type and value\");var i=r.getChildIdx(t,e);2!==i.length||t.substr(i[0],2);var o=n(t,i[0]),s=br.asn1.ASN1Util.oidHexToInt(o);return br.asn1.x509.OID.oid2atype(s)+\"=\"+Nr(n(t,i[1]))},on.getPublicKeyFromCertHex=function(t){var e=new on;return e.readCertHex(t),e.getPublicKey()},on.getPublicKeyFromCertPEM=function(t){var e=new on;return e.readCertPEM(t),e.getPublicKey()},on.getPublicKeyInfoPropOfCertPEM=function(t){var e,r,n=Er.getVbyList,i={};return i.algparam=null,(e=new on).readCertPEM(t),r=e.getPublicKeyHex(),i.keyhex=n(r,0,[1],\"03\").substr(2),i.algoid=n(r,0,[0,0],\"06\"),\"2a8648ce3d0201\"===i.algoid&&(i.algparam=n(r,0,[0,1],\"06\")),i},on.KEYUSAGE_NAME=[\"digitalSignature\",\"nonRepudiation\",\"keyEncipherment\",\"dataEncipherment\",\"keyAgreement\",\"keyCertSign\",\"cRLSign\",\"encipherOnly\",\"decipherOnly\"],void 0!==br&&br||(e.KJUR=br={}),void 0!==br.jws&&br.jws||(br.jws={}),br.jws.JWS=function(){var t=br.jws.JWS.isSafeJSONString;this.parseJWS=function(e,r){if(void 0===this.parsedJWS||!r&&void 0===this.parsedJWS.sigvalH){var n=e.match(/^([^.]+)\\.([^.]+)\\.([^.]+)$/);if(null==n)throw\"JWS signature is not a form of 'Head.Payload.SigValue'.\";var i=n[1],o=n[2],s=n[3],a=i+\".\"+o;if(this.parsedJWS={},this.parsedJWS.headB64U=i,this.parsedJWS.payloadB64U=o,this.parsedJWS.sigvalB64U=s,this.parsedJWS.si=a,!r){var u=Ir(s),c=je(u,16);this.parsedJWS.sigvalH=u,this.parsedJWS.sigvalBI=c}var h=Fr(i),l=Fr(o);if(this.parsedJWS.headS=h,this.parsedJWS.payloadS=l,!t(h,this.parsedJWS,\"headP\"))throw\"malformed JSON string for JWS Head: \"+h}}},br.jws.JWS.sign=function(t,e,n,i,o){var s,a,u,c=br,h=c.jws.JWS,l=h.readSafeJSONString,f=h.isSafeJSONString,g=c.crypto,d=(g.ECDSA,g.Mac),p=g.Signature,v=JSON;if(\"string\"!=typeof e&&\"object\"!=(void 0===e?\"undefined\":r(e)))throw\"spHeader must be JSON string or object: \"+e;if(\"object\"==(void 0===e?\"undefined\":r(e))&&(a=e,s=v.stringify(a)),\"string\"==typeof e){if(!f(s=e))throw\"JWS Head is not safe JSON string: \"+s;a=l(s)}if(u=n,\"object\"==(void 0===n?\"undefined\":r(n))&&(u=v.stringify(n)),\"\"!=t&&null!=t||void 0===a.alg||(t=a.alg),\"\"!=t&&null!=t&&void 0===a.alg&&(a.alg=t,s=v.stringify(a)),t!==a.alg)throw\"alg and sHeader.alg doesn't match: \"+t+\"!=\"+a.alg;var y=null;if(void 0===h.jwsalg2sigalg[t])throw\"unsupported alg name: \"+t;y=h.jwsalg2sigalg[t];var m=wr(s)+\".\"+wr(u),_=\"\";if(\"Hmac\"==y.substr(0,4)){if(void 0===i)throw\"mac key shall be specified for HS* alg\";var S=new d({alg:y,prov:\"cryptojs\",pass:i});S.updateString(m),_=S.doFinal()}else if(-1!=y.indexOf(\"withECDSA\")){(w=new p({alg:y})).init(i,o),w.updateString(m);var b=w.sign();_=br.crypto.ECDSA.asn1SigToConcatSig(b)}else{var w;if(\"none\"!=y)(w=new p({alg:y})).init(i,o),w.updateString(m),_=w.sign()}return m+\".\"+Rr(_)},br.jws.JWS.verify=function(t,e,n){var i,o=br,s=o.jws.JWS,a=s.readSafeJSONString,u=o.crypto,c=u.ECDSA,h=u.Mac,l=u.Signature;void 0!==r(He)&&(i=He);var f=t.split(\".\");if(3!==f.length)return!1;var g=f[0]+\".\"+f[1],d=Ir(f[2]),p=a(Fr(f[0])),v=null,y=null;if(void 0===p.alg)throw\"algorithm not specified in header\";if((y=(v=p.alg).substr(0,2),null!=n&&\"[object Array]\"===Object.prototype.toString.call(n)&&n.length>0)&&-1==(\":\"+n.join(\":\")+\":\").indexOf(\":\"+v+\":\"))throw\"algorithm '\"+v+\"' not accepted in the list\";if(\"none\"!=v&&null===e)throw\"key shall be specified to verify.\";if(\"string\"==typeof e&&-1!=e.indexOf(\"-----BEGIN \")&&(e=Zr.getKey(e)),!(\"RS\"!=y&&\"PS\"!=y||e instanceof i))throw\"key shall be a RSAKey obj for RS* and PS* algs\";if(\"ES\"==y&&!(e instanceof c))throw\"key shall be a ECDSA obj for ES* algs\";var m=null;if(void 0===s.jwsalg2sigalg[p.alg])throw\"unsupported alg name: \"+v;if(\"none\"==(m=s.jwsalg2sigalg[v]))throw\"not supported\";if(\"Hmac\"==m.substr(0,4)){if(void 0===e)throw\"hexadecimal key shall be specified for HMAC\";var _=new h({alg:m,pass:e});return _.updateString(g),d==_.doFinal()}if(-1!=m.indexOf(\"withECDSA\")){var S,b=null;try{b=c.concatSigToASN1Sig(d)}catch(t){return!1}return(S=new l({alg:m})).init(e),S.updateString(g),S.verify(b)}return(S=new l({alg:m})).init(e),S.updateString(g),S.verify(d)},br.jws.JWS.parse=function(t){var e,r,n,i=t.split(\".\"),o={};if(2!=i.length&&3!=i.length)throw\"malformed sJWS: wrong number of '.' splitted elements\";return e=i[0],r=i[1],3==i.length&&(n=i[2]),o.headerObj=br.jws.JWS.readSafeJSONString(Fr(e)),o.payloadObj=br.jws.JWS.readSafeJSONString(Fr(r)),o.headerPP=JSON.stringify(o.headerObj,null,\"  \"),null==o.payloadObj?o.payloadPP=Fr(r):o.payloadPP=JSON.stringify(o.payloadObj,null,\"  \"),void 0!==n&&(o.sigHex=Ir(n)),o},br.jws.JWS.verifyJWT=function(t,e,n){var i=br.jws,o=i.JWS,s=o.readSafeJSONString,a=o.inArray,u=o.includedArray,c=t.split(\".\"),h=c[0],l=c[1],f=(Ir(c[2]),s(Fr(h))),g=s(Fr(l));if(void 0===f.alg)return!1;if(void 0===n.alg)throw\"acceptField.alg shall be specified\";if(!a(f.alg,n.alg))return!1;if(void 0!==g.iss&&\"object\"===r(n.iss)&&!a(g.iss,n.iss))return!1;if(void 0!==g.sub&&\"object\"===r(n.sub)&&!a(g.sub,n.sub))return!1;if(void 0!==g.aud&&\"object\"===r(n.aud))if(\"string\"==typeof g.aud){if(!a(g.aud,n.aud))return!1}else if(\"object\"==r(g.aud)&&!u(g.aud,n.aud))return!1;var d=i.IntDate.getNow();return void 0!==n.verifyAt&&\"number\"==typeof n.verifyAt&&(d=n.verifyAt),void 0!==n.gracePeriod&&\"number\"==typeof n.gracePeriod||(n.gracePeriod=0),!(void 0!==g.exp&&\"number\"==typeof g.exp&&g.exp+n.gracePeriod<d)&&(!(void 0!==g.nbf&&\"number\"==typeof g.nbf&&d<g.nbf-n.gracePeriod)&&(!(void 0!==g.iat&&\"number\"==typeof g.iat&&d<g.iat-n.gracePeriod)&&((void 0===g.jti||void 0===n.jti||g.jti===n.jti)&&!!o.verify(t,e,n.alg))))},br.jws.JWS.includedArray=function(t,e){var n=br.jws.JWS.inArray;if(null===t)return!1;if(\"object\"!==(void 0===t?\"undefined\":r(t)))return!1;if(\"number\"!=typeof t.length)return!1;for(var i=0;i<t.length;i++)if(!n(t[i],e))return!1;return!0},br.jws.JWS.inArray=function(t,e){if(null===e)return!1;if(\"object\"!==(void 0===e?\"undefined\":r(e)))return!1;if(\"number\"!=typeof e.length)return!1;for(var n=0;n<e.length;n++)if(e[n]==t)return!0;return!1},br.jws.JWS.jwsalg2sigalg={HS256:\"HmacSHA256\",HS384:\"HmacSHA384\",HS512:\"HmacSHA512\",RS256:\"SHA256withRSA\",RS384:\"SHA384withRSA\",RS512:\"SHA512withRSA\",ES256:\"SHA256withECDSA\",ES384:\"SHA384withECDSA\",PS256:\"SHA256withRSAandMGF1\",PS384:\"SHA384withRSAandMGF1\",PS512:\"SHA512withRSAandMGF1\",none:\"none\"},br.jws.JWS.isSafeJSONString=function(t,e,n){var i=null;try{return\"object\"!=(void 0===(i=Sr(t))?\"undefined\":r(i))||i.constructor===Array?0:(e&&(e[n]=i),1)}catch(t){return 0}},br.jws.JWS.readSafeJSONString=function(t){var e=null;try{return\"object\"!=(void 0===(e=Sr(t))?\"undefined\":r(e))||e.constructor===Array?null:e}catch(t){return null}},br.jws.JWS.getEncodedSignatureValueFromJWS=function(t){var e=t.match(/^[^.]+\\.[^.]+\\.([^.]+)$/);if(null==e)throw\"JWS signature is not a form of 'Head.Payload.SigValue'.\";return e[1]},br.jws.JWS.getJWKthumbprint=function(t){if(\"RSA\"!==t.kty&&\"EC\"!==t.kty&&\"oct\"!==t.kty)throw\"unsupported algorithm for JWK Thumprint\";var e=\"{\";if(\"RSA\"===t.kty){if(\"string\"!=typeof t.n||\"string\"!=typeof t.e)throw\"wrong n and e value for RSA key\";e+='\"e\":\"'+t.e+'\",',e+='\"kty\":\"'+t.kty+'\",',e+='\"n\":\"'+t.n+'\"}'}else if(\"EC\"===t.kty){if(\"string\"!=typeof t.crv||\"string\"!=typeof t.x||\"string\"!=typeof t.y)throw\"wrong crv, x and y value for EC key\";e+='\"crv\":\"'+t.crv+'\",',e+='\"kty\":\"'+t.kty+'\",',e+='\"x\":\"'+t.x+'\",',e+='\"y\":\"'+t.y+'\"}'}else if(\"oct\"===t.kty){if(\"string\"!=typeof t.k)throw\"wrong k value for oct(symmetric) key\";e+='\"kty\":\"'+t.kty+'\",',e+='\"k\":\"'+t.k+'\"}'}var r=Ur(e);return Rr(br.crypto.Util.hashHex(r,\"sha256\"))},br.jws.IntDate={},br.jws.IntDate.get=function(t){var e=br.jws.IntDate,r=e.getNow,n=e.getZulu;if(\"now\"==t)return r();if(\"now + 1hour\"==t)return r()+3600;if(\"now + 1day\"==t)return r()+86400;if(\"now + 1month\"==t)return r()+2592e3;if(\"now + 1year\"==t)return r()+31536e3;if(t.match(/Z$/))return n(t);if(t.match(/^[0-9]+$/))return parseInt(t);throw\"unsupported format: \"+t},br.jws.IntDate.getZulu=function(t){return Kr(t)},br.jws.IntDate.getNow=function(){return~~(new Date/1e3)},br.jws.IntDate.intDate2UTCString=function(t){return new Date(1e3*t).toUTCString()},br.jws.IntDate.intDate2Zulu=function(t){var e=new Date(1e3*t);return(\"0000\"+e.getUTCFullYear()).slice(-4)+(\"00\"+(e.getUTCMonth()+1)).slice(-2)+(\"00\"+e.getUTCDate()).slice(-2)+(\"00\"+e.getUTCHours()).slice(-2)+(\"00\"+e.getUTCMinutes()).slice(-2)+(\"00\"+e.getUTCSeconds()).slice(-2)+\"Z\"},e.SecureRandom=Oe,e.rng_seed_time=Ie,e.BigInteger=F,e.RSAKey=He;var sn=br.crypto.EDSA;e.EDSA=sn;var an=br.crypto.DSA;e.DSA=an;var un=br.crypto.Signature;e.Signature=un;var cn=br.crypto.MessageDigest;e.MessageDigest=cn;var hn=br.crypto.Mac;e.Mac=hn;var ln=br.crypto.Cipher;e.Cipher=ln,e.KEYUTIL=Zr,e.ASN1HEX=Er,e.X509=on,e.CryptoJS=y,e.b64tohex=b,e.b64toBA=w,e.stoBA=xr,e.BAtos=Ar,e.BAtohex=kr,e.stohex=Pr,e.stob64=function fn(t){return S(Pr(t))},e.stob64u=function gn(t){return Cr(S(Pr(t)))},e.b64utos=function dn(t){return Ar(w(Tr(t)))},e.b64tob64u=Cr,e.b64utob64=Tr,e.hex2b64=S,e.hextob64u=Rr,e.b64utohex=Ir,e.utf8tob64u=wr,e.b64utoutf8=Fr,e.utf8tob64=function pn(t){return S(qr(Gr(t)))},e.b64toutf8=function vn(t){return decodeURIComponent(Jr(b(t)))},e.utf8tohex=Dr,e.hextoutf8=Lr,e.hextorstr=Nr,e.rstrtohex=Ur,e.hextob64=Br,e.hextob64nl=Or,e.b64nltohex=jr,e.hextopem=Mr,e.pemtohex=Hr,e.hextoArrayBuffer=function yn(t){if(t.length%2!=0)throw\"input is not even length\";if(null==t.match(/^[0-9A-Fa-f]+$/))throw\"input is not hexadecimal\";for(var e=new ArrayBuffer(t.length/2),r=new DataView(e),n=0;n<t.length/2;n++)r.setUint8(n,parseInt(t.substr(2*n,2),16));return e},e.ArrayBuffertohex=function mn(t){for(var e=\"\",r=new DataView(t),n=0;n<t.byteLength;n++)e+=(\"00\"+r.getUint8(n).toString(16)).slice(-2);return e},e.zulutomsec=Vr,e.zulutosec=Kr,e.zulutodate=function _n(t){return new Date(Vr(t))},e.datetozulu=function Sn(t,e,r){var n,i=t.getUTCFullYear();if(e){if(i<1950||2049<i)throw\"not proper year for UTCTime: \"+i;n=(\"\"+i).slice(-2)}else n=(\"000\"+i).slice(-4);if(n+=(\"0\"+(t.getUTCMonth()+1)).slice(-2),n+=(\"0\"+t.getUTCDate()).slice(-2),n+=(\"0\"+t.getUTCHours()).slice(-2),n+=(\"0\"+t.getUTCMinutes()).slice(-2),n+=(\"0\"+t.getUTCSeconds()).slice(-2),r){var o=t.getUTCMilliseconds();0!==o&&(n+=\".\"+(o=(o=(\"00\"+o).slice(-3)).replace(/0+$/g,\"\")))}return n+=\"Z\"},e.uricmptohex=qr,e.hextouricmp=Jr,e.ipv6tohex=Wr,e.hextoipv6=zr,e.hextoip=Yr,e.iptohex=function bn(t){var e=\"malformed IP address\";if(!(t=t.toLowerCase(t)).match(/^[0-9.]+$/)){if(t.match(/^[0-9a-f:]+$/)&&-1!==t.indexOf(\":\"))return Wr(t);throw e}var r=t.split(\".\");if(4!==r.length)throw e;var n=\"\";try{for(var i=0;i<4;i++){n+=(\"0\"+parseInt(r[i]).toString(16)).slice(-2)}return n}catch(t){throw e}},e.encodeURIComponentAll=Gr,e.newline_toUnix=function wn(t){return t=t.replace(/\\r\\n/gm,\"\\n\")},e.newline_toDos=function Fn(t){return t=(t=t.replace(/\\r\\n/gm,\"\\n\")).replace(/\\n/gm,\"\\r\\n\")},e.hextoposhex=$r,e.intarystrtohex=function En(t){t=(t=(t=t.replace(/^\\s*\\[\\s*/,\"\")).replace(/\\s*\\]\\s*$/,\"\")).replace(/\\s*/g,\"\");try{return t.split(/,/).map((function(t,e,r){var n=parseInt(t);if(n<0||255<n)throw\"integer not in range 0-255\";return(\"00\"+n.toString(16)).slice(-2)})).join(\"\")}catch(t){throw\"malformed integer array string: \"+t}},e.strdiffidx=function t(e,r){var n=e.length;e.length>r.length&&(n=r.length);for(var i=0;i<n;i++)if(e.charCodeAt(i)!=r.charCodeAt(i))return i;return e.length!=r.length?n:-1},e.KJUR=br;var xn=br.crypto;e.crypto=xn;var An=br.asn1;e.asn1=An;var kn=br.jws;e.jws=kn;var Pn=br.lang;e.lang=Pn}).call(this,r(28).Buffer)},function(t,e,r){\"use strict\";(function(t){\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <http://feross.org>\n * @license  MIT\n */\nvar n=r(30),i=r(31),o=r(32);function s(){return u.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(t,e){if(s()<e)throw new RangeError(\"Invalid typed array length\");return u.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e)).__proto__=u.prototype:(null===t&&(t=new u(e)),t.length=e),t}function u(t,e,r){if(!(u.TYPED_ARRAY_SUPPORT||this instanceof u))return new u(t,e,r);if(\"number\"==typeof t){if(\"string\"==typeof e)throw new Error(\"If encoding is specified then the first argument must be a string\");return l(this,t)}return c(this,t,e,r)}function c(t,e,r,n){if(\"number\"==typeof e)throw new TypeError('\"value\" argument must not be a number');return\"undefined\"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?function i(t,e,r,n){if(e.byteLength,r<0||e.byteLength<r)throw new RangeError(\"'offset' is out of bounds\");if(e.byteLength<r+(n||0))throw new RangeError(\"'length' is out of bounds\");e=void 0===r&&void 0===n?new Uint8Array(e):void 0===n?new Uint8Array(e,r):new Uint8Array(e,r,n);u.TYPED_ARRAY_SUPPORT?(t=e).__proto__=u.prototype:t=f(t,e);return t}(t,e,r,n):\"string\"==typeof e?function s(t,e,r){\"string\"==typeof r&&\"\"!==r||(r=\"utf8\");if(!u.isEncoding(r))throw new TypeError('\"encoding\" must be a valid string encoding');var n=0|d(e,r),i=(t=a(t,n)).write(e,r);i!==n&&(t=t.slice(0,i));return t}(t,e,r):function c(t,e){if(u.isBuffer(e)){var r=0|g(e.length);return 0===(t=a(t,r)).length||e.copy(t,0,0,r),t}if(e){if(\"undefined\"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||\"length\"in e)return\"number\"!=typeof e.length||function n(t){return t!=t}(e.length)?a(t,0):f(t,e);if(\"Buffer\"===e.type&&o(e.data))return f(t,e.data)}throw new TypeError(\"First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.\")}(t,e)}function h(t){if(\"number\"!=typeof t)throw new TypeError('\"size\" argument must be a number');if(t<0)throw new RangeError('\"size\" argument must not be negative')}function l(t,e){if(h(e),t=a(t,e<0?0:0|g(e)),!u.TYPED_ARRAY_SUPPORT)for(var r=0;r<e;++r)t[r]=0;return t}function f(t,e){var r=e.length<0?0:0|g(e.length);t=a(t,r);for(var n=0;n<r;n+=1)t[n]=255&e[n];return t}function g(t){if(t>=s())throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+s().toString(16)+\" bytes\");return 0|t}function d(t,e){if(u.isBuffer(t))return t.length;if(\"undefined\"!=typeof ArrayBuffer&&\"function\"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;\"string\"!=typeof t&&(t=\"\"+t);var r=t.length;if(0===r)return 0;for(var n=!1;;)switch(e){case\"ascii\":case\"latin1\":case\"binary\":return r;case\"utf8\":case\"utf-8\":case void 0:return K(t).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*r;case\"hex\":return r>>>1;case\"base64\":return q(t).length;default:if(n)return K(t).length;e=(\"\"+e).toLowerCase(),n=!0}}function p(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return\"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return\"\";if((r>>>=0)<=(e>>>=0))return\"\";for(t||(t=\"utf8\");;)switch(t){case\"hex\":return I(this,e,r);case\"utf8\":case\"utf-8\":return A(this,e,r);case\"ascii\":return T(this,e,r);case\"latin1\":case\"binary\":return R(this,e,r);case\"base64\":return x(this,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return D(this,e,r);default:if(n)throw new TypeError(\"Unknown encoding: \"+t);t=(t+\"\").toLowerCase(),n=!0}}function v(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function y(t,e,r,n,i){if(0===t.length)return-1;if(\"string\"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if(\"string\"==typeof e&&(e=u.from(e,n)),u.isBuffer(e))return 0===e.length?-1:m(t,e,r,n,i);if(\"number\"==typeof e)return e&=255,u.TYPED_ARRAY_SUPPORT&&\"function\"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):m(t,[e],r,n,i);throw new TypeError(\"val must be string, number or Buffer\")}function m(t,e,r,n,i){var o,s=1,a=t.length,u=e.length;if(void 0!==n&&(\"ucs2\"===(n=String(n).toLowerCase())||\"ucs-2\"===n||\"utf16le\"===n||\"utf-16le\"===n)){if(t.length<2||e.length<2)return-1;s=2,a/=2,u/=2,r/=2}function c(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(i){var h=-1;for(o=r;o<a;o++)if(c(t,o)===c(e,-1===h?0:o-h)){if(-1===h&&(h=o),o-h+1===u)return h*s}else-1!==h&&(o-=o-h),h=-1}else for(r+u>a&&(r=a-u),o=r;o>=0;o--){for(var l=!0,f=0;f<u;f++)if(c(t,o+f)!==c(e,f)){l=!1;break}if(l)return o}return-1}function _(t,e,r,n){r=Number(r)||0;var i=t.length-r;n?(n=Number(n))>i&&(n=i):n=i;var o=e.length;if(o%2!=0)throw new TypeError(\"Invalid hex string\");n>o/2&&(n=o/2);for(var s=0;s<n;++s){var a=parseInt(e.substr(2*s,2),16);if(isNaN(a))return s;t[r+s]=a}return s}function S(t,e,r,n){return J(K(e,t.length-r),t,r,n)}function b(t,e,r,n){return J(function i(t){for(var e=[],r=0;r<t.length;++r)e.push(255&t.charCodeAt(r));return e}(e),t,r,n)}function w(t,e,r,n){return b(t,e,r,n)}function F(t,e,r,n){return J(q(e),t,r,n)}function E(t,e,r,n){return J(function i(t,e){for(var r,n,i,o=[],s=0;s<t.length&&!((e-=2)<0);++s)n=(r=t.charCodeAt(s))>>8,i=r%256,o.push(i),o.push(n);return o}(e,t.length-r),t,r,n)}function x(t,e,r){return 0===e&&r===t.length?n.fromByteArray(t):n.fromByteArray(t.slice(e,r))}function A(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i<r;){var o,s,a,u,c=t[i],h=null,l=c>239?4:c>223?3:c>191?2:1;if(i+l<=r)switch(l){case 1:c<128&&(h=c);break;case 2:128==(192&(o=t[i+1]))&&(u=(31&c)<<6|63&o)>127&&(h=u);break;case 3:o=t[i+1],s=t[i+2],128==(192&o)&&128==(192&s)&&(u=(15&c)<<12|(63&o)<<6|63&s)>2047&&(u<55296||u>57343)&&(h=u);break;case 4:o=t[i+1],s=t[i+2],a=t[i+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&(u=(15&c)<<18|(63&o)<<12|(63&s)<<6|63&a)>65535&&u<1114112&&(h=u)}null===h?(h=65533,l=1):h>65535&&(h-=65536,n.push(h>>>10&1023|55296),h=56320|1023&h),n.push(h),i+=l}return function f(t){var e=t.length;if(e<=C)return String.fromCharCode.apply(String,t);var r=\"\",n=0;for(;n<e;)r+=String.fromCharCode.apply(String,t.slice(n,n+=C));return r}(n)}e.Buffer=u,e.SlowBuffer=function k(t){+t!=t&&(t=0);return u.alloc(+t)},e.INSPECT_MAX_BYTES=50,u.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:function P(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&\"function\"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(t){return!1}}(),e.kMaxLength=s(),u.poolSize=8192,u._augment=function(t){return t.__proto__=u.prototype,t},u.from=function(t,e,r){return c(null,t,e,r)},u.TYPED_ARRAY_SUPPORT&&(u.prototype.__proto__=Uint8Array.prototype,u.__proto__=Uint8Array,\"undefined\"!=typeof Symbol&&Symbol.species&&u[Symbol.species]===u&&Object.defineProperty(u,Symbol.species,{value:null,configurable:!0})),u.alloc=function(t,e,r){return function n(t,e,r,i){return h(e),e<=0?a(t,e):void 0!==r?\"string\"==typeof i?a(t,e).fill(r,i):a(t,e).fill(r):a(t,e)}(null,t,e,r)},u.allocUnsafe=function(t){return l(null,t)},u.allocUnsafeSlow=function(t){return l(null,t)},u.isBuffer=function t(e){return!(null==e||!e._isBuffer)},u.compare=function t(e,r){if(!u.isBuffer(e)||!u.isBuffer(r))throw new TypeError(\"Arguments must be Buffers\");if(e===r)return 0;for(var n=e.length,i=r.length,o=0,s=Math.min(n,i);o<s;++o)if(e[o]!==r[o]){n=e[o],i=r[o];break}return n<i?-1:i<n?1:0},u.isEncoding=function t(e){switch(String(e).toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"latin1\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return!0;default:return!1}},u.concat=function t(e,r){if(!o(e))throw new TypeError('\"list\" argument must be an Array of Buffers');if(0===e.length)return u.alloc(0);var n;if(void 0===r)for(r=0,n=0;n<e.length;++n)r+=e[n].length;var i=u.allocUnsafe(r),s=0;for(n=0;n<e.length;++n){var a=e[n];if(!u.isBuffer(a))throw new TypeError('\"list\" argument must be an Array of Buffers');a.copy(i,s),s+=a.length}return i},u.byteLength=d,u.prototype._isBuffer=!0,u.prototype.swap16=function t(){var e=this.length;if(e%2!=0)throw new RangeError(\"Buffer size must be a multiple of 16-bits\");for(var r=0;r<e;r+=2)v(this,r,r+1);return this},u.prototype.swap32=function t(){var e=this.length;if(e%4!=0)throw new RangeError(\"Buffer size must be a multiple of 32-bits\");for(var r=0;r<e;r+=4)v(this,r,r+3),v(this,r+1,r+2);return this},u.prototype.swap64=function t(){var e=this.length;if(e%8!=0)throw new RangeError(\"Buffer size must be a multiple of 64-bits\");for(var r=0;r<e;r+=8)v(this,r,r+7),v(this,r+1,r+6),v(this,r+2,r+5),v(this,r+3,r+4);return this},u.prototype.toString=function t(){var e=0|this.length;return 0===e?\"\":0===arguments.length?A(this,0,e):p.apply(this,arguments)},u.prototype.equals=function t(e){if(!u.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");return this===e||0===u.compare(this,e)},u.prototype.inspect=function t(){var r=\"\",n=e.INSPECT_MAX_BYTES;return this.length>0&&(r=this.toString(\"hex\",0,n).match(/.{2}/g).join(\" \"),this.length>n&&(r+=\" ... \")),\"<Buffer \"+r+\">\"},u.prototype.compare=function t(e,r,n,i,o){if(!u.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");if(void 0===r&&(r=0),void 0===n&&(n=e?e.length:0),void 0===i&&(i=0),void 0===o&&(o=this.length),r<0||n>e.length||i<0||o>this.length)throw new RangeError(\"out of range index\");if(i>=o&&r>=n)return 0;if(i>=o)return-1;if(r>=n)return 1;if(this===e)return 0;for(var s=(o>>>=0)-(i>>>=0),a=(n>>>=0)-(r>>>=0),c=Math.min(s,a),h=this.slice(i,o),l=e.slice(r,n),f=0;f<c;++f)if(h[f]!==l[f]){s=h[f],a=l[f];break}return s<a?-1:a<s?1:0},u.prototype.includes=function t(e,r,n){return-1!==this.indexOf(e,r,n)},u.prototype.indexOf=function t(e,r,n){return y(this,e,r,n,!0)},u.prototype.lastIndexOf=function t(e,r,n){return y(this,e,r,n,!1)},u.prototype.write=function t(e,r,n,i){if(void 0===r)i=\"utf8\",n=this.length,r=0;else if(void 0===n&&\"string\"==typeof r)i=r,n=this.length,r=0;else{if(!isFinite(r))throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");r|=0,isFinite(n)?(n|=0,void 0===i&&(i=\"utf8\")):(i=n,n=void 0)}var o=this.length-r;if((void 0===n||n>o)&&(n=o),e.length>0&&(n<0||r<0)||r>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");i||(i=\"utf8\");for(var s=!1;;)switch(i){case\"hex\":return _(this,e,r,n);case\"utf8\":case\"utf-8\":return S(this,e,r,n);case\"ascii\":return b(this,e,r,n);case\"latin1\":case\"binary\":return w(this,e,r,n);case\"base64\":return F(this,e,r,n);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return E(this,e,r,n);default:if(s)throw new TypeError(\"Unknown encoding: \"+i);i=(\"\"+i).toLowerCase(),s=!0}},u.prototype.toJSON=function t(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};var C=4096;function T(t,e,r){var n=\"\";r=Math.min(t.length,r);for(var i=e;i<r;++i)n+=String.fromCharCode(127&t[i]);return n}function R(t,e,r){var n=\"\";r=Math.min(t.length,r);for(var i=e;i<r;++i)n+=String.fromCharCode(t[i]);return n}function I(t,e,r){var n=t.length;(!e||e<0)&&(e=0),(!r||r<0||r>n)&&(r=n);for(var i=\"\",o=e;o<r;++o)i+=V(t[o]);return i}function D(t,e,r){for(var n=t.slice(e,r),i=\"\",o=0;o<n.length;o+=2)i+=String.fromCharCode(n[o]+256*n[o+1]);return i}function L(t,e,r){if(t%1!=0||t<0)throw new RangeError(\"offset is not uint\");if(t+e>r)throw new RangeError(\"Trying to access beyond buffer length\")}function N(t,e,r,n,i,o){if(!u.isBuffer(t))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(e>i||e<o)throw new RangeError('\"value\" argument is out of bounds');if(r+n>t.length)throw new RangeError(\"Index out of range\")}function U(t,e,r,n){e<0&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-r,2);i<o;++i)t[r+i]=(e&255<<8*(n?i:1-i))>>>8*(n?i:1-i)}function B(t,e,r,n){e<0&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-r,4);i<o;++i)t[r+i]=e>>>8*(n?i:3-i)&255}function O(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function j(t,e,r,n,o){return o||O(t,0,r,4),i.write(t,e,r,n,23,4),r+4}function M(t,e,r,n,o){return o||O(t,0,r,8),i.write(t,e,r,n,52,8),r+8}u.prototype.slice=function t(e,r){var n,i=this.length;if((e=~~e)<0?(e+=i)<0&&(e=0):e>i&&(e=i),(r=void 0===r?i:~~r)<0?(r+=i)<0&&(r=0):r>i&&(r=i),r<e&&(r=e),u.TYPED_ARRAY_SUPPORT)(n=this.subarray(e,r)).__proto__=u.prototype;else{var o=r-e;n=new u(o,void 0);for(var s=0;s<o;++s)n[s]=this[s+e]}return n},u.prototype.readUIntLE=function t(e,r,n){e|=0,r|=0,n||L(e,r,this.length);for(var i=this[e],o=1,s=0;++s<r&&(o*=256);)i+=this[e+s]*o;return i},u.prototype.readUIntBE=function t(e,r,n){e|=0,r|=0,n||L(e,r,this.length);for(var i=this[e+--r],o=1;r>0&&(o*=256);)i+=this[e+--r]*o;return i},u.prototype.readUInt8=function t(e,r){return r||L(e,1,this.length),this[e]},u.prototype.readUInt16LE=function t(e,r){return r||L(e,2,this.length),this[e]|this[e+1]<<8},u.prototype.readUInt16BE=function t(e,r){return r||L(e,2,this.length),this[e]<<8|this[e+1]},u.prototype.readUInt32LE=function t(e,r){return r||L(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},u.prototype.readUInt32BE=function t(e,r){return r||L(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},u.prototype.readIntLE=function t(e,r,n){e|=0,r|=0,n||L(e,r,this.length);for(var i=this[e],o=1,s=0;++s<r&&(o*=256);)i+=this[e+s]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*r)),i},u.prototype.readIntBE=function t(e,r,n){e|=0,r|=0,n||L(e,r,this.length);for(var i=r,o=1,s=this[e+--i];i>0&&(o*=256);)s+=this[e+--i]*o;return s>=(o*=128)&&(s-=Math.pow(2,8*r)),s},u.prototype.readInt8=function t(e,r){return r||L(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},u.prototype.readInt16LE=function t(e,r){r||L(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt16BE=function t(e,r){r||L(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt32LE=function t(e,r){return r||L(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},u.prototype.readInt32BE=function t(e,r){return r||L(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},u.prototype.readFloatLE=function t(e,r){return r||L(e,4,this.length),i.read(this,e,!0,23,4)},u.prototype.readFloatBE=function t(e,r){return r||L(e,4,this.length),i.read(this,e,!1,23,4)},u.prototype.readDoubleLE=function t(e,r){return r||L(e,8,this.length),i.read(this,e,!0,52,8)},u.prototype.readDoubleBE=function t(e,r){return r||L(e,8,this.length),i.read(this,e,!1,52,8)},u.prototype.writeUIntLE=function t(e,r,n,i){(e=+e,r|=0,n|=0,i)||N(this,e,r,n,Math.pow(2,8*n)-1,0);var o=1,s=0;for(this[r]=255&e;++s<n&&(o*=256);)this[r+s]=e/o&255;return r+n},u.prototype.writeUIntBE=function t(e,r,n,i){(e=+e,r|=0,n|=0,i)||N(this,e,r,n,Math.pow(2,8*n)-1,0);var o=n-1,s=1;for(this[r+o]=255&e;--o>=0&&(s*=256);)this[r+o]=e/s&255;return r+n},u.prototype.writeUInt8=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,1,255,0),u.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[r]=255&e,r+1},u.prototype.writeUInt16LE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[r]=255&e,this[r+1]=e>>>8):U(this,e,r,!0),r+2},u.prototype.writeUInt16BE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[r]=e>>>8,this[r+1]=255&e):U(this,e,r,!1),r+2},u.prototype.writeUInt32LE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[r+3]=e>>>24,this[r+2]=e>>>16,this[r+1]=e>>>8,this[r]=255&e):B(this,e,r,!0),r+4},u.prototype.writeUInt32BE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=255&e):B(this,e,r,!1),r+4},u.prototype.writeIntLE=function t(e,r,n,i){if(e=+e,r|=0,!i){var o=Math.pow(2,8*n-1);N(this,e,r,n,o-1,-o)}var s=0,a=1,u=0;for(this[r]=255&e;++s<n&&(a*=256);)e<0&&0===u&&0!==this[r+s-1]&&(u=1),this[r+s]=(e/a>>0)-u&255;return r+n},u.prototype.writeIntBE=function t(e,r,n,i){if(e=+e,r|=0,!i){var o=Math.pow(2,8*n-1);N(this,e,r,n,o-1,-o)}var s=n-1,a=1,u=0;for(this[r+s]=255&e;--s>=0&&(a*=256);)e<0&&0===u&&0!==this[r+s+1]&&(u=1),this[r+s]=(e/a>>0)-u&255;return r+n},u.prototype.writeInt8=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,1,127,-128),u.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[r]=255&e,r+1},u.prototype.writeInt16LE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[r]=255&e,this[r+1]=e>>>8):U(this,e,r,!0),r+2},u.prototype.writeInt16BE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[r]=e>>>8,this[r+1]=255&e):U(this,e,r,!1),r+2},u.prototype.writeInt32LE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,4,2147483647,-2147483648),u.TYPED_ARRAY_SUPPORT?(this[r]=255&e,this[r+1]=e>>>8,this[r+2]=e>>>16,this[r+3]=e>>>24):B(this,e,r,!0),r+4},u.prototype.writeInt32BE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),u.TYPED_ARRAY_SUPPORT?(this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=255&e):B(this,e,r,!1),r+4},u.prototype.writeFloatLE=function t(e,r,n){return j(this,e,r,!0,n)},u.prototype.writeFloatBE=function t(e,r,n){return j(this,e,r,!1,n)},u.prototype.writeDoubleLE=function t(e,r,n){return M(this,e,r,!0,n)},u.prototype.writeDoubleBE=function t(e,r,n){return M(this,e,r,!1,n)},u.prototype.copy=function t(e,r,n,i){if(n||(n=0),i||0===i||(i=this.length),r>=e.length&&(r=e.length),r||(r=0),i>0&&i<n&&(i=n),i===n)return 0;if(0===e.length||0===this.length)return 0;if(r<0)throw new RangeError(\"targetStart out of bounds\");if(n<0||n>=this.length)throw new RangeError(\"sourceStart out of bounds\");if(i<0)throw new RangeError(\"sourceEnd out of bounds\");i>this.length&&(i=this.length),e.length-r<i-n&&(i=e.length-r+n);var o,s=i-n;if(this===e&&n<r&&r<i)for(o=s-1;o>=0;--o)e[o+r]=this[o+n];else if(s<1e3||!u.TYPED_ARRAY_SUPPORT)for(o=0;o<s;++o)e[o+r]=this[o+n];else Uint8Array.prototype.set.call(e,this.subarray(n,n+s),r);return s},u.prototype.fill=function t(e,r,n,i){if(\"string\"==typeof e){if(\"string\"==typeof r?(i=r,r=0,n=this.length):\"string\"==typeof n&&(i=n,n=this.length),1===e.length){var o=e.charCodeAt(0);o<256&&(e=o)}if(void 0!==i&&\"string\"!=typeof i)throw new TypeError(\"encoding must be a string\");if(\"string\"==typeof i&&!u.isEncoding(i))throw new TypeError(\"Unknown encoding: \"+i)}else\"number\"==typeof e&&(e&=255);if(r<0||this.length<r||this.length<n)throw new RangeError(\"Out of range index\");if(n<=r)return this;var s;if(r>>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),\"number\"==typeof e)for(s=r;s<n;++s)this[s]=e;else{var a=u.isBuffer(e)?e:K(new u(e,i).toString()),c=a.length;for(s=0;s<n-r;++s)this[s+r]=a[s%c]}return this};var H=/[^+\\/0-9A-Za-z-_]/g;function V(t){return t<16?\"0\"+t.toString(16):t.toString(16)}function K(t,e){var r;e=e||1/0;for(var n=t.length,i=null,o=[],s=0;s<n;++s){if((r=t.charCodeAt(s))>55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(s+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error(\"Invalid code point\");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function q(t){return n.toByteArray(function e(t){if((t=function e(t){return t.trim?t.trim():t.replace(/^\\s+|\\s+$/g,\"\")}(t).replace(H,\"\")).length<2)return\"\";for(;t.length%4!=0;)t+=\"=\";return t}(t))}function J(t,e,r,n){for(var i=0;i<n&&!(i+r>=e.length||i>=t.length);++i)e[i+r]=t[i];return i}}).call(this,r(29))},function(t,e){var r;r=function(){return this}();try{r=r||new Function(\"return this\")()}catch(t){\"object\"==typeof window&&(r=window)}t.exports=r},function(t,e,r){\"use strict\";e.byteLength=function n(t){var e=f(t),r=e[0],n=e[1];return 3*(r+n)/4-n},e.toByteArray=function i(t){var e,r,n=f(t),i=n[0],o=n[1],s=new u(function c(t,e,r){return 3*(e+r)/4-r}(0,i,o)),h=0,l=o>0?i-4:i;for(r=0;r<l;r+=4)e=a[t.charCodeAt(r)]<<18|a[t.charCodeAt(r+1)]<<12|a[t.charCodeAt(r+2)]<<6|a[t.charCodeAt(r+3)],s[h++]=e>>16&255,s[h++]=e>>8&255,s[h++]=255&e;2===o&&(e=a[t.charCodeAt(r)]<<2|a[t.charCodeAt(r+1)]>>4,s[h++]=255&e);1===o&&(e=a[t.charCodeAt(r)]<<10|a[t.charCodeAt(r+1)]<<4|a[t.charCodeAt(r+2)]>>2,s[h++]=e>>8&255,s[h++]=255&e);return s},e.fromByteArray=function o(t){for(var e,r=t.length,n=r%3,i=[],o=16383,a=0,u=r-n;a<u;a+=o)i.push(g(t,a,a+o>u?u:a+o));1===n?(e=t[r-1],i.push(s[e>>2]+s[e<<4&63]+\"==\")):2===n&&(e=(t[r-2]<<8)+t[r-1],i.push(s[e>>10]+s[e>>4&63]+s[e<<2&63]+\"=\"));return i.join(\"\")};for(var s=[],a=[],u=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,c=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",h=0,l=c.length;h<l;++h)s[h]=c[h],a[c.charCodeAt(h)]=h;function f(t){var e=t.length;if(e%4>0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var r=t.indexOf(\"=\");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function g(t,e,r){for(var n,i,o=[],a=e;a<r;a+=3)n=(t[a]<<16&16711680)+(t[a+1]<<8&65280)+(255&t[a+2]),o.push(s[(i=n)>>18&63]+s[i>>12&63]+s[i>>6&63]+s[63&i]);return o.join(\"\")}a[\"-\".charCodeAt(0)]=62,a[\"_\".charCodeAt(0)]=63},function(t,e){\n/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\ne.read=function(t,e,r,n,i){var o,s,a=8*i-n-1,u=(1<<a)-1,c=u>>1,h=-7,l=r?i-1:0,f=r?-1:1,g=t[e+l];for(l+=f,o=g&(1<<-h)-1,g>>=-h,h+=a;h>0;o=256*o+t[e+l],l+=f,h-=8);for(s=o&(1<<-h)-1,o>>=-h,h+=n;h>0;s=256*s+t[e+l],l+=f,h-=8);if(0===o)o=1-c;else{if(o===u)return s?NaN:1/0*(g?-1:1);s+=Math.pow(2,n),o-=c}return(g?-1:1)*s*Math.pow(2,o-n)},e.write=function(t,e,r,n,i,o){var s,a,u,c=8*o-i-1,h=(1<<c)-1,l=h>>1,f=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,g=n?0:o-1,d=n?1:-1,p=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=h):(s=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-s))<1&&(s--,u*=2),(e+=s+l>=1?f/u:f*Math.pow(2,1-l))*u>=2&&(s++,u/=2),s+l>=h?(a=0,s=h):s+l>=1?(a=(e*u-1)*Math.pow(2,i),s+=l):(a=e*Math.pow(2,l-1)*Math.pow(2,i),s=0));i>=8;t[r+g]=255&a,g+=d,a/=256,i-=8);for(s=s<<i|a,c+=i;c>0;t[r+g]=255&s,g+=d,s/=256,c-=8);t[r+g-d]|=128*p}},function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return\"[object Array]\"==r.call(t)}},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=function n(t){var e=t.jws,r=t.KeyUtil,n=t.X509,o=t.crypto,s=t.hextob64u,a=t.b64tohex,u=t.AllowedSigningAlgs;return function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t.parseJwt=function t(r){i.Log.debug(\"JoseUtil.parseJwt\");try{var n=e.JWS.parse(r);return{header:n.headerObj,payload:n.payloadObj}}catch(t){i.Log.error(t)}},t.validateJwt=function e(o,s,u,c,h,l,f){i.Log.debug(\"JoseUtil.validateJwt\");try{if(\"RSA\"===s.kty)if(s.e&&s.n)s=r.getKey(s);else{if(!s.x5c||!s.x5c.length)return i.Log.error(\"JoseUtil.validateJwt: RSA key missing key material\",s),Promise.reject(new Error(\"RSA key missing key material\"));var g=a(s.x5c[0]);s=n.getPublicKeyFromCertHex(g)}else{if(\"EC\"!==s.kty)return i.Log.error(\"JoseUtil.validateJwt: Unsupported key type\",s&&s.kty),Promise.reject(new Error(s.kty));if(!(s.crv&&s.x&&s.y))return i.Log.error(\"JoseUtil.validateJwt: EC key missing key material\",s),Promise.reject(new Error(\"EC key missing key material\"));s=r.getKey(s)}return t._validateJwt(o,s,u,c,h,l,f)}catch(t){return i.Log.error(t&&t.message||t),Promise.reject(\"JWT validation failed\")}},t.validateJwtAttributes=function e(r,n,o,s,a,u){s||(s=0),a||(a=parseInt(Date.now()/1e3));var c=t.parseJwt(r).payload;if(!c.iss)return i.Log.error(\"JoseUtil._validateJwt: issuer was not provided\"),Promise.reject(new Error(\"issuer was not provided\"));if(c.iss!==n)return i.Log.error(\"JoseUtil._validateJwt: Invalid issuer in token\",c.iss),Promise.reject(new Error(\"Invalid issuer in token: \"+c.iss));if(!c.aud)return i.Log.error(\"JoseUtil._validateJwt: aud was not provided\"),Promise.reject(new Error(\"aud was not provided\"));if(!(c.aud===o||Array.isArray(c.aud)&&c.aud.indexOf(o)>=0))return i.Log.error(\"JoseUtil._validateJwt: Invalid audience in token\",c.aud),Promise.reject(new Error(\"Invalid audience in token: \"+c.aud));if(c.azp&&c.azp!==o)return i.Log.error(\"JoseUtil._validateJwt: Invalid azp in token\",c.azp),Promise.reject(new Error(\"Invalid azp in token: \"+c.azp));if(!u){var h=a+s,l=a-s;if(!c.iat)return i.Log.error(\"JoseUtil._validateJwt: iat was not provided\"),Promise.reject(new Error(\"iat was not provided\"));if(h<c.iat)return i.Log.error(\"JoseUtil._validateJwt: iat is in the future\",c.iat),Promise.reject(new Error(\"iat is in the future: \"+c.iat));if(c.nbf&&h<c.nbf)return i.Log.error(\"JoseUtil._validateJwt: nbf is in the future\",c.nbf),Promise.reject(new Error(\"nbf is in the future: \"+c.nbf));if(!c.exp)return i.Log.error(\"JoseUtil._validateJwt: exp was not provided\"),Promise.reject(new Error(\"exp was not provided\"));if(c.exp<l)return i.Log.error(\"JoseUtil._validateJwt: exp is in the past\",c.exp),Promise.reject(new Error(\"exp is in the past:\"+c.exp))}return Promise.resolve(c)},t._validateJwt=function r(n,o,s,a,c,h,l){return t.validateJwtAttributes(n,s,a,c,h,l).then((function(t){try{return e.JWS.verify(n,o,u)?t:(i.Log.error(\"JoseUtil._validateJwt: signature validation failed\"),Promise.reject(new Error(\"signature validation failed\")))}catch(t){return i.Log.error(t&&t.message||t),Promise.reject(new Error(\"signature validation failed\"))}}))},t.hashString=function t(e,r){try{return o.Util.hashString(e,r)}catch(t){i.Log.error(t)}},t.hexToBase64Url=function t(e){try{return s(e)}catch(t){i.Log.error(t)}},t}()};var i=r(0);t.exports=e.default},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SigninResponse=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(3);function o(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.SigninResponse=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"#\";o(this,t);var n=i.UrlUtility.parseUrlFragment(e,r);this.error=n.error,this.error_description=n.error_description,this.error_uri=n.error_uri,this.code=n.code,this.state=n.state,this.id_token=n.id_token,this.session_state=n.session_state,this.access_token=n.access_token,this.token_type=n.token_type,this.scope=n.scope,this.profile=void 0,this.expires_in=n.expires_in}return n(t,[{key:\"expires_in\",get:function t(){if(this.expires_at){var e=parseInt(Date.now()/1e3);return this.expires_at-e}},set:function t(e){var r=parseInt(e);if(\"number\"==typeof r&&r>0){var n=parseInt(Date.now()/1e3);this.expires_at=n+r}}},{key:\"expired\",get:function t(){var e=this.expires_in;if(void 0!==e)return e<=0}},{key:\"scopes\",get:function t(){return(this.scope||\"\").split(\" \")}},{key:\"isOpenIdConnect\",get:function t(){return this.scopes.indexOf(\"openid\")>=0||!!this.id_token}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SignoutRequest=void 0;var n=r(0),i=r(3),o=r(9);e.SignoutRequest=function t(e){var r=e.url,s=e.id_token_hint,a=e.post_logout_redirect_uri,u=e.data,c=e.extraQueryParams,h=e.request_type;if(function l(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),!r)throw n.Log.error(\"SignoutRequest.ctor: No url passed\"),new Error(\"url\");for(var f in s&&(r=i.UrlUtility.addQueryParam(r,\"id_token_hint\",s)),a&&(r=i.UrlUtility.addQueryParam(r,\"post_logout_redirect_uri\",a),u&&(this.state=new o.State({data:u,request_type:h}),r=i.UrlUtility.addQueryParam(r,\"state\",this.state.id))),c)r=i.UrlUtility.addQueryParam(r,f,c[f]);this.url=r}},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SignoutResponse=void 0;var n=r(3);e.SignoutResponse=function t(e){!function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t);var i=n.UrlUtility.parseUrlFragment(e,\"?\");this.error=i.error,this.error_description=i.error_description,this.error_uri=i.error_uri,this.state=i.state}},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.InMemoryWebStorage=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0);e.InMemoryWebStorage=function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this._data={}}return t.prototype.getItem=function t(e){return i.Log.debug(\"InMemoryWebStorage.getItem\",e),this._data[e]},t.prototype.setItem=function t(e,r){i.Log.debug(\"InMemoryWebStorage.setItem\",e),this._data[e]=r},t.prototype.removeItem=function t(e){i.Log.debug(\"InMemoryWebStorage.removeItem\",e),delete this._data[e]},t.prototype.key=function t(e){return Object.getOwnPropertyNames(this._data)[e]},n(t,[{key:\"length\",get:function t(){return Object.getOwnPropertyNames(this._data).length}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UserManager=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0),o=r(10),s=r(39),a=r(15),u=r(45),c=r(47),h=r(18),l=r(8),f=r(20),g=r(11),d=r(4);function p(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function v(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}e.UserManager=function(t){function e(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:c.SilentRenewService,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:h.SessionMonitor,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:f.TokenRevocationClient,l=arguments.length>4&&void 0!==arguments[4]?arguments[4]:g.TokenClient,y=arguments.length>5&&void 0!==arguments[5]?arguments[5]:d.JoseUtil;p(this,e),r instanceof s.UserManagerSettings||(r=new s.UserManagerSettings(r));var m=v(this,t.call(this,r));return m._events=new u.UserManagerEvents(r),m._silentRenewService=new n(m),m.settings.automaticSilentRenew&&(i.Log.debug(\"UserManager.ctor: automaticSilentRenew is configured, setting up silent renew\"),m.startSilentRenew()),m.settings.monitorSession&&(i.Log.debug(\"UserManager.ctor: monitorSession is configured, setting up session monitor\"),m._sessionMonitor=new o(m)),m._tokenRevocationClient=new a(m._settings),m._tokenClient=new l(m._settings),m._joseUtil=y,m}return function r(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.getUser=function t(){var e=this;return this._loadUser().then((function(t){return t?(i.Log.info(\"UserManager.getUser: user loaded\"),e._events.load(t,!1),t):(i.Log.info(\"UserManager.getUser: user not found in storage\"),null)}))},e.prototype.removeUser=function t(){var e=this;return this.storeUser(null).then((function(){i.Log.info(\"UserManager.removeUser: user removed from storage\"),e._events.unload()}))},e.prototype.signinRedirect=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(e=Object.assign({},e)).request_type=\"si:r\";var r={useReplaceToNavigate:e.useReplaceToNavigate};return this._signinStart(e,this._redirectNavigator,r).then((function(){i.Log.info(\"UserManager.signinRedirect: successful\")}))},e.prototype.signinRedirectCallback=function t(e){return this._signinEnd(e||this._redirectNavigator.url).then((function(t){return t.profile&&t.profile.sub?i.Log.info(\"UserManager.signinRedirectCallback: successful, signed in sub: \",t.profile.sub):i.Log.info(\"UserManager.signinRedirectCallback: no sub\"),t}))},e.prototype.signinPopup=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(e=Object.assign({},e)).request_type=\"si:p\";var r=e.redirect_uri||this.settings.popup_redirect_uri||this.settings.redirect_uri;return r?(e.redirect_uri=r,e.display=\"popup\",this._signin(e,this._popupNavigator,{startUrl:r,popupWindowFeatures:e.popupWindowFeatures||this.settings.popupWindowFeatures,popupWindowTarget:e.popupWindowTarget||this.settings.popupWindowTarget}).then((function(t){return t&&(t.profile&&t.profile.sub?i.Log.info(\"UserManager.signinPopup: signinPopup successful, signed in sub: \",t.profile.sub):i.Log.info(\"UserManager.signinPopup: no sub\")),t}))):(i.Log.error(\"UserManager.signinPopup: No popup_redirect_uri or redirect_uri configured\"),Promise.reject(new Error(\"No popup_redirect_uri or redirect_uri configured\")))},e.prototype.signinPopupCallback=function t(e){return this._signinCallback(e,this._popupNavigator).then((function(t){return t&&(t.profile&&t.profile.sub?i.Log.info(\"UserManager.signinPopupCallback: successful, signed in sub: \",t.profile.sub):i.Log.info(\"UserManager.signinPopupCallback: no sub\")),t})).catch((function(t){i.Log.error(t.message)}))},e.prototype.signinSilent=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return r=Object.assign({},r),this._loadUser().then((function(t){return t&&t.refresh_token?(r.refresh_token=t.refresh_token,e._useRefreshToken(r)):(r.request_type=\"si:s\",r.id_token_hint=r.id_token_hint||e.settings.includeIdTokenInSilentRenew&&t&&t.id_token,t&&e._settings.validateSubOnSilentRenew&&(i.Log.debug(\"UserManager.signinSilent, subject prior to silent renew: \",t.profile.sub),r.current_sub=t.profile.sub),e._signinSilentIframe(r))}))},e.prototype._useRefreshToken=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this._tokenClient.exchangeRefreshToken(r).then((function(t){return t?t.access_token?e._loadUser().then((function(r){if(r){var n=Promise.resolve();return t.id_token&&(n=e._validateIdTokenFromTokenRefreshToken(r.profile,t.id_token)),n.then((function(){return i.Log.debug(\"UserManager._useRefreshToken: refresh token response success\"),r.id_token=t.id_token||r.id_token,r.access_token=t.access_token,r.refresh_token=t.refresh_token||r.refresh_token,r.expires_in=t.expires_in,e.storeUser(r).then((function(){return e._events.load(r),r}))}))}return null})):(i.Log.error(\"UserManager._useRefreshToken: No access token returned from token endpoint\"),Promise.reject(\"No access token returned from token endpoint\")):(i.Log.error(\"UserManager._useRefreshToken: No response returned from token endpoint\"),Promise.reject(\"No response returned from token endpoint\"))}))},e.prototype._validateIdTokenFromTokenRefreshToken=function t(e,r){var n=this;return this._metadataService.getIssuer().then((function(t){return n.settings.getEpochTime().then((function(o){return n._joseUtil.validateJwtAttributes(r,t,n._settings.client_id,n._settings.clockSkew,o).then((function(t){return t?t.sub!==e.sub?(i.Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: sub in id_token does not match current sub\"),Promise.reject(new Error(\"sub in id_token does not match current sub\"))):t.auth_time&&t.auth_time!==e.auth_time?(i.Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: auth_time in id_token does not match original auth_time\"),Promise.reject(new Error(\"auth_time in id_token does not match original auth_time\"))):t.azp&&t.azp!==e.azp?(i.Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: azp in id_token does not match original azp\"),Promise.reject(new Error(\"azp in id_token does not match original azp\"))):!t.azp&&e.azp?(i.Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: azp not in id_token, but present in original id_token\"),Promise.reject(new Error(\"azp not in id_token, but present in original id_token\"))):void 0:(i.Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: Failed to validate id_token\"),Promise.reject(new Error(\"Failed to validate id_token\")))}))}))}))},e.prototype._signinSilentIframe=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.redirect_uri||this.settings.silent_redirect_uri||this.settings.redirect_uri;return r?(e.redirect_uri=r,e.prompt=e.prompt||\"none\",this._signin(e,this._iframeNavigator,{startUrl:r,silentRequestTimeout:e.silentRequestTimeout||this.settings.silentRequestTimeout}).then((function(t){return t&&(t.profile&&t.profile.sub?i.Log.info(\"UserManager.signinSilent: successful, signed in sub: \",t.profile.sub):i.Log.info(\"UserManager.signinSilent: no sub\")),t}))):(i.Log.error(\"UserManager.signinSilent: No silent_redirect_uri configured\"),Promise.reject(new Error(\"No silent_redirect_uri configured\")))},e.prototype.signinSilentCallback=function t(e){return this._signinCallback(e,this._iframeNavigator).then((function(t){return t&&(t.profile&&t.profile.sub?i.Log.info(\"UserManager.signinSilentCallback: successful, signed in sub: \",t.profile.sub):i.Log.info(\"UserManager.signinSilentCallback: no sub\")),t}))},e.prototype.signinCallback=function t(e){var r=this;return this.readSigninResponseState(e).then((function(t){var n=t.state;t.response;return\"si:r\"===n.request_type?r.signinRedirectCallback(e):\"si:p\"===n.request_type?r.signinPopupCallback(e):\"si:s\"===n.request_type?r.signinSilentCallback(e):Promise.reject(new Error(\"invalid response_type in state\"))}))},e.prototype.signoutCallback=function t(e,r){var n=this;return this.readSignoutResponseState(e).then((function(t){var i=t.state,o=t.response;return i?\"so:r\"===i.request_type?n.signoutRedirectCallback(e):\"so:p\"===i.request_type?n.signoutPopupCallback(e,r):Promise.reject(new Error(\"invalid response_type in state\")):o}))},e.prototype.querySessionStatus=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(r=Object.assign({},r)).request_type=\"si:s\";var n=r.redirect_uri||this.settings.silent_redirect_uri||this.settings.redirect_uri;return n?(r.redirect_uri=n,r.prompt=\"none\",r.response_type=r.response_type||this.settings.query_status_response_type,r.scope=r.scope||\"openid\",r.skipUserInfo=!0,this._signinStart(r,this._iframeNavigator,{startUrl:n,silentRequestTimeout:r.silentRequestTimeout||this.settings.silentRequestTimeout}).then((function(t){return e.processSigninResponse(t.url).then((function(t){if(i.Log.debug(\"UserManager.querySessionStatus: got signin response\"),t.session_state&&t.profile.sub)return i.Log.info(\"UserManager.querySessionStatus: querySessionStatus success for sub: \",t.profile.sub),{session_state:t.session_state,sub:t.profile.sub,sid:t.profile.sid};i.Log.info(\"querySessionStatus successful, user not authenticated\")})).catch((function(t){if(t.session_state&&e.settings.monitorAnonymousSession&&(\"login_required\"==t.message||\"consent_required\"==t.message||\"interaction_required\"==t.message||\"account_selection_required\"==t.message))return i.Log.info(\"UserManager.querySessionStatus: querySessionStatus success for anonymous user\"),{session_state:t.session_state};throw t}))}))):(i.Log.error(\"UserManager.querySessionStatus: No silent_redirect_uri configured\"),Promise.reject(new Error(\"No silent_redirect_uri configured\")))},e.prototype._signin=function t(e,r){var n=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this._signinStart(e,r,i).then((function(t){return n._signinEnd(t.url,e)}))},e.prototype._signinStart=function t(e,r){var n=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return r.prepare(o).then((function(t){return i.Log.debug(\"UserManager._signinStart: got navigator window handle\"),n.createSigninRequest(e).then((function(e){return i.Log.debug(\"UserManager._signinStart: got signin request\"),o.url=e.url,o.id=e.state.id,t.navigate(o)})).catch((function(e){throw t.close&&(i.Log.debug(\"UserManager._signinStart: Error after preparing navigator, closing navigator window\"),t.close()),e}))}))},e.prototype._signinEnd=function t(e){var r=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.processSigninResponse(e).then((function(t){i.Log.debug(\"UserManager._signinEnd: got signin response\");var e=new a.User(t);if(n.current_sub){if(n.current_sub!==e.profile.sub)return i.Log.debug(\"UserManager._signinEnd: current user does not match user returned from signin. sub from signin: \",e.profile.sub),Promise.reject(new Error(\"login_required\"));i.Log.debug(\"UserManager._signinEnd: current user matches user returned from signin\")}return r.storeUser(e).then((function(){return i.Log.debug(\"UserManager._signinEnd: user stored\"),r._events.load(e),e}))}))},e.prototype._signinCallback=function t(e,r){i.Log.debug(\"UserManager._signinCallback\");var n=\"query\"===this._settings.response_mode||!this._settings.response_mode&&l.SigninRequest.isCode(this._settings.response_type)?\"?\":\"#\";return r.callback(e,void 0,n)},e.prototype.signoutRedirect=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(e=Object.assign({},e)).request_type=\"so:r\";var r=e.post_logout_redirect_uri||this.settings.post_logout_redirect_uri;r&&(e.post_logout_redirect_uri=r);var n={useReplaceToNavigate:e.useReplaceToNavigate};return this._signoutStart(e,this._redirectNavigator,n).then((function(){i.Log.info(\"UserManager.signoutRedirect: successful\")}))},e.prototype.signoutRedirectCallback=function t(e){return this._signoutEnd(e||this._redirectNavigator.url).then((function(t){return i.Log.info(\"UserManager.signoutRedirectCallback: successful\"),t}))},e.prototype.signoutPopup=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(e=Object.assign({},e)).request_type=\"so:p\";var r=e.post_logout_redirect_uri||this.settings.popup_post_logout_redirect_uri||this.settings.post_logout_redirect_uri;return e.post_logout_redirect_uri=r,e.display=\"popup\",e.post_logout_redirect_uri&&(e.state=e.state||{}),this._signout(e,this._popupNavigator,{startUrl:r,popupWindowFeatures:e.popupWindowFeatures||this.settings.popupWindowFeatures,popupWindowTarget:e.popupWindowTarget||this.settings.popupWindowTarget}).then((function(){i.Log.info(\"UserManager.signoutPopup: successful\")}))},e.prototype.signoutPopupCallback=function t(e,r){void 0===r&&\"boolean\"==typeof e&&(r=e,e=null);return this._popupNavigator.callback(e,r,\"?\").then((function(){i.Log.info(\"UserManager.signoutPopupCallback: successful\")}))},e.prototype._signout=function t(e,r){var n=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this._signoutStart(e,r,i).then((function(t){return n._signoutEnd(t.url)}))},e.prototype._signoutStart=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=this,n=arguments[1],o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return n.prepare(o).then((function(t){return i.Log.debug(\"UserManager._signoutStart: got navigator window handle\"),r._loadUser().then((function(n){return i.Log.debug(\"UserManager._signoutStart: loaded current user from storage\"),(r._settings.revokeAccessTokenOnSignout?r._revokeInternal(n):Promise.resolve()).then((function(){var s=e.id_token_hint||n&&n.id_token;return s&&(i.Log.debug(\"UserManager._signoutStart: Setting id_token into signout request\"),e.id_token_hint=s),r.removeUser().then((function(){return i.Log.debug(\"UserManager._signoutStart: user removed, creating signout request\"),r.createSignoutRequest(e).then((function(e){return i.Log.debug(\"UserManager._signoutStart: got signout request\"),o.url=e.url,e.state&&(o.id=e.state.id),t.navigate(o)}))}))}))})).catch((function(e){throw t.close&&(i.Log.debug(\"UserManager._signoutStart: Error after preparing navigator, closing navigator window\"),t.close()),e}))}))},e.prototype._signoutEnd=function t(e){return this.processSignoutResponse(e).then((function(t){return i.Log.debug(\"UserManager._signoutEnd: got signout response\"),t}))},e.prototype.revokeAccessToken=function t(){var e=this;return this._loadUser().then((function(t){return e._revokeInternal(t,!0).then((function(r){if(r)return i.Log.debug(\"UserManager.revokeAccessToken: removing token properties from user and re-storing\"),t.access_token=null,t.refresh_token=null,t.expires_at=null,t.token_type=null,e.storeUser(t).then((function(){i.Log.debug(\"UserManager.revokeAccessToken: user stored\"),e._events.load(t)}))}))})).then((function(){i.Log.info(\"UserManager.revokeAccessToken: access token revoked successfully\")}))},e.prototype._revokeInternal=function t(e,r){var n=this;if(e){var o=e.access_token,s=e.refresh_token;return this._revokeAccessTokenInternal(o,r).then((function(t){return n._revokeRefreshTokenInternal(s,r).then((function(e){return t||e||i.Log.debug(\"UserManager.revokeAccessToken: no need to revoke due to no token(s), or JWT format\"),t||e}))}))}return Promise.resolve(!1)},e.prototype._revokeAccessTokenInternal=function t(e,r){return!e||e.indexOf(\".\")>=0?Promise.resolve(!1):this._tokenRevocationClient.revoke(e,r).then((function(){return!0}))},e.prototype._revokeRefreshTokenInternal=function t(e,r){return e?this._tokenRevocationClient.revoke(e,r,\"refresh_token\").then((function(){return!0})):Promise.resolve(!1)},e.prototype.startSilentRenew=function t(){this._silentRenewService.start()},e.prototype.stopSilentRenew=function t(){this._silentRenewService.stop()},e.prototype._loadUser=function t(){return this._userStore.get(this._userStoreKey).then((function(t){return t?(i.Log.debug(\"UserManager._loadUser: user storageString loaded\"),a.User.fromStorageString(t)):(i.Log.debug(\"UserManager._loadUser: no user storageString\"),null)}))},e.prototype.storeUser=function t(e){if(e){i.Log.debug(\"UserManager.storeUser: storing user\");var r=e.toStorageString();return this._userStore.set(this._userStoreKey,r)}return i.Log.debug(\"storeUser.storeUser: removing user\"),this._userStore.remove(this._userStoreKey)},n(e,[{key:\"_redirectNavigator\",get:function t(){return this.settings.redirectNavigator}},{key:\"_popupNavigator\",get:function t(){return this.settings.popupNavigator}},{key:\"_iframeNavigator\",get:function t(){return this.settings.iframeNavigator}},{key:\"_userStore\",get:function t(){return this.settings.userStore}},{key:\"events\",get:function t(){return this._events}},{key:\"_userStoreKey\",get:function t(){return\"user:\"+this.settings.authority+\":\"+this.settings.client_id}}]),e}(o.OidcClient)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UserManagerSettings=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=(r(0),r(5)),o=r(40),s=r(41),a=r(43),u=r(6),c=r(1),h=r(8);function l(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function f(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}e.UserManagerSettings=function(t){function e(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=r.popup_redirect_uri,i=r.popup_post_logout_redirect_uri,g=r.popupWindowFeatures,d=r.popupWindowTarget,p=r.silent_redirect_uri,v=r.silentRequestTimeout,y=r.automaticSilentRenew,m=void 0!==y&&y,_=r.validateSubOnSilentRenew,S=void 0!==_&&_,b=r.includeIdTokenInSilentRenew,w=void 0===b||b,F=r.monitorSession,E=void 0===F||F,x=r.monitorAnonymousSession,A=void 0!==x&&x,k=r.checkSessionInterval,P=void 0===k?2e3:k,C=r.stopCheckSessionOnError,T=void 0===C||C,R=r.query_status_response_type,I=r.revokeAccessTokenOnSignout,D=void 0!==I&&I,L=r.accessTokenExpiringNotificationTime,N=void 0===L?60:L,U=r.redirectNavigator,B=void 0===U?new o.RedirectNavigator:U,O=r.popupNavigator,j=void 0===O?new s.PopupNavigator:O,M=r.iframeNavigator,H=void 0===M?new a.IFrameNavigator:M,V=r.userStore,K=void 0===V?new u.WebStorageStateStore({store:c.Global.sessionStorage}):V;l(this,e);var q=f(this,t.call(this,arguments[0]));return q._popup_redirect_uri=n,q._popup_post_logout_redirect_uri=i,q._popupWindowFeatures=g,q._popupWindowTarget=d,q._silent_redirect_uri=p,q._silentRequestTimeout=v,q._automaticSilentRenew=m,q._validateSubOnSilentRenew=S,q._includeIdTokenInSilentRenew=w,q._accessTokenExpiringNotificationTime=N,q._monitorSession=E,q._monitorAnonymousSession=A,q._checkSessionInterval=P,q._stopCheckSessionOnError=T,R?q._query_status_response_type=R:arguments[0]&&arguments[0].response_type?q._query_status_response_type=h.SigninRequest.isOidc(arguments[0].response_type)?\"id_token\":\"code\":q._query_status_response_type=\"id_token\",q._revokeAccessTokenOnSignout=D,q._redirectNavigator=B,q._popupNavigator=j,q._iframeNavigator=H,q._userStore=K,q}return function r(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),n(e,[{key:\"popup_redirect_uri\",get:function t(){return this._popup_redirect_uri}},{key:\"popup_post_logout_redirect_uri\",get:function t(){return this._popup_post_logout_redirect_uri}},{key:\"popupWindowFeatures\",get:function t(){return this._popupWindowFeatures}},{key:\"popupWindowTarget\",get:function t(){return this._popupWindowTarget}},{key:\"silent_redirect_uri\",get:function t(){return this._silent_redirect_uri}},{key:\"silentRequestTimeout\",get:function t(){return this._silentRequestTimeout}},{key:\"automaticSilentRenew\",get:function t(){return this._automaticSilentRenew}},{key:\"validateSubOnSilentRenew\",get:function t(){return this._validateSubOnSilentRenew}},{key:\"includeIdTokenInSilentRenew\",get:function t(){return this._includeIdTokenInSilentRenew}},{key:\"accessTokenExpiringNotificationTime\",get:function t(){return this._accessTokenExpiringNotificationTime}},{key:\"monitorSession\",get:function t(){return this._monitorSession}},{key:\"monitorAnonymousSession\",get:function t(){return this._monitorAnonymousSession}},{key:\"checkSessionInterval\",get:function t(){return this._checkSessionInterval}},{key:\"stopCheckSessionOnError\",get:function t(){return this._stopCheckSessionOnError}},{key:\"query_status_response_type\",get:function t(){return this._query_status_response_type}},{key:\"revokeAccessTokenOnSignout\",get:function t(){return this._revokeAccessTokenOnSignout}},{key:\"redirectNavigator\",get:function t(){return this._redirectNavigator}},{key:\"popupNavigator\",get:function t(){return this._popupNavigator}},{key:\"iframeNavigator\",get:function t(){return this._iframeNavigator}},{key:\"userStore\",get:function t(){return this._userStore}}]),e}(i.OidcClientSettings)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.RedirectNavigator=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0);e.RedirectNavigator=function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t.prototype.prepare=function t(){return Promise.resolve(this)},t.prototype.navigate=function t(e){return e&&e.url?(e.useReplaceToNavigate?window.location.replace(e.url):window.location=e.url,Promise.resolve()):(i.Log.error(\"RedirectNavigator.navigate: No url provided\"),Promise.reject(new Error(\"No url provided\")))},n(t,[{key:\"url\",get:function t(){return window.location.href}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.PopupNavigator=void 0;var n=r(0),i=r(42);e.PopupNavigator=function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t.prototype.prepare=function t(e){var r=new i.PopupWindow(e);return Promise.resolve(r)},t.prototype.callback=function t(e,r,o){n.Log.debug(\"PopupNavigator.callback\");try{return i.PopupWindow.notifyOpener(e,r,o),Promise.resolve()}catch(t){return Promise.reject(t)}},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.PopupWindow=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0),o=r(3);e.PopupWindow=function(){function t(e){var r=this;!function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this._promise=new Promise((function(t,e){r._resolve=t,r._reject=e}));var o=e.popupWindowTarget||\"_blank\",s=e.popupWindowFeatures||\"location=no,toolbar=no,width=500,height=500,left=100,top=100;\";this._popup=window.open(\"\",o,s),this._popup&&(i.Log.debug(\"PopupWindow.ctor: popup successfully created\"),this._checkForPopupClosedTimer=window.setInterval(this._checkForPopupClosed.bind(this),500))}return t.prototype.navigate=function t(e){return this._popup?e&&e.url?(i.Log.debug(\"PopupWindow.navigate: Setting URL in popup\"),this._id=e.id,this._id&&(window[\"popupCallback_\"+e.id]=this._callback.bind(this)),this._popup.focus(),this._popup.window.location=e.url):(this._error(\"PopupWindow.navigate: no url provided\"),this._error(\"No url provided\")):this._error(\"PopupWindow.navigate: Error opening popup window\"),this.promise},t.prototype._success=function t(e){i.Log.debug(\"PopupWindow.callback: Successful response from popup window\"),this._cleanup(),this._resolve(e)},t.prototype._error=function t(e){i.Log.error(\"PopupWindow.error: \",e),this._cleanup(),this._reject(new Error(e))},t.prototype.close=function t(){this._cleanup(!1)},t.prototype._cleanup=function t(e){i.Log.debug(\"PopupWindow.cleanup\"),window.clearInterval(this._checkForPopupClosedTimer),this._checkForPopupClosedTimer=null,delete window[\"popupCallback_\"+this._id],this._popup&&!e&&this._popup.close(),this._popup=null},t.prototype._checkForPopupClosed=function t(){this._popup&&!this._popup.closed||this._error(\"Popup window closed\")},t.prototype._callback=function t(e,r){this._cleanup(r),e?(i.Log.debug(\"PopupWindow.callback success\"),this._success({url:e})):(i.Log.debug(\"PopupWindow.callback: Invalid response from popup\"),this._error(\"Invalid response from popup\"))},t.notifyOpener=function t(e,r,n){if(window.opener){if(e=e||window.location.href){var s=o.UrlUtility.parseUrlFragment(e,n);if(s.state){var a=\"popupCallback_\"+s.state,u=window.opener[a];u?(i.Log.debug(\"PopupWindow.notifyOpener: passing url message to opener\"),u(e,r)):i.Log.warn(\"PopupWindow.notifyOpener: no matching callback found on opener\")}else i.Log.warn(\"PopupWindow.notifyOpener: no state found in response url\")}}else i.Log.warn(\"PopupWindow.notifyOpener: no window.opener. Can't complete notification.\")},n(t,[{key:\"promise\",get:function t(){return this._promise}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.IFrameNavigator=void 0;var n=r(0),i=r(44);e.IFrameNavigator=function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t.prototype.prepare=function t(e){var r=new i.IFrameWindow(e);return Promise.resolve(r)},t.prototype.callback=function t(e){n.Log.debug(\"IFrameNavigator.callback\");try{return i.IFrameWindow.notifyParent(e),Promise.resolve()}catch(t){return Promise.reject(t)}},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.IFrameWindow=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0);e.IFrameWindow=function(){function t(e){var r=this;!function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this._promise=new Promise((function(t,e){r._resolve=t,r._reject=e})),this._boundMessageEvent=this._message.bind(this),window.addEventListener(\"message\",this._boundMessageEvent,!1),this._frame=window.document.createElement(\"iframe\"),this._frame.style.visibility=\"hidden\",this._frame.style.position=\"absolute\",this._frame.width=0,this._frame.height=0,window.document.body.appendChild(this._frame)}return t.prototype.navigate=function t(e){if(e&&e.url){var r=e.silentRequestTimeout||1e4;i.Log.debug(\"IFrameWindow.navigate: Using timeout of:\",r),this._timer=window.setTimeout(this._timeout.bind(this),r),this._frame.src=e.url}else this._error(\"No url provided\");return this.promise},t.prototype._success=function t(e){this._cleanup(),i.Log.debug(\"IFrameWindow: Successful response from frame window\"),this._resolve(e)},t.prototype._error=function t(e){this._cleanup(),i.Log.error(e),this._reject(new Error(e))},t.prototype.close=function t(){this._cleanup()},t.prototype._cleanup=function t(){this._frame&&(i.Log.debug(\"IFrameWindow: cleanup\"),window.removeEventListener(\"message\",this._boundMessageEvent,!1),window.clearTimeout(this._timer),window.document.body.removeChild(this._frame),this._timer=null,this._frame=null,this._boundMessageEvent=null)},t.prototype._timeout=function t(){i.Log.debug(\"IFrameWindow.timeout\"),this._error(\"Frame window timed out\")},t.prototype._message=function t(e){if(i.Log.debug(\"IFrameWindow.message\"),this._timer&&e.origin===this._origin&&e.source===this._frame.contentWindow&&\"string\"==typeof e.data&&(e.data.startsWith(\"http://\")||e.data.startsWith(\"https://\"))){var r=e.data;r?this._success({url:r}):this._error(\"Invalid response from frame\")}},t.notifyParent=function t(e){i.Log.debug(\"IFrameWindow.notifyParent\"),(e=e||window.location.href)&&(i.Log.debug(\"IFrameWindow.notifyParent: posting url message to parent\"),window.parent.postMessage(e,location.protocol+\"//\"+location.host))},n(t,[{key:\"promise\",get:function t(){return this._promise}},{key:\"_origin\",get:function t(){return location.protocol+\"//\"+location.host}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UserManagerEvents=void 0;var n=r(0),i=r(16),o=r(17);e.UserManagerEvents=function(t){function e(r){!function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,e);var i=function s(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}(this,t.call(this,r));return i._userLoaded=new o.Event(\"User loaded\"),i._userUnloaded=new o.Event(\"User unloaded\"),i._silentRenewError=new o.Event(\"Silent renew error\"),i._userSignedIn=new o.Event(\"User signed in\"),i._userSignedOut=new o.Event(\"User signed out\"),i._userSessionChanged=new o.Event(\"User session changed\"),i}return function r(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.load=function e(r){var i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];n.Log.debug(\"UserManagerEvents.load\"),t.prototype.load.call(this,r),i&&this._userLoaded.raise(r)},e.prototype.unload=function e(){n.Log.debug(\"UserManagerEvents.unload\"),t.prototype.unload.call(this),this._userUnloaded.raise()},e.prototype.addUserLoaded=function t(e){this._userLoaded.addHandler(e)},e.prototype.removeUserLoaded=function t(e){this._userLoaded.removeHandler(e)},e.prototype.addUserUnloaded=function t(e){this._userUnloaded.addHandler(e)},e.prototype.removeUserUnloaded=function t(e){this._userUnloaded.removeHandler(e)},e.prototype.addSilentRenewError=function t(e){this._silentRenewError.addHandler(e)},e.prototype.removeSilentRenewError=function t(e){this._silentRenewError.removeHandler(e)},e.prototype._raiseSilentRenewError=function t(e){n.Log.debug(\"UserManagerEvents._raiseSilentRenewError\",e.message),this._silentRenewError.raise(e)},e.prototype.addUserSignedIn=function t(e){this._userSignedIn.addHandler(e)},e.prototype.removeUserSignedIn=function t(e){this._userSignedIn.removeHandler(e)},e.prototype._raiseUserSignedIn=function t(){n.Log.debug(\"UserManagerEvents._raiseUserSignedIn\"),this._userSignedIn.raise()},e.prototype.addUserSignedOut=function t(e){this._userSignedOut.addHandler(e)},e.prototype.removeUserSignedOut=function t(e){this._userSignedOut.removeHandler(e)},e.prototype._raiseUserSignedOut=function t(){n.Log.debug(\"UserManagerEvents._raiseUserSignedOut\"),this._userSignedOut.raise()},e.prototype.addUserSessionChanged=function t(e){this._userSessionChanged.addHandler(e)},e.prototype.removeUserSessionChanged=function t(e){this._userSessionChanged.removeHandler(e)},e.prototype._raiseUserSessionChanged=function t(){n.Log.debug(\"UserManagerEvents._raiseUserSessionChanged\"),this._userSessionChanged.raise()},e}(i.AccessTokenEvents)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Timer=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0),o=r(1),s=r(17);function a(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function u(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}e.Timer=function(t){function e(r){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.Global.timer,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;a(this,e);var s=u(this,t.call(this,r));return s._timer=n,s._nowFunc=i||function(){return Date.now()/1e3},s}return function r(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.init=function t(e){e<=0&&(e=1),e=parseInt(e);var r=this.now+e;if(this.expiration===r&&this._timerHandle)i.Log.debug(\"Timer.init timer \"+this._name+\" skipping initialization since already initialized for expiration:\",this.expiration);else{this.cancel(),i.Log.debug(\"Timer.init timer \"+this._name+\" for duration:\",e),this._expiration=r;var n=5;e<n&&(n=e),this._timerHandle=this._timer.setInterval(this._callback.bind(this),1e3*n)}},e.prototype.cancel=function t(){this._timerHandle&&(i.Log.debug(\"Timer.cancel: \",this._name),this._timer.clearInterval(this._timerHandle),this._timerHandle=null)},e.prototype._callback=function e(){var r=this._expiration-this.now;i.Log.debug(\"Timer.callback; \"+this._name+\" timer expires in:\",r),this._expiration<=this.now&&(this.cancel(),t.prototype.raise.call(this))},n(e,[{key:\"now\",get:function t(){return parseInt(this._nowFunc())}},{key:\"expiration\",get:function t(){return this._expiration}}]),e}(s.Event)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SilentRenewService=void 0;var n=r(0);e.SilentRenewService=function(){function t(e){!function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this._userManager=e}return t.prototype.start=function t(){this._callback||(this._callback=this._tokenExpiring.bind(this),this._userManager.events.addAccessTokenExpiring(this._callback),this._userManager.getUser().then((function(t){})).catch((function(t){n.Log.error(\"SilentRenewService.start: Error from getUser:\",t.message)})))},t.prototype.stop=function t(){this._callback&&(this._userManager.events.removeAccessTokenExpiring(this._callback),delete this._callback)},t.prototype._tokenExpiring=function t(){var e=this;this._userManager.signinSilent().then((function(t){n.Log.debug(\"SilentRenewService._tokenExpiring: Silent token renewal successful\")}),(function(t){n.Log.error(\"SilentRenewService._tokenExpiring: Error from signinSilent:\",t.message),e._userManager.events._raiseSilentRenewError(t)}))},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CordovaPopupNavigator=void 0;var n=r(21);e.CordovaPopupNavigator=function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t.prototype.prepare=function t(e){var r=new n.CordovaPopupWindow(e);return Promise.resolve(r)},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CordovaIFrameNavigator=void 0;var n=r(21);e.CordovaIFrameNavigator=function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t.prototype.prepare=function t(e){e.popupWindowFeatures=\"hidden=yes\";var r=new n.CordovaPopupWindow(e);return Promise.resolve(r)},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});e.Version=\"1.11.5\"}])}));","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n  return function wrap() {\n    var args = new Array(arguments.length);\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i];\n    }\n    return fn.apply(thisArg, args);\n  };\n};\n","/** @license React v0.20.2\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f,g,h,k;if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var t=null,u=null,w=function(){if(null!==t)try{var a=exports.unstable_now();t(!0,a);t=null}catch(b){throw setTimeout(w,0),b;}};f=function(a){null!==t?setTimeout(f,0,a):(t=a,setTimeout(w,0))};g=function(a,b){u=setTimeout(a,b)};h=function(){clearTimeout(u)};exports.unstable_shouldYield=function(){return!1};k=exports.unstable_forceFrameRate=function(){}}else{var x=window.setTimeout,y=window.clearTimeout;if(\"undefined\"!==typeof console){var z=\nwindow.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\");\"function\"!==typeof z&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\")}var A=!1,B=null,C=-1,D=5,E=0;exports.unstable_shouldYield=function(){return exports.unstable_now()>=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):D=0<a?Math.floor(1E3/a):5};var F=new MessageChannel,G=F.port2;F.port1.onmessage=function(){if(null!==B){var a=exports.unstable_now();E=a+D;try{B(!0,a)?G.postMessage(null):(A=!1,B=null)}catch(b){throw G.postMessage(null),b;}}else A=!1};f=function(a){B=a;A||(A=!0,G.postMessage(null))};g=function(a,b){C=\nx(function(){a(exports.unstable_now())},b)};h=function(){y(C);C=-1}}function H(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<I(e,b))a[d]=b,a[c]=e,c=d;else break a}}function J(a){a=a[0];return void 0===a?null:a}\nfunction K(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],v=m+1,r=a[v];if(void 0!==n&&0>I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:N++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Convert a data object to FormData\n * @param {Object} obj\n * @param {?Object} [formData]\n * @returns {Object}\n **/\n\nfunction toFormData(obj, formData) {\n  // eslint-disable-next-line no-param-reassign\n  formData = formData || new FormData();\n\n  var stack = [];\n\n  function convertValue(value) {\n    if (value === null) return '';\n\n    if (utils.isDate(value)) {\n      return value.toISOString();\n    }\n\n    if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n      return typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n    }\n\n    return value;\n  }\n\n  function build(data, parentKey) {\n    if (utils.isPlainObject(data) || utils.isArray(data)) {\n      if (stack.indexOf(data) !== -1) {\n        throw Error('Circular reference detected in ' + parentKey);\n      }\n\n      stack.push(data);\n\n      utils.forEach(data, function each(value, key) {\n        if (utils.isUndefined(value)) return;\n        var fullKey = parentKey ? parentKey + '.' + key : key;\n        var arr;\n\n        if (value && !parentKey && typeof value === 'object') {\n          if (utils.endsWith(key, '{}')) {\n            // eslint-disable-next-line no-param-reassign\n            value = JSON.stringify(value);\n          } else if (utils.endsWith(key, '[]') && (arr = utils.toArray(value))) {\n            // eslint-disable-next-line func-names\n            arr.forEach(function(el) {\n              !utils.isUndefined(el) && formData.append(fullKey, convertValue(el));\n            });\n            return;\n          }\n        }\n\n        build(value, fullKey);\n      });\n\n      stack.pop();\n    } else {\n      formData.append(parentKey, convertValue(data));\n    }\n  }\n\n  build(obj);\n\n  return formData;\n}\n\nmodule.exports = toFormData;\n","'use strict';\n\nvar AxiosError = require('../core/AxiosError');\nvar utils = require('../utils');\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction CanceledError(message) {\n  // eslint-disable-next-line no-eq-null,eqeqeq\n  AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED);\n  this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n  __CANCEL__: true\n});\n\nmodule.exports = CanceledError;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n  if (baseURL && !isAbsoluteURL(requestedURL)) {\n    return combineURLs(baseURL, requestedURL);\n  }\n  return requestedURL;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\nvar CanceledError = require('./CanceledError');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n  if (typeof executor !== 'function') {\n    throw new TypeError('executor must be a function.');\n  }\n\n  var resolvePromise;\n\n  this.promise = new Promise(function promiseExecutor(resolve) {\n    resolvePromise = resolve;\n  });\n\n  var token = this;\n\n  // eslint-disable-next-line func-names\n  this.promise.then(function(cancel) {\n    if (!token._listeners) return;\n\n    var i;\n    var l = token._listeners.length;\n\n    for (i = 0; i < l; i++) {\n      token._listeners[i](cancel);\n    }\n    token._listeners = null;\n  });\n\n  // eslint-disable-next-line func-names\n  this.promise.then = function(onfulfilled) {\n    var _resolve;\n    // eslint-disable-next-line func-names\n    var promise = new Promise(function(resolve) {\n      token.subscribe(resolve);\n      _resolve = resolve;\n    }).then(onfulfilled);\n\n    promise.cancel = function reject() {\n      token.unsubscribe(_resolve);\n    };\n\n    return promise;\n  };\n\n  executor(function cancel(message) {\n    if (token.reason) {\n      // Cancellation has already been requested\n      return;\n    }\n\n    token.reason = new CanceledError(message);\n    resolvePromise(token.reason);\n  });\n}\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n  if (this.reason) {\n    throw this.reason;\n  }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n  if (this.reason) {\n    listener(this.reason);\n    return;\n  }\n\n  if (this._listeners) {\n    this._listeners.push(listener);\n  } else {\n    this._listeners = [listener];\n  }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n  if (!this._listeners) {\n    return;\n  }\n  var index = this._listeners.indexOf(listener);\n  if (index !== -1) {\n    this._listeners.splice(index, 1);\n  }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n  var cancel;\n  var token = new CancelToken(function executor(c) {\n    cancel = c;\n  });\n  return {\n    token: token,\n    cancel: cancel\n  };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n  return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n  utils.isStandardBrowserEnv() ?\n\n  // Standard browser envs support document.cookie\n    (function standardBrowserEnv() {\n      return {\n        write: function write(name, value, expires, path, domain, secure) {\n          var cookie = [];\n          cookie.push(name + '=' + encodeURIComponent(value));\n\n          if (utils.isNumber(expires)) {\n            cookie.push('expires=' + new Date(expires).toGMTString());\n          }\n\n          if (utils.isString(path)) {\n            cookie.push('path=' + path);\n          }\n\n          if (utils.isString(domain)) {\n            cookie.push('domain=' + domain);\n          }\n\n          if (secure === true) {\n            cookie.push('secure');\n          }\n\n          document.cookie = cookie.join('; ');\n        },\n\n        read: function read(name) {\n          var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n          return (match ? decodeURIComponent(match[3]) : null);\n        },\n\n        remove: function remove(name) {\n          this.write(name, '', Date.now() - 86400000);\n        }\n      };\n    })() :\n\n  // Non standard browser env (web workers, react-native) lack needed support.\n    (function nonStandardBrowserEnv() {\n      return {\n        write: function write() {},\n        read: function read() { return null; },\n        remove: function remove() {}\n      };\n    })()\n);\n","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n  // Match escaped characters that would otherwise appear in future matches.\n  // This allows the user to escape special characters that won't transform.\n  '(\\\\\\\\.)',\n  // Match Express-style parameters and un-named parameters with a prefix\n  // and optional suffixes. Matches appear as:\n  //\n  // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n  // \"/route(\\\\d+)\"  => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n  // \"/*\"            => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n  '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param  {string}  str\n * @param  {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n  var tokens = []\n  var key = 0\n  var index = 0\n  var path = ''\n  var defaultDelimiter = options && options.delimiter || '/'\n  var res\n\n  while ((res = PATH_REGEXP.exec(str)) != null) {\n    var m = res[0]\n    var escaped = res[1]\n    var offset = res.index\n    path += str.slice(index, offset)\n    index = offset + m.length\n\n    // Ignore already escaped sequences.\n    if (escaped) {\n      path += escaped[1]\n      continue\n    }\n\n    var next = str[index]\n    var prefix = res[2]\n    var name = res[3]\n    var capture = res[4]\n    var group = res[5]\n    var modifier = res[6]\n    var asterisk = res[7]\n\n    // Push the current path onto the tokens.\n    if (path) {\n      tokens.push(path)\n      path = ''\n    }\n\n    var partial = prefix != null && next != null && next !== prefix\n    var repeat = modifier === '+' || modifier === '*'\n    var optional = modifier === '?' || modifier === '*'\n    var delimiter = prefix || defaultDelimiter\n    var pattern = capture || group\n    var prevText = prefix || (typeof tokens[tokens.length - 1] === 'string' ? tokens[tokens.length - 1] : '')\n\n    tokens.push({\n      name: name || key++,\n      prefix: prefix || '',\n      delimiter: delimiter,\n      optional: optional,\n      repeat: repeat,\n      partial: partial,\n      asterisk: !!asterisk,\n      pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : restrictBacktrack(delimiter, prevText))\n    })\n  }\n\n  // Match any characters still remaining.\n  if (index < str.length) {\n    path += str.substr(index)\n  }\n\n  // If the path exists, push it onto the end.\n  if (path) {\n    tokens.push(path)\n  }\n\n  return tokens\n}\n\nfunction restrictBacktrack(delimiter, prevText) {\n  if (!prevText || prevText.indexOf(delimiter) > -1) {\n    return '[^' + escapeString(delimiter) + ']+?'\n  }\n\n  return escapeString(prevText) + '|(?:(?!' + escapeString(prevText) + ')[^' + escapeString(delimiter) + '])+?'\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param  {string}             str\n * @param  {Object=}            options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n  return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param  {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n  return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n    return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n  })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param  {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n  return encodeURI(str).replace(/[?#]/g, function (c) {\n    return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n  })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n  // Compile all the tokens into regexps.\n  var matches = new Array(tokens.length)\n\n  // Compile all the patterns before compilation.\n  for (var i = 0; i < tokens.length; i++) {\n    if (typeof tokens[i] === 'object') {\n      matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n    }\n  }\n\n  return function (obj, opts) {\n    var path = ''\n    var data = obj || {}\n    var options = opts || {}\n    var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n    for (var i = 0; i < tokens.length; i++) {\n      var token = tokens[i]\n\n      if (typeof token === 'string') {\n        path += token\n\n        continue\n      }\n\n      var value = data[token.name]\n      var segment\n\n      if (value == null) {\n        if (token.optional) {\n          // Prepend partial segment prefixes.\n          if (token.partial) {\n            path += token.prefix\n          }\n\n          continue\n        } else {\n          throw new TypeError('Expected \"' + token.name + '\" to be defined')\n        }\n      }\n\n      if (isarray(value)) {\n        if (!token.repeat) {\n          throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n        }\n\n        if (value.length === 0) {\n          if (token.optional) {\n            continue\n          } else {\n            throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n          }\n        }\n\n        for (var j = 0; j < value.length; j++) {\n          segment = encode(value[j])\n\n          if (!matches[i].test(segment)) {\n            throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n          }\n\n          path += (j === 0 ? token.prefix : token.delimiter) + segment\n        }\n\n        continue\n      }\n\n      segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n      if (!matches[i].test(segment)) {\n        throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n      }\n\n      path += token.prefix + segment\n    }\n\n    return path\n  }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param  {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n  return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param  {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n  return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param  {!RegExp} re\n * @param  {Array}   keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n  re.keys = keys\n  return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param  {Object} options\n * @return {string}\n */\nfunction flags (options) {\n  return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param  {!RegExp} path\n * @param  {!Array}  keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n  // Use a negative lookahead to match only capturing groups.\n  var groups = path.source.match(/\\((?!\\?)/g)\n\n  if (groups) {\n    for (var i = 0; i < groups.length; i++) {\n      keys.push({\n        name: i,\n        prefix: null,\n        delimiter: null,\n        optional: false,\n        repeat: false,\n        partial: false,\n        asterisk: false,\n        pattern: null\n      })\n    }\n  }\n\n  return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param  {!Array}  path\n * @param  {Array}   keys\n * @param  {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n  var parts = []\n\n  for (var i = 0; i < path.length; i++) {\n    parts.push(pathToRegexp(path[i], keys, options).source)\n  }\n\n  var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n  return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param  {string}  path\n * @param  {!Array}  keys\n * @param  {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n  return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param  {!Array}          tokens\n * @param  {(Array|Object)=} keys\n * @param  {Object=}         options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n  if (!isarray(keys)) {\n    options = /** @type {!Object} */ (keys || options)\n    keys = []\n  }\n\n  options = options || {}\n\n  var strict = options.strict\n  var end = options.end !== false\n  var route = ''\n\n  // Iterate over the tokens and create our regexp string.\n  for (var i = 0; i < tokens.length; i++) {\n    var token = tokens[i]\n\n    if (typeof token === 'string') {\n      route += escapeString(token)\n    } else {\n      var prefix = escapeString(token.prefix)\n      var capture = '(?:' + token.pattern + ')'\n\n      keys.push(token)\n\n      if (token.repeat) {\n        capture += '(?:' + prefix + capture + ')*'\n      }\n\n      if (token.optional) {\n        if (!token.partial) {\n          capture = '(?:' + prefix + '(' + capture + '))?'\n        } else {\n          capture = prefix + '(' + capture + ')?'\n        }\n      } else {\n        capture = prefix + '(' + capture + ')'\n      }\n\n      route += capture\n    }\n  }\n\n  var delimiter = escapeString(options.delimiter || '/')\n  var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n  // In non-strict mode we allow a slash at the end of match. If the path to\n  // match already ends with a slash, we remove it for consistency. The slash\n  // is valid at the end of a path match, not in the middle. This is important\n  // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n  if (!strict) {\n    route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n  }\n\n  if (end) {\n    route += '$'\n  } else {\n    // In non-ending mode, we need the capturing groups to match as much as\n    // possible by using a positive lookahead to the end or next path segment.\n    route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n  }\n\n  return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param  {(string|RegExp|Array)} path\n * @param  {(Array|Object)=}       keys\n * @param  {Object=}               options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n  if (!isarray(keys)) {\n    options = /** @type {!Object} */ (keys || options)\n    keys = []\n  }\n\n  options = options || {}\n\n  if (path instanceof RegExp) {\n    return regexpToRegexp(path, /** @type {!Array} */ (keys))\n  }\n\n  if (isarray(path)) {\n    return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n  }\n\n  return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n *  ```js\n *  function f(x, y, z) {}\n *  var args = [1, 2, 3];\n *  f.apply(null, args);\n *  ```\n *\n * With `spread` this example can be re-written.\n *\n *  ```js\n *  spread(function(x, y, z) {})([1, 2, 3]);\n *  ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n  return function wrap(arr) {\n    return callback.apply(null, arr);\n  };\n};\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","/** @license React v17.0.2\n * react-dom-server.browser.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=require(\"object-assign\"),m=require(\"react\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar q=60106,r=60107,u=60108,z=60114,B=60109,aa=60110,ba=60112,D=60113,ca=60120,da=60115,ea=60116,fa=60121,ha=60117,ia=60119,ja=60129,ka=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var E=Symbol.for;q=E(\"react.portal\");r=E(\"react.fragment\");u=E(\"react.strict_mode\");z=E(\"react.profiler\");B=E(\"react.provider\");aa=E(\"react.context\");ba=E(\"react.forward_ref\");D=E(\"react.suspense\");ca=E(\"react.suspense_list\");da=E(\"react.memo\");ea=E(\"react.lazy\");fa=E(\"react.block\");ha=E(\"react.fundamental\");ia=E(\"react.scope\");ja=E(\"react.debug_trace_mode\");ka=E(\"react.legacy_hidden\")}\nfunction F(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case r:return\"Fragment\";case q:return\"Portal\";case z:return\"Profiler\";case u:return\"StrictMode\";case D:return\"Suspense\";case ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case aa:return(a.displayName||\"Context\")+\".Consumer\";case B:return(a._context.displayName||\"Context\")+\".Provider\";case ba:var b=a.render;b=b.displayName||b.name||\"\";return a.displayName||\n(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case da:return F(a.type);case fa:return F(a._render);case ea:b=a._payload;a=a._init;try{return F(a(b))}catch(c){}}return null}var la=m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,ma={};function I(a,b){for(var c=a._threadCount|0;c<=b;c++)a[c]=a._currentValue2,a._threadCount=c+1}function na(a,b,c,d){if(d&&(d=a.contextType,\"object\"===typeof d&&null!==d))return I(d,c),d[c];if(a=a.contextTypes){c={};for(var f in a)c[f]=b[f];b=c}else b=ma;return b}\nfor(var J=new Uint16Array(16),K=0;15>K;K++)J[K]=K+1;J[15]=0;var oa=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,pa=Object.prototype.hasOwnProperty,qa={},ra={};\nfunction sa(a){if(pa.call(ra,a))return!0;if(pa.call(qa,a))return!1;if(oa.test(a))return ra[a]=!0;qa[a]=!0;return!1}function ta(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction ua(a,b,c,d){if(null===b||\"undefined\"===typeof b||ta(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function M(a,b,c,d,f,h,t){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=f;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=h;this.removeEmptyString=t}var N={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){N[a]=new M(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];N[b]=new M(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){N[a]=new M(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){N[a]=new M(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){N[a]=new M(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){N[a]=new M(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){N[a]=new M(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){N[a]=new M(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){N[a]=new M(a,5,!1,a.toLowerCase(),null,!1,!1)});var va=/[\\-:]([a-z])/g;function wa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(va,\nwa);N[b]=new M(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(va,wa);N[b]=new M(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(va,wa);N[b]=new M(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){N[a]=new M(a,1,!1,a.toLowerCase(),null,!1,!1)});\nN.xlinkHref=new M(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){N[a]=new M(a,1,!1,a.toLowerCase(),null,!0,!0)});var xa=/[\"'&<>]/;\nfunction O(a){if(\"boolean\"===typeof a||\"number\"===typeof a)return\"\"+a;a=\"\"+a;var b=xa.exec(a);if(b){var c=\"\",d,f=0;for(d=b.index;d<a.length;d++){switch(a.charCodeAt(d)){case 34:b=\"&quot;\";break;case 38:b=\"&amp;\";break;case 39:b=\"&#x27;\";break;case 60:b=\"&lt;\";break;case 62:b=\"&gt;\";break;default:continue}f!==d&&(c+=a.substring(f,d));f=d+1;c+=b}a=f!==d?c+a.substring(f,d):c}return a}\nfunction ya(a,b){var c=N.hasOwnProperty(a)?N[a]:null;var d;if(d=\"style\"!==a)d=null!==c?0===c.type:!(2<a.length)||\"o\"!==a[0]&&\"O\"!==a[0]||\"n\"!==a[1]&&\"N\"!==a[1]?!1:!0;if(d||ua(a,b,c,!1))return\"\";if(null!==c){a=c.attributeName;d=c.type;if(3===d||4===d&&!0===b)return a+'=\"\"';c.sanitizeURL&&(b=\"\"+b);return a+'=\"'+(O(b)+'\"')}return sa(a)?a+'=\"'+(O(b)+'\"'):\"\"}function za(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}\nvar Aa=\"function\"===typeof Object.is?Object.is:za,P=null,Q=null,R=null,S=!1,T=!1,U=null,V=0;function W(){if(null===P)throw Error(p(321));return P}function Ba(){if(0<V)throw Error(p(312));return{memoizedState:null,queue:null,next:null}}function Ca(){null===R?null===Q?(S=!1,Q=R=Ba()):(S=!0,R=Q):null===R.next?(S=!1,R=R.next=Ba()):(S=!0,R=R.next);return R}function Da(a,b,c,d){for(;T;)T=!1,V+=1,R=null,c=a(b,d);Ea();return c}function Ea(){P=null;T=!1;Q=null;V=0;R=U=null}\nfunction Fa(a,b){return\"function\"===typeof b?b(a):b}function Ga(a,b,c){P=W();R=Ca();if(S){var d=R.queue;b=d.dispatch;if(null!==U&&(c=U.get(d),void 0!==c)){U.delete(d);d=R.memoizedState;do d=a(d,c.action),c=c.next;while(null!==c);R.memoizedState=d;return[d,b]}return[R.memoizedState,b]}a=a===Fa?\"function\"===typeof b?b():b:void 0!==c?c(b):b;R.memoizedState=a;a=R.queue={last:null,dispatch:null};a=a.dispatch=Ha.bind(null,P,a);return[R.memoizedState,a]}\nfunction Ia(a,b){P=W();R=Ca();b=void 0===b?null:b;if(null!==R){var c=R.memoizedState;if(null!==c&&null!==b){var d=c[1];a:if(null===d)d=!1;else{for(var f=0;f<d.length&&f<b.length;f++)if(!Aa(b[f],d[f])){d=!1;break a}d=!0}if(d)return c[0]}}a=a();R.memoizedState=[a,b];return a}function Ha(a,b,c){if(!(25>V))throw Error(p(301));if(a===P)if(T=!0,a={action:c,next:null},null===U&&(U=new Map),c=U.get(b),void 0===c)U.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}}function Ja(){}\nvar X=null,Ka={readContext:function(a){var b=X.threadID;I(a,b);return a[b]},useContext:function(a){W();var b=X.threadID;I(a,b);return a[b]},useMemo:Ia,useReducer:Ga,useRef:function(a){P=W();R=Ca();var b=R.memoizedState;return null===b?(a={current:a},R.memoizedState=a):b},useState:function(a){return Ga(Fa,a)},useLayoutEffect:function(){},useCallback:function(a,b){return Ia(function(){return a},b)},useImperativeHandle:Ja,useEffect:Ja,useDebugValue:Ja,useDeferredValue:function(a){W();return a},useTransition:function(){W();\nreturn[function(a){a()},!1]},useOpaqueIdentifier:function(){return(X.identifierPrefix||\"\")+\"R:\"+(X.uniqueID++).toString(36)},useMutableSource:function(a,b){W();return b(a._source)}},La={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};function Ma(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}\nvar Na={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},Oa=l({menuitem:!0},Na),Y={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,\ngridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Pa=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(Y).forEach(function(a){Pa.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);Y[b]=Y[a]})});\nvar Qa=/([A-Z])/g,Ra=/^ms-/,Z=m.Children.toArray,Sa=la.ReactCurrentDispatcher,Ta={listing:!0,pre:!0,textarea:!0},Ua=/^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/,Va={},Wa={};function Xa(a){if(void 0===a||null===a)return a;var b=\"\";m.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}var Ya=Object.prototype.hasOwnProperty,Za={children:null,dangerouslySetInnerHTML:null,suppressContentEditableWarning:null,suppressHydrationWarning:null};function $a(a,b){if(void 0===a)throw Error(p(152,F(b)||\"Component\"));}\nfunction ab(a,b,c){function d(d,h){var e=h.prototype&&h.prototype.isReactComponent,f=na(h,b,c,e),t=[],g=!1,n={isMounted:function(){return!1},enqueueForceUpdate:function(){if(null===t)return null},enqueueReplaceState:function(a,c){g=!0;t=[c]},enqueueSetState:function(a,c){if(null===t)return null;t.push(c)}};if(e){if(e=new h(d.props,f,n),\"function\"===typeof h.getDerivedStateFromProps){var k=h.getDerivedStateFromProps.call(null,d.props,e.state);null!=k&&(e.state=l({},e.state,k))}}else if(P={},e=h(d.props,\nf,n),e=Da(h,d.props,e,f),null==e||null==e.render){a=e;$a(a,h);return}e.props=d.props;e.context=f;e.updater=n;n=e.state;void 0===n&&(e.state=n=null);if(\"function\"===typeof e.UNSAFE_componentWillMount||\"function\"===typeof e.componentWillMount)if(\"function\"===typeof e.componentWillMount&&\"function\"!==typeof h.getDerivedStateFromProps&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof h.getDerivedStateFromProps&&e.UNSAFE_componentWillMount(),t.length){n=t;var v=\ng;t=null;g=!1;if(v&&1===n.length)e.state=n[0];else{k=v?n[0]:e.state;var H=!0;for(v=v?1:0;v<n.length;v++){var x=n[v];x=\"function\"===typeof x?x.call(e,k,d.props,f):x;null!=x&&(H?(H=!1,k=l({},k,x)):l(k,x))}e.state=k}}else t=null;a=e.render();$a(a,h);if(\"function\"===typeof e.getChildContext&&(d=h.childContextTypes,\"object\"===typeof d)){var y=e.getChildContext();for(var A in y)if(!(A in d))throw Error(p(108,F(h)||\"Unknown\",A));}y&&(b=l({},b,y))}for(;m.isValidElement(a);){var f=a,h=f.type;if(\"function\"!==\ntypeof h)break;d(f,h)}return{child:a,context:b}}\nvar bb=function(){function a(a,b,f){m.isValidElement(a)?a.type!==r?a=[a]:(a=a.props.children,a=m.isValidElement(a)?[a]:Z(a)):a=Z(a);a={type:null,domNamespace:La.html,children:a,childIndex:0,context:ma,footer:\"\"};var c=J[0];if(0===c){var d=J;c=d.length;var g=2*c;if(!(65536>=g))throw Error(p(304));var e=new Uint16Array(g);e.set(d);J=e;J[0]=c+1;for(d=c;d<g-1;d++)J[d]=d+1;J[g-1]=0}else J[0]=J[c];this.threadID=c;this.stack=[a];this.exhausted=!1;this.currentSelectValue=null;this.previousWasTextNode=!1;\nthis.makeStaticMarkup=b;this.suspenseDepth=0;this.contextIndex=-1;this.contextStack=[];this.contextValueStack=[];this.uniqueID=0;this.identifierPrefix=f&&f.identifierPrefix||\"\"}var b=a.prototype;b.destroy=function(){if(!this.exhausted){this.exhausted=!0;this.clearProviders();var a=this.threadID;J[a]=J[0];J[0]=a}};b.pushProvider=function(a){var b=++this.contextIndex,c=a.type._context,h=this.threadID;I(c,h);var t=c[h];this.contextStack[b]=c;this.contextValueStack[b]=t;c[h]=a.props.value};b.popProvider=\nfunction(){var a=this.contextIndex,b=this.contextStack[a],f=this.contextValueStack[a];this.contextStack[a]=null;this.contextValueStack[a]=null;this.contextIndex--;b[this.threadID]=f};b.clearProviders=function(){for(var a=this.contextIndex;0<=a;a--)this.contextStack[a][this.threadID]=this.contextValueStack[a]};b.read=function(a){if(this.exhausted)return null;var b=X;X=this;var c=Sa.current;Sa.current=Ka;try{for(var h=[\"\"],t=!1;h[0].length<a;){if(0===this.stack.length){this.exhausted=!0;var g=this.threadID;\nJ[g]=J[0];J[0]=g;break}var e=this.stack[this.stack.length-1];if(t||e.childIndex>=e.children.length){var L=e.footer;\"\"!==L&&(this.previousWasTextNode=!1);this.stack.pop();if(\"select\"===e.type)this.currentSelectValue=null;else if(null!=e.type&&null!=e.type.type&&e.type.type.$$typeof===B)this.popProvider(e.type);else if(e.type===D){this.suspenseDepth--;var G=h.pop();if(t){t=!1;var C=e.fallbackFrame;if(!C)throw Error(p(303));this.stack.push(C);h[this.suspenseDepth]+=\"\\x3c!--$!--\\x3e\";continue}else h[this.suspenseDepth]+=\nG}h[this.suspenseDepth]+=L}else{var n=e.children[e.childIndex++],k=\"\";try{k+=this.render(n,e.context,e.domNamespace)}catch(v){if(null!=v&&\"function\"===typeof v.then)throw Error(p(294));throw v;}finally{}h.length<=this.suspenseDepth&&h.push(\"\");h[this.suspenseDepth]+=k}}return h[0]}finally{Sa.current=c,X=b,Ea()}};b.render=function(a,b,f){if(\"string\"===typeof a||\"number\"===typeof a){f=\"\"+a;if(\"\"===f)return\"\";if(this.makeStaticMarkup)return O(f);if(this.previousWasTextNode)return\"\\x3c!-- --\\x3e\"+O(f);\nthis.previousWasTextNode=!0;return O(f)}b=ab(a,b,this.threadID);a=b.child;b=b.context;if(null===a||!1===a)return\"\";if(!m.isValidElement(a)){if(null!=a&&null!=a.$$typeof){f=a.$$typeof;if(f===q)throw Error(p(257));throw Error(p(258,f.toString()));}a=Z(a);this.stack.push({type:null,domNamespace:f,children:a,childIndex:0,context:b,footer:\"\"});return\"\"}var c=a.type;if(\"string\"===typeof c)return this.renderDOM(a,b,f);switch(c){case ka:case ja:case u:case z:case ca:case r:return a=Z(a.props.children),this.stack.push({type:null,\ndomNamespace:f,children:a,childIndex:0,context:b,footer:\"\"}),\"\";case D:throw Error(p(294));case ia:throw Error(p(343));}if(\"object\"===typeof c&&null!==c)switch(c.$$typeof){case ba:P={};var d=c.render(a.props,a.ref);d=Da(c.render,a.props,d,a.ref);d=Z(d);this.stack.push({type:null,domNamespace:f,children:d,childIndex:0,context:b,footer:\"\"});return\"\";case da:return a=[m.createElement(c.type,l({ref:a.ref},a.props))],this.stack.push({type:null,domNamespace:f,children:a,childIndex:0,context:b,footer:\"\"}),\n\"\";case B:return c=Z(a.props.children),f={type:a,domNamespace:f,children:c,childIndex:0,context:b,footer:\"\"},this.pushProvider(a),this.stack.push(f),\"\";case aa:c=a.type;d=a.props;var g=this.threadID;I(c,g);c=Z(d.children(c[g]));this.stack.push({type:a,domNamespace:f,children:c,childIndex:0,context:b,footer:\"\"});return\"\";case ha:throw Error(p(338));case ea:return c=a.type,d=c._init,c=d(c._payload),a=[m.createElement(c,l({ref:a.ref},a.props))],this.stack.push({type:null,domNamespace:f,children:a,childIndex:0,\ncontext:b,footer:\"\"}),\"\"}throw Error(p(130,null==c?c:typeof c,\"\"));};b.renderDOM=function(a,b,f){var c=a.type.toLowerCase();f===La.html&&Ma(c);if(!Va.hasOwnProperty(c)){if(!Ua.test(c))throw Error(p(65,c));Va[c]=!0}var d=a.props;if(\"input\"===c)d=l({type:void 0},d,{defaultChecked:void 0,defaultValue:void 0,value:null!=d.value?d.value:d.defaultValue,checked:null!=d.checked?d.checked:d.defaultChecked});else if(\"textarea\"===c){var g=d.value;if(null==g){g=d.defaultValue;var e=d.children;if(null!=e){if(null!=\ng)throw Error(p(92));if(Array.isArray(e)){if(!(1>=e.length))throw Error(p(93));e=e[0]}g=\"\"+e}null==g&&(g=\"\")}d=l({},d,{value:void 0,children:\"\"+g})}else if(\"select\"===c)this.currentSelectValue=null!=d.value?d.value:d.defaultValue,d=l({},d,{value:void 0});else if(\"option\"===c){e=this.currentSelectValue;var L=Xa(d.children);if(null!=e){var G=null!=d.value?d.value+\"\":L;g=!1;if(Array.isArray(e))for(var C=0;C<e.length;C++){if(\"\"+e[C]===G){g=!0;break}}else g=\"\"+e===G;d=l({selected:void 0,children:void 0},\nd,{selected:g,children:L})}}if(g=d){if(Oa[c]&&(null!=g.children||null!=g.dangerouslySetInnerHTML))throw Error(p(137,c));if(null!=g.dangerouslySetInnerHTML){if(null!=g.children)throw Error(p(60));if(!(\"object\"===typeof g.dangerouslySetInnerHTML&&\"__html\"in g.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=g.style&&\"object\"!==typeof g.style)throw Error(p(62));}g=d;e=this.makeStaticMarkup;L=1===this.stack.length;G=\"<\"+a.type;b:if(-1===c.indexOf(\"-\"))C=\"string\"===typeof g.is;else switch(c){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":C=\n!1;break b;default:C=!0}for(w in g)if(Ya.call(g,w)){var n=g[w];if(null!=n){if(\"style\"===w){var k=void 0,v=\"\",H=\"\";for(k in n)if(n.hasOwnProperty(k)){var x=0===k.indexOf(\"--\"),y=n[k];if(null!=y){if(x)var A=k;else if(A=k,Wa.hasOwnProperty(A))A=Wa[A];else{var cb=A.replace(Qa,\"-$1\").toLowerCase().replace(Ra,\"-ms-\");A=Wa[A]=cb}v+=H+A+\":\";H=k;x=null==y||\"boolean\"===typeof y||\"\"===y?\"\":x||\"number\"!==typeof y||0===y||Y.hasOwnProperty(H)&&Y[H]?(\"\"+y).trim():y+\"px\";v+=x;H=\";\"}}n=v||null}k=null;C?Za.hasOwnProperty(w)||\n(k=w,k=sa(k)&&null!=n?k+'=\"'+(O(n)+'\"'):\"\"):k=ya(w,n);k&&(G+=\" \"+k)}}e||L&&(G+=' data-reactroot=\"\"');var w=G;g=\"\";Na.hasOwnProperty(c)?w+=\"/>\":(w+=\">\",g=\"</\"+a.type+\">\");a:{e=d.dangerouslySetInnerHTML;if(null!=e){if(null!=e.__html){e=e.__html;break a}}else if(e=d.children,\"string\"===typeof e||\"number\"===typeof e){e=O(e);break a}e=null}null!=e?(d=[],Ta.hasOwnProperty(c)&&\"\\n\"===e.charAt(0)&&(w+=\"\\n\"),w+=e):d=Z(d.children);a=a.type;f=null==f||\"http://www.w3.org/1999/xhtml\"===f?Ma(a):\"http://www.w3.org/2000/svg\"===\nf&&\"foreignObject\"===a?\"http://www.w3.org/1999/xhtml\":f;this.stack.push({domNamespace:f,type:c,children:d,childIndex:0,context:b,footer:g});this.previousWasTextNode=!1;return w};return a}();exports.renderToNodeStream=function(){throw Error(p(207));};exports.renderToStaticMarkup=function(a,b){a=new bb(a,!0,b);try{return a.read(Infinity)}finally{a.destroy()}};exports.renderToStaticNodeStream=function(){throw Error(p(208));};exports.renderToString=function(a,b){a=new bb(a,!1,b);try{return a.read(Infinity)}finally{a.destroy()}};\nexports.version=\"17.0.2\";\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n  return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = isRequiredForA11y;\nfunction isRequiredForA11y(validator) {\n  return function validate(props, propName, componentName, location, propFullName) {\n    var componentNameSafe = componentName || '<<anonymous>>';\n    var propFullNameSafe = propFullName || propName;\n\n    if (props[propName] == null) {\n      return new Error('The ' + location + ' `' + propFullNameSafe + '` is required to make ' + ('`' + componentNameSafe + '` accessible for users of assistive ') + 'technologies such as screen readers.');\n    }\n\n    for (var _len = arguments.length, args = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n      args[_key - 5] = arguments[_key];\n    }\n\n    return validator.apply(undefined, [props, propName, componentName, location, propFullName].concat(args));\n  };\n}\nmodule.exports = exports['default'];","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n  this.defaults = instanceConfig;\n  this.interceptors = {\n    request: new InterceptorManager(),\n    response: new InterceptorManager()\n  };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n  /*eslint no-param-reassign:0*/\n  // Allow for axios('example/url'[, config]) a la fetch API\n  if (typeof configOrUrl === 'string') {\n    config = config || {};\n    config.url = configOrUrl;\n  } else {\n    config = configOrUrl || {};\n  }\n\n  config = mergeConfig(this.defaults, config);\n\n  // Set config.method\n  if (config.method) {\n    config.method = config.method.toLowerCase();\n  } else if (this.defaults.method) {\n    config.method = this.defaults.method.toLowerCase();\n  } else {\n    config.method = 'get';\n  }\n\n  var transitional = config.transitional;\n\n  if (transitional !== undefined) {\n    validator.assertOptions(transitional, {\n      silentJSONParsing: validators.transitional(validators.boolean),\n      forcedJSONParsing: validators.transitional(validators.boolean),\n      clarifyTimeoutError: validators.transitional(validators.boolean)\n    }, false);\n  }\n\n  // filter out skipped interceptors\n  var requestInterceptorChain = [];\n  var synchronousRequestInterceptors = true;\n  this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n    if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n      return;\n    }\n\n    synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n    requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n  });\n\n  var responseInterceptorChain = [];\n  this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n    responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n  });\n\n  var promise;\n\n  if (!synchronousRequestInterceptors) {\n    var chain = [dispatchRequest, undefined];\n\n    Array.prototype.unshift.apply(chain, requestInterceptorChain);\n    chain = chain.concat(responseInterceptorChain);\n\n    promise = Promise.resolve(config);\n    while (chain.length) {\n      promise = promise.then(chain.shift(), chain.shift());\n    }\n\n    return promise;\n  }\n\n\n  var newConfig = config;\n  while (requestInterceptorChain.length) {\n    var onFulfilled = requestInterceptorChain.shift();\n    var onRejected = requestInterceptorChain.shift();\n    try {\n      newConfig = onFulfilled(newConfig);\n    } catch (error) {\n      onRejected(error);\n      break;\n    }\n  }\n\n  try {\n    promise = dispatchRequest(newConfig);\n  } catch (error) {\n    return Promise.reject(error);\n  }\n\n  while (responseInterceptorChain.length) {\n    promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n  }\n\n  return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n  config = mergeConfig(this.defaults, config);\n  var fullPath = buildFullPath(config.baseURL, config.url);\n  return buildURL(fullPath, config.params, config.paramsSerializer);\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function(url, config) {\n    return this.request(mergeConfig(config || {}, {\n      method: method,\n      url: url,\n      data: (config || {}).data\n    }));\n  };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  /*eslint func-names:0*/\n\n  function generateHTTPMethod(isForm) {\n    return function httpMethod(url, data, config) {\n      return this.request(mergeConfig(config || {}, {\n        method: method,\n        headers: isForm ? {\n          'Content-Type': 'multipart/form-data'\n        } : {},\n        url: url,\n        data: data\n      }));\n    };\n  }\n\n  Axios.prototype[method] = generateHTTPMethod();\n\n  Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = all;\n\nvar _createChainableTypeChecker = require('./utils/createChainableTypeChecker');\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction all() {\n  for (var _len = arguments.length, validators = Array(_len), _key = 0; _key < _len; _key++) {\n    validators[_key] = arguments[_key];\n  }\n\n  function allPropTypes() {\n    for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    var error = null;\n\n    validators.forEach(function (validator) {\n      if (error != null) {\n        return;\n      }\n\n      var result = validator.apply(undefined, args);\n      if (result != null) {\n        error = result;\n      }\n    });\n\n    return error;\n  }\n\n  return (0, _createChainableTypeChecker2.default)(allPropTypes);\n}\nmodule.exports = exports['default'];","'use strict';\n\nmodule.exports = {\n  silentJSONParsing: true,\n  forcedJSONParsing: true,\n  clarifyTimeoutError: false\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"ef0b1110\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"reactcratypescript:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkreactcratypescript\"] = self[\"webpackChunkreactcratypescript\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","function _extends() {\n  return _extends = Object.assign ? Object.assign.bind() : function (n) {\n    for (var e = 1; e < arguments.length; e++) {\n      var t = arguments[e];\n      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n    }\n    return n;\n  }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _objectWithoutPropertiesLoose(r, e) {\n  if (null == r) return {};\n  var t = {};\n  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n    if (-1 !== e.indexOf(n)) continue;\n    t[n] = r[n];\n  }\n  return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React, { useContext, useMemo } from 'react';\nvar ThemeContext = /*#__PURE__*/React.createContext({});\nvar Consumer = ThemeContext.Consumer,\n    Provider = ThemeContext.Provider;\n\nfunction ThemeProvider(_ref) {\n  var prefixes = _ref.prefixes,\n      children = _ref.children;\n  var copiedPrefixes = useMemo(function () {\n    return _extends({}, prefixes);\n  }, [prefixes]);\n  return /*#__PURE__*/React.createElement(Provider, {\n    value: copiedPrefixes\n  }, children);\n}\n\nexport function useBootstrapPrefix(prefix, defaultPrefix) {\n  var prefixes = useContext(ThemeContext);\n  return prefix || prefixes[defaultPrefix] || defaultPrefix;\n}\n\nfunction createBootstrapComponent(Component, opts) {\n  if (typeof opts === 'string') opts = {\n    prefix: opts\n  };\n  var isClassy = Component.prototype && Component.prototype.isReactComponent; // If it's a functional component make sure we don't break it with a ref\n\n  var _opts = opts,\n      prefix = _opts.prefix,\n      _opts$forwardRefAs = _opts.forwardRefAs,\n      forwardRefAs = _opts$forwardRefAs === void 0 ? isClassy ? 'ref' : 'innerRef' : _opts$forwardRefAs;\n  var Wrapped = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {\n    var props = _extends({}, _ref2);\n\n    props[forwardRefAs] = ref;\n    var bsPrefix = useBootstrapPrefix(props.bsPrefix, prefix);\n    return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n      bsPrefix: bsPrefix\n    }));\n  });\n  Wrapped.displayName = \"Bootstrap(\" + (Component.displayName || Component.name) + \")\";\n  return Wrapped;\n}\n\nexport { createBootstrapComponent, Consumer as ThemeConsumer };\nexport default ThemeProvider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"fluid\", \"as\", \"className\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n  fluid: false\n};\nvar Container = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      fluid = _ref.fluid,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'div' : _ref$as,\n      className = _ref.className,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'container');\n  var suffix = typeof fluid === 'string' ? \"-\" + fluid : '-fluid';\n  return /*#__PURE__*/React.createElement(Component, _extends({\n    ref: ref\n  }, props, {\n    className: classNames(className, fluid ? \"\" + prefix + suffix : prefix)\n  }));\n});\nContainer.displayName = 'Container';\nContainer.defaultProps = defaultProps;\nexport default Container;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"noGutters\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar DEVICE_SIZES = ['xl', 'lg', 'md', 'sm', 'xs'];\nvar defaultProps = {\n  noGutters: false\n};\nvar Row = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      noGutters = _ref.noGutters,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'div' : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  var decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'row');\n  var sizePrefix = decoratedBsPrefix + \"-cols\";\n  var classes = [];\n  DEVICE_SIZES.forEach(function (brkPoint) {\n    var propValue = props[brkPoint];\n    delete props[brkPoint];\n    var cols;\n\n    if (propValue != null && typeof propValue === 'object') {\n      cols = propValue.cols;\n    } else {\n      cols = propValue;\n    }\n\n    var infix = brkPoint !== 'xs' ? \"-\" + brkPoint : '';\n    if (cols != null) classes.push(\"\" + sizePrefix + infix + \"-\" + cols);\n  });\n  return /*#__PURE__*/React.createElement(Component, _extends({\n    ref: ref\n  }, props, {\n    className: classNames.apply(void 0, [className, decoratedBsPrefix, noGutters && 'no-gutters'].concat(classes))\n  }));\n});\nRow.displayName = 'Row';\nRow.defaultProps = defaultProps;\nexport default Row;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar DEVICE_SIZES = ['xl', 'lg', 'md', 'sm', 'xs'];\nvar Col = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'div' : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'col');\n  var spans = [];\n  var classes = [];\n  DEVICE_SIZES.forEach(function (brkPoint) {\n    var propValue = props[brkPoint];\n    delete props[brkPoint];\n    var span;\n    var offset;\n    var order;\n\n    if (typeof propValue === 'object' && propValue != null) {\n      var _propValue$span = propValue.span;\n      span = _propValue$span === void 0 ? true : _propValue$span;\n      offset = propValue.offset;\n      order = propValue.order;\n    } else {\n      span = propValue;\n    }\n\n    var infix = brkPoint !== 'xs' ? \"-\" + brkPoint : '';\n    if (span) spans.push(span === true ? \"\" + prefix + infix : \"\" + prefix + infix + \"-\" + span);\n    if (order != null) classes.push(\"order\" + infix + \"-\" + order);\n    if (offset != null) classes.push(\"offset\" + infix + \"-\" + offset);\n  });\n\n  if (!spans.length) {\n    spans.push(prefix); // plain 'col'\n  }\n\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classNames.apply(void 0, [className].concat(spans, classes))\n  }));\n});\nCol.displayName = 'Col';\nexport default Col;","var matchesImpl;\n/**\n * Checks if a given element matches a selector.\n * \n * @param node the element\n * @param selector the selector\n */\n\nexport default function matches(node, selector) {\n  if (!matchesImpl) {\n    var body = document.body;\n    var nativeMatch = body.matches || body.matchesSelector || body.webkitMatchesSelector || body.mozMatchesSelector || body.msMatchesSelector;\n\n    matchesImpl = function matchesImpl(n, s) {\n      return nativeMatch.call(n, s);\n    };\n  }\n\n  return matchesImpl(node, selector);\n}","var toArray = Function.prototype.bind.call(Function.prototype.call, [].slice);\n/**\n * Runs `querySelectorAll` on a given element.\n * \n * @param element the element\n * @param selector the selector\n */\n\nexport default function qsa(element, selector) {\n  return toArray(element.querySelectorAll(selector));\n}","export default !!(typeof window !== 'undefined' && window.document && window.document.createElement);","/* eslint-disable no-return-assign */\nimport canUseDOM from './canUseDOM';\nexport var optionsSupported = false;\nexport var onceSupported = false;\n\ntry {\n  var options = {\n    get passive() {\n      return optionsSupported = true;\n    },\n\n    get once() {\n      // eslint-disable-next-line no-multi-assign\n      return onceSupported = optionsSupported = true;\n    }\n\n  };\n\n  if (canUseDOM) {\n    window.addEventListener('test', options, options);\n    window.removeEventListener('test', options, true);\n  }\n} catch (e) {\n  /* */\n}\n\n/**\n * An `addEventListener` ponyfill, supports the `once` option\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction addEventListener(node, eventName, handler, options) {\n  if (options && typeof options !== 'boolean' && !onceSupported) {\n    var once = options.once,\n        capture = options.capture;\n    var wrappedHandler = handler;\n\n    if (!onceSupported && once) {\n      wrappedHandler = handler.__once || function onceHandler(event) {\n        this.removeEventListener(eventName, onceHandler, capture);\n        handler.call(this, event);\n      };\n\n      handler.__once = wrappedHandler;\n    }\n\n    node.addEventListener(eventName, wrappedHandler, optionsSupported ? options : capture);\n  }\n\n  node.addEventListener(eventName, handler, options);\n}\n\nexport default addEventListener;","import invariant from 'invariant';\n\nvar noop = function noop() {};\n\nfunction readOnlyPropType(handler, name) {\n  return function (props, propName) {\n    if (props[propName] !== undefined) {\n      if (!props[handler]) {\n        return new Error(\"You have provided a `\" + propName + \"` prop to `\" + name + \"` \" + (\"without an `\" + handler + \"` handler prop. This will render a read-only field. \") + (\"If the field should be mutable use `\" + defaultKey(propName) + \"`. \") + (\"Otherwise, set `\" + handler + \"`.\"));\n      }\n    }\n  };\n}\n\nexport function uncontrolledPropTypes(controlledValues, displayName) {\n  var propTypes = {};\n  Object.keys(controlledValues).forEach(function (prop) {\n    // add default propTypes for folks that use runtime checks\n    propTypes[defaultKey(prop)] = noop;\n\n    if (process.env.NODE_ENV !== 'production') {\n      var handler = controlledValues[prop];\n      !(typeof handler === 'string' && handler.trim().length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Uncontrollable - [%s]: the prop `%s` needs a valid handler key name in order to make it uncontrollable', displayName, prop) : invariant(false) : void 0;\n      propTypes[prop] = readOnlyPropType(handler, displayName);\n    }\n  });\n  return propTypes;\n}\nexport function isProp(props, prop) {\n  return props[prop] !== undefined;\n}\nexport function defaultKey(key) {\n  return 'default' + key.charAt(0).toUpperCase() + key.substr(1);\n}\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nexport function canAcceptRef(component) {\n  return !!component && (typeof component !== 'function' || component.prototype && component.prototype.isReactComponent);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\n\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\n\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n\nimport { useCallback, useRef, useState } from 'react';\nimport * as Utils from './utils';\n\nfunction useUncontrolledProp(propValue, defaultValue, handler) {\n  var wasPropRef = useRef(propValue !== undefined);\n\n  var _useState = useState(defaultValue),\n      stateValue = _useState[0],\n      setState = _useState[1];\n\n  var isProp = propValue !== undefined;\n  var wasProp = wasPropRef.current;\n  wasPropRef.current = isProp;\n  /**\n   * If a prop switches from controlled to Uncontrolled\n   * reset its value to the defaultValue\n   */\n\n  if (!isProp && wasProp && stateValue !== defaultValue) {\n    setState(defaultValue);\n  }\n\n  return [isProp ? propValue : stateValue, useCallback(function (value) {\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    if (handler) handler.apply(void 0, [value].concat(args));\n    setState(value);\n  }, [handler])];\n}\n\nexport { useUncontrolledProp };\nexport default function useUncontrolled(props, config) {\n  return Object.keys(config).reduce(function (result, fieldName) {\n    var _extends2;\n\n    var _ref = result,\n        defaultValue = _ref[Utils.defaultKey(fieldName)],\n        propsValue = _ref[fieldName],\n        rest = _objectWithoutPropertiesLoose(_ref, [Utils.defaultKey(fieldName), fieldName].map(_toPropertyKey));\n\n    var handlerName = config[fieldName];\n\n    var _useUncontrolledProp = useUncontrolledProp(propsValue, defaultValue, props[handlerName]),\n        value = _useUncontrolledProp[0],\n        handler = _useUncontrolledProp[1];\n\n    return _extends({}, rest, (_extends2 = {}, _extends2[fieldName] = value, _extends2[handlerName] = handler, _extends2));\n  }, props);\n}","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n  // Call this.constructor.gDSFP to support sub-classes.\n  var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n  if (state !== null && state !== undefined) {\n    this.setState(state);\n  }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n  // Call this.constructor.gDSFP to support sub-classes.\n  // Use the setState() updater to ensure state isn't stale in certain edge cases.\n  function updater(prevState) {\n    var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n    return state !== null && state !== undefined ? state : null;\n  }\n  // Binding \"this\" is important for shallow renderer support.\n  this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n  try {\n    var prevProps = this.props;\n    var prevState = this.state;\n    this.props = nextProps;\n    this.state = nextState;\n    this.__reactInternalSnapshotFlag = true;\n    this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n      prevProps,\n      prevState\n    );\n  } finally {\n    this.props = prevProps;\n    this.state = prevState;\n  }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n  var prototype = Component.prototype;\n\n  if (!prototype || !prototype.isReactComponent) {\n    throw new Error('Can only polyfill class components');\n  }\n\n  if (\n    typeof Component.getDerivedStateFromProps !== 'function' &&\n    typeof prototype.getSnapshotBeforeUpdate !== 'function'\n  ) {\n    return Component;\n  }\n\n  // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n  // Error if any of these lifecycles are present,\n  // Because they would work differently between older and newer (16.3+) versions of React.\n  var foundWillMountName = null;\n  var foundWillReceivePropsName = null;\n  var foundWillUpdateName = null;\n  if (typeof prototype.componentWillMount === 'function') {\n    foundWillMountName = 'componentWillMount';\n  } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n    foundWillMountName = 'UNSAFE_componentWillMount';\n  }\n  if (typeof prototype.componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'componentWillReceiveProps';\n  } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n  }\n  if (typeof prototype.componentWillUpdate === 'function') {\n    foundWillUpdateName = 'componentWillUpdate';\n  } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n    foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n  }\n  if (\n    foundWillMountName !== null ||\n    foundWillReceivePropsName !== null ||\n    foundWillUpdateName !== null\n  ) {\n    var componentName = Component.displayName || Component.name;\n    var newApiName =\n      typeof Component.getDerivedStateFromProps === 'function'\n        ? 'getDerivedStateFromProps()'\n        : 'getSnapshotBeforeUpdate()';\n\n    throw Error(\n      'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n        componentName +\n        ' uses ' +\n        newApiName +\n        ' but also contains the following legacy lifecycles:' +\n        (foundWillMountName !== null ? '\\n  ' + foundWillMountName : '') +\n        (foundWillReceivePropsName !== null\n          ? '\\n  ' + foundWillReceivePropsName\n          : '') +\n        (foundWillUpdateName !== null ? '\\n  ' + foundWillUpdateName : '') +\n        '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n        'https://fb.me/react-async-component-lifecycle-hooks'\n    );\n  }\n\n  // React <= 16.2 does not support static getDerivedStateFromProps.\n  // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n  // Newer versions of React will ignore these lifecycles if gDSFP exists.\n  if (typeof Component.getDerivedStateFromProps === 'function') {\n    prototype.componentWillMount = componentWillMount;\n    prototype.componentWillReceiveProps = componentWillReceiveProps;\n  }\n\n  // React <= 16.2 does not support getSnapshotBeforeUpdate.\n  // As a workaround, use cWU to invoke the new lifecycle.\n  // Newer versions of React will ignore that lifecycle if gSBU exists.\n  if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n    if (typeof prototype.componentDidUpdate !== 'function') {\n      throw new Error(\n        'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n      );\n    }\n\n    prototype.componentWillUpdate = componentWillUpdate;\n\n    var componentDidUpdate = prototype.componentDidUpdate;\n\n    prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n      prevProps,\n      prevState,\n      maybeSnapshot\n    ) {\n      // 16.3+ will not execute our will-update method;\n      // It will pass a snapshot value to did-update though.\n      // Older versions will require our polyfilled will-update value.\n      // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n      // Because for <= 15.x versions this might be a \"prevContext\" object.\n      // We also can't just check \"__reactInternalSnapshot\",\n      // Because get-snapshot might return a falsy value.\n      // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n      var snapshot = this.__reactInternalSnapshotFlag\n        ? this.__reactInternalSnapshot\n        : maybeSnapshot;\n\n      componentDidUpdate.call(this, prevProps, prevState, snapshot);\n    };\n  }\n\n  return Component;\n}\n\nexport { polyfill };\n","import { useEffect, useRef } from 'react';\n\n/**\n * Store the last of some value. Tracked via a `Ref` only updating it\n * after the component renders.\n *\n * Helpful if you need to compare a prop value to it's previous value during render.\n *\n * ```ts\n * function Component(props) {\n *   const lastProps = usePrevious(props)\n *\n *   if (lastProps.foo !== props.foo)\n *     resetValueFromProps(props.foo)\n * }\n * ```\n *\n * @param value the value to track\n */\nexport default function usePrevious(value) {\n  const ref = useRef(null);\n  useEffect(() => {\n    ref.current = value;\n  });\n  return ref.current;\n}","import { useReducer } from 'react';\n\n/**\n * Returns a function that triggers a component update. the hook equivalent to\n * `this.forceUpdate()` in a class component. In most cases using a state value directly\n * is preferable but may be required in some advanced usages of refs for interop or\n * when direct DOM manipulation is required.\n *\n * ```ts\n * const forceUpdate = useForceUpdate();\n *\n * const updateOnClick = useCallback(() => {\n *  forceUpdate()\n * }, [forceUpdate])\n *\n * return <button type=\"button\" onClick={updateOnClick}>Hi there</button>\n * ```\n */\nexport default function useForceUpdate() {\n  // The toggling state value is designed to defeat React optimizations for skipping\n  // updates when they are strictly equal to the last state value\n  const [, dispatch] = useReducer(state => !state, false);\n  return dispatch;\n}","import { useEffect, useRef } from 'react';\n\n/**\n * Creates a `Ref` whose value is updated in an effect, ensuring the most recent\n * value is the one rendered with. Generally only required for Concurrent mode usage\n * where previous work in `render()` may be discarded before being used.\n *\n * This is safe to access in an event handler.\n *\n * @param value The `Ref` value\n */\nfunction useCommittedRef(value) {\n  const ref = useRef(value);\n  useEffect(() => {\n    ref.current = value;\n  }, [value]);\n  return ref;\n}\nexport default useCommittedRef;","import { useCallback } from 'react';\nimport useCommittedRef from './useCommittedRef';\nexport default function useEventCallback(fn) {\n  const ref = useCommittedRef(fn);\n  return useCallback(function (...args) {\n    return ref.current && ref.current(...args);\n  }, [ref]);\n}","import useEventListener from './useEventListener';\nimport { useCallback } from 'react';\n/**\n * Attaches an event handler outside directly to the `document`,\n * bypassing the react synthetic event system.\n *\n * ```ts\n * useGlobalListener('keydown', (event) => {\n *  console.log(event.key)\n * })\n * ```\n *\n * @param event The DOM event name\n * @param handler An event handler\n * @param capture Whether or not to listen during the capture event phase\n */\nexport default function useGlobalListener(event, handler, capture = false) {\n  const documentTarget = useCallback(() => document, []);\n  return useEventListener(documentTarget, event, handler, capture);\n}","import { useEffect } from 'react';\nimport useEventCallback from './useEventCallback';\n/**\n * Attaches an event handler outside directly to specified DOM element\n * bypassing the react synthetic event system.\n *\n * @param element The target to listen for events on\n * @param event The DOM event name\n * @param handler An event handler\n * @param capture Whether or not to listen during the capture event phase\n */\nexport default function useEventListener(eventTarget, event, listener, capture = false) {\n  const handler = useEventCallback(listener);\n  useEffect(() => {\n    const target = typeof eventTarget === 'function' ? eventTarget() : eventTarget;\n    target.addEventListener(event, handler, capture);\n    return () => target.removeEventListener(event, handler, capture);\n  }, [eventTarget]);\n}","import React from 'react';\nvar DropdownContext = /*#__PURE__*/React.createContext(null);\nexport default DropdownContext;","import { useState } from 'react';\n\n/**\n * A convenience hook around `useState` designed to be paired with\n * the component [callback ref](https://reactjs.org/docs/refs-and-the-dom.html#callback-refs) api.\n * Callback refs are useful over `useRef()` when you need to respond to the ref being set\n * instead of lazily accessing it in an effect.\n *\n * ```ts\n * const [element, attachRef] = useCallbackRef<HTMLDivElement>()\n *\n * useEffect(() => {\n *   if (!element) return\n *\n *   const calendar = new FullCalendar.Calendar(element)\n *\n *   return () => {\n *     calendar.destroy()\n *   }\n * }, [element])\n *\n * return <div ref={attachRef} />\n * ```\n *\n * @category refs\n */\nexport default function useCallbackRef() {\n  return useState(null);\n}","import { useRef, useEffect } from 'react';\n\n/**\n * Track whether a component is current mounted. Generally less preferable than\n * properlly canceling effects so they don't run after a component is unmounted,\n * but helpful in cases where that isn't feasible, such as a `Promise` resolution.\n *\n * @returns a function that returns the current isMounted state of the component\n *\n * ```ts\n * const [data, setData] = useState(null)\n * const isMounted = useMounted()\n *\n * useEffect(() => {\n *   fetchdata().then((newData) => {\n *      if (isMounted()) {\n *        setData(newData);\n *      }\n *   })\n * })\n * ```\n */\nexport default function useMounted() {\n  const mounted = useRef(true);\n  const isMounted = useRef(() => mounted.current);\n  useEffect(() => {\n    mounted.current = true;\n    return () => {\n      mounted.current = false;\n    };\n  }, []);\n  return isMounted.current;\n}","import { useCallback } from 'react';\nimport useMounted from './useMounted';\n\n/**\n * `useSafeState` takes the return value of a `useState` hook and wraps the\n * setter to prevent updates onces the component has unmounted. Can used\n * with `useMergeState` and `useStateAsync` as well\n *\n * @param state The return value of a useStateHook\n *\n * ```ts\n * const [show, setShow] = useSafeState(useState(true));\n * ```\n */\n\nfunction useSafeState(state) {\n  const isMounted = useMounted();\n  return [state[0], useCallback(nextState => {\n    if (!isMounted()) return;\n    return state[1](nextState);\n  }, [isMounted, state[1]])];\n}\nexport default useSafeState;","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n  return placement.split('-')[0];\n}","export default function getWindow(node) {\n  if (node == null) {\n    return window;\n  }\n\n  if (node.toString() !== '[object Window]') {\n    var ownerDocument = node.ownerDocument;\n    return ownerDocument ? ownerDocument.defaultView || window : window;\n  }\n\n  return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n  var OwnElement = getWindow(node).Element;\n  return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n  var OwnElement = getWindow(node).HTMLElement;\n  return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n  // IE 11 has no ShadowRoot\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n\n  var OwnElement = getWindow(node).ShadowRoot;\n  return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n  var uaData = navigator.userAgentData;\n\n  if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n    return uaData.brands.map(function (item) {\n      return item.brand + \"/\" + item.version;\n    }).join(' ');\n  }\n\n  return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n  return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n\n  var clientRect = element.getBoundingClientRect();\n  var scaleX = 1;\n  var scaleY = 1;\n\n  if (includeScale && isHTMLElement(element)) {\n    scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n    scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n  }\n\n  var _ref = isElement(element) ? getWindow(element) : window,\n      visualViewport = _ref.visualViewport;\n\n  var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n  var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n  var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n  var width = clientRect.width / scaleX;\n  var height = clientRect.height / scaleY;\n  return {\n    width: width,\n    height: height,\n    top: y,\n    right: x + width,\n    bottom: y + height,\n    left: x,\n    x: x,\n    y: y\n  };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n  var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n  // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n  var width = element.offsetWidth;\n  var height = element.offsetHeight;\n\n  if (Math.abs(clientRect.width - width) <= 1) {\n    width = clientRect.width;\n  }\n\n  if (Math.abs(clientRect.height - height) <= 1) {\n    height = clientRect.height;\n  }\n\n  return {\n    x: element.offsetLeft,\n    y: element.offsetTop,\n    width: width,\n    height: height\n  };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n  var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n  if (parent.contains(child)) {\n    return true;\n  } // then fallback to custom implementation with Shadow DOM support\n  else if (rootNode && isShadowRoot(rootNode)) {\n      var next = child;\n\n      do {\n        if (next && parent.isSameNode(next)) {\n          return true;\n        } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n        next = next.parentNode || next.host;\n      } while (next);\n    } // Give up, the result is false\n\n\n  return false;\n}","export default function getNodeName(element) {\n  return element ? (element.nodeName || '').toLowerCase() : null;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n  return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n  // $FlowFixMe[incompatible-return]: assume body is always available\n  return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n  element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n  if (getNodeName(element) === 'html') {\n    return element;\n  }\n\n  return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n    // $FlowFixMe[incompatible-return]\n    // $FlowFixMe[prop-missing]\n    element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n    element.parentNode || ( // DOM Element detected\n    isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n    // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n    getDocumentElement(element) // fallback\n\n  );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n  if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n  getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n\n  return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n  var isFirefox = /firefox/i.test(getUAString());\n  var isIE = /Trident/i.test(getUAString());\n\n  if (isIE && isHTMLElement(element)) {\n    // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n    var elementCss = getComputedStyle(element);\n\n    if (elementCss.position === 'fixed') {\n      return null;\n    }\n  }\n\n  var currentNode = getParentNode(element);\n\n  if (isShadowRoot(currentNode)) {\n    currentNode = currentNode.host;\n  }\n\n  while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n    var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n    // create a containing block.\n    // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n    if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n      return currentNode;\n    } else {\n      currentNode = currentNode.parentNode;\n    }\n  }\n\n  return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n  var window = getWindow(element);\n  var offsetParent = getTrueOffsetParent(element);\n\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent);\n  }\n\n  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n    return window;\n  }\n\n  return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n  return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n  return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n  var v = within(min, value, max);\n  return v > max ? max : v;\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n  return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  };\n}","export default function expandToHashMap(value, keys) {\n  return keys.reduce(function (hashMap, key) {\n    hashMap[key] = value;\n    return hashMap;\n  }, {});\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n  return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n  return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getVariation(placement) {\n  return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n  top: 'auto',\n  right: 'auto',\n  bottom: 'auto',\n  left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n  var x = _ref.x,\n      y = _ref.y;\n  var dpr = win.devicePixelRatio || 1;\n  return {\n    x: round(x * dpr) / dpr || 0,\n    y: round(y * dpr) / dpr || 0\n  };\n}\n\nexport function mapToStyles(_ref2) {\n  var _Object$assign2;\n\n  var popper = _ref2.popper,\n      popperRect = _ref2.popperRect,\n      placement = _ref2.placement,\n      variation = _ref2.variation,\n      offsets = _ref2.offsets,\n      position = _ref2.position,\n      gpuAcceleration = _ref2.gpuAcceleration,\n      adaptive = _ref2.adaptive,\n      roundOffsets = _ref2.roundOffsets,\n      isFixed = _ref2.isFixed;\n  var _offsets$x = offsets.x,\n      x = _offsets$x === void 0 ? 0 : _offsets$x,\n      _offsets$y = offsets.y,\n      y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n  var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n    x: x,\n    y: y\n  }) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref3.x;\n  y = _ref3.y;\n  var hasX = offsets.hasOwnProperty('x');\n  var hasY = offsets.hasOwnProperty('y');\n  var sideX = left;\n  var sideY = top;\n  var win = window;\n\n  if (adaptive) {\n    var offsetParent = getOffsetParent(popper);\n    var heightProp = 'clientHeight';\n    var widthProp = 'clientWidth';\n\n    if (offsetParent === getWindow(popper)) {\n      offsetParent = getDocumentElement(popper);\n\n      if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n        heightProp = 'scrollHeight';\n        widthProp = 'scrollWidth';\n      }\n    } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n    offsetParent = offsetParent;\n\n    if (placement === top || (placement === left || placement === right) && variation === end) {\n      sideY = bottom;\n      var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n      offsetParent[heightProp];\n      y -= offsetY - popperRect.height;\n      y *= gpuAcceleration ? 1 : -1;\n    }\n\n    if (placement === left || (placement === top || placement === bottom) && variation === end) {\n      sideX = right;\n      var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n      offsetParent[widthProp];\n      x -= offsetX - popperRect.width;\n      x *= gpuAcceleration ? 1 : -1;\n    }\n  }\n\n  var commonStyles = Object.assign({\n    position: position\n  }, adaptive && unsetSides);\n\n  var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n    x: x,\n    y: y\n  }, getWindow(popper)) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref4.x;\n  y = _ref4.y;\n\n  if (gpuAcceleration) {\n    var _Object$assign;\n\n    return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n  }\n\n  return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n  var state = _ref5.state,\n      options = _ref5.options;\n  var _options$gpuAccelerat = options.gpuAcceleration,\n      gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n      _options$adaptive = options.adaptive,\n      adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n      _options$roundOffsets = options.roundOffsets,\n      roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n  var commonStyles = {\n    placement: getBasePlacement(state.placement),\n    variation: getVariation(state.placement),\n    popper: state.elements.popper,\n    popperRect: state.rects.popper,\n    gpuAcceleration: gpuAcceleration,\n    isFixed: state.options.strategy === 'fixed'\n  };\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.popperOffsets,\n      position: state.options.strategy,\n      adaptive: adaptive,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  if (state.modifiersData.arrow != null) {\n    state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.arrow,\n      position: 'absolute',\n      adaptive: false,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-placement': state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'computeStyles',\n  enabled: true,\n  phase: 'beforeWrite',\n  fn: computeStyles,\n  data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n  passive: true\n};\n\nfunction effect(_ref) {\n  var state = _ref.state,\n      instance = _ref.instance,\n      options = _ref.options;\n  var _options$scroll = options.scroll,\n      scroll = _options$scroll === void 0 ? true : _options$scroll,\n      _options$resize = options.resize,\n      resize = _options$resize === void 0 ? true : _options$resize;\n  var window = getWindow(state.elements.popper);\n  var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n  if (scroll) {\n    scrollParents.forEach(function (scrollParent) {\n      scrollParent.addEventListener('scroll', instance.update, passive);\n    });\n  }\n\n  if (resize) {\n    window.addEventListener('resize', instance.update, passive);\n  }\n\n  return function () {\n    if (scroll) {\n      scrollParents.forEach(function (scrollParent) {\n        scrollParent.removeEventListener('scroll', instance.update, passive);\n      });\n    }\n\n    if (resize) {\n      window.removeEventListener('resize', instance.update, passive);\n    }\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'eventListeners',\n  enabled: true,\n  phase: 'write',\n  fn: function fn() {},\n  effect: effect,\n  data: {}\n};","var hash = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}","var hash = {\n  start: 'end',\n  end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n  return placement.replace(/start|end/g, function (matched) {\n    return hash[matched];\n  });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n  var win = getWindow(node);\n  var scrollLeft = win.pageXOffset;\n  var scrollTop = win.pageYOffset;\n  return {\n    scrollLeft: scrollLeft,\n    scrollTop: scrollTop\n  };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  // Popper 1 is broken in this case and never had a bug report so let's assume\n  // it's not an issue. I don't think anyone ever specifies width on <html>\n  // anyway.\n  // Browsers where the left scrollbar doesn't cause an issue report `0` for\n  // this (e.g. Edge 2019, IE11, Safari)\n  return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n  // Firefox wants us to check `-x` and `-y` variations as well\n  var _getComputedStyle = getComputedStyle(element),\n      overflow = _getComputedStyle.overflow,\n      overflowX = _getComputedStyle.overflowX,\n      overflowY = _getComputedStyle.overflowY;\n\n  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n  if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n    // $FlowFixMe[incompatible-return]: assume body is always available\n    return node.ownerDocument.body;\n  }\n\n  if (isHTMLElement(node) && isScrollParent(node)) {\n    return node;\n  }\n\n  return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n  var _element$ownerDocumen;\n\n  if (list === void 0) {\n    list = [];\n  }\n\n  var scrollParent = getScrollParent(element);\n  var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n  var win = getWindow(scrollParent);\n  var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n  var updatedList = list.concat(target);\n  return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n  updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n  return Object.assign({}, rect, {\n    left: rect.x,\n    top: rect.y,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n  var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n  rect.top = rect.top + element.clientTop;\n  rect.left = rect.left + element.clientLeft;\n  rect.bottom = rect.top + element.clientHeight;\n  rect.right = rect.left + element.clientWidth;\n  rect.width = element.clientWidth;\n  rect.height = element.clientHeight;\n  rect.x = rect.left;\n  rect.y = rect.top;\n  return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n  return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n  var clippingParents = listScrollParents(getParentNode(element));\n  var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n  var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n  if (!isElement(clipperElement)) {\n    return [];\n  } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n  return clippingParents.filter(function (clippingParent) {\n    return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n  });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n  var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n  var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n  var firstClippingParent = clippingParents[0];\n  var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n    var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n  clippingRect.width = clippingRect.right - clippingRect.left;\n  clippingRect.height = clippingRect.bottom - clippingRect.top;\n  clippingRect.x = clippingRect.left;\n  clippingRect.y = clippingRect.top;\n  return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n  var win = getWindow(element);\n  var html = getDocumentElement(element);\n  var visualViewport = win.visualViewport;\n  var width = html.clientWidth;\n  var height = html.clientHeight;\n  var x = 0;\n  var y = 0;\n\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    var layoutViewport = isLayoutViewport();\n\n    if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x + getWindowScrollBarX(element),\n    y: y\n  };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n  var _element$ownerDocumen;\n\n  var html = getDocumentElement(element);\n  var winScroll = getWindowScroll(element);\n  var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n  var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n  var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n  var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n  var y = -winScroll.scrollTop;\n\n  if (getComputedStyle(body || html).direction === 'rtl') {\n    x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x,\n    y: y\n  };\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n  var reference = _ref.reference,\n      element = _ref.element,\n      placement = _ref.placement;\n  var basePlacement = placement ? getBasePlacement(placement) : null;\n  var variation = placement ? getVariation(placement) : null;\n  var commonX = reference.x + reference.width / 2 - element.width / 2;\n  var commonY = reference.y + reference.height / 2 - element.height / 2;\n  var offsets;\n\n  switch (basePlacement) {\n    case top:\n      offsets = {\n        x: commonX,\n        y: reference.y - element.height\n      };\n      break;\n\n    case bottom:\n      offsets = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n\n    case right:\n      offsets = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n\n    case left:\n      offsets = {\n        x: reference.x - element.width,\n        y: commonY\n      };\n      break;\n\n    default:\n      offsets = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n\n  var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n  if (mainAxis != null) {\n    var len = mainAxis === 'y' ? 'height' : 'width';\n\n    switch (variation) {\n      case start:\n        offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n        break;\n\n      case end:\n        offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n        break;\n\n      default:\n    }\n  }\n\n  return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      _options$placement = _options.placement,\n      placement = _options$placement === void 0 ? state.placement : _options$placement,\n      _options$strategy = _options.strategy,\n      strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n      _options$boundary = _options.boundary,\n      boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n      _options$rootBoundary = _options.rootBoundary,\n      rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n      _options$elementConte = _options.elementContext,\n      elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n      _options$altBoundary = _options.altBoundary,\n      altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n      _options$padding = _options.padding,\n      padding = _options$padding === void 0 ? 0 : _options$padding;\n  var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n  var altContext = elementContext === popper ? reference : popper;\n  var popperRect = state.rects.popper;\n  var element = state.elements[altBoundary ? altContext : elementContext];\n  var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n  var referenceClientRect = getBoundingClientRect(state.elements.reference);\n  var popperOffsets = computeOffsets({\n    reference: referenceClientRect,\n    element: popperRect,\n    strategy: 'absolute',\n    placement: placement\n  });\n  var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n  var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n  // 0 or negative = within the clipping rect\n\n  var overflowOffsets = {\n    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n    bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n    right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n  };\n  var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n  if (elementContext === popper && offsetData) {\n    var offset = offsetData[placement];\n    Object.keys(overflowOffsets).forEach(function (key) {\n      var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n      var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n      overflowOffsets[key] += offset[axis] * multiply;\n    });\n  }\n\n  return overflowOffsets;\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n  if (preventedOffsets === void 0) {\n    preventedOffsets = {\n      x: 0,\n      y: 0\n    };\n  }\n\n  return {\n    top: overflow.top - rect.height - preventedOffsets.y,\n    right: overflow.right - rect.width + preventedOffsets.x,\n    bottom: overflow.bottom - rect.height + preventedOffsets.y,\n    left: overflow.left - rect.width - preventedOffsets.x\n  };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n  return [top, right, bottom, left].some(function (side) {\n    return overflow[side] >= 0;\n  });\n}\n\nfunction hide(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var preventedOffsets = state.modifiersData.preventOverflow;\n  var referenceOverflow = detectOverflow(state, {\n    elementContext: 'reference'\n  });\n  var popperAltOverflow = detectOverflow(state, {\n    altBoundary: true\n  });\n  var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n  var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n  var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n  var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n  state.modifiersData[name] = {\n    referenceClippingOffsets: referenceClippingOffsets,\n    popperEscapeOffsets: popperEscapeOffsets,\n    isReferenceHidden: isReferenceHidden,\n    hasPopperEscaped: hasPopperEscaped\n  };\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-reference-hidden': isReferenceHidden,\n    'data-popper-escaped': hasPopperEscaped\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'hide',\n  enabled: true,\n  phase: 'main',\n  requiresIfExists: ['preventOverflow'],\n  fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n  var basePlacement = getBasePlacement(placement);\n  var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n  var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n    placement: placement\n  })) : offset,\n      skidding = _ref[0],\n      distance = _ref[1];\n\n  skidding = skidding || 0;\n  distance = (distance || 0) * invertDistance;\n  return [left, right].indexOf(basePlacement) >= 0 ? {\n    x: distance,\n    y: skidding\n  } : {\n    x: skidding,\n    y: distance\n  };\n}\n\nfunction offset(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options,\n      name = _ref2.name;\n  var _options$offset = options.offset,\n      offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n  var data = placements.reduce(function (acc, placement) {\n    acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n    return acc;\n  }, {});\n  var _data$state$placement = data[state.placement],\n      x = _data$state$placement.x,\n      y = _data$state$placement.y;\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.modifiersData.popperOffsets.x += x;\n    state.modifiersData.popperOffsets.y += y;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'offset',\n  enabled: true,\n  phase: 'main',\n  requires: ['popperOffsets'],\n  fn: offset\n};","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n  var rect = element.getBoundingClientRect();\n  var scaleX = round(rect.width) / element.offsetWidth || 1;\n  var scaleY = round(rect.height) / element.offsetHeight || 1;\n  return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n\n  var isOffsetParentAnElement = isHTMLElement(offsetParent);\n  var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n  var documentElement = getDocumentElement(offsetParent);\n  var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n  var scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  var offsets = {\n    x: 0,\n    y: 0\n  };\n\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n    isScrollParent(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n\n    if (isHTMLElement(offsetParent)) {\n      offsets = getBoundingClientRect(offsetParent, true);\n      offsets.x += offsetParent.clientLeft;\n      offsets.y += offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height\n  };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n  if (node === getWindow(node) || !isHTMLElement(node)) {\n    return getWindowScroll(node);\n  } else {\n    return getHTMLElementScroll(node);\n  }\n}","export default function getHTMLElementScroll(element) {\n  return {\n    scrollLeft: element.scrollLeft,\n    scrollTop: element.scrollTop\n  };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n  var map = new Map();\n  var visited = new Set();\n  var result = [];\n  modifiers.forEach(function (modifier) {\n    map.set(modifier.name, modifier);\n  }); // On visiting object, check for its dependencies and visit them recursively\n\n  function sort(modifier) {\n    visited.add(modifier.name);\n    var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n    requires.forEach(function (dep) {\n      if (!visited.has(dep)) {\n        var depModifier = map.get(dep);\n\n        if (depModifier) {\n          sort(depModifier);\n        }\n      }\n    });\n    result.push(modifier);\n  }\n\n  modifiers.forEach(function (modifier) {\n    if (!visited.has(modifier.name)) {\n      // check for visited object\n      sort(modifier);\n    }\n  });\n  return result;\n}\n\nexport default function orderModifiers(modifiers) {\n  // order based on dependencies\n  var orderedModifiers = order(modifiers); // order based on phase\n\n  return modifierPhases.reduce(function (acc, phase) {\n    return acc.concat(orderedModifiers.filter(function (modifier) {\n      return modifier.phase === phase;\n    }));\n  }, []);\n}","export default function debounce(fn) {\n  var pending;\n  return function () {\n    if (!pending) {\n      pending = new Promise(function (resolve) {\n        Promise.resolve().then(function () {\n          pending = undefined;\n          resolve(fn());\n        });\n      });\n    }\n\n    return pending;\n  };\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n  placement: 'bottom',\n  modifiers: [],\n  strategy: 'absolute'\n};\n\nfunction areValidElements() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return !args.some(function (element) {\n    return !(element && typeof element.getBoundingClientRect === 'function');\n  });\n}\n\nexport function popperGenerator(generatorOptions) {\n  if (generatorOptions === void 0) {\n    generatorOptions = {};\n  }\n\n  var _generatorOptions = generatorOptions,\n      _generatorOptions$def = _generatorOptions.defaultModifiers,\n      defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n      _generatorOptions$def2 = _generatorOptions.defaultOptions,\n      defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n  return function createPopper(reference, popper, options) {\n    if (options === void 0) {\n      options = defaultOptions;\n    }\n\n    var state = {\n      placement: 'bottom',\n      orderedModifiers: [],\n      options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n      modifiersData: {},\n      elements: {\n        reference: reference,\n        popper: popper\n      },\n      attributes: {},\n      styles: {}\n    };\n    var effectCleanupFns = [];\n    var isDestroyed = false;\n    var instance = {\n      state: state,\n      setOptions: function setOptions(setOptionsAction) {\n        var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n        cleanupModifierEffects();\n        state.options = Object.assign({}, defaultOptions, state.options, options);\n        state.scrollParents = {\n          reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n          popper: listScrollParents(popper)\n        }; // Orders the modifiers based on their dependencies and `phase`\n        // properties\n\n        var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n        state.orderedModifiers = orderedModifiers.filter(function (m) {\n          return m.enabled;\n        });\n        runModifierEffects();\n        return instance.update();\n      },\n      // Sync update – it will always be executed, even if not necessary. This\n      // is useful for low frequency updates where sync behavior simplifies the\n      // logic.\n      // For high frequency updates (e.g. `resize` and `scroll` events), always\n      // prefer the async Popper#update method\n      forceUpdate: function forceUpdate() {\n        if (isDestroyed) {\n          return;\n        }\n\n        var _state$elements = state.elements,\n            reference = _state$elements.reference,\n            popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n        // anymore\n\n        if (!areValidElements(reference, popper)) {\n          return;\n        } // Store the reference and popper rects to be read by modifiers\n\n\n        state.rects = {\n          reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n          popper: getLayoutRect(popper)\n        }; // Modifiers have the ability to reset the current update cycle. The\n        // most common use case for this is the `flip` modifier changing the\n        // placement, which then needs to re-run all the modifiers, because the\n        // logic was previously ran for the previous placement and is therefore\n        // stale/incorrect\n\n        state.reset = false;\n        state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n        // is filled with the initial data specified by the modifier. This means\n        // it doesn't persist and is fresh on each update.\n        // To ensure persistent data, use `${name}#persistent`\n\n        state.orderedModifiers.forEach(function (modifier) {\n          return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n        });\n\n        for (var index = 0; index < state.orderedModifiers.length; index++) {\n          if (state.reset === true) {\n            state.reset = false;\n            index = -1;\n            continue;\n          }\n\n          var _state$orderedModifie = state.orderedModifiers[index],\n              fn = _state$orderedModifie.fn,\n              _state$orderedModifie2 = _state$orderedModifie.options,\n              _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n              name = _state$orderedModifie.name;\n\n          if (typeof fn === 'function') {\n            state = fn({\n              state: state,\n              options: _options,\n              name: name,\n              instance: instance\n            }) || state;\n          }\n        }\n      },\n      // Async and optimistically optimized update – it will not be executed if\n      // not necessary (debounced to run at most once-per-tick)\n      update: debounce(function () {\n        return new Promise(function (resolve) {\n          instance.forceUpdate();\n          resolve(state);\n        });\n      }),\n      destroy: function destroy() {\n        cleanupModifierEffects();\n        isDestroyed = true;\n      }\n    };\n\n    if (!areValidElements(reference, popper)) {\n      return instance;\n    }\n\n    instance.setOptions(options).then(function (state) {\n      if (!isDestroyed && options.onFirstUpdate) {\n        options.onFirstUpdate(state);\n      }\n    }); // Modifiers have the ability to execute arbitrary code before the first\n    // update cycle runs. They will be executed in the same order as the update\n    // cycle. This is useful when a modifier adds some persistent data that\n    // other modifiers need to use, but the modifier is run after the dependent\n    // one.\n\n    function runModifierEffects() {\n      state.orderedModifiers.forEach(function (_ref) {\n        var name = _ref.name,\n            _ref$options = _ref.options,\n            options = _ref$options === void 0 ? {} : _ref$options,\n            effect = _ref.effect;\n\n        if (typeof effect === 'function') {\n          var cleanupFn = effect({\n            state: state,\n            name: name,\n            instance: instance,\n            options: options\n          });\n\n          var noopFn = function noopFn() {};\n\n          effectCleanupFns.push(cleanupFn || noopFn);\n        }\n      });\n    }\n\n    function cleanupModifierEffects() {\n      effectCleanupFns.forEach(function (fn) {\n        return fn();\n      });\n      effectCleanupFns = [];\n    }\n\n    return instance;\n  };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function mergeByName(modifiers) {\n  var merged = modifiers.reduce(function (merged, current) {\n    var existing = merged[current.name];\n    merged[current.name] = existing ? Object.assign({}, existing, current, {\n      options: Object.assign({}, existing.options, current.options),\n      data: Object.assign({}, existing.data, current.data)\n    }) : current;\n    return merged;\n  }, {}); // IE11 does not support Object.values\n\n  return Object.keys(merged).map(function (key) {\n    return merged[key];\n  });\n}","import arrow from '@popperjs/core/lib/modifiers/arrow';\nimport computeStyles from '@popperjs/core/lib/modifiers/computeStyles';\nimport eventListeners from '@popperjs/core/lib/modifiers/eventListeners';\nimport flip from '@popperjs/core/lib/modifiers/flip';\nimport hide from '@popperjs/core/lib/modifiers/hide';\nimport offset from '@popperjs/core/lib/modifiers/offset';\nimport popperOffsets from '@popperjs/core/lib/modifiers/popperOffsets';\nimport preventOverflow from '@popperjs/core/lib/modifiers/preventOverflow';\nimport { placements } from '@popperjs/core/lib/enums';\nimport { popperGenerator } from '@popperjs/core/lib/popper-base'; // For the common JS build we will turn this file into a bundle with no imports.\n// This is b/c the Popper lib is all esm files, and would break in a common js only environment\n\nexport var createPopper = popperGenerator({\n  defaultModifiers: [hide, popperOffsets, computeStyles, eventListeners, offset, flip, preventOverflow, arrow]\n});\nexport { placements };","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  // Offsets are the actual position the popper needs to have to be\n  // properly positioned near its reference element\n  // This is the most basic placement, and will be adjusted by\n  // the modifiers in the next step\n  state.modifiersData[name] = computeOffsets({\n    reference: state.rects.reference,\n    element: state.rects.popper,\n    strategy: 'absolute',\n    placement: state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'popperOffsets',\n  enabled: true,\n  phase: 'read',\n  fn: popperOffsets,\n  data: {}\n};","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n  if (getBasePlacement(placement) === auto) {\n    return [];\n  }\n\n  var oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n\n  if (state.modifiersData[name]._skip) {\n    return;\n  }\n\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n      specifiedFallbackPlacements = options.fallbackPlacements,\n      padding = options.padding,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      _options$flipVariatio = options.flipVariations,\n      flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n      allowedAutoPlacements = options.allowedAutoPlacements;\n  var preferredPlacement = state.options.placement;\n  var basePlacement = getBasePlacement(preferredPlacement);\n  var isBasePlacement = basePlacement === preferredPlacement;\n  var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n  var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n    return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding,\n      flipVariations: flipVariations,\n      allowedAutoPlacements: allowedAutoPlacements\n    }) : placement);\n  }, []);\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var checksMap = new Map();\n  var makeFallbackChecks = true;\n  var firstFittingPlacement = placements[0];\n\n  for (var i = 0; i < placements.length; i++) {\n    var placement = placements[i];\n\n    var _basePlacement = getBasePlacement(placement);\n\n    var isStartVariation = getVariation(placement) === start;\n    var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n    var len = isVertical ? 'width' : 'height';\n    var overflow = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      altBoundary: altBoundary,\n      padding: padding\n    });\n    var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n    if (referenceRect[len] > popperRect[len]) {\n      mainVariationSide = getOppositePlacement(mainVariationSide);\n    }\n\n    var altVariationSide = getOppositePlacement(mainVariationSide);\n    var checks = [];\n\n    if (checkMainAxis) {\n      checks.push(overflow[_basePlacement] <= 0);\n    }\n\n    if (checkAltAxis) {\n      checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n    }\n\n    if (checks.every(function (check) {\n      return check;\n    })) {\n      firstFittingPlacement = placement;\n      makeFallbackChecks = false;\n      break;\n    }\n\n    checksMap.set(placement, checks);\n  }\n\n  if (makeFallbackChecks) {\n    // `2` may be desired in some cases – research later\n    var numberOfChecks = flipVariations ? 3 : 1;\n\n    var _loop = function _loop(_i) {\n      var fittingPlacement = placements.find(function (placement) {\n        var checks = checksMap.get(placement);\n\n        if (checks) {\n          return checks.slice(0, _i).every(function (check) {\n            return check;\n          });\n        }\n      });\n\n      if (fittingPlacement) {\n        firstFittingPlacement = fittingPlacement;\n        return \"break\";\n      }\n    };\n\n    for (var _i = numberOfChecks; _i > 0; _i--) {\n      var _ret = _loop(_i);\n\n      if (_ret === \"break\") break;\n    }\n  }\n\n  if (state.placement !== firstFittingPlacement) {\n    state.modifiersData[name]._skip = true;\n    state.placement = firstFittingPlacement;\n    state.reset = true;\n  }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'flip',\n  enabled: true,\n  phase: 'main',\n  fn: flip,\n  requiresIfExists: ['offset'],\n  data: {\n    _skip: false\n  }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      placement = _options.placement,\n      boundary = _options.boundary,\n      rootBoundary = _options.rootBoundary,\n      padding = _options.padding,\n      flipVariations = _options.flipVariations,\n      _options$allowedAutoP = _options.allowedAutoPlacements,\n      allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n  var variation = getVariation(placement);\n  var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n    return getVariation(placement) === variation;\n  }) : basePlacements;\n  var allowedPlacements = placements.filter(function (placement) {\n    return allowedAutoPlacements.indexOf(placement) >= 0;\n  });\n\n  if (allowedPlacements.length === 0) {\n    allowedPlacements = placements;\n  } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n  var overflows = allowedPlacements.reduce(function (acc, placement) {\n    acc[placement] = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding\n    })[getBasePlacement(placement)];\n    return acc;\n  }, {});\n  return Object.keys(overflows).sort(function (a, b) {\n    return overflows[a] - overflows[b];\n  });\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      padding = options.padding,\n      _options$tether = options.tether,\n      tether = _options$tether === void 0 ? true : _options$tether,\n      _options$tetherOffset = options.tetherOffset,\n      tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n  var overflow = detectOverflow(state, {\n    boundary: boundary,\n    rootBoundary: rootBoundary,\n    padding: padding,\n    altBoundary: altBoundary\n  });\n  var basePlacement = getBasePlacement(state.placement);\n  var variation = getVariation(state.placement);\n  var isBasePlacement = !variation;\n  var mainAxis = getMainAxisFromPlacement(basePlacement);\n  var altAxis = getAltAxis(mainAxis);\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : tetherOffset;\n  var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n    mainAxis: tetherOffsetValue,\n    altAxis: tetherOffsetValue\n  } : Object.assign({\n    mainAxis: 0,\n    altAxis: 0\n  }, tetherOffsetValue);\n  var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n  var data = {\n    x: 0,\n    y: 0\n  };\n\n  if (!popperOffsets) {\n    return;\n  }\n\n  if (checkMainAxis) {\n    var _offsetModifierState$;\n\n    var mainSide = mainAxis === 'y' ? top : left;\n    var altSide = mainAxis === 'y' ? bottom : right;\n    var len = mainAxis === 'y' ? 'height' : 'width';\n    var offset = popperOffsets[mainAxis];\n    var min = offset + overflow[mainSide];\n    var max = offset - overflow[altSide];\n    var additive = tether ? -popperRect[len] / 2 : 0;\n    var minLen = variation === start ? referenceRect[len] : popperRect[len];\n    var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n    // outside the reference bounds\n\n    var arrowElement = state.elements.arrow;\n    var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n      width: 0,\n      height: 0\n    };\n    var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n    var arrowPaddingMin = arrowPaddingObject[mainSide];\n    var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n    // to include its full size in the calculation. If the reference is small\n    // and near the edge of a boundary, the popper can overflow even if the\n    // reference is not overflowing as well (e.g. virtual elements with no\n    // width or height)\n\n    var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n    var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n    var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n    var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n    var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n    var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n    var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n    var tetherMax = offset + maxOffset - offsetModifierValue;\n    var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n    popperOffsets[mainAxis] = preventedOffset;\n    data[mainAxis] = preventedOffset - offset;\n  }\n\n  if (checkAltAxis) {\n    var _offsetModifierState$2;\n\n    var _mainSide = mainAxis === 'x' ? top : left;\n\n    var _altSide = mainAxis === 'x' ? bottom : right;\n\n    var _offset = popperOffsets[altAxis];\n\n    var _len = altAxis === 'y' ? 'height' : 'width';\n\n    var _min = _offset + overflow[_mainSide];\n\n    var _max = _offset - overflow[_altSide];\n\n    var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n    var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n    var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n    var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n    var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n    popperOffsets[altAxis] = _preventedOffset;\n    data[altAxis] = _preventedOffset - _offset;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'preventOverflow',\n  enabled: true,\n  phase: 'main',\n  fn: preventOverflow,\n  requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n  padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : padding;\n  return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n  var _state$modifiersData$;\n\n  var state = _ref.state,\n      name = _ref.name,\n      options = _ref.options;\n  var arrowElement = state.elements.arrow;\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var basePlacement = getBasePlacement(state.placement);\n  var axis = getMainAxisFromPlacement(basePlacement);\n  var isVertical = [left, right].indexOf(basePlacement) >= 0;\n  var len = isVertical ? 'height' : 'width';\n\n  if (!arrowElement || !popperOffsets) {\n    return;\n  }\n\n  var paddingObject = toPaddingObject(options.padding, state);\n  var arrowRect = getLayoutRect(arrowElement);\n  var minProp = axis === 'y' ? top : left;\n  var maxProp = axis === 'y' ? bottom : right;\n  var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n  var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n  var arrowOffsetParent = getOffsetParent(arrowElement);\n  var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n  var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n  // outside of the popper bounds\n\n  var min = paddingObject[minProp];\n  var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n  var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n  var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n  var axisProp = axis;\n  state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options;\n  var _options$element = options.element,\n      arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n  if (arrowElement == null) {\n    return;\n  } // CSS selector\n\n\n  if (typeof arrowElement === 'string') {\n    arrowElement = state.elements.popper.querySelector(arrowElement);\n\n    if (!arrowElement) {\n      return;\n    }\n  }\n\n  if (!contains(state.elements.popper, arrowElement)) {\n    return;\n  }\n\n  state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'arrow',\n  enabled: true,\n  phase: 'main',\n  fn: arrow,\n  effect: effect,\n  requires: ['popperOffsets'],\n  requiresIfExists: ['preventOverflow']\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport useSafeState from '@restart/hooks/useSafeState';\nimport { createPopper } from './popper';\n\nvar initialPopperStyles = function initialPopperStyles(position) {\n  return {\n    position: position,\n    top: '0',\n    left: '0',\n    opacity: '0',\n    pointerEvents: 'none'\n  };\n};\n\nvar disabledApplyStylesModifier = {\n  name: 'applyStyles',\n  enabled: false\n}; // In order to satisfy the current usage of options, including undefined\n\nvar ariaDescribedByModifier = {\n  name: 'ariaDescribedBy',\n  enabled: true,\n  phase: 'afterWrite',\n  effect: function effect(_ref) {\n    var state = _ref.state;\n    return function () {\n      var _state$elements = state.elements,\n          reference = _state$elements.reference,\n          popper = _state$elements.popper;\n\n      if ('removeAttribute' in reference) {\n        var ids = (reference.getAttribute('aria-describedby') || '').split(',').filter(function (id) {\n          return id.trim() !== popper.id;\n        });\n        if (!ids.length) reference.removeAttribute('aria-describedby');else reference.setAttribute('aria-describedby', ids.join(','));\n      }\n    };\n  },\n  fn: function fn(_ref2) {\n    var _popper$getAttribute;\n\n    var state = _ref2.state;\n    var _state$elements2 = state.elements,\n        popper = _state$elements2.popper,\n        reference = _state$elements2.reference;\n    var role = (_popper$getAttribute = popper.getAttribute('role')) == null ? void 0 : _popper$getAttribute.toLowerCase();\n\n    if (popper.id && role === 'tooltip' && 'setAttribute' in reference) {\n      var ids = reference.getAttribute('aria-describedby');\n\n      if (ids && ids.split(',').indexOf(popper.id) !== -1) {\n        return;\n      }\n\n      reference.setAttribute('aria-describedby', ids ? ids + \",\" + popper.id : popper.id);\n    }\n  }\n};\nvar EMPTY_MODIFIERS = [];\n/**\n * Position an element relative some reference element using Popper.js\n *\n * @param referenceElement\n * @param popperElement\n * @param {object}      options\n * @param {object=}     options.modifiers Popper.js modifiers\n * @param {boolean=}    options.enabled toggle the popper functionality on/off\n * @param {string=}     options.placement The popper element placement relative to the reference element\n * @param {string=}     options.strategy the positioning strategy\n * @param {boolean=}    options.eventsEnabled have Popper listen on window resize events to reposition the element\n * @param {function=}   options.onCreate called when the popper is created\n * @param {function=}   options.onUpdate called when the popper is updated\n *\n * @returns {UsePopperState} The popper state\n */\n\nfunction usePopper(referenceElement, popperElement, _temp) {\n  var _ref3 = _temp === void 0 ? {} : _temp,\n      _ref3$enabled = _ref3.enabled,\n      enabled = _ref3$enabled === void 0 ? true : _ref3$enabled,\n      _ref3$placement = _ref3.placement,\n      placement = _ref3$placement === void 0 ? 'bottom' : _ref3$placement,\n      _ref3$strategy = _ref3.strategy,\n      strategy = _ref3$strategy === void 0 ? 'absolute' : _ref3$strategy,\n      _ref3$modifiers = _ref3.modifiers,\n      modifiers = _ref3$modifiers === void 0 ? EMPTY_MODIFIERS : _ref3$modifiers,\n      config = _objectWithoutPropertiesLoose(_ref3, [\"enabled\", \"placement\", \"strategy\", \"modifiers\"]);\n\n  var popperInstanceRef = useRef();\n  var update = useCallback(function () {\n    var _popperInstanceRef$cu;\n\n    (_popperInstanceRef$cu = popperInstanceRef.current) == null ? void 0 : _popperInstanceRef$cu.update();\n  }, []);\n  var forceUpdate = useCallback(function () {\n    var _popperInstanceRef$cu2;\n\n    (_popperInstanceRef$cu2 = popperInstanceRef.current) == null ? void 0 : _popperInstanceRef$cu2.forceUpdate();\n  }, []);\n\n  var _useSafeState = useSafeState(useState({\n    placement: placement,\n    update: update,\n    forceUpdate: forceUpdate,\n    attributes: {},\n    styles: {\n      popper: initialPopperStyles(strategy),\n      arrow: {}\n    }\n  })),\n      popperState = _useSafeState[0],\n      setState = _useSafeState[1];\n\n  var updateModifier = useMemo(function () {\n    return {\n      name: 'updateStateModifier',\n      enabled: true,\n      phase: 'write',\n      requires: ['computeStyles'],\n      fn: function fn(_ref4) {\n        var state = _ref4.state;\n        var styles = {};\n        var attributes = {};\n        Object.keys(state.elements).forEach(function (element) {\n          styles[element] = state.styles[element];\n          attributes[element] = state.attributes[element];\n        });\n        setState({\n          state: state,\n          styles: styles,\n          attributes: attributes,\n          update: update,\n          forceUpdate: forceUpdate,\n          placement: state.placement\n        });\n      }\n    };\n  }, [update, forceUpdate, setState]);\n  useEffect(function () {\n    if (!popperInstanceRef.current || !enabled) return;\n    popperInstanceRef.current.setOptions({\n      placement: placement,\n      strategy: strategy,\n      modifiers: [].concat(modifiers, [updateModifier, disabledApplyStylesModifier])\n    }); // intentionally NOT re-running on new modifiers\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [strategy, placement, updateModifier, enabled]);\n  useEffect(function () {\n    if (!enabled || referenceElement == null || popperElement == null) {\n      return undefined;\n    }\n\n    popperInstanceRef.current = createPopper(referenceElement, popperElement, _extends({}, config, {\n      placement: placement,\n      strategy: strategy,\n      modifiers: [].concat(modifiers, [ariaDescribedByModifier, updateModifier])\n    }));\n    return function () {\n      if (popperInstanceRef.current != null) {\n        popperInstanceRef.current.destroy();\n        popperInstanceRef.current = undefined;\n        setState(function (s) {\n          return _extends({}, s, {\n            attributes: {},\n            styles: {\n              popper: initialPopperStyles(strategy)\n            }\n          });\n        });\n      }\n    }; // This is only run once to _create_ the popper\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [enabled, referenceElement, popperElement]);\n  return popperState;\n}\n\nexport default usePopper;","/* eslint-disable no-bitwise, no-cond-assign */\n\n/**\n * Checks if an element contains another given element.\n * \n * @param context the context element\n * @param node the element to check\n */\nexport default function contains(context, node) {\n  // HTML DOM and SVG DOM may have different support levels,\n  // so we need to check on context instead of a document root element.\n  if (context.contains) return context.contains(node);\n  if (context.compareDocumentPosition) return context === node || !!(context.compareDocumentPosition(node) & 16);\n}","/**\n * A `removeEventListener` ponyfill\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction removeEventListener(node, eventName, handler, options) {\n  var capture = options && typeof options !== 'boolean' ? options.capture : options;\n  node.removeEventListener(eventName, handler, capture);\n\n  if (handler.__once) {\n    node.removeEventListener(eventName, handler.__once, capture);\n  }\n}\n\nexport default removeEventListener;","import addEventListener from './addEventListener';\nimport removeEventListener from './removeEventListener';\n\nfunction listen(node, eventName, handler, options) {\n  addEventListener(node, eventName, handler, options);\n  return function () {\n    removeEventListener(node, eventName, handler, options);\n  };\n}\n\nexport default listen;","/**\n * Returns the owner document of a given element.\n * \n * @param node the element\n */\nexport default function ownerDocument(node) {\n  return node && node.ownerDocument || document;\n}","import ReactDOM from 'react-dom';\nexport default function safeFindDOMNode(componentOrElement) {\n  if (componentOrElement && 'setState' in componentOrElement) {\n    return ReactDOM.findDOMNode(componentOrElement);\n  }\n\n  return componentOrElement != null ? componentOrElement : null;\n}","import contains from 'dom-helpers/contains';\nimport listen from 'dom-helpers/listen';\nimport { useCallback, useEffect, useRef } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport warning from 'warning';\nimport ownerDocument from './ownerDocument';\nvar escapeKeyCode = 27;\n\nvar noop = function noop() {};\n\nfunction isLeftClickEvent(event) {\n  return event.button === 0;\n}\n\nfunction isModifiedEvent(event) {\n  return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nvar getRefTarget = function getRefTarget(ref) {\n  return ref && ('current' in ref ? ref.current : ref);\n};\n\n/**\n * The `useRootClose` hook registers your callback on the document\n * when rendered. Powers the `<Overlay/>` component. This is used achieve modal\n * style behavior where your callback is triggered when the user tries to\n * interact with the rest of the document or hits the `esc` key.\n *\n * @param {Ref<HTMLElement>| HTMLElement} ref  The element boundary\n * @param {function} onRootClose\n * @param {object=}  options\n * @param {boolean=} options.disabled\n * @param {string=}  options.clickTrigger The DOM event name (click, mousedown, etc) to attach listeners on\n */\nfunction useRootClose(ref, onRootClose, _temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      disabled = _ref.disabled,\n      _ref$clickTrigger = _ref.clickTrigger,\n      clickTrigger = _ref$clickTrigger === void 0 ? 'click' : _ref$clickTrigger;\n\n  var preventMouseRootCloseRef = useRef(false);\n  var onClose = onRootClose || noop;\n  var handleMouseCapture = useCallback(function (e) {\n    var _e$composedPath$;\n\n    var currentTarget = getRefTarget(ref);\n    warning(!!currentTarget, 'RootClose captured a close event but does not have a ref to compare it to. ' + 'useRootClose(), should be passed a ref that resolves to a DOM node');\n    preventMouseRootCloseRef.current = !currentTarget || isModifiedEvent(e) || !isLeftClickEvent(e) || !!contains(currentTarget, (_e$composedPath$ = e.composedPath == null ? void 0 : e.composedPath()[0]) != null ? _e$composedPath$ : e.target);\n  }, [ref]);\n  var handleMouse = useEventCallback(function (e) {\n    if (!preventMouseRootCloseRef.current) {\n      onClose(e);\n    }\n  });\n  var handleKeyUp = useEventCallback(function (e) {\n    if (e.keyCode === escapeKeyCode) {\n      onClose(e);\n    }\n  });\n  useEffect(function () {\n    if (disabled || ref == null) return undefined; // Store the current event to avoid triggering handlers immediately\n    // https://github.com/facebook/react/issues/20074\n\n    var currentEvent = window.event;\n    var doc = ownerDocument(getRefTarget(ref)); // Use capture for this listener so it fires before React's listener, to\n    // avoid false positives in the contains() check below if the target DOM\n    // element is removed in the React mouse callback.\n\n    var removeMouseCaptureListener = listen(doc, clickTrigger, handleMouseCapture, true);\n    var removeMouseListener = listen(doc, clickTrigger, function (e) {\n      // skip if this event is the same as the one running when we added the handlers\n      if (e === currentEvent) {\n        currentEvent = undefined;\n        return;\n      }\n\n      handleMouse(e);\n    });\n    var removeKeyupListener = listen(doc, 'keyup', function (e) {\n      // skip if this event is the same as the one running when we added the handlers\n      if (e === currentEvent) {\n        currentEvent = undefined;\n        return;\n      }\n\n      handleKeyUp(e);\n    });\n    var mobileSafariHackListeners = [];\n\n    if ('ontouchstart' in doc.documentElement) {\n      mobileSafariHackListeners = [].slice.call(doc.body.children).map(function (el) {\n        return listen(el, 'mousemove', noop);\n      });\n    }\n\n    return function () {\n      removeMouseCaptureListener();\n      removeMouseListener();\n      removeKeyupListener();\n      mobileSafariHackListeners.forEach(function (remove) {\n        return remove();\n      });\n    };\n  }, [ref, disabled, clickTrigger, handleMouseCapture, handleMouse, handleKeyUp]);\n}\n\nexport default useRootClose;","import ownerDocument from 'dom-helpers/ownerDocument';\nimport safeFindDOMNode from './safeFindDOMNode';\nexport default (function (componentOrElement) {\n  return ownerDocument(safeFindDOMNode(componentOrElement));\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport function toModifierMap(modifiers) {\n  var result = {};\n\n  if (!Array.isArray(modifiers)) {\n    return modifiers || result;\n  } // eslint-disable-next-line no-unused-expressions\n\n\n  modifiers == null ? void 0 : modifiers.forEach(function (m) {\n    result[m.name] = m;\n  });\n  return result;\n}\nexport function toModifierArray(map) {\n  if (map === void 0) {\n    map = {};\n  }\n\n  if (Array.isArray(map)) return map;\n  return Object.keys(map).map(function (k) {\n    map[k].name = k;\n    return map[k];\n  });\n}\nexport default function mergeOptionsWithPopperConfig(_ref) {\n  var _modifiers$preventOve, _modifiers$preventOve2, _modifiers$offset, _modifiers$arrow;\n\n  var enabled = _ref.enabled,\n      enableEvents = _ref.enableEvents,\n      placement = _ref.placement,\n      flip = _ref.flip,\n      offset = _ref.offset,\n      fixed = _ref.fixed,\n      containerPadding = _ref.containerPadding,\n      arrowElement = _ref.arrowElement,\n      _ref$popperConfig = _ref.popperConfig,\n      popperConfig = _ref$popperConfig === void 0 ? {} : _ref$popperConfig;\n  var modifiers = toModifierMap(popperConfig.modifiers);\n  return _extends({}, popperConfig, {\n    placement: placement,\n    enabled: enabled,\n    strategy: fixed ? 'fixed' : popperConfig.strategy,\n    modifiers: toModifierArray(_extends({}, modifiers, {\n      eventListeners: {\n        enabled: enableEvents\n      },\n      preventOverflow: _extends({}, modifiers.preventOverflow, {\n        options: containerPadding ? _extends({\n          padding: containerPadding\n        }, (_modifiers$preventOve = modifiers.preventOverflow) == null ? void 0 : _modifiers$preventOve.options) : (_modifiers$preventOve2 = modifiers.preventOverflow) == null ? void 0 : _modifiers$preventOve2.options\n      }),\n      offset: {\n        options: _extends({\n          offset: offset\n        }, (_modifiers$offset = modifiers.offset) == null ? void 0 : _modifiers$offset.options)\n      },\n      arrow: _extends({}, modifiers.arrow, {\n        enabled: !!arrowElement,\n        options: _extends({}, (_modifiers$arrow = modifiers.arrow) == null ? void 0 : _modifiers$arrow.options, {\n          element: arrowElement\n        })\n      }),\n      flip: _extends({\n        enabled: !!flip\n      }, modifiers.flip)\n    }))\n  });\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport React, { useContext, useRef } from 'react';\nimport useCallbackRef from '@restart/hooks/useCallbackRef';\nimport DropdownContext from './DropdownContext';\nimport usePopper from './usePopper';\nimport useRootClose from './useRootClose';\nimport mergeOptionsWithPopperConfig from './mergeOptionsWithPopperConfig';\n\nvar noop = function noop() {};\n/**\n * @memberOf Dropdown\n * @param {object}  options\n * @param {boolean} options.flip Automatically adjust the menu `drop` position based on viewport edge detection\n * @param {[number, number]} options.offset Define an offset distance between the Menu and the Toggle\n * @param {boolean} options.show Display the menu manually, ignored in the context of a `Dropdown`\n * @param {boolean} options.usePopper opt in/out of using PopperJS to position menus. When disabled you must position it yourself.\n * @param {string}  options.rootCloseEvent The pointer event to listen for when determining \"clicks outside\" the menu for triggering a close.\n * @param {object}  options.popperConfig Options passed to the [`usePopper`](/api/usePopper) hook.\n */\n\n\nexport function useDropdownMenu(options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var context = useContext(DropdownContext);\n\n  var _useCallbackRef = useCallbackRef(),\n      arrowElement = _useCallbackRef[0],\n      attachArrowRef = _useCallbackRef[1];\n\n  var hasShownRef = useRef(false);\n  var _options = options,\n      flip = _options.flip,\n      offset = _options.offset,\n      rootCloseEvent = _options.rootCloseEvent,\n      _options$fixed = _options.fixed,\n      fixed = _options$fixed === void 0 ? false : _options$fixed,\n      _options$popperConfig = _options.popperConfig,\n      popperConfig = _options$popperConfig === void 0 ? {} : _options$popperConfig,\n      _options$usePopper = _options.usePopper,\n      shouldUsePopper = _options$usePopper === void 0 ? !!context : _options$usePopper;\n  var show = (context == null ? void 0 : context.show) == null ? !!options.show : context.show;\n  var alignEnd = (context == null ? void 0 : context.alignEnd) == null ? options.alignEnd : context.alignEnd;\n\n  if (show && !hasShownRef.current) {\n    hasShownRef.current = true;\n  }\n\n  var handleClose = function handleClose(e) {\n    context == null ? void 0 : context.toggle(false, e);\n  };\n\n  var _ref = context || {},\n      drop = _ref.drop,\n      setMenu = _ref.setMenu,\n      menuElement = _ref.menuElement,\n      toggleElement = _ref.toggleElement;\n\n  var placement = alignEnd ? 'bottom-end' : 'bottom-start';\n  if (drop === 'up') placement = alignEnd ? 'top-end' : 'top-start';else if (drop === 'right') placement = alignEnd ? 'right-end' : 'right-start';else if (drop === 'left') placement = alignEnd ? 'left-end' : 'left-start';\n  var popper = usePopper(toggleElement, menuElement, mergeOptionsWithPopperConfig({\n    placement: placement,\n    enabled: !!(shouldUsePopper && show),\n    enableEvents: show,\n    offset: offset,\n    flip: flip,\n    fixed: fixed,\n    arrowElement: arrowElement,\n    popperConfig: popperConfig\n  }));\n\n  var menuProps = _extends({\n    ref: setMenu || noop,\n    'aria-labelledby': toggleElement == null ? void 0 : toggleElement.id\n  }, popper.attributes.popper, {\n    style: popper.styles.popper\n  });\n\n  var metadata = {\n    show: show,\n    alignEnd: alignEnd,\n    hasShown: hasShownRef.current,\n    toggle: context == null ? void 0 : context.toggle,\n    popper: shouldUsePopper ? popper : null,\n    arrowProps: shouldUsePopper ? _extends({\n      ref: attachArrowRef\n    }, popper.attributes.arrow, {\n      style: popper.styles.arrow\n    }) : {}\n  };\n  useRootClose(menuElement, handleClose, {\n    clickTrigger: rootCloseEvent,\n    disabled: !show\n  });\n  return [menuProps, metadata];\n}\nvar propTypes = {\n  /**\n   * A render prop that returns a Menu element. The `props`\n   * argument should spread through to **a component that can accept a ref**.\n   *\n   * @type {Function ({\n   *   show: boolean,\n   *   alignEnd: boolean,\n   *   close: (?SyntheticEvent) => void,\n   *   placement: Placement,\n   *   update: () => void,\n   *   forceUpdate: () => void,\n   *   props: {\n   *     ref: (?HTMLElement) => void,\n   *     style: { [string]: string | number },\n   *     aria-labelledby: ?string\n   *   },\n   *   arrowProps: {\n   *     ref: (?HTMLElement) => void,\n   *     style: { [string]: string | number },\n   *   },\n   * }) => React.Element}\n   */\n  children: PropTypes.func.isRequired,\n\n  /**\n   * Controls the visible state of the menu, generally this is\n   * provided by the parent `Dropdown` component,\n   * but may also be specified as a prop directly.\n   */\n  show: PropTypes.bool,\n\n  /**\n   * Aligns the dropdown menu to the 'end' of it's placement position.\n   * Generally this is provided by the parent `Dropdown` component,\n   * but may also be specified as a prop directly.\n   */\n  alignEnd: PropTypes.bool,\n\n  /**\n   * Enables the Popper.js `flip` modifier, allowing the Dropdown to\n   * automatically adjust it's placement in case of overlap with the viewport or toggle.\n   * Refer to the [flip docs](https://popper.js.org/popper-documentation.html#modifiers..flip.enabled) for more info\n   */\n  flip: PropTypes.bool,\n  usePopper: PropTypes.oneOf([true, false]),\n\n  /**\n   * A set of popper options and props passed directly to react-popper's Popper component.\n   */\n  popperConfig: PropTypes.object,\n\n  /**\n   * Override the default event used by RootCloseWrapper.\n   */\n  rootCloseEvent: PropTypes.string\n};\nvar defaultProps = {\n  usePopper: true\n};\n\n/**\n * Also exported as `<Dropdown.Menu>` from `Dropdown`.\n *\n * @displayName DropdownMenu\n * @memberOf Dropdown\n */\nfunction DropdownMenu(_ref2) {\n  var children = _ref2.children,\n      options = _objectWithoutPropertiesLoose(_ref2, [\"children\"]);\n\n  var _useDropdownMenu = useDropdownMenu(options),\n      props = _useDropdownMenu[0],\n      meta = _useDropdownMenu[1];\n\n  return /*#__PURE__*/React.createElement(React.Fragment, null, meta.hasShown ? children(props, meta) : null);\n}\n\nDropdownMenu.displayName = 'ReactOverlaysDropdownMenu';\nDropdownMenu.propTypes = propTypes;\nDropdownMenu.defaultProps = defaultProps;\n/** @component */\n\nexport default DropdownMenu;","import PropTypes from 'prop-types';\nimport React, { useContext, useCallback } from 'react';\nimport DropdownContext from './DropdownContext';\n\nvar noop = function noop() {};\n/**\n * Wires up Dropdown toggle functionality, returning a set a props to attach\n * to the element that functions as the dropdown toggle (generally a button).\n *\n * @memberOf Dropdown\n */\n\n\nexport function useDropdownToggle() {\n  var _ref = useContext(DropdownContext) || {},\n      _ref$show = _ref.show,\n      show = _ref$show === void 0 ? false : _ref$show,\n      _ref$toggle = _ref.toggle,\n      toggle = _ref$toggle === void 0 ? noop : _ref$toggle,\n      setToggle = _ref.setToggle;\n\n  var handleClick = useCallback(function (e) {\n    toggle(!show, e);\n  }, [show, toggle]);\n  return [{\n    ref: setToggle || noop,\n    onClick: handleClick,\n    'aria-haspopup': true,\n    'aria-expanded': !!show\n  }, {\n    show: show,\n    toggle: toggle\n  }];\n}\nvar propTypes = {\n  /**\n   * A render prop that returns a Toggle element. The `props`\n   * argument should spread through to **a component that can accept a ref**. Use\n   * the `onToggle` argument to toggle the menu open or closed\n   *\n   * @type {Function ({\n   *   show: boolean,\n   *   toggle: (show: boolean) => void,\n   *   props: {\n   *     ref: (?HTMLElement) => void,\n   *     aria-haspopup: true\n   *     aria-expanded: boolean\n   *   },\n   * }) => React.Element}\n   */\n  children: PropTypes.func.isRequired\n};\n\n/**\n * Also exported as `<Dropdown.Toggle>` from `Dropdown`.\n *\n * @displayName DropdownToggle\n * @memberOf Dropdown\n */\nfunction DropdownToggle(_ref2) {\n  var children = _ref2.children;\n\n  var _useDropdownToggle = useDropdownToggle(),\n      props = _useDropdownToggle[0],\n      meta = _useDropdownToggle[1];\n\n  return /*#__PURE__*/React.createElement(React.Fragment, null, children(props, meta));\n}\n\nDropdownToggle.displayName = 'ReactOverlaysDropdownToggle';\nDropdownToggle.propTypes = propTypes;\n/** @component */\n\nexport default DropdownToggle;","import matches from 'dom-helpers/matches';\nimport qsa from 'dom-helpers/querySelectorAll';\nimport addEventListener from 'dom-helpers/addEventListener';\nimport React, { useCallback, useRef, useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { useUncontrolledProp } from 'uncontrollable';\nimport usePrevious from '@restart/hooks/usePrevious';\nimport useForceUpdate from '@restart/hooks/useForceUpdate';\nimport useGlobalListener from '@restart/hooks/useGlobalListener';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport DropdownContext from './DropdownContext';\nimport DropdownMenu from './DropdownMenu';\nimport DropdownToggle from './DropdownToggle';\nvar propTypes = {\n  /**\n   * A render prop that returns the root dropdown element. The `props`\n   * argument should spread through to an element containing _both_ the\n   * menu and toggle in order to handle keyboard events for focus management.\n   *\n   * @type {Function ({\n   *   props: {\n   *     onKeyDown: (SyntheticEvent) => void,\n   *   },\n   * }) => React.Element}\n   */\n  children: PropTypes.node,\n\n  /**\n   * Determines the direction and location of the Menu in relation to it's Toggle.\n   */\n  drop: PropTypes.oneOf(['up', 'left', 'right', 'down']),\n\n  /**\n   * Controls the focus behavior for when the Dropdown is opened. Set to\n   * `true` to always focus the first menu item, `keyboard` to focus only when\n   * navigating via the keyboard, or `false` to disable completely\n   *\n   * The Default behavior is `false` **unless** the Menu has a `role=\"menu\"`\n   * where it will default to `keyboard` to match the recommended [ARIA Authoring practices](https://www.w3.org/TR/wai-aria-practices-1.1/#menubutton).\n   */\n  focusFirstItemOnShow: PropTypes.oneOf([false, true, 'keyboard']),\n\n  /**\n   * A css slector string that will return __focusable__ menu items.\n   * Selectors should be relative to the menu component:\n   * e.g. ` > li:not('.disabled')`\n   */\n  itemSelector: PropTypes.string,\n\n  /**\n   * Align the menu to the 'end' side of the placement side of the Dropdown toggle. The default placement is `top-start` or `bottom-start`.\n   */\n  alignEnd: PropTypes.bool,\n\n  /**\n   * Whether or not the Dropdown is visible.\n   *\n   * @controllable onToggle\n   */\n  show: PropTypes.bool,\n\n  /**\n   * Sets the initial show position of the Dropdown.\n   */\n  defaultShow: PropTypes.bool,\n\n  /**\n   * A callback fired when the Dropdown wishes to change visibility. Called with the requested\n   * `show` value, the DOM event, and the source that fired it: `'click'`,`'keydown'`,`'rootClose'`, or `'select'`.\n   *\n   * ```ts static\n   * function(\n   *   isOpen: boolean,\n   *   event: SyntheticEvent,\n   * ): void\n   * ```\n   *\n   * @controllable show\n   */\n  onToggle: PropTypes.func\n};\n\nfunction useRefWithUpdate() {\n  var forceUpdate = useForceUpdate();\n  var ref = useRef(null);\n  var attachRef = useCallback(function (element) {\n    ref.current = element; // ensure that a menu set triggers an update for consumers\n\n    forceUpdate();\n  }, [forceUpdate]);\n  return [ref, attachRef];\n}\n/**\n * @displayName Dropdown\n * @public\n */\n\n\nfunction Dropdown(_ref) {\n  var drop = _ref.drop,\n      alignEnd = _ref.alignEnd,\n      defaultShow = _ref.defaultShow,\n      rawShow = _ref.show,\n      rawOnToggle = _ref.onToggle,\n      _ref$itemSelector = _ref.itemSelector,\n      itemSelector = _ref$itemSelector === void 0 ? '* > *' : _ref$itemSelector,\n      focusFirstItemOnShow = _ref.focusFirstItemOnShow,\n      children = _ref.children;\n\n  var _useUncontrolledProp = useUncontrolledProp(rawShow, defaultShow, rawOnToggle),\n      show = _useUncontrolledProp[0],\n      onToggle = _useUncontrolledProp[1]; // We use normal refs instead of useCallbackRef in order to populate the\n  // the value as quickly as possible, otherwise the effect to focus the element\n  // may run before the state value is set\n\n\n  var _useRefWithUpdate = useRefWithUpdate(),\n      menuRef = _useRefWithUpdate[0],\n      setMenu = _useRefWithUpdate[1];\n\n  var menuElement = menuRef.current;\n\n  var _useRefWithUpdate2 = useRefWithUpdate(),\n      toggleRef = _useRefWithUpdate2[0],\n      setToggle = _useRefWithUpdate2[1];\n\n  var toggleElement = toggleRef.current;\n  var lastShow = usePrevious(show);\n  var lastSourceEvent = useRef(null);\n  var focusInDropdown = useRef(false);\n  var toggle = useCallback(function (nextShow, event) {\n    onToggle(nextShow, event);\n  }, [onToggle]);\n  var context = useMemo(function () {\n    return {\n      toggle: toggle,\n      drop: drop,\n      show: show,\n      alignEnd: alignEnd,\n      menuElement: menuElement,\n      toggleElement: toggleElement,\n      setMenu: setMenu,\n      setToggle: setToggle\n    };\n  }, [toggle, drop, show, alignEnd, menuElement, toggleElement, setMenu, setToggle]);\n\n  if (menuElement && lastShow && !show) {\n    focusInDropdown.current = menuElement.contains(document.activeElement);\n  }\n\n  var focusToggle = useEventCallback(function () {\n    if (toggleElement && toggleElement.focus) {\n      toggleElement.focus();\n    }\n  });\n  var maybeFocusFirst = useEventCallback(function () {\n    var type = lastSourceEvent.current;\n    var focusType = focusFirstItemOnShow;\n\n    if (focusType == null) {\n      focusType = menuRef.current && matches(menuRef.current, '[role=menu]') ? 'keyboard' : false;\n    }\n\n    if (focusType === false || focusType === 'keyboard' && !/^key.+$/.test(type)) {\n      return;\n    }\n\n    var first = qsa(menuRef.current, itemSelector)[0];\n    if (first && first.focus) first.focus();\n  });\n  useEffect(function () {\n    if (show) maybeFocusFirst();else if (focusInDropdown.current) {\n      focusInDropdown.current = false;\n      focusToggle();\n    } // only `show` should be changing\n  }, [show, focusInDropdown, focusToggle, maybeFocusFirst]);\n  useEffect(function () {\n    lastSourceEvent.current = null;\n  });\n\n  var getNextFocusedChild = function getNextFocusedChild(current, offset) {\n    if (!menuRef.current) return null;\n    var items = qsa(menuRef.current, itemSelector);\n    var index = items.indexOf(current) + offset;\n    index = Math.max(0, Math.min(index, items.length));\n    return items[index];\n  };\n\n  useGlobalListener('keydown', function (event) {\n    var _menuRef$current, _toggleRef$current;\n\n    var key = event.key;\n    var target = event.target;\n    var fromMenu = (_menuRef$current = menuRef.current) == null ? void 0 : _menuRef$current.contains(target);\n    var fromToggle = (_toggleRef$current = toggleRef.current) == null ? void 0 : _toggleRef$current.contains(target); // Second only to https://github.com/twbs/bootstrap/blob/8cfbf6933b8a0146ac3fbc369f19e520bd1ebdac/js/src/dropdown.js#L400\n    // in inscrutability\n\n    var isInput = /input|textarea/i.test(target.tagName);\n\n    if (isInput && (key === ' ' || key !== 'Escape' && fromMenu)) {\n      return;\n    }\n\n    if (!fromMenu && !fromToggle) {\n      return;\n    }\n\n    if (!menuRef.current && key === 'Tab') {\n      return;\n    }\n\n    lastSourceEvent.current = event.type;\n\n    switch (key) {\n      case 'ArrowUp':\n        {\n          var next = getNextFocusedChild(target, -1);\n          if (next && next.focus) next.focus();\n          event.preventDefault();\n          return;\n        }\n\n      case 'ArrowDown':\n        event.preventDefault();\n\n        if (!show) {\n          onToggle(true, event);\n        } else {\n          var _next = getNextFocusedChild(target, 1);\n\n          if (_next && _next.focus) _next.focus();\n        }\n\n        return;\n\n      case 'Tab':\n        // on keydown the target is the element being tabbed FROM, we need that\n        // to know if this event is relevant to this dropdown (e.g. in this menu).\n        // On `keyup` the target is the element being tagged TO which we use to check\n        // if focus has left the menu\n        addEventListener(document, 'keyup', function (e) {\n          var _menuRef$current2;\n\n          if (e.key === 'Tab' && !e.target || !((_menuRef$current2 = menuRef.current) != null && _menuRef$current2.contains(e.target))) {\n            onToggle(false, event);\n          }\n        }, {\n          once: true\n        });\n        break;\n\n      case 'Escape':\n        event.preventDefault();\n        event.stopPropagation();\n        onToggle(false, event);\n        break;\n\n      default:\n    }\n  });\n  return /*#__PURE__*/React.createElement(DropdownContext.Provider, {\n    value: context\n  }, children);\n}\n\nDropdown.displayName = 'ReactOverlaysDropdown';\nDropdown.propTypes = propTypes;\nDropdown.Menu = DropdownMenu;\nDropdown.Toggle = DropdownToggle;\nexport default Dropdown;","import React from 'react'; // TODO (apparently this is a bare \"onSelect\"?)\n\nvar SelectableContext = /*#__PURE__*/React.createContext(null);\nexport var makeEventKey = function makeEventKey(eventKey, href) {\n  if (href === void 0) {\n    href = null;\n  }\n\n  if (eventKey != null) return String(eventKey);\n  return href || null;\n};\nexport default SelectableContext;","import React from 'react'; // TODO: check this\n\nvar NavContext = /*#__PURE__*/React.createContext(null);\nNavContext.displayName = 'NavContext';\nexport default NavContext;","/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @param {function} functions to chain\n * @returns {function|null}\n */\nfunction createChainedFunction() {\n  for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n    funcs[_key] = arguments[_key];\n  }\n\n  return funcs.filter(function (f) {\n    return f != null;\n  }).reduce(function (acc, f) {\n    if (typeof f !== 'function') {\n      throw new Error('Invalid Argument Type, must only provide functions, undefined, or null.');\n    }\n\n    if (acc === null) return f;\n    return function chainedFunction() {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      // @ts-ignore\n      acc.apply(this, args); // @ts-ignore\n\n      f.apply(this, args);\n    };\n  }, null);\n}\n\nexport default createChainedFunction;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"as\", \"disabled\", \"onKeyDown\"];\nimport React from 'react';\nimport createChainedFunction from './createChainedFunction';\n\nfunction isTrivialHref(href) {\n  return !href || href.trim() === '#';\n}\n/**\n * There are situations due to browser quirks or Bootstrap CSS where\n * an anchor tag is needed, when semantically a button tag is the\n * better choice. SafeAnchor ensures that when an anchor is used like a\n * button its accessible. It also emulates input `disabled` behavior for\n * links, which is usually desirable for Buttons, NavItems, DropdownItems, etc.\n */\n\n\nvar SafeAnchor = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'a' : _ref$as,\n      disabled = _ref.disabled,\n      onKeyDown = _ref.onKeyDown,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  var handleClick = function handleClick(event) {\n    var href = props.href,\n        onClick = props.onClick;\n\n    if (disabled || isTrivialHref(href)) {\n      event.preventDefault();\n    }\n\n    if (disabled) {\n      event.stopPropagation();\n      return;\n    }\n\n    if (onClick) {\n      onClick(event);\n    }\n  };\n\n  var handleKeyDown = function handleKeyDown(event) {\n    if (event.key === ' ') {\n      event.preventDefault();\n      handleClick(event);\n    }\n  };\n\n  if (isTrivialHref(props.href)) {\n    props.role = props.role || 'button'; // we want to make sure there is a href attribute on the node\n    // otherwise, the cursor incorrectly styled (except with role='button')\n\n    props.href = props.href || '#';\n  }\n\n  if (disabled) {\n    props.tabIndex = -1;\n    props['aria-disabled'] = true;\n  }\n\n  return /*#__PURE__*/React.createElement(Component, _extends({\n    ref: ref\n  }, props, {\n    onClick: handleClick,\n    onKeyDown: createChainedFunction(handleKeyDown, onKeyDown)\n  }));\n});\nSafeAnchor.displayName = 'SafeAnchor';\nexport default SafeAnchor;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"children\", \"eventKey\", \"disabled\", \"href\", \"onClick\", \"onSelect\", \"active\", \"as\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavContext from './NavContext';\nimport SafeAnchor from './SafeAnchor';\nvar defaultProps = {\n  as: SafeAnchor,\n  disabled: false\n};\nvar DropdownItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      children = _ref.children,\n      eventKey = _ref.eventKey,\n      disabled = _ref.disabled,\n      href = _ref.href,\n      onClick = _ref.onClick,\n      onSelect = _ref.onSelect,\n      propActive = _ref.active,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'dropdown-item');\n  var onSelectCtx = useContext(SelectableContext);\n  var navContext = useContext(NavContext);\n\n  var _ref2 = navContext || {},\n      activeKey = _ref2.activeKey;\n\n  var key = makeEventKey(eventKey, href);\n  var active = propActive == null && key != null ? makeEventKey(activeKey) === key : propActive;\n  var handleClick = useEventCallback(function (event) {\n    // SafeAnchor handles the disabled case, but we handle it here\n    // for other components\n    if (disabled) return;\n    if (onClick) onClick(event);\n    if (onSelectCtx) onSelectCtx(key, event);\n    if (onSelect) onSelect(key, event);\n  });\n  return (\n    /*#__PURE__*/\n    // \"TS2604: JSX element type 'Component' does not have any construct or call signatures.\"\n    // @ts-ignore\n    React.createElement(Component, _extends({}, props, {\n      ref: ref,\n      href: href,\n      disabled: disabled,\n      className: classNames(className, prefix, active && 'active', disabled && 'disabled'),\n      onClick: handleClick\n    }), children)\n  );\n});\nDropdownItem.displayName = 'DropdownItem';\nDropdownItem.defaultProps = defaultProps;\nexport default DropdownItem;","import { useMemo } from 'react';\nconst toFnRef = ref => !ref || typeof ref === 'function' ? ref : value => {\n  ref.current = value;\n};\nexport function mergeRefs(refA, refB) {\n  const a = toFnRef(refA);\n  const b = toFnRef(refB);\n  return value => {\n    if (a) a(value);\n    if (b) b(value);\n  };\n}\n\n/**\n * Create and returns a single callback ref composed from two other Refs.\n *\n * ```tsx\n * const Button = React.forwardRef((props, ref) => {\n *   const [element, attachRef] = useCallbackRef<HTMLButtonElement>();\n *   const mergedRef = useMergedRefs(ref, attachRef);\n *\n *   return <button ref={mergedRef} {...props}/>\n * })\n * ```\n *\n * @param refA A Callback or mutable Ref\n * @param refB A Callback or mutable Ref\n * @category refs\n */\nfunction useMergedRefs(refA, refB) {\n  return useMemo(() => mergeRefs(refA, refB), [refA, refB]);\n}\nexport default useMergedRefs;","import React from 'react'; // TODO: check\n\nvar context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'NavbarContext';\nexport default context;","import invariant from 'invariant';\nimport { useCallback } from 'react';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nexport default function useWrappedRefWithWarning(ref, componentName) {\n  // @ts-ignore\n  if (!(process.env.NODE_ENV !== \"production\")) return ref; // eslint-disable-next-line react-hooks/rules-of-hooks\n\n  var warningRef = useCallback(function (refValue) {\n    !(refValue == null || !refValue.isReactComponent) ? process.env.NODE_ENV !== \"production\" ? invariant(false, componentName + \" injected a ref to a provided `as` component that resolved to a component instance instead of a DOM element. \" + 'Use `React.forwardRef` to provide the injected ref to the class component as a prop in order to pass it directly to a DOM element') : invariant(false) : void 0;\n  }, [componentName]); // eslint-disable-next-line react-hooks/rules-of-hooks\n\n  return useMergedRefs(warningRef, ref);\n}","/**\n * Checks if a given element has a CSS class.\n * \n * @param element the element\n * @param className the CSS class name\n */\nexport default function hasClass(element, className) {\n  if (element.classList) return !!className && element.classList.contains(className);\n  return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","import { useCallback, useMemo, useRef } from 'react';\nimport hasClass from 'dom-helpers/hasClass';\nimport { useBootstrapPrefix } from './ThemeProvider';\n\nfunction getMargins(element) {\n  var styles = window.getComputedStyle(element);\n  var top = parseFloat(styles.marginTop) || 0;\n  var right = parseFloat(styles.marginRight) || 0;\n  var bottom = parseFloat(styles.marginBottom) || 0;\n  var left = parseFloat(styles.marginLeft) || 0;\n  return {\n    top: top,\n    right: right,\n    bottom: bottom,\n    left: left\n  };\n}\n\nexport default function usePopperMarginModifiers() {\n  var overlayRef = useRef(null);\n  var margins = useRef(null);\n  var arrowMargins = useRef(null);\n  var popoverClass = useBootstrapPrefix(undefined, 'popover');\n  var dropdownMenuClass = useBootstrapPrefix(undefined, 'dropdown-menu');\n  var callback = useCallback(function (overlay) {\n    if (!overlay || !(hasClass(overlay, popoverClass) || hasClass(overlay, dropdownMenuClass))) return;\n    margins.current = getMargins(overlay);\n    overlay.style.margin = '0';\n    overlayRef.current = overlay;\n  }, [popoverClass, dropdownMenuClass]);\n  var offset = useMemo(function () {\n    return {\n      name: 'offset',\n      options: {\n        offset: function offset(_ref) {\n          var placement = _ref.placement;\n          if (!margins.current) return [0, 0];\n          var _margins$current = margins.current,\n              top = _margins$current.top,\n              left = _margins$current.left,\n              bottom = _margins$current.bottom,\n              right = _margins$current.right;\n\n          switch (placement.split('-')[0]) {\n            case 'top':\n              return [0, bottom];\n\n            case 'left':\n              return [0, right];\n\n            case 'bottom':\n              return [0, top];\n\n            case 'right':\n              return [0, left];\n\n            default:\n              return [0, 0];\n          }\n        }\n      }\n    };\n  }, [margins]);\n  var arrow = useMemo(function () {\n    return {\n      name: 'arrow',\n      options: {\n        padding: function padding() {\n          // The options here are used for Popper 2.8.4 and up.\n          // For earlier version, padding is handled in popoverArrowMargins below.\n          if (!arrowMargins.current) {\n            return 0;\n          }\n\n          var _arrowMargins$current = arrowMargins.current,\n              top = _arrowMargins$current.top,\n              right = _arrowMargins$current.right;\n          var padding = top || right;\n          return {\n            top: padding,\n            left: padding,\n            right: padding,\n            bottom: padding\n          };\n        }\n      }\n    };\n  }, [arrowMargins]); // Converts popover arrow margin to arrow modifier padding\n\n  var popoverArrowMargins = useMemo(function () {\n    return {\n      name: 'popoverArrowMargins',\n      enabled: true,\n      phase: 'main',\n      fn: function fn() {\n        return undefined;\n      },\n      requiresIfExists: ['arrow'],\n      effect: function effect(_ref2) {\n        var state = _ref2.state;\n\n        if (!overlayRef.current || !state.elements.arrow || !hasClass(overlayRef.current, popoverClass)) {\n          return undefined;\n        }\n\n        if (state.modifiersData['arrow#persistent']) {\n          // @popperjs/core <= 2.8.3 uses arrow#persistent to pass padding to arrow modifier.\n          var _getMargins = getMargins(state.elements.arrow),\n              top = _getMargins.top,\n              right = _getMargins.right;\n\n          var padding = top || right;\n          state.modifiersData['arrow#persistent'].padding = {\n            top: padding,\n            left: padding,\n            right: padding,\n            bottom: padding\n          };\n        } else {\n          // @popperjs/core >= 2.8.4 gets the padding from the arrow modifier options,\n          // so we'll get the margins here, and let the arrow modifier above pass\n          // it to popper.\n          arrowMargins.current = getMargins(state.elements.arrow);\n        }\n\n        state.elements.arrow.style.margin = '0';\n        return function () {\n          if (state.elements.arrow) state.elements.arrow.style.margin = '';\n        };\n      }\n    };\n  }, [popoverClass]);\n  return [callback, [offset, arrow, popoverArrowMargins]];\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"align\", \"alignRight\", \"rootCloseEvent\", \"flip\", \"show\", \"renderOnMount\", \"as\", \"popperConfig\"];\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport React, { useContext } from 'react';\nimport { useDropdownMenu } from 'react-overlays/DropdownMenu';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport warning from 'warning';\nimport NavbarContext from './NavbarContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport useWrappedRefWithWarning from './useWrappedRefWithWarning';\nimport usePopperMarginModifiers from './usePopperMarginModifiers';\nvar alignDirection = PropTypes.oneOf(['left', 'right']);\nexport var alignPropType = PropTypes.oneOfType([alignDirection, PropTypes.shape({\n  sm: alignDirection\n}), PropTypes.shape({\n  md: alignDirection\n}), PropTypes.shape({\n  lg: alignDirection\n}), PropTypes.shape({\n  xl: alignDirection\n})]);\nvar defaultProps = {\n  align: 'left',\n  alignRight: false,\n  flip: true\n};\nvar DropdownMenu = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      align = _ref.align,\n      alignRight = _ref.alignRight,\n      rootCloseEvent = _ref.rootCloseEvent,\n      flip = _ref.flip,\n      showProps = _ref.show,\n      renderOnMount = _ref.renderOnMount,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'div' : _ref$as,\n      popperConfig = _ref.popperConfig,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  var isNavbar = useContext(NavbarContext);\n  var prefix = useBootstrapPrefix(bsPrefix, 'dropdown-menu');\n\n  var _usePopperMarginModif = usePopperMarginModifiers(),\n      popperRef = _usePopperMarginModif[0],\n      marginModifiers = _usePopperMarginModif[1];\n\n  var alignClasses = [];\n\n  if (align) {\n    if (typeof align === 'object') {\n      var keys = Object.keys(align);\n      process.env.NODE_ENV !== \"production\" ? warning(keys.length === 1, 'There should only be 1 breakpoint when passing an object to `align`') : void 0;\n\n      if (keys.length) {\n        var brkPoint = keys[0];\n        var direction = align[brkPoint]; // .dropdown-menu-right is required for responsively aligning\n        // left in addition to align left classes.\n        // Reuse alignRight to toggle the class below.\n\n        alignRight = direction === 'left';\n        alignClasses.push(prefix + \"-\" + brkPoint + \"-\" + direction);\n      }\n    } else if (align === 'right') {\n      alignRight = true;\n    }\n  }\n\n  var _useDropdownMenu = useDropdownMenu({\n    flip: flip,\n    rootCloseEvent: rootCloseEvent,\n    show: showProps,\n    alignEnd: alignRight,\n    usePopper: !isNavbar && alignClasses.length === 0,\n    popperConfig: _extends({}, popperConfig, {\n      modifiers: marginModifiers.concat((popperConfig == null ? void 0 : popperConfig.modifiers) || [])\n    })\n  }),\n      menuProps = _useDropdownMenu[0],\n      _useDropdownMenu$ = _useDropdownMenu[1],\n      hasShown = _useDropdownMenu$.hasShown,\n      popper = _useDropdownMenu$.popper,\n      show = _useDropdownMenu$.show,\n      alignEnd = _useDropdownMenu$.alignEnd,\n      toggle = _useDropdownMenu$.toggle;\n\n  menuProps.ref = useMergedRefs(popperRef, useMergedRefs(useWrappedRefWithWarning(ref, 'DropdownMenu'), menuProps.ref));\n  if (!hasShown && !renderOnMount) return null; // For custom components provide additional, non-DOM, props;\n\n  if (typeof Component !== 'string') {\n    menuProps.show = show;\n\n    menuProps.close = function () {\n      return toggle == null ? void 0 : toggle(false);\n    };\n\n    menuProps.alignRight = alignEnd;\n  }\n\n  var style = props.style;\n\n  if (popper != null && popper.placement) {\n    // we don't need the default popper style,\n    // menus are display: none when not shown.\n    style = _extends({}, props.style, menuProps.style);\n    props['x-placement'] = popper.placement;\n  }\n\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, menuProps, {\n    style: style,\n    className: classNames.apply(void 0, [className, prefix, show && 'show', alignEnd && prefix + \"-right\"].concat(alignClasses))\n  }));\n});\nDropdownMenu.displayName = 'DropdownMenu';\nDropdownMenu.defaultProps = defaultProps;\nexport default DropdownMenu;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"variant\", \"size\", \"active\", \"className\", \"block\", \"type\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport SafeAnchor from './SafeAnchor';\nvar defaultProps = {\n  variant: 'primary',\n  active: false,\n  disabled: false\n};\nvar Button = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      variant = _ref.variant,\n      size = _ref.size,\n      active = _ref.active,\n      className = _ref.className,\n      block = _ref.block,\n      type = _ref.type,\n      as = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'btn');\n  var classes = classNames(className, prefix, active && 'active', variant && prefix + \"-\" + variant, block && prefix + \"-block\", size && prefix + \"-\" + size);\n\n  if (props.href) {\n    return /*#__PURE__*/React.createElement(SafeAnchor, _extends({}, props, {\n      as: as,\n      ref: ref,\n      className: classNames(classes, props.disabled && 'disabled')\n    }));\n  }\n\n  if (ref) {\n    props.ref = ref;\n  }\n\n  if (type) {\n    props.type = type;\n  } else if (!as) {\n    props.type = 'button';\n  }\n\n  var Component = as || 'button';\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    className: classes\n  }));\n});\nButton.displayName = 'Button';\nButton.defaultProps = defaultProps;\nexport default Button;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"split\", \"className\", \"childBsPrefix\", \"as\"];\nimport classNames from 'classnames';\nimport isRequiredForA11y from 'prop-types-extra/lib/isRequiredForA11y';\nimport React from 'react';\nimport { useDropdownToggle } from 'react-overlays/DropdownToggle';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport Button from './Button';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport useWrappedRefWithWarning from './useWrappedRefWithWarning';\nvar DropdownToggle = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      split = _ref.split,\n      className = _ref.className,\n      childBsPrefix = _ref.childBsPrefix,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? Button : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'dropdown-toggle');\n\n  if (childBsPrefix !== undefined) {\n    props.bsPrefix = childBsPrefix;\n  }\n\n  var _useDropdownToggle = useDropdownToggle(),\n      toggleProps = _useDropdownToggle[0];\n\n  toggleProps.ref = useMergedRefs(toggleProps.ref, useWrappedRefWithWarning(ref, 'DropdownToggle')); // This intentionally forwards size and variant (if set) to the\n  // underlying component, to allow it to render size and style variants.\n\n  return /*#__PURE__*/React.createElement(Component, _extends({\n    className: classNames(className, prefix, split && prefix + \"-split\")\n  }, toggleProps, props));\n});\nDropdownToggle.displayName = 'DropdownToggle';\nexport default DropdownToggle;","var rHyphen = /-(.)/g;\nexport default function camelize(string) {\n  return string.replace(rHyphen, function (_, chr) {\n    return chr.toUpperCase();\n  });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"bsPrefix\", \"as\"];\nimport classNames from 'classnames';\nimport camelize from 'dom-helpers/camelize';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\n\nvar pascalCase = function pascalCase(str) {\n  return str[0].toUpperCase() + camelize(str).slice(1);\n};\n\n// TODO: emstricten & fix the typing here! `createWithBsPrefix<TElementType>...`\nexport default function createWithBsPrefix(prefix, _temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      _ref$displayName = _ref.displayName,\n      displayName = _ref$displayName === void 0 ? pascalCase(prefix) : _ref$displayName,\n      Component = _ref.Component,\n      defaultProps = _ref.defaultProps;\n\n  var BsComponent = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {\n    var className = _ref2.className,\n        bsPrefix = _ref2.bsPrefix,\n        _ref2$as = _ref2.as,\n        Tag = _ref2$as === void 0 ? Component || 'div' : _ref2$as,\n        props = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n    var resolvedPrefix = useBootstrapPrefix(bsPrefix, prefix);\n    return /*#__PURE__*/React.createElement(Tag, _extends({\n      ref: ref,\n      className: classNames(className, resolvedPrefix)\n    }, props));\n  });\n  BsComponent.defaultProps = defaultProps;\n  BsComponent.displayName = displayName;\n  return BsComponent;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"drop\", \"show\", \"className\", \"alignRight\", \"onSelect\", \"onToggle\", \"focusFirstItemOnShow\", \"as\", \"navbar\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport BaseDropdown from 'react-overlays/Dropdown';\nimport { useUncontrolled } from 'uncontrollable';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport DropdownItem from './DropdownItem';\nimport DropdownMenu from './DropdownMenu';\nimport DropdownToggle from './DropdownToggle';\nimport SelectableContext from './SelectableContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport createWithBsPrefix from './createWithBsPrefix';\nvar DropdownHeader = createWithBsPrefix('dropdown-header', {\n  defaultProps: {\n    role: 'heading'\n  }\n});\nvar DropdownDivider = createWithBsPrefix('dropdown-divider', {\n  defaultProps: {\n    role: 'separator'\n  }\n});\nvar DropdownItemText = createWithBsPrefix('dropdown-item-text', {\n  Component: 'span'\n});\nvar defaultProps = {\n  navbar: false\n};\nvar Dropdown = /*#__PURE__*/React.forwardRef(function (pProps, ref) {\n  var _useUncontrolled = useUncontrolled(pProps, {\n    show: 'onToggle'\n  }),\n      bsPrefix = _useUncontrolled.bsPrefix,\n      drop = _useUncontrolled.drop,\n      show = _useUncontrolled.show,\n      className = _useUncontrolled.className,\n      alignRight = _useUncontrolled.alignRight,\n      onSelect = _useUncontrolled.onSelect,\n      onToggle = _useUncontrolled.onToggle,\n      focusFirstItemOnShow = _useUncontrolled.focusFirstItemOnShow,\n      _useUncontrolled$as = _useUncontrolled.as,\n      Component = _useUncontrolled$as === void 0 ? 'div' : _useUncontrolled$as,\n      _4 = _useUncontrolled.navbar,\n      props = _objectWithoutPropertiesLoose(_useUncontrolled, _excluded);\n\n  var onSelectCtx = useContext(SelectableContext);\n  var prefix = useBootstrapPrefix(bsPrefix, 'dropdown');\n  var handleToggle = useEventCallback(function (nextShow, event, source) {\n    if (source === void 0) {\n      source = event.type;\n    }\n\n    if (event.currentTarget === document && (source !== 'keydown' || event.key === 'Escape')) source = 'rootClose';\n\n    if (onToggle) {\n      onToggle(nextShow, event, {\n        source: source\n      });\n    }\n  });\n  var handleSelect = useEventCallback(function (key, event) {\n    if (onSelectCtx) onSelectCtx(key, event);\n    if (onSelect) onSelect(key, event);\n    handleToggle(false, event, 'select');\n  });\n  return /*#__PURE__*/React.createElement(SelectableContext.Provider, {\n    value: handleSelect\n  }, /*#__PURE__*/React.createElement(BaseDropdown, {\n    drop: drop,\n    show: show,\n    alignEnd: alignRight,\n    onToggle: handleToggle,\n    focusFirstItemOnShow: focusFirstItemOnShow,\n    itemSelector: \".\" + prefix + \"-item:not(.disabled):not(:disabled)\"\n  }, /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classNames(className, show && 'show', (!drop || drop === 'down') && prefix, drop === 'up' && 'dropup', drop === 'right' && 'dropright', drop === 'left' && 'dropleft')\n  }))));\n});\nDropdown.displayName = 'Dropdown';\nDropdown.defaultProps = defaultProps;\nDropdown.Divider = DropdownDivider;\nDropdown.Header = DropdownHeader;\nDropdown.Item = DropdownItem;\nDropdown.ItemText = DropdownItemText;\nDropdown.Menu = DropdownMenu;\nDropdown.Toggle = DropdownToggle;\nexport default Dropdown;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"title\", \"children\", \"bsPrefix\", \"rootCloseEvent\", \"variant\", \"size\", \"menuAlign\", \"menuRole\", \"renderMenuOnMount\", \"disabled\", \"href\", \"id\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport Dropdown from './Dropdown';\nimport DropdownToggle from './DropdownToggle';\nimport DropdownMenu, { alignPropType } from './DropdownMenu';\nvar propTypes = {\n  /**\n   * An html id attribute for the Toggle button, necessary for assistive technologies, such as screen readers.\n   * @type {string|number}\n   * @required\n   */\n  id: PropTypes.any,\n\n  /** An `href` passed to the Toggle component */\n  href: PropTypes.string,\n\n  /** An `onClick` handler passed to the Toggle component */\n  onClick: PropTypes.func,\n\n  /** The content of the non-toggle Button.  */\n  title: PropTypes.node.isRequired,\n\n  /** Disables both Buttons  */\n  disabled: PropTypes.bool,\n\n  /**\n   * Aligns the dropdown menu responsively.\n   *\n   * _see [DropdownMenu](#dropdown-menu-props) for more details_\n   *\n   * @type {\"left\"|\"right\"|{ sm: \"left\"|\"right\" }|{ md: \"left\"|\"right\" }|{ lg: \"left\"|\"right\" }|{ xl: \"left\"|\"right\"} }\n   */\n  menuAlign: alignPropType,\n\n  /** An ARIA accessible role applied to the Menu component. When set to 'menu', The dropdown */\n  menuRole: PropTypes.string,\n\n  /** Whether to render the dropdown menu in the DOM before the first time it is shown */\n  renderMenuOnMount: PropTypes.bool,\n\n  /**\n   *  Which event when fired outside the component will cause it to be closed.\n   *\n   * _see [DropdownMenu](#dropdown-menu-props) for more details_\n   */\n  rootCloseEvent: PropTypes.string,\n\n  /** @ignore */\n  bsPrefix: PropTypes.string,\n\n  /** @ignore */\n  variant: PropTypes.string,\n\n  /** @ignore */\n  size: PropTypes.string\n};\n/**\n * A convenience component for simple or general use dropdowns. Renders a `Button` toggle and all `children`\n * are passed directly to the default `Dropdown.Menu`. This component accepts all of\n * [`Dropdown`'s props](#dropdown-props).\n *\n * _All unknown props are passed through to the `Dropdown` component._ Only\n * the Button `variant`, `size` and `bsPrefix` props are passed to the toggle,\n * along with menu-related props are passed to the `Dropdown.Menu`\n */\n\nvar DropdownButton = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var title = _ref.title,\n      children = _ref.children,\n      bsPrefix = _ref.bsPrefix,\n      rootCloseEvent = _ref.rootCloseEvent,\n      variant = _ref.variant,\n      size = _ref.size,\n      menuAlign = _ref.menuAlign,\n      menuRole = _ref.menuRole,\n      renderMenuOnMount = _ref.renderMenuOnMount,\n      disabled = _ref.disabled,\n      href = _ref.href,\n      id = _ref.id,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  return /*#__PURE__*/React.createElement(Dropdown, _extends({\n    ref: ref\n  }, props), /*#__PURE__*/React.createElement(DropdownToggle, {\n    id: id,\n    href: href,\n    size: size,\n    variant: variant,\n    disabled: disabled,\n    childBsPrefix: bsPrefix\n  }, title), /*#__PURE__*/React.createElement(DropdownMenu, {\n    align: menuAlign,\n    role: menuRole,\n    renderOnMount: renderMenuOnMount,\n    rootCloseEvent: rootCloseEvent\n  }, children));\n});\nDropdownButton.displayName = 'DropdownButton';\nDropdownButton.propTypes = propTypes;\nexport default DropdownButton;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar NavbarBrand = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      as = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-brand');\n  var Component = as || (props.href ? 'a' : 'span');\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classNames(className, bsPrefix)\n  }));\n});\nNavbarBrand.displayName = 'NavbarBrand';\nexport default NavbarBrand;","import ownerWindow from './ownerWindow';\n/**\n * Returns one or all computed style properties of an element.\n * \n * @param node the element\n * @param psuedoElement the style property\n */\n\nexport default function getComputedStyle(node, psuedoElement) {\n  return ownerWindow(node).getComputedStyle(node, psuedoElement);\n}","import ownerDocument from './ownerDocument';\n/**\n * Returns the owner window of a given element.\n * \n * @param node the element\n */\n\nexport default function ownerWindow(node) {\n  var doc = ownerDocument(node);\n  return doc && doc.defaultView || window;\n}","var rUpper = /([A-Z])/g;\nexport default function hyphenate(string) {\n  return string.replace(rUpper, '-$1').toLowerCase();\n}","/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\nimport hyphenate from './hyphenate';\nvar msPattern = /^ms-/;\nexport default function hyphenateStyleName(string) {\n  return hyphenate(string).replace(msPattern, '-ms-');\n}","var supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\nexport default function isTransform(value) {\n  return !!(value && supportedTransforms.test(value));\n}","import getComputedStyle from './getComputedStyle';\nimport hyphenate from './hyphenateStyle';\nimport isTransform from './isTransform';\n\nfunction style(node, property) {\n  var css = '';\n  var transforms = '';\n\n  if (typeof property === 'string') {\n    return node.style.getPropertyValue(hyphenate(property)) || getComputedStyle(node).getPropertyValue(hyphenate(property));\n  }\n\n  Object.keys(property).forEach(function (key) {\n    var value = property[key];\n\n    if (!value && value !== 0) {\n      node.style.removeProperty(hyphenate(key));\n    } else if (isTransform(key)) {\n      transforms += key + \"(\" + value + \") \";\n    } else {\n      css += hyphenate(key) + \": \" + value + \";\";\n    }\n  });\n\n  if (transforms) {\n    css += \"transform: \" + transforms + \";\";\n  }\n\n  node.style.cssText += \";\" + css;\n}\n\nexport default style;","function _setPrototypeOf(t, e) {\n  return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n    return t.__proto__ = e, t;\n  }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n  t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","export default {\n  disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","export var forceReflow = function forceReflow(node) {\n  return node.scrollTop;\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n *   transition: `opacity ${duration}ms ease-in-out`,\n *   opacity: 0,\n * }\n *\n * const transitionStyles = {\n *   entering: { opacity: 1 },\n *   entered:  { opacity: 1 },\n *   exiting:  { opacity: 0 },\n *   exited:  { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n *   <Transition in={inProp} timeout={duration}>\n *     {state => (\n *       <div style={{\n *         ...defaultStyle,\n *         ...transitionStyles[state]\n *       }}>\n *         I'm a fade Transition!\n *       </div>\n *     )}\n *   </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n *  - `'entering'`\n *  - `'entered'`\n *  - `'exiting'`\n *  - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n *   const [inProp, setInProp] = useState(false);\n *   return (\n *     <div>\n *       <Transition in={inProp} timeout={500}>\n *         {state => (\n *           // ...\n *         )}\n *       </Transition>\n *       <button onClick={() => setInProp(true)}>\n *         Click to Enter\n *       </button>\n *     </div>\n *   );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(Transition, _React$Component);\n\n  function Transition(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n    var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n    var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n    var initialStatus;\n    _this.appearStatus = null;\n\n    if (props.in) {\n      if (appear) {\n        initialStatus = EXITED;\n        _this.appearStatus = ENTERING;\n      } else {\n        initialStatus = ENTERED;\n      }\n    } else {\n      if (props.unmountOnExit || props.mountOnEnter) {\n        initialStatus = UNMOUNTED;\n      } else {\n        initialStatus = EXITED;\n      }\n    }\n\n    _this.state = {\n      status: initialStatus\n    };\n    _this.nextCallback = null;\n    return _this;\n  }\n\n  Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n    var nextIn = _ref.in;\n\n    if (nextIn && prevState.status === UNMOUNTED) {\n      return {\n        status: EXITED\n      };\n    }\n\n    return null;\n  } // getSnapshotBeforeUpdate(prevProps) {\n  //   let nextStatus = null\n  //   if (prevProps !== this.props) {\n  //     const { status } = this.state\n  //     if (this.props.in) {\n  //       if (status !== ENTERING && status !== ENTERED) {\n  //         nextStatus = ENTERING\n  //       }\n  //     } else {\n  //       if (status === ENTERING || status === ENTERED) {\n  //         nextStatus = EXITING\n  //       }\n  //     }\n  //   }\n  //   return { nextStatus }\n  // }\n  ;\n\n  var _proto = Transition.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.updateStatus(true, this.appearStatus);\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var nextStatus = null;\n\n    if (prevProps !== this.props) {\n      var status = this.state.status;\n\n      if (this.props.in) {\n        if (status !== ENTERING && status !== ENTERED) {\n          nextStatus = ENTERING;\n        }\n      } else {\n        if (status === ENTERING || status === ENTERED) {\n          nextStatus = EXITING;\n        }\n      }\n    }\n\n    this.updateStatus(false, nextStatus);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.cancelNextCallback();\n  };\n\n  _proto.getTimeouts = function getTimeouts() {\n    var timeout = this.props.timeout;\n    var exit, enter, appear;\n    exit = enter = appear = timeout;\n\n    if (timeout != null && typeof timeout !== 'number') {\n      exit = timeout.exit;\n      enter = timeout.enter; // TODO: remove fallback for next major\n\n      appear = timeout.appear !== undefined ? timeout.appear : enter;\n    }\n\n    return {\n      exit: exit,\n      enter: enter,\n      appear: appear\n    };\n  };\n\n  _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n    if (mounting === void 0) {\n      mounting = false;\n    }\n\n    if (nextStatus !== null) {\n      // nextStatus will always be ENTERING or EXITING.\n      this.cancelNextCallback();\n\n      if (nextStatus === ENTERING) {\n        if (this.props.unmountOnExit || this.props.mountOnEnter) {\n          var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n          // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n          // To make the animation happen,  we have to separate each rendering and avoid being processed as batched.\n\n          if (node) forceReflow(node);\n        }\n\n        this.performEnter(mounting);\n      } else {\n        this.performExit();\n      }\n    } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n      this.setState({\n        status: UNMOUNTED\n      });\n    }\n  };\n\n  _proto.performEnter = function performEnter(mounting) {\n    var _this2 = this;\n\n    var enter = this.props.enter;\n    var appearing = this.context ? this.context.isMounting : mounting;\n\n    var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n        maybeNode = _ref2[0],\n        maybeAppearing = _ref2[1];\n\n    var timeouts = this.getTimeouts();\n    var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n    // if we are mounting and running this it means appear _must_ be set\n\n    if (!mounting && !enter || config.disabled) {\n      this.safeSetState({\n        status: ENTERED\n      }, function () {\n        _this2.props.onEntered(maybeNode);\n      });\n      return;\n    }\n\n    this.props.onEnter(maybeNode, maybeAppearing);\n    this.safeSetState({\n      status: ENTERING\n    }, function () {\n      _this2.props.onEntering(maybeNode, maybeAppearing);\n\n      _this2.onTransitionEnd(enterTimeout, function () {\n        _this2.safeSetState({\n          status: ENTERED\n        }, function () {\n          _this2.props.onEntered(maybeNode, maybeAppearing);\n        });\n      });\n    });\n  };\n\n  _proto.performExit = function performExit() {\n    var _this3 = this;\n\n    var exit = this.props.exit;\n    var timeouts = this.getTimeouts();\n    var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n    if (!exit || config.disabled) {\n      this.safeSetState({\n        status: EXITED\n      }, function () {\n        _this3.props.onExited(maybeNode);\n      });\n      return;\n    }\n\n    this.props.onExit(maybeNode);\n    this.safeSetState({\n      status: EXITING\n    }, function () {\n      _this3.props.onExiting(maybeNode);\n\n      _this3.onTransitionEnd(timeouts.exit, function () {\n        _this3.safeSetState({\n          status: EXITED\n        }, function () {\n          _this3.props.onExited(maybeNode);\n        });\n      });\n    });\n  };\n\n  _proto.cancelNextCallback = function cancelNextCallback() {\n    if (this.nextCallback !== null) {\n      this.nextCallback.cancel();\n      this.nextCallback = null;\n    }\n  };\n\n  _proto.safeSetState = function safeSetState(nextState, callback) {\n    // This shouldn't be necessary, but there are weird race conditions with\n    // setState callbacks and unmounting in testing, so always make sure that\n    // we can cancel any pending setState callbacks after we unmount.\n    callback = this.setNextCallback(callback);\n    this.setState(nextState, callback);\n  };\n\n  _proto.setNextCallback = function setNextCallback(callback) {\n    var _this4 = this;\n\n    var active = true;\n\n    this.nextCallback = function (event) {\n      if (active) {\n        active = false;\n        _this4.nextCallback = null;\n        callback(event);\n      }\n    };\n\n    this.nextCallback.cancel = function () {\n      active = false;\n    };\n\n    return this.nextCallback;\n  };\n\n  _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n    this.setNextCallback(handler);\n    var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n    var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n    if (!node || doesNotHaveTimeoutOrListener) {\n      setTimeout(this.nextCallback, 0);\n      return;\n    }\n\n    if (this.props.addEndListener) {\n      var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n          maybeNode = _ref3[0],\n          maybeNextCallback = _ref3[1];\n\n      this.props.addEndListener(maybeNode, maybeNextCallback);\n    }\n\n    if (timeout != null) {\n      setTimeout(this.nextCallback, timeout);\n    }\n  };\n\n  _proto.render = function render() {\n    var status = this.state.status;\n\n    if (status === UNMOUNTED) {\n      return null;\n    }\n\n    var _this$props = this.props,\n        children = _this$props.children,\n        _in = _this$props.in,\n        _mountOnEnter = _this$props.mountOnEnter,\n        _unmountOnExit = _this$props.unmountOnExit,\n        _appear = _this$props.appear,\n        _enter = _this$props.enter,\n        _exit = _this$props.exit,\n        _timeout = _this$props.timeout,\n        _addEndListener = _this$props.addEndListener,\n        _onEnter = _this$props.onEnter,\n        _onEntering = _this$props.onEntering,\n        _onEntered = _this$props.onEntered,\n        _onExit = _this$props.onExit,\n        _onExiting = _this$props.onExiting,\n        _onExited = _this$props.onExited,\n        _nodeRef = _this$props.nodeRef,\n        childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n    return (\n      /*#__PURE__*/\n      // allows for nested Transitions\n      React.createElement(TransitionGroupContext.Provider, {\n        value: null\n      }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n    );\n  };\n\n  return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * A React reference to DOM element that need to transition:\n   * https://stackoverflow.com/a/51127130/4671932\n   *\n   *   - When `nodeRef` prop is used, `node` is not passed to callback functions\n   *      (e.g. `onEnter`) because user already has direct access to the node.\n   *   - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n   *     `nodeRef` need to be provided to `Transition` with changed `key` prop\n   *     (see\n   *     [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n   */\n  nodeRef: PropTypes.shape({\n    current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n      var value = propValue[key];\n      return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n    }\n  }),\n\n  /**\n   * A `function` child can be used instead of a React element. This function is\n   * called with the current transition status (`'entering'`, `'entered'`,\n   * `'exiting'`, `'exited'`), which can be used to apply context\n   * specific props to a component.\n   *\n   * ```jsx\n   * <Transition in={this.state.in} timeout={150}>\n   *   {state => (\n   *     <MyComponent className={`fade fade-${state}`} />\n   *   )}\n   * </Transition>\n   * ```\n   */\n  children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n  /**\n   * Show the component; triggers the enter or exit states\n   */\n  in: PropTypes.bool,\n\n  /**\n   * By default the child component is mounted immediately along with\n   * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n   * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n   * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n   */\n  mountOnEnter: PropTypes.bool,\n\n  /**\n   * By default the child component stays mounted after it reaches the `'exited'` state.\n   * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n   */\n  unmountOnExit: PropTypes.bool,\n\n  /**\n   * By default the child component does not perform the enter transition when\n   * it first mounts, regardless of the value of `in`. If you want this\n   * behavior, set both `appear` and `in` to `true`.\n   *\n   * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n   * > only adds an additional enter transition. However, in the\n   * > `<CSSTransition>` component that first enter transition does result in\n   * > additional `.appear-*` classes, that way you can choose to style it\n   * > differently.\n   */\n  appear: PropTypes.bool,\n\n  /**\n   * Enable or disable enter transitions.\n   */\n  enter: PropTypes.bool,\n\n  /**\n   * Enable or disable exit transitions.\n   */\n  exit: PropTypes.bool,\n\n  /**\n   * The duration of the transition, in milliseconds.\n   * Required unless `addEndListener` is provided.\n   *\n   * You may specify a single timeout for all transitions:\n   *\n   * ```jsx\n   * timeout={500}\n   * ```\n   *\n   * or individually:\n   *\n   * ```jsx\n   * timeout={{\n   *  appear: 500,\n   *  enter: 300,\n   *  exit: 500,\n   * }}\n   * ```\n   *\n   * - `appear` defaults to the value of `enter`\n   * - `enter` defaults to `0`\n   * - `exit` defaults to `0`\n   *\n   * @type {number | { enter?: number, exit?: number, appear?: number }}\n   */\n  timeout: function timeout(props) {\n    var pt = timeoutsShape;\n    if (!props.addEndListener) pt = pt.isRequired;\n\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 pt.apply(void 0, [props].concat(args));\n  },\n\n  /**\n   * Add a custom transition end trigger. Called with the transitioning\n   * DOM node and a `done` callback. Allows for more fine grained transition end\n   * logic. Timeouts are still used as a fallback if provided.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * ```jsx\n   * addEndListener={(node, done) => {\n   *   // use the css transitionend event to mark the finish of a transition\n   *   node.addEventListener('transitionend', done, false);\n   * }}\n   * ```\n   */\n  addEndListener: PropTypes.func,\n\n  /**\n   * Callback fired before the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entered\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * Callback fired before the \"exiting\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exiting\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exited\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n  in: false,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false,\n  enter: true,\n  exit: true,\n  onEnter: noop,\n  onEntering: noop,\n  onEntered: noop,\n  onExit: noop,\n  onExiting: noop,\n  onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","import css from './css';\nimport listen from './listen';\nimport triggerEvent from './triggerEvent';\n\nfunction parseDuration(node) {\n  var str = css(node, 'transitionDuration') || '';\n  var mult = str.indexOf('ms') === -1 ? 1000 : 1;\n  return parseFloat(str) * mult;\n}\n\nfunction emulateTransitionEnd(element, duration, padding) {\n  if (padding === void 0) {\n    padding = 5;\n  }\n\n  var called = false;\n  var handle = setTimeout(function () {\n    if (!called) triggerEvent(element, 'transitionend', true);\n  }, duration + padding);\n  var remove = listen(element, 'transitionend', function () {\n    called = true;\n  }, {\n    once: true\n  });\n  return function () {\n    clearTimeout(handle);\n    remove();\n  };\n}\n\nexport default function transitionEnd(element, handler, duration, padding) {\n  if (duration == null) duration = parseDuration(element) || 0;\n  var removeEmulate = emulateTransitionEnd(element, duration, padding);\n  var remove = listen(element, 'transitionend', handler);\n  return function () {\n    removeEmulate();\n    remove();\n  };\n}","/**\n * Triggers an event on a given element.\n * \n * @param node the element\n * @param eventName the event name to trigger\n * @param bubbles whether the event should bubble up\n * @param cancelable whether the event should be cancelable\n */\nexport default function triggerEvent(node, eventName, bubbles, cancelable) {\n  if (bubbles === void 0) {\n    bubbles = false;\n  }\n\n  if (cancelable === void 0) {\n    cancelable = true;\n  }\n\n  if (node) {\n    var event = document.createEvent('HTMLEvents');\n    event.initEvent(eventName, bubbles, cancelable);\n    node.dispatchEvent(event);\n  }\n}","import css from 'dom-helpers/css';\nimport transitionEnd from 'dom-helpers/transitionEnd';\n\nfunction parseDuration(node, property) {\n  var str = css(node, property) || '';\n  var mult = str.indexOf('ms') === -1 ? 1000 : 1;\n  return parseFloat(str) * mult;\n}\n\nexport default function transitionEndListener(element, handler) {\n  var duration = parseDuration(element, 'transitionDuration');\n  var delay = parseDuration(element, 'transitionDelay');\n  var remove = transitionEnd(element, function (e) {\n    if (e.target === element) {\n      remove();\n      handler(e);\n    }\n  }, duration + delay);\n}","// reading a dimension prop will cause the browser to recalculate,\n// which will let our animations work\nexport default function triggerBrowserReflow(node) {\n  // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n  node.offsetHeight;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"className\", \"children\", \"dimension\", \"getDimensionValue\"];\n\nvar _collapseStyles;\n\nimport classNames from 'classnames';\nimport css from 'dom-helpers/css';\nimport React, { useMemo } from 'react';\nimport Transition, { ENTERED, ENTERING, EXITED, EXITING } from 'react-transition-group/Transition';\nimport transitionEndListener from './transitionEndListener';\nimport createChainedFunction from './createChainedFunction';\nimport triggerBrowserReflow from './triggerBrowserReflow';\nvar MARGINS = {\n  height: ['marginTop', 'marginBottom'],\n  width: ['marginLeft', 'marginRight']\n};\n\nfunction getDefaultDimensionValue(dimension, elem) {\n  var offset = \"offset\" + dimension[0].toUpperCase() + dimension.slice(1);\n  var value = elem[offset];\n  var margins = MARGINS[dimension];\n  return value + // @ts-ignore\n  parseInt(css(elem, margins[0]), 10) + // @ts-ignore\n  parseInt(css(elem, margins[1]), 10);\n}\n\nvar collapseStyles = (_collapseStyles = {}, _collapseStyles[EXITED] = 'collapse', _collapseStyles[EXITING] = 'collapsing', _collapseStyles[ENTERING] = 'collapsing', _collapseStyles[ENTERED] = 'collapse show', _collapseStyles);\nvar defaultProps = {\n  in: false,\n  timeout: 300,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false,\n  getDimensionValue: getDefaultDimensionValue\n};\nvar Collapse = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var onEnter = _ref.onEnter,\n      onEntering = _ref.onEntering,\n      onEntered = _ref.onEntered,\n      onExit = _ref.onExit,\n      onExiting = _ref.onExiting,\n      className = _ref.className,\n      children = _ref.children,\n      _ref$dimension = _ref.dimension,\n      dimension = _ref$dimension === void 0 ? 'height' : _ref$dimension,\n      _ref$getDimensionValu = _ref.getDimensionValue,\n      getDimensionValue = _ref$getDimensionValu === void 0 ? getDefaultDimensionValue : _ref$getDimensionValu,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  /* Compute dimension */\n  var computedDimension = typeof dimension === 'function' ? dimension() : dimension;\n  /* -- Expanding -- */\n\n  var handleEnter = useMemo(function () {\n    return createChainedFunction(function (elem) {\n      elem.style[computedDimension] = '0';\n    }, onEnter);\n  }, [computedDimension, onEnter]);\n  var handleEntering = useMemo(function () {\n    return createChainedFunction(function (elem) {\n      var scroll = \"scroll\" + computedDimension[0].toUpperCase() + computedDimension.slice(1);\n      elem.style[computedDimension] = elem[scroll] + \"px\";\n    }, onEntering);\n  }, [computedDimension, onEntering]);\n  var handleEntered = useMemo(function () {\n    return createChainedFunction(function (elem) {\n      elem.style[computedDimension] = null;\n    }, onEntered);\n  }, [computedDimension, onEntered]);\n  /* -- Collapsing -- */\n\n  var handleExit = useMemo(function () {\n    return createChainedFunction(function (elem) {\n      elem.style[computedDimension] = getDimensionValue(computedDimension, elem) + \"px\";\n      triggerBrowserReflow(elem);\n    }, onExit);\n  }, [onExit, getDimensionValue, computedDimension]);\n  var handleExiting = useMemo(function () {\n    return createChainedFunction(function (elem) {\n      elem.style[computedDimension] = null;\n    }, onExiting);\n  }, [computedDimension, onExiting]);\n  return /*#__PURE__*/React.createElement(Transition // @ts-ignore\n  , _extends({\n    ref: ref,\n    addEndListener: transitionEndListener\n  }, props, {\n    \"aria-expanded\": props.role ? props.in : null,\n    onEnter: handleEnter,\n    onEntering: handleEntering,\n    onEntered: handleEntered,\n    onExit: handleExit,\n    onExiting: handleExiting\n  }), function (state, innerProps) {\n    return /*#__PURE__*/React.cloneElement(children, _extends({}, innerProps, {\n      className: classNames(className, children.props.className, collapseStyles[state], computedDimension === 'width' && 'width')\n    }));\n  });\n}); // @ts-ignore\n\n// @ts-ignore\nCollapse.defaultProps = defaultProps;\nexport default Collapse;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"children\", \"bsPrefix\"];\nimport React from 'react';\nimport Collapse from './Collapse';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nvar NavbarCollapse = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var children = _ref.children,\n      bsPrefix = _ref.bsPrefix,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-collapse');\n  return /*#__PURE__*/React.createElement(NavbarContext.Consumer, null, function (context) {\n    return /*#__PURE__*/React.createElement(Collapse, _extends({\n      in: !!(context && context.expanded)\n    }, props), /*#__PURE__*/React.createElement(\"div\", {\n      ref: ref,\n      className: bsPrefix\n    }, children));\n  });\n});\nNavbarCollapse.displayName = 'NavbarCollapse';\nexport default NavbarCollapse;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"children\", \"label\", \"as\", \"onClick\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nvar defaultProps = {\n  label: 'Toggle navigation'\n};\nvar NavbarToggle = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      children = _ref.children,\n      label = _ref.label,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'button' : _ref$as,\n      onClick = _ref.onClick,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-toggler');\n\n  var _ref2 = useContext(NavbarContext) || {},\n      onToggle = _ref2.onToggle,\n      expanded = _ref2.expanded;\n\n  var handleClick = useEventCallback(function (e) {\n    if (onClick) onClick(e);\n    if (onToggle) onToggle();\n  });\n\n  if (Component === 'button') {\n    props.type = 'button';\n  }\n\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    ref: ref,\n    onClick: handleClick,\n    \"aria-label\": label,\n    className: classNames(className, bsPrefix, !expanded && 'collapsed')\n  }), children || /*#__PURE__*/React.createElement(\"span\", {\n    className: bsPrefix + \"-icon\"\n  }));\n});\nNavbarToggle.displayName = 'NavbarToggle';\nNavbarToggle.defaultProps = defaultProps;\nexport default NavbarToggle;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"expand\", \"variant\", \"bg\", \"fixed\", \"sticky\", \"className\", \"children\", \"as\", \"expanded\", \"onToggle\", \"onSelect\", \"collapseOnSelect\"];\nimport classNames from 'classnames';\nimport React, { useCallback, useMemo } from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport NavbarBrand from './NavbarBrand';\nimport NavbarCollapse from './NavbarCollapse';\nimport NavbarToggle from './NavbarToggle';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport SelectableContext from './SelectableContext';\nvar NavbarText = createWithBsPrefix('navbar-text', {\n  Component: 'span'\n});\nvar defaultProps = {\n  expand: true,\n  variant: 'light',\n  collapseOnSelect: false\n};\nvar Navbar = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var _useUncontrolled = useUncontrolled(props, {\n    expanded: 'onToggle'\n  }),\n      initialBsPrefix = _useUncontrolled.bsPrefix,\n      expand = _useUncontrolled.expand,\n      variant = _useUncontrolled.variant,\n      bg = _useUncontrolled.bg,\n      fixed = _useUncontrolled.fixed,\n      sticky = _useUncontrolled.sticky,\n      className = _useUncontrolled.className,\n      children = _useUncontrolled.children,\n      _useUncontrolled$as = _useUncontrolled.as,\n      Component = _useUncontrolled$as === void 0 ? 'nav' : _useUncontrolled$as,\n      expanded = _useUncontrolled.expanded,\n      _onToggle = _useUncontrolled.onToggle,\n      onSelect = _useUncontrolled.onSelect,\n      collapseOnSelect = _useUncontrolled.collapseOnSelect,\n      controlledProps = _objectWithoutPropertiesLoose(_useUncontrolled, _excluded);\n\n  var bsPrefix = useBootstrapPrefix(initialBsPrefix, 'navbar');\n  var handleCollapse = useCallback(function () {\n    if (onSelect) onSelect.apply(void 0, arguments);\n\n    if (collapseOnSelect && expanded) {\n      if (_onToggle) {\n        _onToggle(false);\n      }\n    }\n  }, [onSelect, collapseOnSelect, expanded, _onToggle]); // will result in some false positives but that seems better\n  // than false negatives. strict `undefined` check allows explicit\n  // \"nulling\" of the role if the user really doesn't want one\n\n  if (controlledProps.role === undefined && Component !== 'nav') {\n    controlledProps.role = 'navigation';\n  }\n\n  var expandClass = bsPrefix + \"-expand\";\n  if (typeof expand === 'string') expandClass = expandClass + \"-\" + expand;\n  var navbarContext = useMemo(function () {\n    return {\n      onToggle: function onToggle() {\n        return _onToggle && _onToggle(!expanded);\n      },\n      bsPrefix: bsPrefix,\n      expanded: !!expanded\n    };\n  }, [bsPrefix, expanded, _onToggle]);\n  return /*#__PURE__*/React.createElement(NavbarContext.Provider, {\n    value: navbarContext\n  }, /*#__PURE__*/React.createElement(SelectableContext.Provider, {\n    value: handleCollapse\n  }, /*#__PURE__*/React.createElement(Component, _extends({\n    ref: ref\n  }, controlledProps, {\n    className: classNames(className, bsPrefix, expand && expandClass, variant && bsPrefix + \"-\" + variant, bg && \"bg-\" + bg, sticky && \"sticky-\" + sticky, fixed && \"fixed-\" + fixed)\n  }), children)));\n});\nNavbar.defaultProps = defaultProps;\nNavbar.displayName = 'Navbar';\nNavbar.Brand = NavbarBrand;\nNavbar.Toggle = NavbarToggle;\nNavbar.Collapse = NavbarCollapse;\nNavbar.Text = NavbarText;\nexport default Navbar;","import React from 'react';\nvar context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'CardContext';\nexport default context;","import React from 'react';\nvar TabContext = /*#__PURE__*/React.createContext(null);\nexport default TabContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"as\", \"onSelect\", \"activeKey\", \"role\", \"onKeyDown\"];\nimport qsa from 'dom-helpers/querySelectorAll';\nimport React, { useContext, useEffect, useRef } from 'react';\nimport useForceUpdate from '@restart/hooks/useForceUpdate';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport NavContext from './NavContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport TabContext from './TabContext';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nvar noop = function noop() {};\n\nvar AbstractNav = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'ul' : _ref$as,\n      onSelect = _ref.onSelect,\n      activeKey = _ref.activeKey,\n      role = _ref.role,\n      onKeyDown = _ref.onKeyDown,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  // A ref and forceUpdate for refocus, b/c we only want to trigger when needed\n  // and don't want to reset the set in the effect\n  var forceUpdate = useForceUpdate();\n  var needsRefocusRef = useRef(false);\n  var parentOnSelect = useContext(SelectableContext);\n  var tabContext = useContext(TabContext);\n  var getControlledId, getControllerId;\n\n  if (tabContext) {\n    role = role || 'tablist';\n    activeKey = tabContext.activeKey;\n    getControlledId = tabContext.getControlledId;\n    getControllerId = tabContext.getControllerId;\n  }\n\n  var listNode = useRef(null);\n\n  var getNextActiveChild = function getNextActiveChild(offset) {\n    var currentListNode = listNode.current;\n    if (!currentListNode) return null;\n    var items = qsa(currentListNode, '[data-rb-event-key]:not(.disabled)');\n    var activeChild = currentListNode.querySelector('.active');\n    if (!activeChild) return null;\n    var index = items.indexOf(activeChild);\n    if (index === -1) return null;\n    var nextIndex = index + offset;\n    if (nextIndex >= items.length) nextIndex = 0;\n    if (nextIndex < 0) nextIndex = items.length - 1;\n    return items[nextIndex];\n  };\n\n  var handleSelect = function handleSelect(key, event) {\n    if (key == null) return;\n    if (onSelect) onSelect(key, event);\n    if (parentOnSelect) parentOnSelect(key, event);\n  };\n\n  var handleKeyDown = function handleKeyDown(event) {\n    if (onKeyDown) onKeyDown(event);\n    var nextActiveChild;\n\n    switch (event.key) {\n      case 'ArrowLeft':\n      case 'ArrowUp':\n        nextActiveChild = getNextActiveChild(-1);\n        break;\n\n      case 'ArrowRight':\n      case 'ArrowDown':\n        nextActiveChild = getNextActiveChild(1);\n        break;\n\n      default:\n        return;\n    }\n\n    if (!nextActiveChild) return;\n    event.preventDefault();\n    handleSelect(nextActiveChild.dataset.rbEventKey, event);\n    needsRefocusRef.current = true;\n    forceUpdate();\n  };\n\n  useEffect(function () {\n    if (listNode.current && needsRefocusRef.current) {\n      var activeChild = listNode.current.querySelector('[data-rb-event-key].active');\n      if (activeChild) activeChild.focus();\n    }\n\n    needsRefocusRef.current = false;\n  });\n  var mergedRef = useMergedRefs(ref, listNode);\n  return /*#__PURE__*/React.createElement(SelectableContext.Provider, {\n    value: handleSelect\n  }, /*#__PURE__*/React.createElement(NavContext.Provider, {\n    value: {\n      role: role,\n      // used by NavLink to determine it's role\n      activeKey: makeEventKey(activeKey),\n      getControlledId: getControlledId || noop,\n      getControllerId: getControllerId || noop\n    }\n  }, /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    onKeyDown: handleKeyDown,\n    ref: mergedRef,\n    role: role\n  }))));\n});\nexport default AbstractNav;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"children\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar NavItem = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      children = _ref.children,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'div' : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-item');\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classNames(className, bsPrefix)\n  }), children);\n});\nNavItem.displayName = 'NavItem';\nexport default NavItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"active\", \"className\", \"eventKey\", \"onSelect\", \"onClick\", \"as\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport warning from 'warning';\nimport NavContext from './NavContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nvar defaultProps = {\n  disabled: false\n};\nvar AbstractNavItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var active = _ref.active,\n      className = _ref.className,\n      eventKey = _ref.eventKey,\n      onSelect = _ref.onSelect,\n      onClick = _ref.onClick,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  var navKey = makeEventKey(eventKey, props.href);\n  var parentOnSelect = useContext(SelectableContext);\n  var navContext = useContext(NavContext);\n  var isActive = active;\n\n  if (navContext) {\n    if (!props.role && navContext.role === 'tablist') props.role = 'tab';\n    var contextControllerId = navContext.getControllerId(navKey);\n    var contextControlledId = navContext.getControlledId(navKey);\n    process.env.NODE_ENV !== \"production\" ? warning(!contextControllerId || !props.id, \"[react-bootstrap] The provided id '\" + props.id + \"' was overwritten by the current navContext with '\" + contextControllerId + \"'.\") : void 0;\n    process.env.NODE_ENV !== \"production\" ? warning(!contextControlledId || !props['aria-controls'], \"[react-bootstrap] The provided aria-controls value '\" + props['aria-controls'] + \"' was overwritten by the current navContext with '\" + contextControlledId + \"'.\") : void 0;\n    props['data-rb-event-key'] = navKey;\n    props.id = contextControllerId || props.id;\n    props['aria-controls'] = contextControlledId || props['aria-controls'];\n    isActive = active == null && navKey != null ? navContext.activeKey === navKey : active;\n  }\n\n  if (props.role === 'tab') {\n    if (props.disabled) {\n      props.tabIndex = -1;\n      props['aria-disabled'] = true;\n    }\n\n    props['aria-selected'] = isActive;\n  }\n\n  var handleOnclick = useEventCallback(function (e) {\n    if (onClick) onClick(e);\n    if (navKey == null) return;\n    if (onSelect) onSelect(navKey, e);\n    if (parentOnSelect) parentOnSelect(navKey, e);\n  });\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    ref: ref,\n    onClick: handleOnclick,\n    className: classNames(className, isActive && 'active')\n  }));\n});\nAbstractNavItem.defaultProps = defaultProps;\nexport default AbstractNavItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"disabled\", \"className\", \"href\", \"eventKey\", \"onSelect\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport SafeAnchor from './SafeAnchor';\nimport AbstractNavItem from './AbstractNavItem';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n  disabled: false,\n  as: SafeAnchor\n};\nvar NavLink = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      disabled = _ref.disabled,\n      className = _ref.className,\n      href = _ref.href,\n      eventKey = _ref.eventKey,\n      onSelect = _ref.onSelect,\n      as = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-link');\n  return /*#__PURE__*/React.createElement(AbstractNavItem, _extends({}, props, {\n    href: href,\n    ref: ref,\n    eventKey: eventKey,\n    as: as,\n    disabled: disabled,\n    onSelect: onSelect,\n    className: classNames(className, bsPrefix, disabled && 'disabled')\n  }));\n});\nNavLink.displayName = 'NavLink';\nNavLink.defaultProps = defaultProps;\nexport default NavLink;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"as\", \"bsPrefix\", \"variant\", \"fill\", \"justify\", \"navbar\", \"navbarScroll\", \"className\", \"children\", \"activeKey\"];\nimport classNames from 'classnames';\nimport all from 'prop-types-extra/lib/all';\nimport React, { useContext } from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport CardContext from './CardContext';\nimport AbstractNav from './AbstractNav';\nimport NavItem from './NavItem';\nimport NavLink from './NavLink';\nvar defaultProps = {\n  justify: false,\n  fill: false\n};\nvar Nav = /*#__PURE__*/React.forwardRef(function (uncontrolledProps, ref) {\n  var _classNames;\n\n  var _useUncontrolled = useUncontrolled(uncontrolledProps, {\n    activeKey: 'onSelect'\n  }),\n      _useUncontrolled$as = _useUncontrolled.as,\n      as = _useUncontrolled$as === void 0 ? 'div' : _useUncontrolled$as,\n      initialBsPrefix = _useUncontrolled.bsPrefix,\n      variant = _useUncontrolled.variant,\n      fill = _useUncontrolled.fill,\n      justify = _useUncontrolled.justify,\n      navbar = _useUncontrolled.navbar,\n      navbarScroll = _useUncontrolled.navbarScroll,\n      className = _useUncontrolled.className,\n      children = _useUncontrolled.children,\n      activeKey = _useUncontrolled.activeKey,\n      props = _objectWithoutPropertiesLoose(_useUncontrolled, _excluded);\n\n  var bsPrefix = useBootstrapPrefix(initialBsPrefix, 'nav');\n  var navbarBsPrefix;\n  var cardHeaderBsPrefix;\n  var isNavbar = false;\n  var navbarContext = useContext(NavbarContext);\n  var cardContext = useContext(CardContext);\n\n  if (navbarContext) {\n    navbarBsPrefix = navbarContext.bsPrefix;\n    isNavbar = navbar == null ? true : navbar;\n  } else if (cardContext) {\n    cardHeaderBsPrefix = cardContext.cardHeaderBsPrefix;\n  }\n\n  return /*#__PURE__*/React.createElement(AbstractNav, _extends({\n    as: as,\n    ref: ref,\n    activeKey: activeKey,\n    className: classNames(className, (_classNames = {}, _classNames[bsPrefix] = !isNavbar, _classNames[navbarBsPrefix + \"-nav\"] = isNavbar, _classNames[navbarBsPrefix + \"-nav-scroll\"] = isNavbar && navbarScroll, _classNames[cardHeaderBsPrefix + \"-\" + variant] = !!cardHeaderBsPrefix, _classNames[bsPrefix + \"-\" + variant] = !!variant, _classNames[bsPrefix + \"-fill\"] = fill, _classNames[bsPrefix + \"-justified\"] = justify, _classNames))\n  }, props), children);\n});\nNav.displayName = 'Nav';\nNav.defaultProps = defaultProps;\nNav.Item = NavItem;\nNav.Link = NavLink;\nexport default Nav;","\r\nimport React from \"react\";\r\nimport { IRBACUser } from '../model/IRBACUser' \r\n\r\nexport type AuthContextType = { \r\n    userProfile : UserProfileType\r\n    setUserProfile: Function\r\n}\r\n\r\nexport type UserProfileType = {\r\n    userName?: string;\r\n    role: IRBACUser;\r\n}\r\n\r\nexport const AuthContextDefault : AuthContextType = {    \r\n    userProfile : { userName :'', role : { userId: '', roleName: '', roleID: '', locations:[{LocationCode:'',LocationName:''}] }  }  ,\r\n    setUserProfile: (value:UserProfileType) => {}\r\n}\r\nexport const AuthContext = React.createContext<AuthContextType>(AuthContextDefault);\r\n\r\n\r\nexport interface IErrorContext { \r\n    errorMessages: Array<string>\r\n    setErrorMessages: Function\r\n}\r\n\r\nexport const ErrorContextDefault ={\r\n    errorMessages: [],\r\n    setErrorMessages: (value:Array<string>) => {}\r\n}\r\nexport const ErrorContext = React.createContext<IErrorContext>(ErrorContextDefault);\r\n\r\n \r\ntype LocationContextType = {\r\n    locationCode: string;\r\n    setLocationCode: Function;   \r\n};\r\n\r\nconst LocationContextDefault = {\r\n    locationCode: '',\r\n    setLocationCode: (value: string) => {}   \r\n};\r\n\r\n//export const LocationContext = React.createContext<LocationContextType | undefined>(LocationContextDefault);\r\nexport const LocationContext = React.createContext<LocationContextType>(LocationContextDefault);\r\n\r\ntype OrginalSchoolYearType = {\r\n    orginalSchoolYear: SchoolYear;\r\n    setOrginalSchoolYear: Function;   \r\n  };\r\n  \r\n  const OrginalSchoolYearDefault = {\r\n    orginalSchoolYear: {id:'', isCurrent:0,schoolYearEndDate:new Date()},\r\n    setOrginalSchoolYear: (value: string) => {}   \r\n  };\r\n  \r\n  interface SchoolYear {\r\n      id:string,\r\n      isCurrent:number,\r\n      schoolYearEndDate:Date\r\n  }\r\n  export const Year = React.createContext<OrginalSchoolYearType>(OrginalSchoolYearDefault);\r\n\r\n\r\n ","import { UserProfileType, AuthContextDefault } from \"./AppContext\";\r\nimport appsettings from '../assets/appsettings.json'\r\nimport moment from 'moment';\r\nexport default class LocalStorageService {\r\n  private static setItem(key: string, value: any): void {\r\n    localStorage.setItem(key, JSON.stringify({ value }));\r\n  }\r\n  private static getItem<T>(key: string): T | null {\r\n    const data: string | null | Date = localStorage.getItem(key);\r\n    if (data !== null) {\r\n      return JSON.parse(data).value;\r\n    }\r\n    return null;\r\n  }\r\n\r\n  public static getUserProfile(): UserProfileType {\r\n    return this.getItem<UserProfileType>(\"lmi:userprofile\") ?? AuthContextDefault.userProfile\r\n  }\r\n\r\n  public static setUserProfile(value: UserProfileType) {\r\n    this.setItem(\"lmi:userprofile\", value)\r\n  }\r\n\r\n  public static getExpirationTime() {\r\n    return sessionStorage.getItem(\"expire_at\")\r\n  }\r\n\r\n  public static setExpirationTime() {\r\n    let expirationDate = moment().add(appsettings.AUTH_TOKEN_EXPIRATION_TIME,'minutes').format()\r\n    sessionStorage.setItem(\"expire_at\", expirationDate.toString())\r\n  } \r\n\r\n  public static clear() {\r\n    localStorage.clear();\r\n  }\r\n\r\n}","import  { AxiosInstances as AxiosInstance  }  from './BaseService'\r\n\r\n//const raback = setupInterceptorsForRBAC(AxiosInstances)\r\nexport default {\r\n    getUserRole: () =>\r\n    AxiosInstance({\r\n        'method': 'GET',\r\n        'url': `/RBAC`\r\n    })\r\n        // AxiosInstance({\r\n        //     'method': 'GET',\r\n        //     'url': `/RBAC`\r\n        // }),    \r\n}","/**\n * The code was extracted from:\n * https://github.com/davidchambers/Base64.js\n */\n\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\nfunction InvalidCharacterError(message) {\n    this.message = message;\n}\n\nInvalidCharacterError.prototype = new Error();\nInvalidCharacterError.prototype.name = \"InvalidCharacterError\";\n\nfunction polyfill(input) {\n    var str = String(input).replace(/=+$/, \"\");\n    if (str.length % 4 == 1) {\n        throw new InvalidCharacterError(\n            \"'atob' failed: The string to be decoded is not correctly encoded.\"\n        );\n    }\n    for (\n        // initialize result and counters\n        var bc = 0, bs, buffer, idx = 0, output = \"\";\n        // get next character\n        (buffer = str.charAt(idx++));\n        // character found in table? initialize bit storage and add its ascii value;\n        ~buffer &&\n        ((bs = bc % 4 ? bs * 64 + buffer : buffer),\n            // and if not first of each 4 characters,\n            // convert the first 8 bits to one ascii character\n            bc++ % 4) ?\n        (output += String.fromCharCode(255 & (bs >> ((-2 * bc) & 6)))) :\n        0\n    ) {\n        // try to find character in table (0-63, not found => -1)\n        buffer = chars.indexOf(buffer);\n    }\n    return output;\n}\n\nexport default (typeof window !== \"undefined\" &&\n    window.atob &&\n    window.atob.bind(window)) ||\npolyfill;","\"use strict\";\n\nimport base64_url_decode from \"./base64_url_decode\";\n\nexport function InvalidTokenError(message) {\n    this.message = message;\n}\n\nInvalidTokenError.prototype = new Error();\nInvalidTokenError.prototype.name = \"InvalidTokenError\";\n\nexport default function(token, options) {\n    if (typeof token !== \"string\") {\n        throw new InvalidTokenError(\"Invalid token specified\");\n    }\n\n    options = options || {};\n    var pos = options.header === true ? 0 : 1;\n    try {\n        return JSON.parse(base64_url_decode(token.split(\".\")[pos]));\n    } catch (e) {\n        throw new InvalidTokenError(\"Invalid token specified: \" + e.message);\n    }\n}","import atob from \"./atob\";\n\nfunction b64DecodeUnicode(str) {\n    return decodeURIComponent(\n        atob(str).replace(/(.)/g, function(m, p) {\n            var code = p.charCodeAt(0).toString(16).toUpperCase();\n            if (code.length < 2) {\n                code = \"0\" + code;\n            }\n            return \"%\" + code;\n        })\n    );\n}\n\nexport default function(str) {\n    var output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n    switch (output.length % 4) {\n        case 0:\n            break;\n        case 2:\n            output += \"==\";\n            break;\n        case 3:\n            output += \"=\";\n            break;\n        default:\n            throw \"Illegal base64url string!\";\n    }\n\n    try {\n        return b64DecodeUnicode(output);\n    } catch (err) {\n        return atob(output);\n    }\n}","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nlet nopLogger = {\r\n    debug(){},\r\n    info(){},\r\n    warn(){},\r\n    error(){}\r\n};\r\n\r\nconst NONE = 0;\r\nconst ERROR = 1;\r\nconst WARN = 2;\r\nconst INFO = 3;\r\nconst DEBUG = 4;\r\n\r\nlet logger;\r\nlet level;\r\n\r\nexport class Log {\r\n    static get NONE() {return NONE};\r\n    static get ERROR() {return ERROR};\r\n    static get WARN() {return WARN};\r\n    static get INFO() {return INFO};\r\n    static get DEBUG() {return DEBUG};\r\n    \r\n    static reset(){\r\n        level = INFO;\r\n        logger = nopLogger;\r\n    }\r\n    \r\n    static get level(){\r\n        return level;\r\n    }\r\n    static set level(value){\r\n        if (NONE <= value && value <= DEBUG){\r\n            level = value;\r\n        }\r\n        else {\r\n            throw new Error(\"Invalid log level\");\r\n        }\r\n    }\r\n    \r\n    static get logger(){\r\n        return logger;\r\n    }\r\n    static set logger(value){\r\n        if (!value.debug && value.info) {\r\n            // just to stay backwards compat. can remove in 2.0\r\n            value.debug = value.info;\r\n        }\r\n\r\n        if (value.debug && value.info && value.warn && value.error){\r\n            logger = value;\r\n        }\r\n        else {\r\n            throw new Error(\"Invalid logger\");\r\n        }\r\n    }\r\n    \r\n    static debug(...args){\r\n        if (level >= DEBUG){\r\n            logger.debug.apply(logger, Array.from(args));\r\n        }\r\n    }\r\n    static info(...args){\r\n        if (level >= INFO){\r\n            logger.info.apply(logger, Array.from(args));\r\n        }\r\n    }\r\n    static warn(...args){\r\n        if (level >= WARN){\r\n            logger.warn.apply(logger, Array.from(args));\r\n        }\r\n    }\r\n    static error(...args){\r\n        if (level >= ERROR){\r\n            logger.error.apply(logger, Array.from(args));\r\n        }\r\n    }\r\n}\r\n\r\nLog.reset();\r\n","export class ClockService {\r\n    getEpochTime() {\r\n        return Promise.resolve(Date.now() / 1000 | 0);\r\n    }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nconst timer = {\r\n    setInterval: function (cb, duration) {\r\n        return setInterval(cb, duration);\r\n    },\r\n    clearInterval: function (handle) {\r\n        return clearInterval(handle);\r\n    }\r\n};\r\n\r\nlet testing = false;\r\nlet request = null;\r\n\r\nexport class Global {\r\n\r\n    static _testing() {\r\n        testing = true;\r\n    }\r\n\r\n    static get location() {\r\n        if (!testing) {\r\n            return location;\r\n        }\r\n    }\r\n\r\n    static get localStorage() {\r\n        if (!testing && typeof window !== 'undefined') {\r\n            return localStorage;\r\n        }\r\n    }\r\n\r\n    static get sessionStorage() {\r\n        if (!testing && typeof window !== 'undefined') {\r\n            return sessionStorage;\r\n        }\r\n    }\r\n\r\n    static setXMLHttpRequest(newRequest) {\r\n        request = newRequest;\r\n    }\r\n\r\n    static get XMLHttpRequest() {\r\n        if (!testing && typeof window !== 'undefined') {\r\n            return request || XMLHttpRequest;\r\n        }\r\n    }\r\n\r\n    static get timer() {\r\n        if (!testing) {\r\n            return timer;\r\n        }\r\n    }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { Global } from './Global.js';\r\n\r\nexport class WebStorageStateStore {\r\n    constructor({prefix = \"oidc.\", store = Global.localStorage} = {}) {\r\n        this._store = store;\r\n        this._prefix = prefix;\r\n    }\r\n\r\n    set(key, value) {\r\n        Log.debug(\"WebStorageStateStore.set\", key);\r\n\r\n        key = this._prefix + key;\r\n\r\n        this._store.setItem(key, value);\r\n\r\n        return Promise.resolve();\r\n    }\r\n\r\n    get(key) {\r\n        Log.debug(\"WebStorageStateStore.get\", key);\r\n\r\n        key = this._prefix + key;\r\n\r\n        let item = this._store.getItem(key);\r\n\r\n        return Promise.resolve(item);\r\n    }\r\n\r\n    remove(key) {\r\n        Log.debug(\"WebStorageStateStore.remove\", key);\r\n\r\n        key = this._prefix + key;\r\n\r\n        let item = this._store.getItem(key);\r\n        this._store.removeItem(key);\r\n\r\n        return Promise.resolve(item);\r\n    }\r\n\r\n    getAllKeys() {\r\n        Log.debug(\"WebStorageStateStore.getAllKeys\");\r\n\r\n        var keys = [];\r\n\r\n        for (let index = 0; index < this._store.length; index++) {\r\n            let key = this._store.key(index);\r\n\r\n            if (key.indexOf(this._prefix) === 0) {\r\n                keys.push(key.substr(this._prefix.length));\r\n            }\r\n        }\r\n\r\n        return Promise.resolve(keys);\r\n    }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { Global } from './Global.js';\r\n\r\nexport class JsonService {\r\n    constructor(\r\n        additionalContentTypes = null, \r\n        XMLHttpRequestCtor = Global.XMLHttpRequest, \r\n        jwtHandler = null\r\n    ) {\r\n        if (additionalContentTypes && Array.isArray(additionalContentTypes))\r\n        {\r\n            this._contentTypes = additionalContentTypes.slice();\r\n        }\r\n        else\r\n        {\r\n            this._contentTypes = [];\r\n        }\r\n        this._contentTypes.push('application/json');\r\n        if (jwtHandler) {\r\n            this._contentTypes.push('application/jwt');\r\n        }\r\n\r\n        this._XMLHttpRequest = XMLHttpRequestCtor;\r\n        this._jwtHandler = jwtHandler;\r\n    }\r\n\r\n    getJson(url, token) {\r\n        if (!url){\r\n            Log.error(\"JsonService.getJson: No url passed\");\r\n            throw new Error(\"url\");\r\n        }\r\n\r\n        Log.debug(\"JsonService.getJson, url: \", url);\r\n\r\n        return new Promise((resolve, reject) => {\r\n\r\n            var req = new this._XMLHttpRequest();\r\n            req.open('GET', url);\r\n\r\n            var allowedContentTypes = this._contentTypes;\r\n            var jwtHandler = this._jwtHandler;\r\n\r\n            req.onload = function() {\r\n                Log.debug(\"JsonService.getJson: HTTP response received, status\", req.status);\r\n\r\n                if (req.status === 200) {\r\n\r\n                    var contentType = req.getResponseHeader(\"Content-Type\");\r\n                    if (contentType) {\r\n\r\n                        var found = allowedContentTypes.find(item=>{\r\n                            if (contentType.startsWith(item)) {\r\n                                return true;\r\n                            }\r\n                        });\r\n\r\n                        if (found == \"application/jwt\") {\r\n                            jwtHandler(req).then(resolve, reject);\r\n                            return;\r\n                        }\r\n\r\n                        if (found) {\r\n                            try {\r\n                                resolve(JSON.parse(req.responseText));\r\n                                return;\r\n                            }\r\n                            catch (e) {\r\n                                Log.error(\"JsonService.getJson: Error parsing JSON response\", e.message);\r\n                                reject(e);\r\n                                return;\r\n                            }\r\n                        }\r\n                    }\r\n\r\n                    reject(Error(\"Invalid response Content-Type: \" + contentType + \", from URL: \" + url));\r\n                }\r\n                else {\r\n                    reject(Error(req.statusText + \" (\" + req.status + \")\"));\r\n                }\r\n            };\r\n\r\n            req.onerror = function() {\r\n                Log.error(\"JsonService.getJson: network error\");\r\n                reject(Error(\"Network Error\"));\r\n            };\r\n\r\n            if (token) {\r\n                Log.debug(\"JsonService.getJson: token passed, setting Authorization header\");\r\n                req.setRequestHeader(\"Authorization\", \"Bearer \" + token);\r\n            }\r\n\r\n            req.send();\r\n        });\r\n    }\r\n\r\n    postForm(url, payload, basicAuth) {\r\n        if (!url){\r\n            Log.error(\"JsonService.postForm: No url passed\");\r\n            throw new Error(\"url\");\r\n        }\r\n\r\n        Log.debug(\"JsonService.postForm, url: \", url);\r\n\r\n        return new Promise((resolve, reject) => {\r\n\r\n            var req = new this._XMLHttpRequest();\r\n            req.open('POST', url);\r\n\r\n            var allowedContentTypes = this._contentTypes;\r\n\r\n            req.onload = function() {\r\n                Log.debug(\"JsonService.postForm: HTTP response received, status\", req.status);\r\n\r\n                if (req.status === 200) {\r\n\r\n                    var contentType = req.getResponseHeader(\"Content-Type\");\r\n                    if (contentType) {\r\n\r\n                        var found = allowedContentTypes.find(item=>{\r\n                            if (contentType.startsWith(item)) {\r\n                                return true;\r\n                            }\r\n                        });\r\n\r\n                        if (found) {\r\n                            try {\r\n                                resolve(JSON.parse(req.responseText));\r\n                                return;\r\n                            }\r\n                            catch (e) {\r\n                                Log.error(\"JsonService.postForm: Error parsing JSON response\", e.message);\r\n                                reject(e);\r\n                                return;\r\n                            }\r\n                        }\r\n                    }\r\n\r\n                    reject(Error(\"Invalid response Content-Type: \" + contentType + \", from URL: \" + url));\r\n                    return;\r\n                }\r\n\r\n                if (req.status === 400) {\r\n\r\n                    var contentType = req.getResponseHeader(\"Content-Type\");\r\n                    if (contentType) {\r\n\r\n                        var found = allowedContentTypes.find(item=>{\r\n                            if (contentType.startsWith(item)) {\r\n                                return true;\r\n                            }\r\n                        });\r\n\r\n                        if (found) {\r\n                            try {\r\n                                var payload = JSON.parse(req.responseText);\r\n                                if (payload && payload.error) {\r\n                                    Log.error(\"JsonService.postForm: Error from server: \", payload.error);\r\n                                    reject(new Error(payload.error));\r\n                                    return;\r\n                                }\r\n                            }\r\n                            catch (e) {\r\n                                Log.error(\"JsonService.postForm: Error parsing JSON response\", e.message);\r\n                                reject(e);\r\n                                return;\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n\r\n                reject(Error(req.statusText + \" (\" + req.status + \")\"));\r\n            };\r\n\r\n            req.onerror = function() {\r\n                Log.error(\"JsonService.postForm: network error\");\r\n                reject(Error(\"Network Error\"));\r\n            };\r\n\r\n            let body = \"\";\r\n            for(let key in payload) {\r\n\r\n                let value = payload[key];\r\n\r\n                if (value) {\r\n\r\n                    if (body.length > 0) {\r\n                        body += \"&\";\r\n                    }\r\n\r\n                    body += encodeURIComponent(key);\r\n                    body += \"=\";\r\n                    body += encodeURIComponent(value);\r\n                }\r\n            }\r\n\r\n            req.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\r\n\r\n            if (basicAuth !== undefined)\r\n            {\r\n                req.setRequestHeader(\"Authorization\", \"Basic \" + btoa(basicAuth));\r\n            }\r\n\r\n            req.send(body);\r\n        });\r\n    }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { JsonService } from './JsonService.js';\r\n\r\nconst OidcMetadataUrlPath = '.well-known/openid-configuration';\r\n\r\nexport class MetadataService {\r\n    constructor(settings, JsonServiceCtor = JsonService) {\r\n        if (!settings) {\r\n            Log.error(\"MetadataService: No settings passed to MetadataService\");\r\n            throw new Error(\"settings\");\r\n        }\r\n\r\n        this._settings = settings;\r\n        this._jsonService = new JsonServiceCtor(['application/jwk-set+json']);\r\n    }\r\n\r\n    get metadataUrl() {\r\n        if (!this._metadataUrl) {\r\n            if (this._settings.metadataUrl) {\r\n                this._metadataUrl = this._settings.metadataUrl;\r\n            }\r\n            else {\r\n                this._metadataUrl = this._settings.authority;\r\n\r\n                if (this._metadataUrl && this._metadataUrl.indexOf(OidcMetadataUrlPath) < 0) {\r\n                    if (this._metadataUrl[this._metadataUrl.length - 1] !== '/') {\r\n                        this._metadataUrl += '/';\r\n                    }\r\n                    this._metadataUrl += OidcMetadataUrlPath;\r\n                }\r\n            }\r\n        }\r\n\r\n        return this._metadataUrl;\r\n    }\r\n\r\n    resetSigningKeys() {\r\n        this._settings = this._settings || {}\r\n        this._settings.signingKeys = undefined\r\n    }\r\n\r\n    getMetadata() {\r\n        if (this._settings.metadata) {\r\n            Log.debug(\"MetadataService.getMetadata: Returning metadata from settings\");\r\n            return Promise.resolve(this._settings.metadata);\r\n        }\r\n\r\n        if (!this.metadataUrl) {\r\n            Log.error(\"MetadataService.getMetadata: No authority or metadataUrl configured on settings\");\r\n            return Promise.reject(new Error(\"No authority or metadataUrl configured on settings\"));\r\n        }\r\n\r\n        Log.debug(\"MetadataService.getMetadata: getting metadata from\", this.metadataUrl);\r\n\r\n        return this._jsonService.getJson(this.metadataUrl)\r\n            .then(metadata => {\r\n                Log.debug(\"MetadataService.getMetadata: json received\");\r\n                \r\n                var seed = this._settings.metadataSeed || {};\r\n                this._settings.metadata = Object.assign({}, seed, metadata);\r\n                return this._settings.metadata;\r\n            });\r\n    }\r\n\r\n    getIssuer() {\r\n        return this._getMetadataProperty(\"issuer\");\r\n    }\r\n\r\n    getAuthorizationEndpoint() {\r\n        return this._getMetadataProperty(\"authorization_endpoint\");\r\n    }\r\n\r\n    getUserInfoEndpoint() {\r\n        return this._getMetadataProperty(\"userinfo_endpoint\");\r\n    }\r\n\r\n    getTokenEndpoint(optional=true) {\r\n        return this._getMetadataProperty(\"token_endpoint\", optional);\r\n    }\r\n\r\n    getCheckSessionIframe() {\r\n        return this._getMetadataProperty(\"check_session_iframe\", true);\r\n    }\r\n\r\n    getEndSessionEndpoint() {\r\n        return this._getMetadataProperty(\"end_session_endpoint\", true);\r\n    }\r\n\r\n    getRevocationEndpoint() {\r\n        return this._getMetadataProperty(\"revocation_endpoint\", true);\r\n    }\r\n\r\n    getKeysEndpoint() {\r\n        return this._getMetadataProperty(\"jwks_uri\", true);\r\n    }\r\n\r\n    _getMetadataProperty(name, optional=false) {\r\n        Log.debug(\"MetadataService.getMetadataProperty for: \" + name);\r\n\r\n        return this.getMetadata().then(metadata => {\r\n            Log.debug(\"MetadataService.getMetadataProperty: metadata recieved\");\r\n\r\n            if (metadata[name] === undefined) {\r\n\r\n                if (optional === true) {\r\n                    Log.warn(\"MetadataService.getMetadataProperty: Metadata does not contain optional property \" + name);\r\n                    return undefined;\r\n                }\r\n                else {\r\n                    Log.error(\"MetadataService.getMetadataProperty: Metadata does not contain property \" + name);\r\n                    throw new Error(\"Metadata does not contain property \" + name);\r\n                }\r\n            }\r\n\r\n            return metadata[name];\r\n        });\r\n    }\r\n\r\n    getSigningKeys() {\r\n        if (this._settings.signingKeys) {\r\n            Log.debug(\"MetadataService.getSigningKeys: Returning signingKeys from settings\");\r\n            return Promise.resolve(this._settings.signingKeys);\r\n        }\r\n\r\n        return this._getMetadataProperty(\"jwks_uri\").then(jwks_uri => {\r\n            Log.debug(\"MetadataService.getSigningKeys: jwks_uri received\", jwks_uri);\r\n\r\n            return this._jsonService.getJson(jwks_uri).then(keySet => {\r\n                Log.debug(\"MetadataService.getSigningKeys: key set received\", keySet);\r\n\r\n                if (!keySet.keys) {\r\n                    Log.error(\"MetadataService.getSigningKeys: Missing keys on keyset\");\r\n                    throw new Error(\"Missing keys on keyset\");\r\n                }\r\n\r\n                this._settings.signingKeys = keySet.keys;\r\n                return this._settings.signingKeys;\r\n            });\r\n        });\r\n    }\r\n}\r\n","/*\r\n * jsrsasign(all) 8.0.12 (2018-04-22) (c) 2010-2018 Kenji Urushima | kjur.github.com/jsrsasign/license\r\n */\r\n\r\nvar navigator = {};\r\nnavigator.userAgent = false;\r\n\r\nvar window = {};\r\n\n/*!\r\nCopyright (c) 2011, Yahoo! Inc. All rights reserved.\r\nCode licensed under the BSD License:\r\nhttp://developer.yahoo.com/yui/license.html\r\nversion: 2.9.0\r\n*/\r\nif(YAHOO===undefined){var YAHOO={}}YAHOO.lang={extend:function(g,h,f){if(!h||!g){throw new Error(\"YAHOO.lang.extend failed, please check that all dependencies are included.\")}var d=function(){};d.prototype=h.prototype;g.prototype=new d();g.prototype.constructor=g;g.superclass=h.prototype;if(h.prototype.constructor==Object.prototype.constructor){h.prototype.constructor=h}if(f){var b;for(b in f){g.prototype[b]=f[b]}var e=function(){},c=[\"toString\",\"valueOf\"];try{if(/MSIE/.test(navigator.userAgent)){e=function(j,i){for(b=0;b<c.length;b=b+1){var l=c[b],k=i[l];if(typeof k===\"function\"&&k!=Object.prototype[l]){j[l]=k}}}}}catch(a){}e(g.prototype,f)}}};\n/*! CryptoJS v3.1.2 core-fix.js\r\n * code.google.com/p/crypto-js\r\n * (c) 2009-2013 by Jeff Mott. All rights reserved.\r\n * code.google.com/p/crypto-js/wiki/License\r\n * THIS IS FIX of 'core.js' to fix Hmac issue.\r\n * https://code.google.com/p/crypto-js/issues/detail?id=84\r\n * https://crypto-js.googlecode.com/svn-history/r667/branches/3.x/src/core.js\r\n */\r\nvar CryptoJS=CryptoJS||(function(e,g){var a={};var b=a.lib={};var j=b.Base=(function(){function n(){}return{extend:function(p){n.prototype=this;var o=new n();if(p){o.mixIn(p)}if(!o.hasOwnProperty(\"init\")){o.init=function(){o.$super.init.apply(this,arguments)}}o.init.prototype=o;o.$super=this;return o},create:function(){var o=this.extend();o.init.apply(o,arguments);return o},init:function(){},mixIn:function(p){for(var o in p){if(p.hasOwnProperty(o)){this[o]=p[o]}}if(p.hasOwnProperty(\"toString\")){this.toString=p.toString}},clone:function(){return this.init.prototype.extend(this)}}}());var l=b.WordArray=j.extend({init:function(o,n){o=this.words=o||[];if(n!=g){this.sigBytes=n}else{this.sigBytes=o.length*4}},toString:function(n){return(n||h).stringify(this)},concat:function(t){var q=this.words;var p=t.words;var n=this.sigBytes;var s=t.sigBytes;this.clamp();if(n%4){for(var r=0;r<s;r++){var o=(p[r>>>2]>>>(24-(r%4)*8))&255;q[(n+r)>>>2]|=o<<(24-((n+r)%4)*8)}}else{for(var r=0;r<s;r+=4){q[(n+r)>>>2]=p[r>>>2]}}this.sigBytes+=s;return this},clamp:function(){var o=this.words;var n=this.sigBytes;o[n>>>2]&=4294967295<<(32-(n%4)*8);o.length=e.ceil(n/4)},clone:function(){var n=j.clone.call(this);n.words=this.words.slice(0);return n},random:function(p){var o=[];for(var n=0;n<p;n+=4){o.push((e.random()*4294967296)|0)}return new l.init(o,p)}});var m=a.enc={};var h=m.Hex={stringify:function(p){var r=p.words;var o=p.sigBytes;var q=[];for(var n=0;n<o;n++){var s=(r[n>>>2]>>>(24-(n%4)*8))&255;q.push((s>>>4).toString(16));q.push((s&15).toString(16))}return q.join(\"\")},parse:function(p){var n=p.length;var q=[];for(var o=0;o<n;o+=2){q[o>>>3]|=parseInt(p.substr(o,2),16)<<(24-(o%8)*4)}return new l.init(q,n/2)}};var d=m.Latin1={stringify:function(q){var r=q.words;var p=q.sigBytes;var n=[];for(var o=0;o<p;o++){var s=(r[o>>>2]>>>(24-(o%4)*8))&255;n.push(String.fromCharCode(s))}return n.join(\"\")},parse:function(p){var n=p.length;var q=[];for(var o=0;o<n;o++){q[o>>>2]|=(p.charCodeAt(o)&255)<<(24-(o%4)*8)}return new l.init(q,n)}};var c=m.Utf8={stringify:function(n){try{return decodeURIComponent(escape(d.stringify(n)))}catch(o){throw new Error(\"Malformed UTF-8 data\")}},parse:function(n){return d.parse(unescape(encodeURIComponent(n)))}};var i=b.BufferedBlockAlgorithm=j.extend({reset:function(){this._data=new l.init();this._nDataBytes=0},_append:function(n){if(typeof n==\"string\"){n=c.parse(n)}this._data.concat(n);this._nDataBytes+=n.sigBytes},_process:function(w){var q=this._data;var x=q.words;var n=q.sigBytes;var t=this.blockSize;var v=t*4;var u=n/v;if(w){u=e.ceil(u)}else{u=e.max((u|0)-this._minBufferSize,0)}var s=u*t;var r=e.min(s*4,n);if(s){for(var p=0;p<s;p+=t){this._doProcessBlock(x,p)}var o=x.splice(0,s);q.sigBytes-=r}return new l.init(o,r)},clone:function(){var n=j.clone.call(this);n._data=this._data.clone();return n},_minBufferSize:0});var f=b.Hasher=i.extend({cfg:j.extend(),init:function(n){this.cfg=this.cfg.extend(n);this.reset()},reset:function(){i.reset.call(this);this._doReset()},update:function(n){this._append(n);this._process();return this},finalize:function(n){if(n){this._append(n)}var o=this._doFinalize();return o},blockSize:512/32,_createHelper:function(n){return function(p,o){return new n.init(o).finalize(p)}},_createHmacHelper:function(n){return function(p,o){return new k.HMAC.init(n,o).finalize(p)}}});var k=a.algo={};return a}(Math));\n/*\r\nCryptoJS v3.1.2 x64-core-min.js\r\ncode.google.com/p/crypto-js\r\n(c) 2009-2013 by Jeff Mott. All rights reserved.\r\ncode.google.com/p/crypto-js/wiki/License\r\n*/\r\n(function(g){var a=CryptoJS,f=a.lib,e=f.Base,h=f.WordArray,a=a.x64={};a.Word=e.extend({init:function(b,c){this.high=b;this.low=c}});a.WordArray=e.extend({init:function(b,c){b=this.words=b||[];this.sigBytes=c!=g?c:8*b.length},toX32:function(){for(var b=this.words,c=b.length,a=[],d=0;d<c;d++){var e=b[d];a.push(e.high);a.push(e.low)}return h.create(a,this.sigBytes)},clone:function(){for(var b=e.clone.call(this),c=b.words=this.words.slice(0),a=c.length,d=0;d<a;d++)c[d]=c[d].clone();return b}})})();\r\n\n/*\r\nCryptoJS v3.1.2 enc-base64.js\r\ncode.google.com/p/crypto-js\r\n(c) 2009-2013 by Jeff Mott. All rights reserved.\r\ncode.google.com/p/crypto-js/wiki/License\r\n*/\r\n(function(){var h=CryptoJS,j=h.lib.WordArray;h.enc.Base64={stringify:function(b){var e=b.words,f=b.sigBytes,c=this._map;b.clamp();b=[];for(var a=0;a<f;a+=3)for(var d=(e[a>>>2]>>>24-8*(a%4)&255)<<16|(e[a+1>>>2]>>>24-8*((a+1)%4)&255)<<8|e[a+2>>>2]>>>24-8*((a+2)%4)&255,g=0;4>g&&a+0.75*g<f;g++)b.push(c.charAt(d>>>6*(3-g)&63));if(e=c.charAt(64))for(;b.length%4;)b.push(e);return b.join(\"\")},parse:function(b){var e=b.length,f=this._map,c=f.charAt(64);c&&(c=b.indexOf(c),-1!=c&&(e=c));for(var c=[],a=0,d=0;d<\r\ne;d++)if(d%4){var g=f.indexOf(b.charAt(d-1))<<2*(d%4),h=f.indexOf(b.charAt(d))>>>6-2*(d%4);c[a>>>2]|=(g|h)<<24-8*(a%4);a++}return j.create(c,a)},_map:\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\"}})();\r\n\n/*\r\nCryptoJS v3.1.2 sha256-min.js\r\ncode.google.com/p/crypto-js\r\n(c) 2009-2013 by Jeff Mott. All rights reserved.\r\ncode.google.com/p/crypto-js/wiki/License\r\n*/\r\n(function(k){for(var g=CryptoJS,h=g.lib,v=h.WordArray,j=h.Hasher,h=g.algo,s=[],t=[],u=function(q){return 4294967296*(q-(q|0))|0},l=2,b=0;64>b;){var d;a:{d=l;for(var w=k.sqrt(d),r=2;r<=w;r++)if(!(d%r)){d=!1;break a}d=!0}d&&(8>b&&(s[b]=u(k.pow(l,0.5))),t[b]=u(k.pow(l,1/3)),b++);l++}var n=[],h=h.SHA256=j.extend({_doReset:function(){this._hash=new v.init(s.slice(0))},_doProcessBlock:function(q,h){for(var a=this._hash.words,c=a[0],d=a[1],b=a[2],k=a[3],f=a[4],g=a[5],j=a[6],l=a[7],e=0;64>e;e++){if(16>e)n[e]=\r\nq[h+e]|0;else{var m=n[e-15],p=n[e-2];n[e]=((m<<25|m>>>7)^(m<<14|m>>>18)^m>>>3)+n[e-7]+((p<<15|p>>>17)^(p<<13|p>>>19)^p>>>10)+n[e-16]}m=l+((f<<26|f>>>6)^(f<<21|f>>>11)^(f<<7|f>>>25))+(f&g^~f&j)+t[e]+n[e];p=((c<<30|c>>>2)^(c<<19|c>>>13)^(c<<10|c>>>22))+(c&d^c&b^d&b);l=j;j=g;g=f;f=k+m|0;k=b;b=d;d=c;c=m+p|0}a[0]=a[0]+c|0;a[1]=a[1]+d|0;a[2]=a[2]+b|0;a[3]=a[3]+k|0;a[4]=a[4]+f|0;a[5]=a[5]+g|0;a[6]=a[6]+j|0;a[7]=a[7]+l|0},_doFinalize:function(){var d=this._data,b=d.words,a=8*this._nDataBytes,c=8*d.sigBytes;\r\nb[c>>>5]|=128<<24-c%32;b[(c+64>>>9<<4)+14]=k.floor(a/4294967296);b[(c+64>>>9<<4)+15]=a;d.sigBytes=4*b.length;this._process();return this._hash},clone:function(){var b=j.clone.call(this);b._hash=this._hash.clone();return b}});g.SHA256=j._createHelper(h);g.HmacSHA256=j._createHmacHelper(h)})(Math);\r\n\n/*\r\nCryptoJS v3.1.2 sha512-min.js\r\ncode.google.com/p/crypto-js\r\n(c) 2009-2013 by Jeff Mott. All rights reserved.\r\ncode.google.com/p/crypto-js/wiki/License\r\n*/\r\n(function(){function a(){return d.create.apply(d,arguments)}for(var n=CryptoJS,r=n.lib.Hasher,e=n.x64,d=e.Word,T=e.WordArray,e=n.algo,ea=[a(1116352408,3609767458),a(1899447441,602891725),a(3049323471,3964484399),a(3921009573,2173295548),a(961987163,4081628472),a(1508970993,3053834265),a(2453635748,2937671579),a(2870763221,3664609560),a(3624381080,2734883394),a(310598401,1164996542),a(607225278,1323610764),a(1426881987,3590304994),a(1925078388,4068182383),a(2162078206,991336113),a(2614888103,633803317),\r\na(3248222580,3479774868),a(3835390401,2666613458),a(4022224774,944711139),a(264347078,2341262773),a(604807628,2007800933),a(770255983,1495990901),a(1249150122,1856431235),a(1555081692,3175218132),a(1996064986,2198950837),a(2554220882,3999719339),a(2821834349,766784016),a(2952996808,2566594879),a(3210313671,3203337956),a(3336571891,1034457026),a(3584528711,2466948901),a(113926993,3758326383),a(338241895,168717936),a(666307205,1188179964),a(773529912,1546045734),a(1294757372,1522805485),a(1396182291,\r\n2643833823),a(1695183700,2343527390),a(1986661051,1014477480),a(2177026350,1206759142),a(2456956037,344077627),a(2730485921,1290863460),a(2820302411,3158454273),a(3259730800,3505952657),a(3345764771,106217008),a(3516065817,3606008344),a(3600352804,1432725776),a(4094571909,1467031594),a(275423344,851169720),a(430227734,3100823752),a(506948616,1363258195),a(659060556,3750685593),a(883997877,3785050280),a(958139571,3318307427),a(1322822218,3812723403),a(1537002063,2003034995),a(1747873779,3602036899),\r\na(1955562222,1575990012),a(2024104815,1125592928),a(2227730452,2716904306),a(2361852424,442776044),a(2428436474,593698344),a(2756734187,3733110249),a(3204031479,2999351573),a(3329325298,3815920427),a(3391569614,3928383900),a(3515267271,566280711),a(3940187606,3454069534),a(4118630271,4000239992),a(116418474,1914138554),a(174292421,2731055270),a(289380356,3203993006),a(460393269,320620315),a(685471733,587496836),a(852142971,1086792851),a(1017036298,365543100),a(1126000580,2618297676),a(1288033470,\r\n3409855158),a(1501505948,4234509866),a(1607167915,987167468),a(1816402316,1246189591)],v=[],w=0;80>w;w++)v[w]=a();e=e.SHA512=r.extend({_doReset:function(){this._hash=new T.init([new d.init(1779033703,4089235720),new d.init(3144134277,2227873595),new d.init(1013904242,4271175723),new d.init(2773480762,1595750129),new d.init(1359893119,2917565137),new d.init(2600822924,725511199),new d.init(528734635,4215389547),new d.init(1541459225,327033209)])},_doProcessBlock:function(a,d){for(var f=this._hash.words,\r\nF=f[0],e=f[1],n=f[2],r=f[3],G=f[4],H=f[5],I=f[6],f=f[7],w=F.high,J=F.low,X=e.high,K=e.low,Y=n.high,L=n.low,Z=r.high,M=r.low,$=G.high,N=G.low,aa=H.high,O=H.low,ba=I.high,P=I.low,ca=f.high,Q=f.low,k=w,g=J,z=X,x=K,A=Y,y=L,U=Z,B=M,l=$,h=N,R=aa,C=O,S=ba,D=P,V=ca,E=Q,m=0;80>m;m++){var s=v[m];if(16>m)var j=s.high=a[d+2*m]|0,b=s.low=a[d+2*m+1]|0;else{var j=v[m-15],b=j.high,p=j.low,j=(b>>>1|p<<31)^(b>>>8|p<<24)^b>>>7,p=(p>>>1|b<<31)^(p>>>8|b<<24)^(p>>>7|b<<25),u=v[m-2],b=u.high,c=u.low,u=(b>>>19|c<<13)^(b<<\r\n3|c>>>29)^b>>>6,c=(c>>>19|b<<13)^(c<<3|b>>>29)^(c>>>6|b<<26),b=v[m-7],W=b.high,t=v[m-16],q=t.high,t=t.low,b=p+b.low,j=j+W+(b>>>0<p>>>0?1:0),b=b+c,j=j+u+(b>>>0<c>>>0?1:0),b=b+t,j=j+q+(b>>>0<t>>>0?1:0);s.high=j;s.low=b}var W=l&R^~l&S,t=h&C^~h&D,s=k&z^k&A^z&A,T=g&x^g&y^x&y,p=(k>>>28|g<<4)^(k<<30|g>>>2)^(k<<25|g>>>7),u=(g>>>28|k<<4)^(g<<30|k>>>2)^(g<<25|k>>>7),c=ea[m],fa=c.high,da=c.low,c=E+((h>>>14|l<<18)^(h>>>18|l<<14)^(h<<23|l>>>9)),q=V+((l>>>14|h<<18)^(l>>>18|h<<14)^(l<<23|h>>>9))+(c>>>0<E>>>0?1:\r\n0),c=c+t,q=q+W+(c>>>0<t>>>0?1:0),c=c+da,q=q+fa+(c>>>0<da>>>0?1:0),c=c+b,q=q+j+(c>>>0<b>>>0?1:0),b=u+T,s=p+s+(b>>>0<u>>>0?1:0),V=S,E=D,S=R,D=C,R=l,C=h,h=B+c|0,l=U+q+(h>>>0<B>>>0?1:0)|0,U=A,B=y,A=z,y=x,z=k,x=g,g=c+b|0,k=q+s+(g>>>0<c>>>0?1:0)|0}J=F.low=J+g;F.high=w+k+(J>>>0<g>>>0?1:0);K=e.low=K+x;e.high=X+z+(K>>>0<x>>>0?1:0);L=n.low=L+y;n.high=Y+A+(L>>>0<y>>>0?1:0);M=r.low=M+B;r.high=Z+U+(M>>>0<B>>>0?1:0);N=G.low=N+h;G.high=$+l+(N>>>0<h>>>0?1:0);O=H.low=O+C;H.high=aa+R+(O>>>0<C>>>0?1:0);P=I.low=P+D;\r\nI.high=ba+S+(P>>>0<D>>>0?1:0);Q=f.low=Q+E;f.high=ca+V+(Q>>>0<E>>>0?1:0)},_doFinalize:function(){var a=this._data,d=a.words,f=8*this._nDataBytes,e=8*a.sigBytes;d[e>>>5]|=128<<24-e%32;d[(e+128>>>10<<5)+30]=Math.floor(f/4294967296);d[(e+128>>>10<<5)+31]=f;a.sigBytes=4*d.length;this._process();return this._hash.toX32()},clone:function(){var a=r.clone.call(this);a._hash=this._hash.clone();return a},blockSize:32});n.SHA512=r._createHelper(e);n.HmacSHA512=r._createHmacHelper(e)})();\r\n\n/*\r\nCryptoJS v3.1.2 sha384-min.js\r\ncode.google.com/p/crypto-js\r\n(c) 2009-2013 by Jeff Mott. All rights reserved.\r\ncode.google.com/p/crypto-js/wiki/License\r\n*/\r\n(function(){var c=CryptoJS,a=c.x64,b=a.Word,e=a.WordArray,a=c.algo,d=a.SHA512,a=a.SHA384=d.extend({_doReset:function(){this._hash=new e.init([new b.init(3418070365,3238371032),new b.init(1654270250,914150663),new b.init(2438529370,812702999),new b.init(355462360,4144912697),new b.init(1731405415,4290775857),new b.init(2394180231,1750603025),new b.init(3675008525,1694076839),new b.init(1203062813,3204075428)])},_doFinalize:function(){var a=d._doFinalize.call(this);a.sigBytes-=16;return a}});c.SHA384=\r\nd._createHelper(a);c.HmacSHA384=d._createHmacHelper(a)})();\r\n\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\r\n */\r\nvar b64map=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";var b64pad=\"=\";function hex2b64(d){var b;var e;var a=\"\";for(b=0;b+3<=d.length;b+=3){e=parseInt(d.substring(b,b+3),16);a+=b64map.charAt(e>>6)+b64map.charAt(e&63)}if(b+1==d.length){e=parseInt(d.substring(b,b+1),16);a+=b64map.charAt(e<<2)}else{if(b+2==d.length){e=parseInt(d.substring(b,b+2),16);a+=b64map.charAt(e>>2)+b64map.charAt((e&3)<<4)}}if(b64pad){while((a.length&3)>0){a+=b64pad}}return a}function b64tohex(f){var d=\"\";var e;var b=0;var c;var a;for(e=0;e<f.length;++e){if(f.charAt(e)==b64pad){break}a=b64map.indexOf(f.charAt(e));if(a<0){continue}if(b==0){d+=int2char(a>>2);c=a&3;b=1}else{if(b==1){d+=int2char((c<<2)|(a>>4));c=a&15;b=2}else{if(b==2){d+=int2char(c);d+=int2char(a>>2);c=a&3;b=3}else{d+=int2char((c<<2)|(a>>4));d+=int2char(a&15);b=0}}}}if(b==1){d+=int2char(c<<2)}return d}function b64toBA(e){var d=b64tohex(e);var c;var b=new Array();for(c=0;2*c<d.length;++c){b[c]=parseInt(d.substring(2*c,2*c+2),16)}return b};\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\r\n */\r\nvar dbits;var canary=244837814094590;var j_lm=((canary&16777215)==15715070);function BigInteger(e,d,f){if(e!=null){if(\"number\"==typeof e){this.fromNumber(e,d,f)}else{if(d==null&&\"string\"!=typeof e){this.fromString(e,256)}else{this.fromString(e,d)}}}}function nbi(){return new BigInteger(null)}function am1(f,a,b,e,h,g){while(--g>=0){var d=a*this[f++]+b[e]+h;h=Math.floor(d/67108864);b[e++]=d&67108863}return h}function am2(f,q,r,e,o,a){var k=q&32767,p=q>>15;while(--a>=0){var d=this[f]&32767;var g=this[f++]>>15;var b=p*d+g*k;d=k*d+((b&32767)<<15)+r[e]+(o&1073741823);o=(d>>>30)+(b>>>15)+p*g+(o>>>30);r[e++]=d&1073741823}return o}function am3(f,q,r,e,o,a){var k=q&16383,p=q>>14;while(--a>=0){var d=this[f]&16383;var g=this[f++]>>14;var b=p*d+g*k;d=k*d+((b&16383)<<14)+r[e]+o;o=(d>>28)+(b>>14)+p*g;r[e++]=d&268435455}return o}if(j_lm&&(navigator.appName==\"Microsoft Internet Explorer\")){BigInteger.prototype.am=am2;dbits=30}else{if(j_lm&&(navigator.appName!=\"Netscape\")){BigInteger.prototype.am=am1;dbits=26}else{BigInteger.prototype.am=am3;dbits=28}}BigInteger.prototype.DB=dbits;BigInteger.prototype.DM=((1<<dbits)-1);BigInteger.prototype.DV=(1<<dbits);var BI_FP=52;BigInteger.prototype.FV=Math.pow(2,BI_FP);BigInteger.prototype.F1=BI_FP-dbits;BigInteger.prototype.F2=2*dbits-BI_FP;var BI_RM=\"0123456789abcdefghijklmnopqrstuvwxyz\";var BI_RC=new Array();var rr,vv;rr=\"0\".charCodeAt(0);for(vv=0;vv<=9;++vv){BI_RC[rr++]=vv}rr=\"a\".charCodeAt(0);for(vv=10;vv<36;++vv){BI_RC[rr++]=vv}rr=\"A\".charCodeAt(0);for(vv=10;vv<36;++vv){BI_RC[rr++]=vv}function int2char(a){return BI_RM.charAt(a)}function intAt(b,a){var d=BI_RC[b.charCodeAt(a)];return(d==null)?-1:d}function bnpCopyTo(b){for(var a=this.t-1;a>=0;--a){b[a]=this[a]}b.t=this.t;b.s=this.s}function bnpFromInt(a){this.t=1;this.s=(a<0)?-1:0;if(a>0){this[0]=a}else{if(a<-1){this[0]=a+this.DV}else{this.t=0}}}function nbv(a){var b=nbi();b.fromInt(a);return b}function bnpFromString(h,c){var e;if(c==16){e=4}else{if(c==8){e=3}else{if(c==256){e=8}else{if(c==2){e=1}else{if(c==32){e=5}else{if(c==4){e=2}else{this.fromRadix(h,c);return}}}}}}this.t=0;this.s=0;var g=h.length,d=false,f=0;while(--g>=0){var a=(e==8)?h[g]&255:intAt(h,g);if(a<0){if(h.charAt(g)==\"-\"){d=true}continue}d=false;if(f==0){this[this.t++]=a}else{if(f+e>this.DB){this[this.t-1]|=(a&((1<<(this.DB-f))-1))<<f;this[this.t++]=(a>>(this.DB-f))}else{this[this.t-1]|=a<<f}}f+=e;if(f>=this.DB){f-=this.DB}}if(e==8&&(h[0]&128)!=0){this.s=-1;if(f>0){this[this.t-1]|=((1<<(this.DB-f))-1)<<f}}this.clamp();if(d){BigInteger.ZERO.subTo(this,this)}}function bnpClamp(){var a=this.s&this.DM;while(this.t>0&&this[this.t-1]==a){--this.t}}function bnToString(c){if(this.s<0){return\"-\"+this.negate().toString(c)}var e;if(c==16){e=4}else{if(c==8){e=3}else{if(c==2){e=1}else{if(c==32){e=5}else{if(c==4){e=2}else{return this.toRadix(c)}}}}}var g=(1<<e)-1,l,a=false,h=\"\",f=this.t;var j=this.DB-(f*this.DB)%e;if(f-->0){if(j<this.DB&&(l=this[f]>>j)>0){a=true;h=int2char(l)}while(f>=0){if(j<e){l=(this[f]&((1<<j)-1))<<(e-j);l|=this[--f]>>(j+=this.DB-e)}else{l=(this[f]>>(j-=e))&g;if(j<=0){j+=this.DB;--f}}if(l>0){a=true}if(a){h+=int2char(l)}}}return a?h:\"0\"}function bnNegate(){var a=nbi();BigInteger.ZERO.subTo(this,a);return a}function bnAbs(){return(this.s<0)?this.negate():this}function bnCompareTo(b){var d=this.s-b.s;if(d!=0){return d}var c=this.t;d=c-b.t;if(d!=0){return(this.s<0)?-d:d}while(--c>=0){if((d=this[c]-b[c])!=0){return d}}return 0}function nbits(a){var c=1,b;if((b=a>>>16)!=0){a=b;c+=16}if((b=a>>8)!=0){a=b;c+=8}if((b=a>>4)!=0){a=b;c+=4}if((b=a>>2)!=0){a=b;c+=2}if((b=a>>1)!=0){a=b;c+=1}return c}function bnBitLength(){if(this.t<=0){return 0}return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM))}function bnpDLShiftTo(c,b){var a;for(a=this.t-1;a>=0;--a){b[a+c]=this[a]}for(a=c-1;a>=0;--a){b[a]=0}b.t=this.t+c;b.s=this.s}function bnpDRShiftTo(c,b){for(var a=c;a<this.t;++a){b[a-c]=this[a]}b.t=Math.max(this.t-c,0);b.s=this.s}function bnpLShiftTo(j,e){var b=j%this.DB;var a=this.DB-b;var g=(1<<a)-1;var f=Math.floor(j/this.DB),h=(this.s<<b)&this.DM,d;for(d=this.t-1;d>=0;--d){e[d+f+1]=(this[d]>>a)|h;h=(this[d]&g)<<b}for(d=f-1;d>=0;--d){e[d]=0}e[f]=h;e.t=this.t+f+1;e.s=this.s;e.clamp()}function bnpRShiftTo(g,d){d.s=this.s;var e=Math.floor(g/this.DB);if(e>=this.t){d.t=0;return}var b=g%this.DB;var a=this.DB-b;var f=(1<<b)-1;d[0]=this[e]>>b;for(var c=e+1;c<this.t;++c){d[c-e-1]|=(this[c]&f)<<a;d[c-e]=this[c]>>b}if(b>0){d[this.t-e-1]|=(this.s&f)<<a}d.t=this.t-e;d.clamp()}function bnpSubTo(d,f){var e=0,g=0,b=Math.min(d.t,this.t);while(e<b){g+=this[e]-d[e];f[e++]=g&this.DM;g>>=this.DB}if(d.t<this.t){g-=d.s;while(e<this.t){g+=this[e];f[e++]=g&this.DM;g>>=this.DB}g+=this.s}else{g+=this.s;while(e<d.t){g-=d[e];f[e++]=g&this.DM;g>>=this.DB}g-=d.s}f.s=(g<0)?-1:0;if(g<-1){f[e++]=this.DV+g}else{if(g>0){f[e++]=g}}f.t=e;f.clamp()}function bnpMultiplyTo(c,e){var b=this.abs(),f=c.abs();var d=b.t;e.t=d+f.t;while(--d>=0){e[d]=0}for(d=0;d<f.t;++d){e[d+b.t]=b.am(0,f[d],e,d,0,b.t)}e.s=0;e.clamp();if(this.s!=c.s){BigInteger.ZERO.subTo(e,e)}}function bnpSquareTo(d){var a=this.abs();var b=d.t=2*a.t;while(--b>=0){d[b]=0}for(b=0;b<a.t-1;++b){var e=a.am(b,a[b],d,2*b,0,1);if((d[b+a.t]+=a.am(b+1,2*a[b],d,2*b+1,e,a.t-b-1))>=a.DV){d[b+a.t]-=a.DV;d[b+a.t+1]=1}}if(d.t>0){d[d.t-1]+=a.am(b,a[b],d,2*b,0,1)}d.s=0;d.clamp()}function bnpDivRemTo(n,h,g){var w=n.abs();if(w.t<=0){return}var k=this.abs();if(k.t<w.t){if(h!=null){h.fromInt(0)}if(g!=null){this.copyTo(g)}return}if(g==null){g=nbi()}var d=nbi(),a=this.s,l=n.s;var v=this.DB-nbits(w[w.t-1]);if(v>0){w.lShiftTo(v,d);k.lShiftTo(v,g)}else{w.copyTo(d);k.copyTo(g)}var p=d.t;var b=d[p-1];if(b==0){return}var o=b*(1<<this.F1)+((p>1)?d[p-2]>>this.F2:0);var A=this.FV/o,z=(1<<this.F1)/o,x=1<<this.F2;var u=g.t,s=u-p,f=(h==null)?nbi():h;d.dlShiftTo(s,f);if(g.compareTo(f)>=0){g[g.t++]=1;g.subTo(f,g)}BigInteger.ONE.dlShiftTo(p,f);f.subTo(d,d);while(d.t<p){d[d.t++]=0}while(--s>=0){var c=(g[--u]==b)?this.DM:Math.floor(g[u]*A+(g[u-1]+x)*z);if((g[u]+=d.am(0,c,g,s,0,p))<c){d.dlShiftTo(s,f);g.subTo(f,g);while(g[u]<--c){g.subTo(f,g)}}}if(h!=null){g.drShiftTo(p,h);if(a!=l){BigInteger.ZERO.subTo(h,h)}}g.t=p;g.clamp();if(v>0){g.rShiftTo(v,g)}if(a<0){BigInteger.ZERO.subTo(g,g)}}function bnMod(b){var c=nbi();this.abs().divRemTo(b,null,c);if(this.s<0&&c.compareTo(BigInteger.ZERO)>0){b.subTo(c,c)}return c}function Classic(a){this.m=a}function cConvert(a){if(a.s<0||a.compareTo(this.m)>=0){return a.mod(this.m)}else{return a}}function cRevert(a){return a}function cReduce(a){a.divRemTo(this.m,null,a)}function cMulTo(a,c,b){a.multiplyTo(c,b);this.reduce(b)}function cSqrTo(a,b){a.squareTo(b);this.reduce(b)}Classic.prototype.convert=cConvert;Classic.prototype.revert=cRevert;Classic.prototype.reduce=cReduce;Classic.prototype.mulTo=cMulTo;Classic.prototype.sqrTo=cSqrTo;function bnpInvDigit(){if(this.t<1){return 0}var a=this[0];if((a&1)==0){return 0}var b=a&3;b=(b*(2-(a&15)*b))&15;b=(b*(2-(a&255)*b))&255;b=(b*(2-(((a&65535)*b)&65535)))&65535;b=(b*(2-a*b%this.DV))%this.DV;return(b>0)?this.DV-b:-b}function Montgomery(a){this.m=a;this.mp=a.invDigit();this.mpl=this.mp&32767;this.mph=this.mp>>15;this.um=(1<<(a.DB-15))-1;this.mt2=2*a.t}function montConvert(a){var b=nbi();a.abs().dlShiftTo(this.m.t,b);b.divRemTo(this.m,null,b);if(a.s<0&&b.compareTo(BigInteger.ZERO)>0){this.m.subTo(b,b)}return b}function montRevert(a){var b=nbi();a.copyTo(b);this.reduce(b);return b}function montReduce(a){while(a.t<=this.mt2){a[a.t++]=0}for(var c=0;c<this.m.t;++c){var b=a[c]&32767;var d=(b*this.mpl+(((b*this.mph+(a[c]>>15)*this.mpl)&this.um)<<15))&a.DM;b=c+this.m.t;a[b]+=this.m.am(0,d,a,c,0,this.m.t);while(a[b]>=a.DV){a[b]-=a.DV;a[++b]++}}a.clamp();a.drShiftTo(this.m.t,a);if(a.compareTo(this.m)>=0){a.subTo(this.m,a)}}function montSqrTo(a,b){a.squareTo(b);this.reduce(b)}function montMulTo(a,c,b){a.multiplyTo(c,b);this.reduce(b)}Montgomery.prototype.convert=montConvert;Montgomery.prototype.revert=montRevert;Montgomery.prototype.reduce=montReduce;Montgomery.prototype.mulTo=montMulTo;Montgomery.prototype.sqrTo=montSqrTo;function bnpIsEven(){return((this.t>0)?(this[0]&1):this.s)==0}function bnpExp(h,j){if(h>4294967295||h<1){return BigInteger.ONE}var f=nbi(),a=nbi(),d=j.convert(this),c=nbits(h)-1;d.copyTo(f);while(--c>=0){j.sqrTo(f,a);if((h&(1<<c))>0){j.mulTo(a,d,f)}else{var b=f;f=a;a=b}}return j.revert(f)}function bnModPowInt(b,a){var c;if(b<256||a.isEven()){c=new Classic(a)}else{c=new Montgomery(a)}return this.exp(b,c)}BigInteger.prototype.copyTo=bnpCopyTo;BigInteger.prototype.fromInt=bnpFromInt;BigInteger.prototype.fromString=bnpFromString;BigInteger.prototype.clamp=bnpClamp;BigInteger.prototype.dlShiftTo=bnpDLShiftTo;BigInteger.prototype.drShiftTo=bnpDRShiftTo;BigInteger.prototype.lShiftTo=bnpLShiftTo;BigInteger.prototype.rShiftTo=bnpRShiftTo;BigInteger.prototype.subTo=bnpSubTo;BigInteger.prototype.multiplyTo=bnpMultiplyTo;BigInteger.prototype.squareTo=bnpSquareTo;BigInteger.prototype.divRemTo=bnpDivRemTo;BigInteger.prototype.invDigit=bnpInvDigit;BigInteger.prototype.isEven=bnpIsEven;BigInteger.prototype.exp=bnpExp;BigInteger.prototype.toString=bnToString;BigInteger.prototype.negate=bnNegate;BigInteger.prototype.abs=bnAbs;BigInteger.prototype.compareTo=bnCompareTo;BigInteger.prototype.bitLength=bnBitLength;BigInteger.prototype.mod=bnMod;BigInteger.prototype.modPowInt=bnModPowInt;BigInteger.ZERO=nbv(0);BigInteger.ONE=nbv(1);\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\r\n */\r\nfunction bnClone(){var a=nbi();this.copyTo(a);return a}function bnIntValue(){if(this.s<0){if(this.t==1){return this[0]-this.DV}else{if(this.t==0){return -1}}}else{if(this.t==1){return this[0]}else{if(this.t==0){return 0}}}return((this[1]&((1<<(32-this.DB))-1))<<this.DB)|this[0]}function bnByteValue(){return(this.t==0)?this.s:(this[0]<<24)>>24}function bnShortValue(){return(this.t==0)?this.s:(this[0]<<16)>>16}function bnpChunkSize(a){return Math.floor(Math.LN2*this.DB/Math.log(a))}function bnSigNum(){if(this.s<0){return -1}else{if(this.t<=0||(this.t==1&&this[0]<=0)){return 0}else{return 1}}}function bnpToRadix(c){if(c==null){c=10}if(this.signum()==0||c<2||c>36){return\"0\"}var f=this.chunkSize(c);var e=Math.pow(c,f);var i=nbv(e),j=nbi(),h=nbi(),g=\"\";this.divRemTo(i,j,h);while(j.signum()>0){g=(e+h.intValue()).toString(c).substr(1)+g;j.divRemTo(i,j,h)}return h.intValue().toString(c)+g}function bnpFromRadix(m,h){this.fromInt(0);if(h==null){h=10}var f=this.chunkSize(h);var g=Math.pow(h,f),e=false,a=0,l=0;for(var c=0;c<m.length;++c){var k=intAt(m,c);if(k<0){if(m.charAt(c)==\"-\"&&this.signum()==0){e=true}continue}l=h*l+k;if(++a>=f){this.dMultiply(g);this.dAddOffset(l,0);a=0;l=0}}if(a>0){this.dMultiply(Math.pow(h,a));this.dAddOffset(l,0)}if(e){BigInteger.ZERO.subTo(this,this)}}function bnpFromNumber(f,e,h){if(\"number\"==typeof e){if(f<2){this.fromInt(1)}else{this.fromNumber(f,h);if(!this.testBit(f-1)){this.bitwiseTo(BigInteger.ONE.shiftLeft(f-1),op_or,this)}if(this.isEven()){this.dAddOffset(1,0)}while(!this.isProbablePrime(e)){this.dAddOffset(2,0);if(this.bitLength()>f){this.subTo(BigInteger.ONE.shiftLeft(f-1),this)}}}}else{var d=new Array(),g=f&7;d.length=(f>>3)+1;e.nextBytes(d);if(g>0){d[0]&=((1<<g)-1)}else{d[0]=0}this.fromString(d,256)}}function bnToByteArray(){var b=this.t,c=new Array();c[0]=this.s;var e=this.DB-(b*this.DB)%8,f,a=0;if(b-->0){if(e<this.DB&&(f=this[b]>>e)!=(this.s&this.DM)>>e){c[a++]=f|(this.s<<(this.DB-e))}while(b>=0){if(e<8){f=(this[b]&((1<<e)-1))<<(8-e);f|=this[--b]>>(e+=this.DB-8)}else{f=(this[b]>>(e-=8))&255;if(e<=0){e+=this.DB;--b}}if((f&128)!=0){f|=-256}if(a==0&&(this.s&128)!=(f&128)){++a}if(a>0||f!=this.s){c[a++]=f}}}return c}function bnEquals(b){return(this.compareTo(b)==0)}function bnMin(b){return(this.compareTo(b)<0)?this:b}function bnMax(b){return(this.compareTo(b)>0)?this:b}function bnpBitwiseTo(c,h,e){var d,g,b=Math.min(c.t,this.t);for(d=0;d<b;++d){e[d]=h(this[d],c[d])}if(c.t<this.t){g=c.s&this.DM;for(d=b;d<this.t;++d){e[d]=h(this[d],g)}e.t=this.t}else{g=this.s&this.DM;for(d=b;d<c.t;++d){e[d]=h(g,c[d])}e.t=c.t}e.s=h(this.s,c.s);e.clamp()}function op_and(a,b){return a&b}function bnAnd(b){var c=nbi();this.bitwiseTo(b,op_and,c);return c}function op_or(a,b){return a|b}function bnOr(b){var c=nbi();this.bitwiseTo(b,op_or,c);return c}function op_xor(a,b){return a^b}function bnXor(b){var c=nbi();this.bitwiseTo(b,op_xor,c);return c}function op_andnot(a,b){return a&~b}function bnAndNot(b){var c=nbi();this.bitwiseTo(b,op_andnot,c);return c}function bnNot(){var b=nbi();for(var a=0;a<this.t;++a){b[a]=this.DM&~this[a]}b.t=this.t;b.s=~this.s;return b}function bnShiftLeft(b){var a=nbi();if(b<0){this.rShiftTo(-b,a)}else{this.lShiftTo(b,a)}return a}function bnShiftRight(b){var a=nbi();if(b<0){this.lShiftTo(-b,a)}else{this.rShiftTo(b,a)}return a}function lbit(a){if(a==0){return -1}var b=0;if((a&65535)==0){a>>=16;b+=16}if((a&255)==0){a>>=8;b+=8}if((a&15)==0){a>>=4;b+=4}if((a&3)==0){a>>=2;b+=2}if((a&1)==0){++b}return b}function bnGetLowestSetBit(){for(var a=0;a<this.t;++a){if(this[a]!=0){return a*this.DB+lbit(this[a])}}if(this.s<0){return this.t*this.DB}return -1}function cbit(a){var b=0;while(a!=0){a&=a-1;++b}return b}function bnBitCount(){var c=0,a=this.s&this.DM;for(var b=0;b<this.t;++b){c+=cbit(this[b]^a)}return c}function bnTestBit(b){var a=Math.floor(b/this.DB);if(a>=this.t){return(this.s!=0)}return((this[a]&(1<<(b%this.DB)))!=0)}function bnpChangeBit(c,b){var a=BigInteger.ONE.shiftLeft(c);this.bitwiseTo(a,b,a);return a}function bnSetBit(a){return this.changeBit(a,op_or)}function bnClearBit(a){return this.changeBit(a,op_andnot)}function bnFlipBit(a){return this.changeBit(a,op_xor)}function bnpAddTo(d,f){var e=0,g=0,b=Math.min(d.t,this.t);while(e<b){g+=this[e]+d[e];f[e++]=g&this.DM;g>>=this.DB}if(d.t<this.t){g+=d.s;while(e<this.t){g+=this[e];f[e++]=g&this.DM;g>>=this.DB}g+=this.s}else{g+=this.s;while(e<d.t){g+=d[e];f[e++]=g&this.DM;g>>=this.DB}g+=d.s}f.s=(g<0)?-1:0;if(g>0){f[e++]=g}else{if(g<-1){f[e++]=this.DV+g}}f.t=e;f.clamp()}function bnAdd(b){var c=nbi();this.addTo(b,c);return c}function bnSubtract(b){var c=nbi();this.subTo(b,c);return c}function bnMultiply(b){var c=nbi();this.multiplyTo(b,c);return c}function bnSquare(){var a=nbi();this.squareTo(a);return a}function bnDivide(b){var c=nbi();this.divRemTo(b,c,null);return c}function bnRemainder(b){var c=nbi();this.divRemTo(b,null,c);return c}function bnDivideAndRemainder(b){var d=nbi(),c=nbi();this.divRemTo(b,d,c);return new Array(d,c)}function bnpDMultiply(a){this[this.t]=this.am(0,a-1,this,0,0,this.t);++this.t;this.clamp()}function bnpDAddOffset(b,a){if(b==0){return}while(this.t<=a){this[this.t++]=0}this[a]+=b;while(this[a]>=this.DV){this[a]-=this.DV;if(++a>=this.t){this[this.t++]=0}++this[a]}}function NullExp(){}function nNop(a){return a}function nMulTo(a,c,b){a.multiplyTo(c,b)}function nSqrTo(a,b){a.squareTo(b)}NullExp.prototype.convert=nNop;NullExp.prototype.revert=nNop;NullExp.prototype.mulTo=nMulTo;NullExp.prototype.sqrTo=nSqrTo;function bnPow(a){return this.exp(a,new NullExp())}function bnpMultiplyLowerTo(b,f,e){var d=Math.min(this.t+b.t,f);e.s=0;e.t=d;while(d>0){e[--d]=0}var c;for(c=e.t-this.t;d<c;++d){e[d+this.t]=this.am(0,b[d],e,d,0,this.t)}for(c=Math.min(b.t,f);d<c;++d){this.am(0,b[d],e,d,0,f-d)}e.clamp()}function bnpMultiplyUpperTo(b,e,d){--e;var c=d.t=this.t+b.t-e;d.s=0;while(--c>=0){d[c]=0}for(c=Math.max(e-this.t,0);c<b.t;++c){d[this.t+c-e]=this.am(e-c,b[c],d,0,0,this.t+c-e)}d.clamp();d.drShiftTo(1,d)}function Barrett(a){this.r2=nbi();this.q3=nbi();BigInteger.ONE.dlShiftTo(2*a.t,this.r2);this.mu=this.r2.divide(a);this.m=a}function barrettConvert(a){if(a.s<0||a.t>2*this.m.t){return a.mod(this.m)}else{if(a.compareTo(this.m)<0){return a}else{var b=nbi();a.copyTo(b);this.reduce(b);return b}}}function barrettRevert(a){return a}function barrettReduce(a){a.drShiftTo(this.m.t-1,this.r2);if(a.t>this.m.t+1){a.t=this.m.t+1;a.clamp()}this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);while(a.compareTo(this.r2)<0){a.dAddOffset(1,this.m.t+1)}a.subTo(this.r2,a);while(a.compareTo(this.m)>=0){a.subTo(this.m,a)}}function barrettSqrTo(a,b){a.squareTo(b);this.reduce(b)}function barrettMulTo(a,c,b){a.multiplyTo(c,b);this.reduce(b)}Barrett.prototype.convert=barrettConvert;Barrett.prototype.revert=barrettRevert;Barrett.prototype.reduce=barrettReduce;Barrett.prototype.mulTo=barrettMulTo;Barrett.prototype.sqrTo=barrettSqrTo;function bnModPow(q,f){var o=q.bitLength(),h,b=nbv(1),v;if(o<=0){return b}else{if(o<18){h=1}else{if(o<48){h=3}else{if(o<144){h=4}else{if(o<768){h=5}else{h=6}}}}}if(o<8){v=new Classic(f)}else{if(f.isEven()){v=new Barrett(f)}else{v=new Montgomery(f)}}var p=new Array(),d=3,s=h-1,a=(1<<h)-1;p[1]=v.convert(this);if(h>1){var A=nbi();v.sqrTo(p[1],A);while(d<=a){p[d]=nbi();v.mulTo(A,p[d-2],p[d]);d+=2}}var l=q.t-1,x,u=true,c=nbi(),y;o=nbits(q[l])-1;while(l>=0){if(o>=s){x=(q[l]>>(o-s))&a}else{x=(q[l]&((1<<(o+1))-1))<<(s-o);if(l>0){x|=q[l-1]>>(this.DB+o-s)}}d=h;while((x&1)==0){x>>=1;--d}if((o-=d)<0){o+=this.DB;--l}if(u){p[x].copyTo(b);u=false}else{while(d>1){v.sqrTo(b,c);v.sqrTo(c,b);d-=2}if(d>0){v.sqrTo(b,c)}else{y=b;b=c;c=y}v.mulTo(c,p[x],b)}while(l>=0&&(q[l]&(1<<o))==0){v.sqrTo(b,c);y=b;b=c;c=y;if(--o<0){o=this.DB-1;--l}}}return v.revert(b)}function bnGCD(c){var b=(this.s<0)?this.negate():this.clone();var h=(c.s<0)?c.negate():c.clone();if(b.compareTo(h)<0){var e=b;b=h;h=e}var d=b.getLowestSetBit(),f=h.getLowestSetBit();if(f<0){return b}if(d<f){f=d}if(f>0){b.rShiftTo(f,b);h.rShiftTo(f,h)}while(b.signum()>0){if((d=b.getLowestSetBit())>0){b.rShiftTo(d,b)}if((d=h.getLowestSetBit())>0){h.rShiftTo(d,h)}if(b.compareTo(h)>=0){b.subTo(h,b);b.rShiftTo(1,b)}else{h.subTo(b,h);h.rShiftTo(1,h)}}if(f>0){h.lShiftTo(f,h)}return h}function bnpModInt(e){if(e<=0){return 0}var c=this.DV%e,b=(this.s<0)?e-1:0;if(this.t>0){if(c==0){b=this[0]%e}else{for(var a=this.t-1;a>=0;--a){b=(c*b+this[a])%e}}}return b}function bnModInverse(f){var j=f.isEven();if((this.isEven()&&j)||f.signum()==0){return BigInteger.ZERO}var i=f.clone(),h=this.clone();var g=nbv(1),e=nbv(0),l=nbv(0),k=nbv(1);while(i.signum()!=0){while(i.isEven()){i.rShiftTo(1,i);if(j){if(!g.isEven()||!e.isEven()){g.addTo(this,g);e.subTo(f,e)}g.rShiftTo(1,g)}else{if(!e.isEven()){e.subTo(f,e)}}e.rShiftTo(1,e)}while(h.isEven()){h.rShiftTo(1,h);if(j){if(!l.isEven()||!k.isEven()){l.addTo(this,l);k.subTo(f,k)}l.rShiftTo(1,l)}else{if(!k.isEven()){k.subTo(f,k)}}k.rShiftTo(1,k)}if(i.compareTo(h)>=0){i.subTo(h,i);if(j){g.subTo(l,g)}e.subTo(k,e)}else{h.subTo(i,h);if(j){l.subTo(g,l)}k.subTo(e,k)}}if(h.compareTo(BigInteger.ONE)!=0){return BigInteger.ZERO}if(k.compareTo(f)>=0){return k.subtract(f)}if(k.signum()<0){k.addTo(f,k)}else{return k}if(k.signum()<0){return k.add(f)}else{return k}}var lowprimes=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997];var lplim=(1<<26)/lowprimes[lowprimes.length-1];function bnIsProbablePrime(e){var d,b=this.abs();if(b.t==1&&b[0]<=lowprimes[lowprimes.length-1]){for(d=0;d<lowprimes.length;++d){if(b[0]==lowprimes[d]){return true}}return false}if(b.isEven()){return false}d=1;while(d<lowprimes.length){var a=lowprimes[d],c=d+1;while(c<lowprimes.length&&a<lplim){a*=lowprimes[c++]}a=b.modInt(a);while(d<c){if(a%lowprimes[d++]==0){return false}}}return b.millerRabin(e)}function bnpMillerRabin(f){var g=this.subtract(BigInteger.ONE);var c=g.getLowestSetBit();if(c<=0){return false}var h=g.shiftRight(c);f=(f+1)>>1;if(f>lowprimes.length){f=lowprimes.length}var b=nbi();for(var e=0;e<f;++e){b.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]);var l=b.modPow(h,this);if(l.compareTo(BigInteger.ONE)!=0&&l.compareTo(g)!=0){var d=1;while(d++<c&&l.compareTo(g)!=0){l=l.modPowInt(2,this);if(l.compareTo(BigInteger.ONE)==0){return false}}if(l.compareTo(g)!=0){return false}}}return true}BigInteger.prototype.chunkSize=bnpChunkSize;BigInteger.prototype.toRadix=bnpToRadix;BigInteger.prototype.fromRadix=bnpFromRadix;BigInteger.prototype.fromNumber=bnpFromNumber;BigInteger.prototype.bitwiseTo=bnpBitwiseTo;BigInteger.prototype.changeBit=bnpChangeBit;BigInteger.prototype.addTo=bnpAddTo;BigInteger.prototype.dMultiply=bnpDMultiply;BigInteger.prototype.dAddOffset=bnpDAddOffset;BigInteger.prototype.multiplyLowerTo=bnpMultiplyLowerTo;BigInteger.prototype.multiplyUpperTo=bnpMultiplyUpperTo;BigInteger.prototype.modInt=bnpModInt;BigInteger.prototype.millerRabin=bnpMillerRabin;BigInteger.prototype.clone=bnClone;BigInteger.prototype.intValue=bnIntValue;BigInteger.prototype.byteValue=bnByteValue;BigInteger.prototype.shortValue=bnShortValue;BigInteger.prototype.signum=bnSigNum;BigInteger.prototype.toByteArray=bnToByteArray;BigInteger.prototype.equals=bnEquals;BigInteger.prototype.min=bnMin;BigInteger.prototype.max=bnMax;BigInteger.prototype.and=bnAnd;BigInteger.prototype.or=bnOr;BigInteger.prototype.xor=bnXor;BigInteger.prototype.andNot=bnAndNot;BigInteger.prototype.not=bnNot;BigInteger.prototype.shiftLeft=bnShiftLeft;BigInteger.prototype.shiftRight=bnShiftRight;BigInteger.prototype.getLowestSetBit=bnGetLowestSetBit;BigInteger.prototype.bitCount=bnBitCount;BigInteger.prototype.testBit=bnTestBit;BigInteger.prototype.setBit=bnSetBit;BigInteger.prototype.clearBit=bnClearBit;BigInteger.prototype.flipBit=bnFlipBit;BigInteger.prototype.add=bnAdd;BigInteger.prototype.subtract=bnSubtract;BigInteger.prototype.multiply=bnMultiply;BigInteger.prototype.divide=bnDivide;BigInteger.prototype.remainder=bnRemainder;BigInteger.prototype.divideAndRemainder=bnDivideAndRemainder;BigInteger.prototype.modPow=bnModPow;BigInteger.prototype.modInverse=bnModInverse;BigInteger.prototype.pow=bnPow;BigInteger.prototype.gcd=bnGCD;BigInteger.prototype.isProbablePrime=bnIsProbablePrime;BigInteger.prototype.square=bnSquare;\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\r\n */\r\nfunction Arcfour(){this.i=0;this.j=0;this.S=new Array()}function ARC4init(d){var c,a,b;for(c=0;c<256;++c){this.S[c]=c}a=0;for(c=0;c<256;++c){a=(a+this.S[c]+d[c%d.length])&255;b=this.S[c];this.S[c]=this.S[a];this.S[a]=b}this.i=0;this.j=0}function ARC4next(){var a;this.i=(this.i+1)&255;this.j=(this.j+this.S[this.i])&255;a=this.S[this.i];this.S[this.i]=this.S[this.j];this.S[this.j]=a;return this.S[(a+this.S[this.i])&255]}Arcfour.prototype.init=ARC4init;Arcfour.prototype.next=ARC4next;function prng_newstate(){return new Arcfour()}var rng_psize=256;\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\r\n */\r\nvar rng_state;var rng_pool;var rng_pptr;function rng_seed_int(a){rng_pool[rng_pptr++]^=a&255;rng_pool[rng_pptr++]^=(a>>8)&255;rng_pool[rng_pptr++]^=(a>>16)&255;rng_pool[rng_pptr++]^=(a>>24)&255;if(rng_pptr>=rng_psize){rng_pptr-=rng_psize}}function rng_seed_time(){rng_seed_int(new Date().getTime())}if(rng_pool==null){rng_pool=new Array();rng_pptr=0;var t;if(window!==undefined&&(window.crypto!==undefined||window.msCrypto!==undefined)){var crypto=window.crypto||window.msCrypto;if(crypto.getRandomValues){var ua=new Uint8Array(32);crypto.getRandomValues(ua);for(t=0;t<32;++t){rng_pool[rng_pptr++]=ua[t]}}else{if(navigator.appName==\"Netscape\"&&navigator.appVersion<\"5\"){var z=window.crypto.random(32);for(t=0;t<z.length;++t){rng_pool[rng_pptr++]=z.charCodeAt(t)&255}}}}while(rng_pptr<rng_psize){t=Math.floor(65536*Math.random());rng_pool[rng_pptr++]=t>>>8;rng_pool[rng_pptr++]=t&255}rng_pptr=0;rng_seed_time()}function rng_get_byte(){if(rng_state==null){rng_seed_time();rng_state=prng_newstate();rng_state.init(rng_pool);for(rng_pptr=0;rng_pptr<rng_pool.length;++rng_pptr){rng_pool[rng_pptr]=0}rng_pptr=0}return rng_state.next()}function rng_get_bytes(b){var a;for(a=0;a<b.length;++a){b[a]=rng_get_byte()}}function SecureRandom(){}SecureRandom.prototype.nextBytes=rng_get_bytes;\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\r\n */\r\nfunction parseBigInt(b,a){return new BigInteger(b,a)}function linebrk(c,d){var a=\"\";var b=0;while(b+d<c.length){a+=c.substring(b,b+d)+\"\\n\";b+=d}return a+c.substring(b,c.length)}function byte2Hex(a){if(a<16){return\"0\"+a.toString(16)}else{return a.toString(16)}}function pkcs1pad2(e,h){if(h<e.length+11){throw\"Message too long for RSA\";return null}var g=new Array();var d=e.length-1;while(d>=0&&h>0){var f=e.charCodeAt(d--);if(f<128){g[--h]=f}else{if((f>127)&&(f<2048)){g[--h]=(f&63)|128;g[--h]=(f>>6)|192}else{g[--h]=(f&63)|128;g[--h]=((f>>6)&63)|128;g[--h]=(f>>12)|224}}}g[--h]=0;var b=new SecureRandom();var a=new Array();while(h>2){a[0]=0;while(a[0]==0){b.nextBytes(a)}g[--h]=a[0]}g[--h]=2;g[--h]=0;return new BigInteger(g)}function oaep_mgf1_arr(c,a,e){var b=\"\",d=0;while(b.length<a){b+=e(String.fromCharCode.apply(String,c.concat([(d&4278190080)>>24,(d&16711680)>>16,(d&65280)>>8,d&255])));d+=1}return b}function oaep_pad(q,a,f,l){var c=KJUR.crypto.MessageDigest;var o=KJUR.crypto.Util;var b=null;if(!f){f=\"sha1\"}if(typeof f===\"string\"){b=c.getCanonicalAlgName(f);l=c.getHashLength(b);f=function(i){return hextorstr(o.hashHex(rstrtohex(i),b))}}if(q.length+2*l+2>a){throw\"Message too long for RSA\"}var k=\"\",e;for(e=0;e<a-q.length-2*l-2;e+=1){k+=\"\\x00\"}var h=f(\"\")+k+\"\\x01\"+q;var g=new Array(l);new SecureRandom().nextBytes(g);var j=oaep_mgf1_arr(g,h.length,f);var p=[];for(e=0;e<h.length;e+=1){p[e]=h.charCodeAt(e)^j.charCodeAt(e)}var m=oaep_mgf1_arr(p,g.length,f);var d=[0];for(e=0;e<g.length;e+=1){d[e+1]=g[e]^m.charCodeAt(e)}return new BigInteger(d.concat(p))}function RSAKey(){this.n=null;this.e=0;this.d=null;this.p=null;this.q=null;this.dmp1=null;this.dmq1=null;this.coeff=null}function RSASetPublic(b,a){this.isPublic=true;this.isPrivate=false;if(typeof b!==\"string\"){this.n=b;this.e=a}else{if(b!=null&&a!=null&&b.length>0&&a.length>0){this.n=parseBigInt(b,16);this.e=parseInt(a,16)}else{throw\"Invalid RSA public key\"}}}function RSADoPublic(a){return a.modPowInt(this.e,this.n)}function RSAEncrypt(d){var a=pkcs1pad2(d,(this.n.bitLength()+7)>>3);if(a==null){return null}var e=this.doPublic(a);if(e==null){return null}var b=e.toString(16);if((b.length&1)==0){return b}else{return\"0\"+b}}function RSAEncryptOAEP(f,e,b){var a=oaep_pad(f,(this.n.bitLength()+7)>>3,e,b);if(a==null){return null}var g=this.doPublic(a);if(g==null){return null}var d=g.toString(16);if((d.length&1)==0){return d}else{return\"0\"+d}}RSAKey.prototype.doPublic=RSADoPublic;RSAKey.prototype.setPublic=RSASetPublic;RSAKey.prototype.encrypt=RSAEncrypt;RSAKey.prototype.encryptOAEP=RSAEncryptOAEP;RSAKey.prototype.type=\"RSA\";\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\r\n */\r\nfunction ECFieldElementFp(b,a){this.x=a;this.q=b}function feFpEquals(a){if(a==this){return true}return(this.q.equals(a.q)&&this.x.equals(a.x))}function feFpToBigInteger(){return this.x}function feFpNegate(){return new ECFieldElementFp(this.q,this.x.negate().mod(this.q))}function feFpAdd(a){return new ECFieldElementFp(this.q,this.x.add(a.toBigInteger()).mod(this.q))}function feFpSubtract(a){return new ECFieldElementFp(this.q,this.x.subtract(a.toBigInteger()).mod(this.q))}function feFpMultiply(a){return new ECFieldElementFp(this.q,this.x.multiply(a.toBigInteger()).mod(this.q))}function feFpSquare(){return new ECFieldElementFp(this.q,this.x.square().mod(this.q))}function feFpDivide(a){return new ECFieldElementFp(this.q,this.x.multiply(a.toBigInteger().modInverse(this.q)).mod(this.q))}ECFieldElementFp.prototype.equals=feFpEquals;ECFieldElementFp.prototype.toBigInteger=feFpToBigInteger;ECFieldElementFp.prototype.negate=feFpNegate;ECFieldElementFp.prototype.add=feFpAdd;ECFieldElementFp.prototype.subtract=feFpSubtract;ECFieldElementFp.prototype.multiply=feFpMultiply;ECFieldElementFp.prototype.square=feFpSquare;ECFieldElementFp.prototype.divide=feFpDivide;function ECPointFp(c,a,d,b){this.curve=c;this.x=a;this.y=d;if(b==null){this.z=BigInteger.ONE}else{this.z=b}this.zinv=null}function pointFpGetX(){if(this.zinv==null){this.zinv=this.z.modInverse(this.curve.q)}return this.curve.fromBigInteger(this.x.toBigInteger().multiply(this.zinv).mod(this.curve.q))}function pointFpGetY(){if(this.zinv==null){this.zinv=this.z.modInverse(this.curve.q)}return this.curve.fromBigInteger(this.y.toBigInteger().multiply(this.zinv).mod(this.curve.q))}function pointFpEquals(a){if(a==this){return true}if(this.isInfinity()){return a.isInfinity()}if(a.isInfinity()){return this.isInfinity()}var c,b;c=a.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(a.z)).mod(this.curve.q);if(!c.equals(BigInteger.ZERO)){return false}b=a.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(a.z)).mod(this.curve.q);return b.equals(BigInteger.ZERO)}function pointFpIsInfinity(){if((this.x==null)&&(this.y==null)){return true}return this.z.equals(BigInteger.ZERO)&&!this.y.toBigInteger().equals(BigInteger.ZERO)}function pointFpNegate(){return new ECPointFp(this.curve,this.x,this.y.negate(),this.z)}function pointFpAdd(l){if(this.isInfinity()){return l}if(l.isInfinity()){return this}var p=l.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(l.z)).mod(this.curve.q);var o=l.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(l.z)).mod(this.curve.q);if(BigInteger.ZERO.equals(o)){if(BigInteger.ZERO.equals(p)){return this.twice()}return this.curve.getInfinity()}var j=new BigInteger(\"3\");var e=this.x.toBigInteger();var n=this.y.toBigInteger();var c=l.x.toBigInteger();var k=l.y.toBigInteger();var m=o.square();var i=m.multiply(o);var d=e.multiply(m);var g=p.square().multiply(this.z);var a=g.subtract(d.shiftLeft(1)).multiply(l.z).subtract(i).multiply(o).mod(this.curve.q);var h=d.multiply(j).multiply(p).subtract(n.multiply(i)).subtract(g.multiply(p)).multiply(l.z).add(p.multiply(i)).mod(this.curve.q);var f=i.multiply(this.z).multiply(l.z).mod(this.curve.q);return new ECPointFp(this.curve,this.curve.fromBigInteger(a),this.curve.fromBigInteger(h),f)}function pointFpTwice(){if(this.isInfinity()){return this}if(this.y.toBigInteger().signum()==0){return this.curve.getInfinity()}var g=new BigInteger(\"3\");var c=this.x.toBigInteger();var h=this.y.toBigInteger();var e=h.multiply(this.z);var j=e.multiply(h).mod(this.curve.q);var i=this.curve.a.toBigInteger();var k=c.square().multiply(g);if(!BigInteger.ZERO.equals(i)){k=k.add(this.z.square().multiply(i))}k=k.mod(this.curve.q);var b=k.square().subtract(c.shiftLeft(3).multiply(j)).shiftLeft(1).multiply(e).mod(this.curve.q);var f=k.multiply(g).multiply(c).subtract(j.shiftLeft(1)).shiftLeft(2).multiply(j).subtract(k.square().multiply(k)).mod(this.curve.q);var d=e.square().multiply(e).shiftLeft(3).mod(this.curve.q);return new ECPointFp(this.curve,this.curve.fromBigInteger(b),this.curve.fromBigInteger(f),d)}function pointFpMultiply(d){if(this.isInfinity()){return this}if(d.signum()==0){return this.curve.getInfinity()}var m=d;var l=m.multiply(new BigInteger(\"3\"));var b=this.negate();var j=this;var q=this.curve.q.subtract(d);var o=q.multiply(new BigInteger(\"3\"));var c=new ECPointFp(this.curve,this.x,this.y);var a=c.negate();var g;for(g=l.bitLength()-2;g>0;--g){j=j.twice();var n=l.testBit(g);var f=m.testBit(g);if(n!=f){j=j.add(n?this:b)}}for(g=o.bitLength()-2;g>0;--g){c=c.twice();var p=o.testBit(g);var r=q.testBit(g);if(p!=r){c=c.add(p?c:a)}}return j}function pointFpMultiplyTwo(c,a,b){var d;if(c.bitLength()>b.bitLength()){d=c.bitLength()-1}else{d=b.bitLength()-1}var f=this.curve.getInfinity();var e=this.add(a);while(d>=0){f=f.twice();if(c.testBit(d)){if(b.testBit(d)){f=f.add(e)}else{f=f.add(this)}}else{if(b.testBit(d)){f=f.add(a)}}--d}return f}ECPointFp.prototype.getX=pointFpGetX;ECPointFp.prototype.getY=pointFpGetY;ECPointFp.prototype.equals=pointFpEquals;ECPointFp.prototype.isInfinity=pointFpIsInfinity;ECPointFp.prototype.negate=pointFpNegate;ECPointFp.prototype.add=pointFpAdd;ECPointFp.prototype.twice=pointFpTwice;ECPointFp.prototype.multiply=pointFpMultiply;ECPointFp.prototype.multiplyTwo=pointFpMultiplyTwo;function ECCurveFp(e,d,c){this.q=e;this.a=this.fromBigInteger(d);this.b=this.fromBigInteger(c);this.infinity=new ECPointFp(this,null,null)}function curveFpGetQ(){return this.q}function curveFpGetA(){return this.a}function curveFpGetB(){return this.b}function curveFpEquals(a){if(a==this){return true}return(this.q.equals(a.q)&&this.a.equals(a.a)&&this.b.equals(a.b))}function curveFpGetInfinity(){return this.infinity}function curveFpFromBigInteger(a){return new ECFieldElementFp(this.q,a)}function curveFpDecodePointHex(d){switch(parseInt(d.substr(0,2),16)){case 0:return this.infinity;case 2:case 3:return null;case 4:case 6:case 7:var a=(d.length-2)/2;var c=d.substr(2,a);var b=d.substr(a+2,a);return new ECPointFp(this,this.fromBigInteger(new BigInteger(c,16)),this.fromBigInteger(new BigInteger(b,16)));default:return null}}ECCurveFp.prototype.getQ=curveFpGetQ;ECCurveFp.prototype.getA=curveFpGetA;ECCurveFp.prototype.getB=curveFpGetB;ECCurveFp.prototype.equals=curveFpEquals;ECCurveFp.prototype.getInfinity=curveFpGetInfinity;ECCurveFp.prototype.fromBigInteger=curveFpFromBigInteger;ECCurveFp.prototype.decodePointHex=curveFpDecodePointHex;\n/*! (c) Stefan Thomas | https://github.com/bitcoinjs/bitcoinjs-lib\r\n */\r\nECFieldElementFp.prototype.getByteLength=function(){return Math.floor((this.toBigInteger().bitLength()+7)/8)};ECPointFp.prototype.getEncoded=function(c){var d=function(h,f){var g=h.toByteArrayUnsigned();if(f<g.length){g=g.slice(g.length-f)}else{while(f>g.length){g.unshift(0)}}return g};var a=this.getX().toBigInteger();var e=this.getY().toBigInteger();var b=d(a,32);if(c){if(e.isEven()){b.unshift(2)}else{b.unshift(3)}}else{b.unshift(4);b=b.concat(d(e,32))}return b};ECPointFp.decodeFrom=function(g,c){var f=c[0];var e=c.length-1;var d=c.slice(1,1+e/2);var b=c.slice(1+e/2,1+e);d.unshift(0);b.unshift(0);var a=new BigInteger(d);var h=new BigInteger(b);return new ECPointFp(g,g.fromBigInteger(a),g.fromBigInteger(h))};ECPointFp.decodeFromHex=function(g,c){var f=c.substr(0,2);var e=c.length-2;var d=c.substr(2,e/2);var b=c.substr(2+e/2,e/2);var a=new BigInteger(d,16);var h=new BigInteger(b,16);return new ECPointFp(g,g.fromBigInteger(a),g.fromBigInteger(h))};ECPointFp.prototype.add2D=function(c){if(this.isInfinity()){return c}if(c.isInfinity()){return this}if(this.x.equals(c.x)){if(this.y.equals(c.y)){return this.twice()}return this.curve.getInfinity()}var g=c.x.subtract(this.x);var e=c.y.subtract(this.y);var a=e.divide(g);var d=a.square().subtract(this.x).subtract(c.x);var f=a.multiply(this.x.subtract(d)).subtract(this.y);return new ECPointFp(this.curve,d,f)};ECPointFp.prototype.twice2D=function(){if(this.isInfinity()){return this}if(this.y.toBigInteger().signum()==0){return this.curve.getInfinity()}var b=this.curve.fromBigInteger(BigInteger.valueOf(2));var e=this.curve.fromBigInteger(BigInteger.valueOf(3));var a=this.x.square().multiply(e).add(this.curve.a).divide(this.y.multiply(b));var c=a.square().subtract(this.x.multiply(b));var d=a.multiply(this.x.subtract(c)).subtract(this.y);return new ECPointFp(this.curve,c,d)};ECPointFp.prototype.multiply2D=function(b){if(this.isInfinity()){return this}if(b.signum()==0){return this.curve.getInfinity()}var g=b;var f=g.multiply(new BigInteger(\"3\"));var l=this.negate();var d=this;var c;for(c=f.bitLength()-2;c>0;--c){d=d.twice();var a=f.testBit(c);var j=g.testBit(c);if(a!=j){d=d.add2D(a?this:l)}}return d};ECPointFp.prototype.isOnCurve=function(){var d=this.getX().toBigInteger();var i=this.getY().toBigInteger();var f=this.curve.getA().toBigInteger();var c=this.curve.getB().toBigInteger();var h=this.curve.getQ();var e=i.multiply(i).mod(h);var g=d.multiply(d).multiply(d).add(f.multiply(d)).add(c).mod(h);return e.equals(g)};ECPointFp.prototype.toString=function(){return\"(\"+this.getX().toBigInteger().toString()+\",\"+this.getY().toBigInteger().toString()+\")\"};ECPointFp.prototype.validate=function(){var c=this.curve.getQ();if(this.isInfinity()){throw new Error(\"Point is at infinity.\")}var a=this.getX().toBigInteger();var b=this.getY().toBigInteger();if(a.compareTo(BigInteger.ONE)<0||a.compareTo(c.subtract(BigInteger.ONE))>0){throw new Error(\"x coordinate out of bounds\")}if(b.compareTo(BigInteger.ONE)<0||b.compareTo(c.subtract(BigInteger.ONE))>0){throw new Error(\"y coordinate out of bounds\")}if(!this.isOnCurve()){throw new Error(\"Point is not on the curve.\")}if(this.multiply(c).isInfinity()){throw new Error(\"Point is not a scalar multiple of G.\")}return true};\n/*! Mike Samuel (c) 2009 | code.google.com/p/json-sans-eval\r\n */\r\nvar jsonParse=(function(){var e=\"(?:-?\\\\b(?:0|[1-9][0-9]*)(?:\\\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?\\\\b)\";var j='(?:[^\\\\0-\\\\x08\\\\x0a-\\\\x1f\"\\\\\\\\]|\\\\\\\\(?:[\"/\\\\\\\\bfnrt]|u[0-9A-Fa-f]{4}))';var i='(?:\"'+j+'*\")';var d=new RegExp(\"(?:false|true|null|[\\\\{\\\\}\\\\[\\\\]]|\"+e+\"|\"+i+\")\",\"g\");var k=new RegExp(\"\\\\\\\\(?:([^u])|u(.{4}))\",\"g\");var g={'\"':'\"',\"/\":\"/\",\"\\\\\":\"\\\\\",b:\"\\b\",f:\"\\f\",n:\"\\n\",r:\"\\r\",t:\"\\t\"};function h(l,m,n){return m?g[m]:String.fromCharCode(parseInt(n,16))}var c=new String(\"\");var a=\"\\\\\";var f={\"{\":Object,\"[\":Array};var b=Object.hasOwnProperty;return function(u,q){var p=u.match(d);var x;var v=p[0];var l=false;if(\"{\"===v){x={}}else{if(\"[\"===v){x=[]}else{x=[];l=true}}var t;var r=[x];for(var o=1-l,m=p.length;o<m;++o){v=p[o];var w;switch(v.charCodeAt(0)){default:w=r[0];w[t||w.length]=+(v);t=void 0;break;case 34:v=v.substring(1,v.length-1);if(v.indexOf(a)!==-1){v=v.replace(k,h)}w=r[0];if(!t){if(w instanceof Array){t=w.length}else{t=v||c;break}}w[t]=v;t=void 0;break;case 91:w=r[0];r.unshift(w[t||w.length]=[]);t=void 0;break;case 93:r.shift();break;case 102:w=r[0];w[t||w.length]=false;t=void 0;break;case 110:w=r[0];w[t||w.length]=null;t=void 0;break;case 116:w=r[0];w[t||w.length]=true;t=void 0;break;case 123:w=r[0];r.unshift(w[t||w.length]={});t=void 0;break;case 125:r.shift();break}}if(l){if(r.length!==1){throw new Error()}x=x[0]}else{if(r.length){throw new Error()}}if(q){var s=function(C,B){var D=C[B];if(D&&typeof D===\"object\"){var n=null;for(var z in D){if(b.call(D,z)&&D!==C){var y=s(D,z);if(y!==void 0){D[z]=y}else{if(!n){n=[]}n.push(z)}}}if(n){for(var A=n.length;--A>=0;){delete D[n[A]]}}}return q.call(C,B,D)};x=s({\"\":x},\"\")}return x}})();\nif(typeof KJUR==\"undefined\"||!KJUR){KJUR={}}if(typeof KJUR.asn1==\"undefined\"||!KJUR.asn1){KJUR.asn1={}}KJUR.asn1.ASN1Util=new function(){this.integerToByteHex=function(a){var b=a.toString(16);if((b.length%2)==1){b=\"0\"+b}return b};this.bigIntToMinTwosComplementsHex=function(j){var f=j.toString(16);if(f.substr(0,1)!=\"-\"){if(f.length%2==1){f=\"0\"+f}else{if(!f.match(/^[0-7]/)){f=\"00\"+f}}}else{var a=f.substr(1);var e=a.length;if(e%2==1){e+=1}else{if(!f.match(/^[0-7]/)){e+=2}}var g=\"\";for(var d=0;d<e;d++){g+=\"f\"}var c=new BigInteger(g,16);var b=c.xor(j).add(BigInteger.ONE);f=b.toString(16).replace(/^-/,\"\")}return f};this.getPEMStringFromHex=function(a,b){return hextopem(a,b)};this.newObject=function(k){var F=KJUR,o=F.asn1,v=o.ASN1Object,B=o.DERBoolean,e=o.DERInteger,t=o.DERBitString,h=o.DEROctetString,x=o.DERNull,y=o.DERObjectIdentifier,m=o.DEREnumerated,g=o.DERUTF8String,f=o.DERNumericString,A=o.DERPrintableString,w=o.DERTeletexString,q=o.DERIA5String,E=o.DERUTCTime,j=o.DERGeneralizedTime,b=o.DERVisibleString,l=o.DERBMPString,n=o.DERSequence,c=o.DERSet,s=o.DERTaggedObject,p=o.ASN1Util.newObject;if(k instanceof o.ASN1Object){return k}var u=Object.keys(k);if(u.length!=1){throw new Error(\"key of param shall be only one.\")}var H=u[0];if(\":asn1:bool:int:bitstr:octstr:null:oid:enum:utf8str:numstr:prnstr:telstr:ia5str:utctime:gentime:visstr:bmpstr:seq:set:tag:\".indexOf(\":\"+H+\":\")==-1){throw new Error(\"undefined key: \"+H)}if(H==\"bool\"){return new B(k[H])}if(H==\"int\"){return new e(k[H])}if(H==\"bitstr\"){return new t(k[H])}if(H==\"octstr\"){return new h(k[H])}if(H==\"null\"){return new x(k[H])}if(H==\"oid\"){return new y(k[H])}if(H==\"enum\"){return new m(k[H])}if(H==\"utf8str\"){return new g(k[H])}if(H==\"numstr\"){return new f(k[H])}if(H==\"prnstr\"){return new A(k[H])}if(H==\"telstr\"){return new w(k[H])}if(H==\"ia5str\"){return new q(k[H])}if(H==\"utctime\"){return new E(k[H])}if(H==\"gentime\"){return new j(k[H])}if(H==\"visstr\"){return new b(k[H])}if(H==\"bmpstr\"){return new l(k[H])}if(H==\"asn1\"){return new v(k[H])}if(H==\"seq\"){var d=k[H];var G=[];for(var z=0;z<d.length;z++){var D=p(d[z]);G.push(D)}return new n({array:G})}if(H==\"set\"){var d=k[H];var G=[];for(var z=0;z<d.length;z++){var D=p(d[z]);G.push(D)}return new c({array:G})}if(H==\"tag\"){var C=k[H];if(Object.prototype.toString.call(C)===\"[object Array]\"&&C.length==3){var r=p(C[2]);return new s({tag:C[0],explicit:C[1],obj:r})}else{return new s(C)}}};this.jsonToASN1HEX=function(b){var a=this.newObject(b);return a.getEncodedHex()}};KJUR.asn1.ASN1Util.oidHexToInt=function(a){var j=\"\";var k=parseInt(a.substr(0,2),16);var d=Math.floor(k/40);var c=k%40;var j=d+\".\"+c;var e=\"\";for(var f=2;f<a.length;f+=2){var g=parseInt(a.substr(f,2),16);var h=(\"00000000\"+g.toString(2)).slice(-8);e=e+h.substr(1,7);if(h.substr(0,1)==\"0\"){var b=new BigInteger(e,2);j=j+\".\"+b.toString(10);e=\"\"}}return j};KJUR.asn1.ASN1Util.oidIntToHex=function(f){var e=function(a){var k=a.toString(16);if(k.length==1){k=\"0\"+k}return k};var d=function(o){var n=\"\";var k=new BigInteger(o,10);var a=k.toString(2);var l=7-a.length%7;if(l==7){l=0}var q=\"\";for(var m=0;m<l;m++){q+=\"0\"}a=q+a;for(var m=0;m<a.length-1;m+=7){var p=a.substr(m,7);if(m!=a.length-7){p=\"1\"+p}n+=e(parseInt(p,2))}return n};if(!f.match(/^[0-9.]+$/)){throw\"malformed oid string: \"+f}var g=\"\";var b=f.split(\".\");var j=parseInt(b[0])*40+parseInt(b[1]);g+=e(j);b.splice(0,2);for(var c=0;c<b.length;c++){g+=d(b[c])}return g};KJUR.asn1.ASN1Object=function(e){var c=true;var b=null;var d=\"00\";var f=\"00\";var a=\"\";this.params=null;this.getLengthHexFromValue=function(){if(typeof this.hV==\"undefined\"||this.hV==null){throw new Error(\"this.hV is null or undefined\")}if(this.hV.length%2==1){throw new Error(\"value hex must be even length: n=\"+a.length+\",v=\"+this.hV)}var j=this.hV.length/2;var i=j.toString(16);if(i.length%2==1){i=\"0\"+i}if(j<128){return i}else{var h=i.length/2;if(h>15){throw\"ASN.1 length too long to represent by 8x: n = \"+j.toString(16)}var g=128+h;return g.toString(16)+i}};this.getEncodedHex=function(){if(this.hTLV==null||this.isModified){this.hV=this.getFreshValueHex();this.hL=this.getLengthHexFromValue();this.hTLV=this.hT+this.hL+this.hV;this.isModified=false}return this.hTLV};this.getValueHex=function(){this.getEncodedHex();return this.hV};this.getFreshValueHex=function(){return\"\"};this.setByParam=function(g){this.params=g};if(e!=undefined){if(e.tlv!=undefined){this.hTLV=e.tlv;this.isModified=false}}};KJUR.asn1.DERAbstractString=function(c){KJUR.asn1.DERAbstractString.superclass.constructor.call(this);var b=null;var a=null;this.getString=function(){return this.s};this.setString=function(d){this.hTLV=null;this.isModified=true;this.s=d;this.hV=utf8tohex(this.s).toLowerCase()};this.setStringHex=function(d){this.hTLV=null;this.isModified=true;this.s=null;this.hV=d};this.getFreshValueHex=function(){return this.hV};if(typeof c!=\"undefined\"){if(typeof c==\"string\"){this.setString(c)}else{if(typeof c.str!=\"undefined\"){this.setString(c.str)}else{if(typeof c.hex!=\"undefined\"){this.setStringHex(c.hex)}}}}};YAHOO.lang.extend(KJUR.asn1.DERAbstractString,KJUR.asn1.ASN1Object);KJUR.asn1.DERAbstractTime=function(c){KJUR.asn1.DERAbstractTime.superclass.constructor.call(this);var b=null;var a=null;this.localDateToUTC=function(g){var e=g.getTime()+(g.getTimezoneOffset()*60000);var f=new Date(e);return f};this.formatDate=function(m,o,e){var g=this.zeroPadding;var n=this.localDateToUTC(m);var p=String(n.getFullYear());if(o==\"utc\"){p=p.substr(2,2)}var l=g(String(n.getMonth()+1),2);var q=g(String(n.getDate()),2);var h=g(String(n.getHours()),2);var i=g(String(n.getMinutes()),2);var j=g(String(n.getSeconds()),2);var r=p+l+q+h+i+j;if(e===true){var f=n.getMilliseconds();if(f!=0){var k=g(String(f),3);k=k.replace(/[0]+$/,\"\");r=r+\".\"+k}}return r+\"Z\"};this.zeroPadding=function(e,d){if(e.length>=d){return e}return new Array(d-e.length+1).join(\"0\")+e};this.getString=function(){return this.s};this.setString=function(d){this.hTLV=null;this.isModified=true;this.s=d;this.hV=stohex(d)};this.setByDateValue=function(h,j,e,d,f,g){var i=new Date(Date.UTC(h,j-1,e,d,f,g,0));this.setByDate(i)};this.getFreshValueHex=function(){return this.hV}};YAHOO.lang.extend(KJUR.asn1.DERAbstractTime,KJUR.asn1.ASN1Object);KJUR.asn1.DERAbstractStructured=function(b){KJUR.asn1.DERAbstractString.superclass.constructor.call(this);var a=null;this.setByASN1ObjectArray=function(c){this.hTLV=null;this.isModified=true;this.asn1Array=c};this.appendASN1Object=function(c){this.hTLV=null;this.isModified=true;this.asn1Array.push(c)};this.asn1Array=new Array();if(typeof b!=\"undefined\"){if(typeof b.array!=\"undefined\"){this.asn1Array=b.array}}};YAHOO.lang.extend(KJUR.asn1.DERAbstractStructured,KJUR.asn1.ASN1Object);KJUR.asn1.DERBoolean=function(a){KJUR.asn1.DERBoolean.superclass.constructor.call(this);this.hT=\"01\";if(a==false){this.hTLV=\"010100\"}else{this.hTLV=\"0101ff\"}};YAHOO.lang.extend(KJUR.asn1.DERBoolean,KJUR.asn1.ASN1Object);KJUR.asn1.DERInteger=function(a){KJUR.asn1.DERInteger.superclass.constructor.call(this);this.hT=\"02\";this.setByBigInteger=function(b){this.hTLV=null;this.isModified=true;this.hV=KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(b)};this.setByInteger=function(c){var b=new BigInteger(String(c),10);this.setByBigInteger(b)};this.setValueHex=function(b){this.hV=b};this.getFreshValueHex=function(){return this.hV};if(typeof a!=\"undefined\"){if(typeof a.bigint!=\"undefined\"){this.setByBigInteger(a.bigint)}else{if(typeof a[\"int\"]!=\"undefined\"){this.setByInteger(a[\"int\"])}else{if(typeof a==\"number\"){this.setByInteger(a)}else{if(typeof a.hex!=\"undefined\"){this.setValueHex(a.hex)}}}}}};YAHOO.lang.extend(KJUR.asn1.DERInteger,KJUR.asn1.ASN1Object);KJUR.asn1.DERBitString=function(b){if(b!==undefined&&typeof b.obj!==\"undefined\"){var a=KJUR.asn1.ASN1Util.newObject(b.obj);b.hex=\"00\"+a.getEncodedHex()}KJUR.asn1.DERBitString.superclass.constructor.call(this);this.hT=\"03\";this.setHexValueIncludingUnusedBits=function(c){this.hTLV=null;this.isModified=true;this.hV=c};this.setUnusedBitsAndHexValue=function(c,e){if(c<0||7<c){throw\"unused bits shall be from 0 to 7: u = \"+c}var d=\"0\"+c;this.hTLV=null;this.isModified=true;this.hV=d+e};this.setByBinaryString=function(e){e=e.replace(/0+$/,\"\");var f=8-e.length%8;if(f==8){f=0}for(var g=0;g<=f;g++){e+=\"0\"}var j=\"\";for(var g=0;g<e.length-1;g+=8){var d=e.substr(g,8);var c=parseInt(d,2).toString(16);if(c.length==1){c=\"0\"+c}j+=c}this.hTLV=null;this.isModified=true;this.hV=\"0\"+f+j};this.setByBooleanArray=function(e){var d=\"\";for(var c=0;c<e.length;c++){if(e[c]==true){d+=\"1\"}else{d+=\"0\"}}this.setByBinaryString(d)};this.newFalseArray=function(e){var c=new Array(e);for(var d=0;d<e;d++){c[d]=false}return c};this.getFreshValueHex=function(){return this.hV};if(typeof b!=\"undefined\"){if(typeof b==\"string\"&&b.toLowerCase().match(/^[0-9a-f]+$/)){this.setHexValueIncludingUnusedBits(b)}else{if(typeof b.hex!=\"undefined\"){this.setHexValueIncludingUnusedBits(b.hex)}else{if(typeof b.bin!=\"undefined\"){this.setByBinaryString(b.bin)}else{if(typeof b.array!=\"undefined\"){this.setByBooleanArray(b.array)}}}}}};YAHOO.lang.extend(KJUR.asn1.DERBitString,KJUR.asn1.ASN1Object);KJUR.asn1.DEROctetString=function(b){if(b!==undefined&&typeof b.obj!==\"undefined\"){var a=KJUR.asn1.ASN1Util.newObject(b.obj);b.hex=a.getEncodedHex()}KJUR.asn1.DEROctetString.superclass.constructor.call(this,b);this.hT=\"04\"};YAHOO.lang.extend(KJUR.asn1.DEROctetString,KJUR.asn1.DERAbstractString);KJUR.asn1.DERNull=function(){KJUR.asn1.DERNull.superclass.constructor.call(this);this.hT=\"05\";this.hTLV=\"0500\"};YAHOO.lang.extend(KJUR.asn1.DERNull,KJUR.asn1.ASN1Object);KJUR.asn1.DERObjectIdentifier=function(a){KJUR.asn1.DERObjectIdentifier.superclass.constructor.call(this);this.hT=\"06\";this.setValueHex=function(b){this.hTLV=null;this.isModified=true;this.s=null;this.hV=b};this.setValueOidString=function(b){var c=oidtohex(b);if(c==null){throw new Error(\"malformed oid string: \"+b)}this.hTLV=null;this.isModified=true;this.s=null;this.hV=c};this.setValueName=function(c){var b=KJUR.asn1.x509.OID.name2oid(c);if(b!==\"\"){this.setValueOidString(b)}else{throw new Error(\"DERObjectIdentifier oidName undefined: \"+c)}};this.setValueNameOrOid=function(b){if(b.match(/^[0-2].[0-9.]+$/)){this.setValueOidString(b)}else{this.setValueName(b)}};this.getFreshValueHex=function(){return this.hV};this.setByParam=function(b){if(typeof b===\"string\"){this.setValueNameOrOid(b)}else{if(b.oid!==undefined){this.setValueNameOrOid(b.oid)}else{if(b.name!==undefined){this.setValueNameOrOid(b.name)}else{if(b.hex!==undefined){this.setValueHex(b.hex)}}}}};if(a!==undefined){this.setByParam(a)}};YAHOO.lang.extend(KJUR.asn1.DERObjectIdentifier,KJUR.asn1.ASN1Object);KJUR.asn1.DEREnumerated=function(a){KJUR.asn1.DEREnumerated.superclass.constructor.call(this);this.hT=\"0a\";this.setByBigInteger=function(b){this.hTLV=null;this.isModified=true;this.hV=KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(b)};this.setByInteger=function(c){var b=new BigInteger(String(c),10);this.setByBigInteger(b)};this.setValueHex=function(b){this.hV=b};this.getFreshValueHex=function(){return this.hV};if(typeof a!=\"undefined\"){if(typeof a[\"int\"]!=\"undefined\"){this.setByInteger(a[\"int\"])}else{if(typeof a==\"number\"){this.setByInteger(a)}else{if(typeof a.hex!=\"undefined\"){this.setValueHex(a.hex)}}}}};YAHOO.lang.extend(KJUR.asn1.DEREnumerated,KJUR.asn1.ASN1Object);KJUR.asn1.DERUTF8String=function(a){KJUR.asn1.DERUTF8String.superclass.constructor.call(this,a);this.hT=\"0c\"};YAHOO.lang.extend(KJUR.asn1.DERUTF8String,KJUR.asn1.DERAbstractString);KJUR.asn1.DERNumericString=function(a){KJUR.asn1.DERNumericString.superclass.constructor.call(this,a);this.hT=\"12\"};YAHOO.lang.extend(KJUR.asn1.DERNumericString,KJUR.asn1.DERAbstractString);KJUR.asn1.DERPrintableString=function(a){KJUR.asn1.DERPrintableString.superclass.constructor.call(this,a);this.hT=\"13\"};YAHOO.lang.extend(KJUR.asn1.DERPrintableString,KJUR.asn1.DERAbstractString);KJUR.asn1.DERTeletexString=function(a){KJUR.asn1.DERTeletexString.superclass.constructor.call(this,a);this.hT=\"14\"};YAHOO.lang.extend(KJUR.asn1.DERTeletexString,KJUR.asn1.DERAbstractString);KJUR.asn1.DERIA5String=function(a){KJUR.asn1.DERIA5String.superclass.constructor.call(this,a);this.hT=\"16\"};YAHOO.lang.extend(KJUR.asn1.DERIA5String,KJUR.asn1.DERAbstractString);KJUR.asn1.DERVisibleString=function(a){KJUR.asn1.DERIA5String.superclass.constructor.call(this,a);this.hT=\"1a\"};YAHOO.lang.extend(KJUR.asn1.DERVisibleString,KJUR.asn1.DERAbstractString);KJUR.asn1.DERBMPString=function(a){KJUR.asn1.DERBMPString.superclass.constructor.call(this,a);this.hT=\"1e\"};YAHOO.lang.extend(KJUR.asn1.DERBMPString,KJUR.asn1.DERAbstractString);KJUR.asn1.DERUTCTime=function(a){KJUR.asn1.DERUTCTime.superclass.constructor.call(this,a);this.hT=\"17\";this.setByDate=function(b){this.hTLV=null;this.isModified=true;this.date=b;this.s=this.formatDate(this.date,\"utc\");this.hV=stohex(this.s)};this.getFreshValueHex=function(){if(typeof this.date==\"undefined\"&&typeof this.s==\"undefined\"){this.date=new Date();this.s=this.formatDate(this.date,\"utc\");this.hV=stohex(this.s)}return this.hV};if(a!==undefined){if(a.str!==undefined){this.setString(a.str)}else{if(typeof a==\"string\"&&a.match(/^[0-9]{12}Z$/)){this.setString(a)}else{if(a.hex!==undefined){this.setStringHex(a.hex)}else{if(a.date!==undefined){this.setByDate(a.date)}}}}}};YAHOO.lang.extend(KJUR.asn1.DERUTCTime,KJUR.asn1.DERAbstractTime);KJUR.asn1.DERGeneralizedTime=function(a){KJUR.asn1.DERGeneralizedTime.superclass.constructor.call(this,a);this.hT=\"18\";this.withMillis=false;this.setByDate=function(b){this.hTLV=null;this.isModified=true;this.date=b;this.s=this.formatDate(this.date,\"gen\",this.withMillis);this.hV=stohex(this.s)};this.getFreshValueHex=function(){if(this.date===undefined&&this.s===undefined){this.date=new Date();this.s=this.formatDate(this.date,\"gen\",this.withMillis);this.hV=stohex(this.s)}return this.hV};if(a!==undefined){if(a.str!==undefined){this.setString(a.str)}else{if(typeof a==\"string\"&&a.match(/^[0-9]{14}Z$/)){this.setString(a)}else{if(a.hex!==undefined){this.setStringHex(a.hex)}else{if(a.date!==undefined){this.setByDate(a.date)}}}}if(a.millis===true){this.withMillis=true}}};YAHOO.lang.extend(KJUR.asn1.DERGeneralizedTime,KJUR.asn1.DERAbstractTime);KJUR.asn1.DERSequence=function(a){KJUR.asn1.DERSequence.superclass.constructor.call(this,a);this.hT=\"30\";this.getFreshValueHex=function(){var c=\"\";for(var b=0;b<this.asn1Array.length;b++){var d=this.asn1Array[b];c+=d.getEncodedHex()}this.hV=c;return this.hV}};YAHOO.lang.extend(KJUR.asn1.DERSequence,KJUR.asn1.DERAbstractStructured);KJUR.asn1.DERSet=function(a){KJUR.asn1.DERSet.superclass.constructor.call(this,a);this.hT=\"31\";this.sortFlag=true;this.getFreshValueHex=function(){var b=new Array();for(var c=0;c<this.asn1Array.length;c++){var d=this.asn1Array[c];b.push(d.getEncodedHex())}if(this.sortFlag==true){b.sort()}this.hV=b.join(\"\");return this.hV};if(typeof a!=\"undefined\"){if(typeof a.sortflag!=\"undefined\"&&a.sortflag==false){this.sortFlag=false}}};YAHOO.lang.extend(KJUR.asn1.DERSet,KJUR.asn1.DERAbstractStructured);KJUR.asn1.DERTaggedObject=function(b){KJUR.asn1.DERTaggedObject.superclass.constructor.call(this);var a=KJUR.asn1;this.hT=\"a0\";this.hV=\"\";this.isExplicit=true;this.asn1Object=null;this.setASN1Object=function(c,d,e){this.hT=d;this.isExplicit=c;this.asn1Object=e;if(this.isExplicit){this.hV=this.asn1Object.getEncodedHex();this.hTLV=null;this.isModified=true}else{this.hV=null;this.hTLV=e.getEncodedHex();this.hTLV=this.hTLV.replace(/^../,d);this.isModified=false}};this.getFreshValueHex=function(){return this.hV};this.setByParam=function(c){if(c.tag!=undefined){this.hT=c.tag}if(c.explicit!=undefined){this.isExplicit=c.explicit}if(c.tage!=undefined){this.hT=c.tage;this.isExplicit=true}if(c.tagi!=undefined){this.hT=c.tagi;this.isExplicit=false}if(c.obj!=undefined){if(c.obj instanceof a.ASN1Object){this.asn1Object=c.obj;this.setASN1Object(this.isExplicit,this.hT,this.asn1Object)}else{if(typeof c.obj==\"object\"){this.asn1Object=a.ASN1Util.newObject(c.obj);this.setASN1Object(this.isExplicit,this.hT,this.asn1Object)}}}};if(b!=undefined){this.setByParam(b)}};YAHOO.lang.extend(KJUR.asn1.DERTaggedObject,KJUR.asn1.ASN1Object);\nvar ASN1HEX=new function(){};ASN1HEX.getLblen=function(c,a){if(c.substr(a+2,1)!=\"8\"){return 1}var b=parseInt(c.substr(a+3,1));if(b==0){return -1}if(0<b&&b<10){return b+1}return -2};ASN1HEX.getL=function(c,b){var a=ASN1HEX.getLblen(c,b);if(a<1){return\"\"}return c.substr(b+2,a*2)};ASN1HEX.getVblen=function(d,a){var c,b;c=ASN1HEX.getL(d,a);if(c==\"\"){return -1}if(c.substr(0,1)===\"8\"){b=new BigInteger(c.substr(2),16)}else{b=new BigInteger(c,16)}return b.intValue()};ASN1HEX.getVidx=function(c,b){var a=ASN1HEX.getLblen(c,b);if(a<0){return a}return b+(a+1)*2};ASN1HEX.getV=function(d,a){var c=ASN1HEX.getVidx(d,a);var b=ASN1HEX.getVblen(d,a);return d.substr(c,b*2)};ASN1HEX.getTLV=function(b,a){return b.substr(a,2)+ASN1HEX.getL(b,a)+ASN1HEX.getV(b,a)};ASN1HEX.getTLVblen=function(b,a){return 2+ASN1HEX.getLblen(b,a)*2+ASN1HEX.getVblen(b,a)*2};ASN1HEX.getNextSiblingIdx=function(d,a){var c=ASN1HEX.getVidx(d,a);var b=ASN1HEX.getVblen(d,a);return c+b*2};ASN1HEX.getChildIdx=function(e,k){var l=ASN1HEX;var j=[];var c,f,g;c=l.getVidx(e,k);f=l.getVblen(e,k)*2;if(e.substr(k,2)==\"03\"){c+=2;f-=2}g=0;var d=c;while(g<=f){var b=l.getTLVblen(e,d);g+=b;if(g<=f){j.push(d)}d+=b;if(g>=f){break}}return j};ASN1HEX.getNthChildIdx=function(d,b,e){var c=ASN1HEX.getChildIdx(d,b);return c[e]};ASN1HEX.getIdxbyList=function(e,d,c,i){var g=ASN1HEX;var f,b;if(c.length==0){if(i!==undefined){if(e.substr(d,2)!==i){return -1}}return d}f=c.shift();b=g.getChildIdx(e,d);if(f>=b.length){return -1}return g.getIdxbyList(e,b[f],c,i)};ASN1HEX.getIdxbyListEx=function(f,k,b,g){var m=ASN1HEX;var d,l;if(b.length==0){if(g!==undefined){if(f.substr(k,2)!==g){return -1}}return k}d=b.shift();l=m.getChildIdx(f,k);var j=0;for(var e=0;e<l.length;e++){var c=f.substr(l[e],2);if((typeof d==\"number\"&&(!m.isContextTag(c))&&j==d)||(typeof d==\"string\"&&m.isContextTag(c,d))){return m.getIdxbyListEx(f,l[e],b,g)}if(!m.isContextTag(c)){j++}}return -1};ASN1HEX.getTLVbyList=function(d,c,b,f){var e=ASN1HEX;var a=e.getIdxbyList(d,c,b,f);if(a==-1){return null}if(a>=d.length){return null}return e.getTLV(d,a)};ASN1HEX.getTLVbyListEx=function(d,c,b,f){var e=ASN1HEX;var a=e.getIdxbyListEx(d,c,b,f);if(a==-1){return null}return e.getTLV(d,a)};ASN1HEX.getVbyList=function(e,c,b,g,i){var f=ASN1HEX;var a,d;a=f.getIdxbyList(e,c,b,g);if(a==-1){return null}if(a>=e.length){return null}d=f.getV(e,a);if(i===true){d=d.substr(2)}return d};ASN1HEX.getVbyListEx=function(b,e,a,d,f){var j=ASN1HEX;var g,c,i;g=j.getIdxbyListEx(b,e,a,d);if(g==-1){return null}i=j.getV(b,g);if(b.substr(g,2)==\"03\"&&f!==false){i=i.substr(2)}return i};ASN1HEX.getInt=function(e,b,f){if(f==undefined){f=-1}try{var c=e.substr(b,2);if(c!=\"02\"&&c!=\"03\"){return f}var a=ASN1HEX.getV(e,b);if(c==\"02\"){return parseInt(a,16)}else{return bitstrtoint(a)}}catch(d){return f}};ASN1HEX.getOID=function(c,a,d){if(d==undefined){d=null}try{if(c.substr(a,2)!=\"06\"){return d}var e=ASN1HEX.getV(c,a);return hextooid(e)}catch(b){return d}};ASN1HEX.getOIDName=function(d,a,f){if(f==undefined){f=null}try{var e=ASN1HEX.getOID(d,a,f);if(e==f){return f}var b=KJUR.asn1.x509.OID.oid2name(e);if(b==\"\"){return e}return b}catch(c){return f}};ASN1HEX.getString=function(d,b,e){if(e==undefined){e=null}try{var a=ASN1HEX.getV(d,b);return hextorstr(a)}catch(c){return e}};ASN1HEX.hextooidstr=function(e){var h=function(b,a){if(b.length>=a){return b}return new Array(a-b.length+1).join(\"0\")+b};var l=[];var o=e.substr(0,2);var f=parseInt(o,16);l[0]=new String(Math.floor(f/40));l[1]=new String(f%40);var m=e.substr(2);var k=[];for(var g=0;g<m.length/2;g++){k.push(parseInt(m.substr(g*2,2),16))}var j=[];var d=\"\";for(var g=0;g<k.length;g++){if(k[g]&128){d=d+h((k[g]&127).toString(2),7)}else{d=d+h((k[g]&127).toString(2),7);j.push(new String(parseInt(d,2)));d=\"\"}}var n=l.join(\".\");if(j.length>0){n=n+\".\"+j.join(\".\")}return n};ASN1HEX.dump=function(t,c,l,g){var p=ASN1HEX;var j=p.getV;var y=p.dump;var w=p.getChildIdx;var e=t;if(t instanceof KJUR.asn1.ASN1Object){e=t.getEncodedHex()}var q=function(A,i){if(A.length<=i*2){return A}else{var v=A.substr(0,i)+\"..(total \"+A.length/2+\"bytes)..\"+A.substr(A.length-i,i);return v}};if(c===undefined){c={ommit_long_octet:32}}if(l===undefined){l=0}if(g===undefined){g=\"\"}var x=c.ommit_long_octet;var z=e.substr(l,2);if(z==\"01\"){var h=j(e,l);if(h==\"00\"){return g+\"BOOLEAN FALSE\\n\"}else{return g+\"BOOLEAN TRUE\\n\"}}if(z==\"02\"){var h=j(e,l);return g+\"INTEGER \"+q(h,x)+\"\\n\"}if(z==\"03\"){var h=j(e,l);if(p.isASN1HEX(h.substr(2))){var k=g+\"BITSTRING, encapsulates\\n\";k=k+y(h.substr(2),c,0,g+\"  \");return k}else{return g+\"BITSTRING \"+q(h,x)+\"\\n\"}}if(z==\"04\"){var h=j(e,l);if(p.isASN1HEX(h)){var k=g+\"OCTETSTRING, encapsulates\\n\";k=k+y(h,c,0,g+\"  \");return k}else{return g+\"OCTETSTRING \"+q(h,x)+\"\\n\"}}if(z==\"05\"){return g+\"NULL\\n\"}if(z==\"06\"){var m=j(e,l);var b=KJUR.asn1.ASN1Util.oidHexToInt(m);var o=KJUR.asn1.x509.OID.oid2name(b);var a=b.replace(/\\./g,\" \");if(o!=\"\"){return g+\"ObjectIdentifier \"+o+\" (\"+a+\")\\n\"}else{return g+\"ObjectIdentifier (\"+a+\")\\n\"}}if(z==\"0a\"){return g+\"ENUMERATED \"+parseInt(j(e,l))+\"\\n\"}if(z==\"0c\"){return g+\"UTF8String '\"+hextoutf8(j(e,l))+\"'\\n\"}if(z==\"13\"){return g+\"PrintableString '\"+hextoutf8(j(e,l))+\"'\\n\"}if(z==\"14\"){return g+\"TeletexString '\"+hextoutf8(j(e,l))+\"'\\n\"}if(z==\"16\"){return g+\"IA5String '\"+hextoutf8(j(e,l))+\"'\\n\"}if(z==\"17\"){return g+\"UTCTime \"+hextoutf8(j(e,l))+\"\\n\"}if(z==\"18\"){return g+\"GeneralizedTime \"+hextoutf8(j(e,l))+\"\\n\"}if(z==\"1a\"){return g+\"VisualString '\"+hextoutf8(j(e,l))+\"'\\n\"}if(z==\"1e\"){return g+\"BMPString '\"+hextoutf8(j(e,l))+\"'\\n\"}if(z==\"30\"){if(e.substr(l,4)==\"3000\"){return g+\"SEQUENCE {}\\n\"}var k=g+\"SEQUENCE\\n\";var d=w(e,l);var f=c;if((d.length==2||d.length==3)&&e.substr(d[0],2)==\"06\"&&e.substr(d[d.length-1],2)==\"04\"){var o=p.oidname(j(e,d[0]));var r=JSON.parse(JSON.stringify(c));r.x509ExtName=o;f=r}for(var u=0;u<d.length;u++){k=k+y(e,f,d[u],g+\"  \")}return k}if(z==\"31\"){var k=g+\"SET\\n\";var d=w(e,l);for(var u=0;u<d.length;u++){k=k+y(e,c,d[u],g+\"  \")}return k}var z=parseInt(z,16);if((z&128)!=0){var n=z&31;if((z&32)!=0){var k=g+\"[\"+n+\"]\\n\";var d=w(e,l);for(var u=0;u<d.length;u++){k=k+y(e,c,d[u],g+\"  \")}return k}else{var h=j(e,l);if(ASN1HEX.isASN1HEX(h)){var k=g+\"[\"+n+\"]\\n\";k=k+y(h,c,0,g+\"  \");return k}else{if(h.substr(0,8)==\"68747470\"){h=hextoutf8(h)}else{if(c.x509ExtName===\"subjectAltName\"&&n==2){h=hextoutf8(h)}}}var k=g+\"[\"+n+\"] \"+h+\"\\n\";return k}}return g+\"UNKNOWN(\"+z+\") \"+j(e,l)+\"\\n\"};ASN1HEX.isContextTag=function(c,b){c=c.toLowerCase();var f,e;try{f=parseInt(c,16)}catch(d){return -1}if(b===undefined){if((f&192)==128){return true}else{return false}}try{var a=b.match(/^\\[[0-9]+\\]$/);if(a==null){return false}e=parseInt(b.substr(1,b.length-1),10);if(e>31){return false}if(((f&192)==128)&&((f&31)==e)){return true}return false}catch(d){return false}};ASN1HEX.isASN1HEX=function(e){var d=ASN1HEX;if(e.length%2==1){return false}var c=d.getVblen(e,0);var b=e.substr(0,2);var f=d.getL(e,0);var a=e.length-b.length-f.length;if(a==c*2){return true}return false};ASN1HEX.checkStrictDER=function(g,o,d,c,r){var s=ASN1HEX;if(d===undefined){if(typeof g!=\"string\"){throw new Error(\"not hex string\")}g=g.toLowerCase();if(!KJUR.lang.String.isHex(g)){throw new Error(\"not hex string\")}d=g.length;c=g.length/2;if(c<128){r=1}else{r=Math.ceil(c.toString(16))+1}}var k=s.getL(g,o);if(k.length>r*2){throw new Error(\"L of TLV too long: idx=\"+o)}var n=s.getVblen(g,o);if(n>c){throw new Error(\"value of L too long than hex: idx=\"+o)}var q=s.getTLV(g,o);var f=q.length-2-s.getL(g,o).length;if(f!==(n*2)){throw new Error(\"V string length and L's value not the same:\"+f+\"/\"+(n*2))}if(o===0){if(g.length!=q.length){throw new Error(\"total length and TLV length unmatch:\"+g.length+\"!=\"+q.length)}}var b=g.substr(o,2);if(b===\"02\"){var a=s.getVidx(g,o);if(g.substr(a,2)==\"00\"&&g.charCodeAt(a+2)<56){throw new Error(\"not least zeros for DER INTEGER\")}}if(parseInt(b,16)&32){var p=s.getVblen(g,o);var m=0;var l=s.getChildIdx(g,o);for(var e=0;e<l.length;e++){var j=s.getTLV(g,l[e]);m+=j.length;s.checkStrictDER(g,l[e],d,c,r)}if((p*2)!=m){throw new Error(\"sum of children's TLV length and L unmatch: \"+(p*2)+\"!=\"+m)}}};ASN1HEX.oidname=function(a){var c=KJUR.asn1;if(KJUR.lang.String.isHex(a)){a=c.ASN1Util.oidHexToInt(a)}var b=c.x509.OID.oid2name(a);if(b===\"\"){b=a}return b};\nvar KJUR;if(typeof KJUR==\"undefined\"||!KJUR){KJUR={}}if(typeof KJUR.lang==\"undefined\"||!KJUR.lang){KJUR.lang={}}KJUR.lang.String=function(){};function Base64x(){}function stoBA(d){var b=new Array();for(var c=0;c<d.length;c++){b[c]=d.charCodeAt(c)}return b}function BAtos(b){var d=\"\";for(var c=0;c<b.length;c++){d=d+String.fromCharCode(b[c])}return d}function BAtohex(b){var e=\"\";for(var d=0;d<b.length;d++){var c=b[d].toString(16);if(c.length==1){c=\"0\"+c}e=e+c}return e}function stohex(a){return BAtohex(stoBA(a))}function stob64(a){return hex2b64(stohex(a))}function stob64u(a){return b64tob64u(hex2b64(stohex(a)))}function b64utos(a){return BAtos(b64toBA(b64utob64(a)))}function b64tob64u(a){a=a.replace(/\\=/g,\"\");a=a.replace(/\\+/g,\"-\");a=a.replace(/\\//g,\"_\");return a}function b64utob64(a){if(a.length%4==2){a=a+\"==\"}else{if(a.length%4==3){a=a+\"=\"}}a=a.replace(/-/g,\"+\");a=a.replace(/_/g,\"/\");return a}function hextob64u(a){if(a.length%2==1){a=\"0\"+a}return b64tob64u(hex2b64(a))}function b64utohex(a){return b64tohex(b64utob64(a))}var utf8tob64u,b64utoutf8;if(typeof Buffer===\"function\"){utf8tob64u=function(a){return b64tob64u(Buffer.from(a,\"utf8\").toString(\"base64\"))};b64utoutf8=function(a){return Buffer.from(b64utob64(a),\"base64\").toString(\"utf8\")}}else{utf8tob64u=function(a){return hextob64u(uricmptohex(encodeURIComponentAll(a)))};b64utoutf8=function(a){return decodeURIComponent(hextouricmp(b64utohex(a)))}}function utf8tob64(a){return hex2b64(uricmptohex(encodeURIComponentAll(a)))}function b64toutf8(a){return decodeURIComponent(hextouricmp(b64tohex(a)))}function utf8tohex(a){return uricmptohex(encodeURIComponentAll(a))}function hextoutf8(a){return decodeURIComponent(hextouricmp(a))}function hextorstr(c){var b=\"\";for(var a=0;a<c.length-1;a+=2){b+=String.fromCharCode(parseInt(c.substr(a,2),16))}return b}function rstrtohex(c){var a=\"\";for(var b=0;b<c.length;b++){a+=(\"0\"+c.charCodeAt(b).toString(16)).slice(-2)}return a}function hextob64(a){return hex2b64(a)}function hextob64nl(b){var a=hextob64(b);var c=a.replace(/(.{64})/g,\"$1\\r\\n\");c=c.replace(/\\r\\n$/,\"\");return c}function b64nltohex(b){var a=b.replace(/[^0-9A-Za-z\\/+=]*/g,\"\");var c=b64tohex(a);return c}function hextopem(a,b){var c=hextob64nl(a);return\"-----BEGIN \"+b+\"-----\\r\\n\"+c+\"\\r\\n-----END \"+b+\"-----\\r\\n\"}function pemtohex(a,b){if(a.indexOf(\"-----BEGIN \")==-1){throw\"can't find PEM header: \"+b}if(b!==undefined){a=a.replace(new RegExp(\"^[^]*-----BEGIN \"+b+\"-----\"),\"\");a=a.replace(new RegExp(\"-----END \"+b+\"-----[^]*$\"),\"\")}else{a=a.replace(/^[^]*-----BEGIN [^-]+-----/,\"\");a=a.replace(/-----END [^-]+-----[^]*$/,\"\")}return b64nltohex(a)}function hextoArrayBuffer(d){if(d.length%2!=0){throw\"input is not even length\"}if(d.match(/^[0-9A-Fa-f]+$/)==null){throw\"input is not hexadecimal\"}var b=new ArrayBuffer(d.length/2);var a=new DataView(b);for(var c=0;c<d.length/2;c++){a.setUint8(c,parseInt(d.substr(c*2,2),16))}return b}function ArrayBuffertohex(b){var d=\"\";var a=new DataView(b);for(var c=0;c<b.byteLength;c++){d+=(\"00\"+a.getUint8(c).toString(16)).slice(-2)}return d}function zulutomsec(n){var l,j,m,e,f,i,b,k;var a,h,g,c;c=n.match(/^(\\d{2}|\\d{4})(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(|\\.\\d+)Z$/);if(c){a=c[1];l=parseInt(a);if(a.length===2){if(50<=l&&l<100){l=1900+l}else{if(0<=l&&l<50){l=2000+l}}}j=parseInt(c[2])-1;m=parseInt(c[3]);e=parseInt(c[4]);f=parseInt(c[5]);i=parseInt(c[6]);b=0;h=c[7];if(h!==\"\"){g=(h.substr(1)+\"00\").substr(0,3);b=parseInt(g)}return Date.UTC(l,j,m,e,f,i,b)}throw\"unsupported zulu format: \"+n}function zulutosec(a){var b=zulutomsec(a);return ~~(b/1000)}function zulutodate(a){return new Date(zulutomsec(a))}function datetozulu(g,e,f){var b;var a=g.getUTCFullYear();if(e){if(a<1950||2049<a){throw\"not proper year for UTCTime: \"+a}b=(\"\"+a).slice(-2)}else{b=(\"000\"+a).slice(-4)}b+=(\"0\"+(g.getUTCMonth()+1)).slice(-2);b+=(\"0\"+g.getUTCDate()).slice(-2);b+=(\"0\"+g.getUTCHours()).slice(-2);b+=(\"0\"+g.getUTCMinutes()).slice(-2);b+=(\"0\"+g.getUTCSeconds()).slice(-2);if(f){var c=g.getUTCMilliseconds();if(c!==0){c=(\"00\"+c).slice(-3);c=c.replace(/0+$/g,\"\");b+=\".\"+c}}b+=\"Z\";return b}function uricmptohex(a){return a.replace(/%/g,\"\")}function hextouricmp(a){return a.replace(/(..)/g,\"%$1\")}function ipv6tohex(g){var b=\"malformed IPv6 address\";if(!g.match(/^[0-9A-Fa-f:]+$/)){throw b}g=g.toLowerCase();var d=g.split(\":\").length-1;if(d<2){throw b}var e=\":\".repeat(7-d+2);g=g.replace(\"::\",e);var c=g.split(\":\");if(c.length!=8){throw b}for(var f=0;f<8;f++){c[f]=(\"0000\"+c[f]).slice(-4)}return c.join(\"\")}function hextoipv6(e){if(!e.match(/^[0-9A-Fa-f]{32}$/)){throw\"malformed IPv6 address octet\"}e=e.toLowerCase();var b=e.match(/.{1,4}/g);for(var d=0;d<8;d++){b[d]=b[d].replace(/^0+/,\"\");if(b[d]==\"\"){b[d]=\"0\"}}e=\":\"+b.join(\":\")+\":\";var c=e.match(/:(0:){2,}/g);if(c===null){return e.slice(1,-1)}var f=\"\";for(var d=0;d<c.length;d++){if(c[d].length>f.length){f=c[d]}}e=e.replace(f,\"::\");return e.slice(1,-1)}function hextoip(b){var d=\"malformed hex value\";if(!b.match(/^([0-9A-Fa-f][0-9A-Fa-f]){1,}$/)){throw d}if(b.length==8){var c;try{c=parseInt(b.substr(0,2),16)+\".\"+parseInt(b.substr(2,2),16)+\".\"+parseInt(b.substr(4,2),16)+\".\"+parseInt(b.substr(6,2),16);return c}catch(a){throw d}}else{if(b.length==32){return hextoipv6(b)}else{return b}}}function iptohex(f){var j=\"malformed IP address\";f=f.toLowerCase(f);if(f.match(/^[0-9.]+$/)){var b=f.split(\".\");if(b.length!==4){throw j}var g=\"\";try{for(var e=0;e<4;e++){var h=parseInt(b[e]);g+=(\"0\"+h.toString(16)).slice(-2)}return g}catch(c){throw j}}else{if(f.match(/^[0-9a-f:]+$/)&&f.indexOf(\":\")!==-1){return ipv6tohex(f)}else{throw j}}}function encodeURIComponentAll(a){var d=encodeURIComponent(a);var b=\"\";for(var c=0;c<d.length;c++){if(d[c]==\"%\"){b=b+d.substr(c,3);c=c+2}else{b=b+\"%\"+stohex(d[c])}}return b}function newline_toUnix(a){a=a.replace(/\\r\\n/mg,\"\\n\");return a}function newline_toDos(a){a=a.replace(/\\r\\n/mg,\"\\n\");a=a.replace(/\\n/mg,\"\\r\\n\");return a}KJUR.lang.String.isInteger=function(a){if(a.match(/^[0-9]+$/)){return true}else{if(a.match(/^-[0-9]+$/)){return true}else{return false}}};KJUR.lang.String.isHex=function(a){return ishex(a)};function ishex(a){if(a.length%2==0&&(a.match(/^[0-9a-f]+$/)||a.match(/^[0-9A-F]+$/))){return true}else{return false}}KJUR.lang.String.isBase64=function(a){a=a.replace(/\\s+/g,\"\");if(a.match(/^[0-9A-Za-z+\\/]+={0,3}$/)&&a.length%4==0){return true}else{return false}};KJUR.lang.String.isBase64URL=function(a){if(a.match(/[+/=]/)){return false}a=b64utob64(a);return KJUR.lang.String.isBase64(a)};KJUR.lang.String.isIntegerArray=function(a){a=a.replace(/\\s+/g,\"\");if(a.match(/^\\[[0-9,]+\\]$/)){return true}else{return false}};KJUR.lang.String.isPrintable=function(a){if(a.match(/^[0-9A-Za-z '()+,-./:=?]*$/)!==null){return true}return false};KJUR.lang.String.isIA5=function(a){if(a.match(/^[\\x20-\\x21\\x23-\\x7f]*$/)!==null){return true}return false};KJUR.lang.String.isMail=function(a){if(a.match(/^[A-Za-z0-9]{1}[A-Za-z0-9_.-]*@{1}[A-Za-z0-9_.-]{1,}\\.[A-Za-z0-9]{1,}$/)!==null){return true}return false};function hextoposhex(a){if(a.length%2==1){return\"0\"+a}if(a.substr(0,1)>\"7\"){return\"00\"+a}return a}function intarystrtohex(b){b=b.replace(/^\\s*\\[\\s*/,\"\");b=b.replace(/\\s*\\]\\s*$/,\"\");b=b.replace(/\\s*/g,\"\");try{var c=b.split(/,/).map(function(g,e,h){var f=parseInt(g);if(f<0||255<f){throw\"integer not in range 0-255\"}var d=(\"00\"+f.toString(16)).slice(-2);return d}).join(\"\");return c}catch(a){throw\"malformed integer array string: \"+a}}var strdiffidx=function(c,a){var d=c.length;if(c.length>a.length){d=a.length}for(var b=0;b<d;b++){if(c.charCodeAt(b)!=a.charCodeAt(b)){return b}}if(c.length!=a.length){return d}return -1};function oidtohex(g){var f=function(a){var l=a.toString(16);if(l.length==1){l=\"0\"+l}return l};var e=function(p){var o=\"\";var l=parseInt(p,10);var a=l.toString(2);var m=7-a.length%7;if(m==7){m=0}var r=\"\";for(var n=0;n<m;n++){r+=\"0\"}a=r+a;for(var n=0;n<a.length-1;n+=7){var q=a.substr(n,7);if(n!=a.length-7){q=\"1\"+q}o+=f(parseInt(q,2))}return o};try{if(!g.match(/^[0-9.]+$/)){return null}var j=\"\";var b=g.split(\".\");var k=parseInt(b[0],10)*40+parseInt(b[1],10);j+=f(k);b.splice(0,2);for(var d=0;d<b.length;d++){j+=e(b[d])}return j}catch(c){return null}}function hextooid(g){if(!ishex(g)){return null}try{var m=[];var p=g.substr(0,2);var e=parseInt(p,16);m[0]=new String(Math.floor(e/40));m[1]=new String(e%40);var n=g.substr(2);var l=[];for(var f=0;f<n.length/2;f++){l.push(parseInt(n.substr(f*2,2),16))}var k=[];var d=\"\";for(var f=0;f<l.length;f++){if(l[f]&128){d=d+strpad((l[f]&127).toString(2),7)}else{d=d+strpad((l[f]&127).toString(2),7);k.push(new String(parseInt(d,2)));d=\"\"}}var o=m.join(\".\");if(k.length>0){o=o+\".\"+k.join(\".\")}return o}catch(j){return null}}var strpad=function(c,b,a){if(a==undefined){a=\"0\"}if(c.length>=b){return c}return new Array(b-c.length+1).join(a)+c};function bitstrtoint(e){try{var a=e.substr(0,2);if(a==\"00\"){return parseInt(e.substr(2),16)}var b=parseInt(a,16);var f=e.substr(2);var d=parseInt(f,16).toString(2);if(d==\"0\"){d=\"00000000\"}d=d.slice(0,0-b);return parseInt(d,2)}catch(c){return -1}}function inttobitstr(e){var c=Number(e).toString(2);var b=8-c.length%8;if(b==8){b=0}c=c+strpad(\"\",b,\"0\");var d=parseInt(c,2).toString(16);if(d.length%2==1){d=\"0\"+d}var a=\"0\"+b;return a+d};\nif(typeof KJUR==\"undefined\"||!KJUR){KJUR={}}if(typeof KJUR.crypto==\"undefined\"||!KJUR.crypto){KJUR.crypto={}}KJUR.crypto.Util=new function(){this.DIGESTINFOHEAD={sha1:\"3021300906052b0e03021a05000414\",sha224:\"302d300d06096086480165030402040500041c\",sha256:\"3031300d060960864801650304020105000420\",sha384:\"3041300d060960864801650304020205000430\",sha512:\"3051300d060960864801650304020305000440\",md2:\"3020300c06082a864886f70d020205000410\",md5:\"3020300c06082a864886f70d020505000410\",ripemd160:\"3021300906052b2403020105000414\",};this.DEFAULTPROVIDER={md5:\"cryptojs\",sha1:\"cryptojs\",sha224:\"cryptojs\",sha256:\"cryptojs\",sha384:\"cryptojs\",sha512:\"cryptojs\",ripemd160:\"cryptojs\",hmacmd5:\"cryptojs\",hmacsha1:\"cryptojs\",hmacsha224:\"cryptojs\",hmacsha256:\"cryptojs\",hmacsha384:\"cryptojs\",hmacsha512:\"cryptojs\",hmacripemd160:\"cryptojs\",MD5withRSA:\"cryptojs/jsrsa\",SHA1withRSA:\"cryptojs/jsrsa\",SHA224withRSA:\"cryptojs/jsrsa\",SHA256withRSA:\"cryptojs/jsrsa\",SHA384withRSA:\"cryptojs/jsrsa\",SHA512withRSA:\"cryptojs/jsrsa\",RIPEMD160withRSA:\"cryptojs/jsrsa\",MD5withECDSA:\"cryptojs/jsrsa\",SHA1withECDSA:\"cryptojs/jsrsa\",SHA224withECDSA:\"cryptojs/jsrsa\",SHA256withECDSA:\"cryptojs/jsrsa\",SHA384withECDSA:\"cryptojs/jsrsa\",SHA512withECDSA:\"cryptojs/jsrsa\",RIPEMD160withECDSA:\"cryptojs/jsrsa\",SHA1withDSA:\"cryptojs/jsrsa\",SHA224withDSA:\"cryptojs/jsrsa\",SHA256withDSA:\"cryptojs/jsrsa\",MD5withRSAandMGF1:\"cryptojs/jsrsa\",SHAwithRSAandMGF1:\"cryptojs/jsrsa\",SHA1withRSAandMGF1:\"cryptojs/jsrsa\",SHA224withRSAandMGF1:\"cryptojs/jsrsa\",SHA256withRSAandMGF1:\"cryptojs/jsrsa\",SHA384withRSAandMGF1:\"cryptojs/jsrsa\",SHA512withRSAandMGF1:\"cryptojs/jsrsa\",RIPEMD160withRSAandMGF1:\"cryptojs/jsrsa\",};this.CRYPTOJSMESSAGEDIGESTNAME={md5:CryptoJS.algo.MD5,sha1:CryptoJS.algo.SHA1,sha224:CryptoJS.algo.SHA224,sha256:CryptoJS.algo.SHA256,sha384:CryptoJS.algo.SHA384,sha512:CryptoJS.algo.SHA512,ripemd160:CryptoJS.algo.RIPEMD160};this.getDigestInfoHex=function(a,b){if(typeof this.DIGESTINFOHEAD[b]==\"undefined\"){throw\"alg not supported in Util.DIGESTINFOHEAD: \"+b}return this.DIGESTINFOHEAD[b]+a};this.getPaddedDigestInfoHex=function(h,a,j){var c=this.getDigestInfoHex(h,a);var d=j/4;if(c.length+22>d){throw\"key is too short for SigAlg: keylen=\"+j+\",\"+a}var b=\"0001\";var k=\"00\"+c;var g=\"\";var l=d-b.length-k.length;for(var f=0;f<l;f+=2){g+=\"ff\"}var e=b+g+k;return e};this.hashString=function(a,c){var b=new KJUR.crypto.MessageDigest({alg:c});return b.digestString(a)};this.hashHex=function(b,c){var a=new KJUR.crypto.MessageDigest({alg:c});return a.digestHex(b)};this.sha1=function(a){return this.hashString(a,\"sha1\")};this.sha256=function(a){return this.hashString(a,\"sha256\")};this.sha256Hex=function(a){return this.hashHex(a,\"sha256\")};this.sha512=function(a){return this.hashString(a,\"sha512\")};this.sha512Hex=function(a){return this.hashHex(a,\"sha512\")};this.isKey=function(a){if(a instanceof RSAKey||a instanceof KJUR.crypto.DSA||a instanceof KJUR.crypto.ECDSA){return true}else{return false}}};KJUR.crypto.Util.md5=function(a){var b=new KJUR.crypto.MessageDigest({alg:\"md5\",prov:\"cryptojs\"});return b.digestString(a)};KJUR.crypto.Util.ripemd160=function(a){var b=new KJUR.crypto.MessageDigest({alg:\"ripemd160\",prov:\"cryptojs\"});return b.digestString(a)};KJUR.crypto.Util.SECURERANDOMGEN=new SecureRandom();KJUR.crypto.Util.getRandomHexOfNbytes=function(b){var a=new Array(b);KJUR.crypto.Util.SECURERANDOMGEN.nextBytes(a);return BAtohex(a)};KJUR.crypto.Util.getRandomBigIntegerOfNbytes=function(a){return new BigInteger(KJUR.crypto.Util.getRandomHexOfNbytes(a),16)};KJUR.crypto.Util.getRandomHexOfNbits=function(d){var c=d%8;var a=(d-c)/8;var b=new Array(a+1);KJUR.crypto.Util.SECURERANDOMGEN.nextBytes(b);b[0]=(((255<<c)&255)^255)&b[0];return BAtohex(b)};KJUR.crypto.Util.getRandomBigIntegerOfNbits=function(a){return new BigInteger(KJUR.crypto.Util.getRandomHexOfNbits(a),16)};KJUR.crypto.Util.getRandomBigIntegerZeroToMax=function(b){var a=b.bitLength();while(1){var c=KJUR.crypto.Util.getRandomBigIntegerOfNbits(a);if(b.compareTo(c)!=-1){return c}}};KJUR.crypto.Util.getRandomBigIntegerMinToMax=function(e,b){var c=e.compareTo(b);if(c==1){throw\"biMin is greater than biMax\"}if(c==0){return e}var a=b.subtract(e);var d=KJUR.crypto.Util.getRandomBigIntegerZeroToMax(a);return d.add(e)};KJUR.crypto.MessageDigest=function(c){var b=null;var a=null;var d=null;this.setAlgAndProvider=function(g,f){g=KJUR.crypto.MessageDigest.getCanonicalAlgName(g);if(g!==null&&f===undefined){f=KJUR.crypto.Util.DEFAULTPROVIDER[g]}if(\":md5:sha1:sha224:sha256:sha384:sha512:ripemd160:\".indexOf(g)!=-1&&f==\"cryptojs\"){try{this.md=KJUR.crypto.Util.CRYPTOJSMESSAGEDIGESTNAME[g].create()}catch(e){throw\"setAlgAndProvider hash alg set fail alg=\"+g+\"/\"+e}this.updateString=function(h){this.md.update(h)};this.updateHex=function(h){var i=CryptoJS.enc.Hex.parse(h);this.md.update(i)};this.digest=function(){var h=this.md.finalize();return h.toString(CryptoJS.enc.Hex)};this.digestString=function(h){this.updateString(h);return this.digest()};this.digestHex=function(h){this.updateHex(h);return this.digest()}}if(\":sha256:\".indexOf(g)!=-1&&f==\"sjcl\"){try{this.md=new sjcl.hash.sha256()}catch(e){throw\"setAlgAndProvider hash alg set fail alg=\"+g+\"/\"+e}this.updateString=function(h){this.md.update(h)};this.updateHex=function(i){var h=sjcl.codec.hex.toBits(i);this.md.update(h)};this.digest=function(){var h=this.md.finalize();return sjcl.codec.hex.fromBits(h)};this.digestString=function(h){this.updateString(h);return this.digest()};this.digestHex=function(h){this.updateHex(h);return this.digest()}}};this.updateString=function(e){throw\"updateString(str) not supported for this alg/prov: \"+this.algName+\"/\"+this.provName};this.updateHex=function(e){throw\"updateHex(hex) not supported for this alg/prov: \"+this.algName+\"/\"+this.provName};this.digest=function(){throw\"digest() not supported for this alg/prov: \"+this.algName+\"/\"+this.provName};this.digestString=function(e){throw\"digestString(str) not supported for this alg/prov: \"+this.algName+\"/\"+this.provName};this.digestHex=function(e){throw\"digestHex(hex) not supported for this alg/prov: \"+this.algName+\"/\"+this.provName};if(c!==undefined){if(c.alg!==undefined){this.algName=c.alg;if(c.prov===undefined){this.provName=KJUR.crypto.Util.DEFAULTPROVIDER[this.algName]}this.setAlgAndProvider(this.algName,this.provName)}}};KJUR.crypto.MessageDigest.getCanonicalAlgName=function(a){if(typeof a===\"string\"){a=a.toLowerCase();a=a.replace(/-/,\"\")}return a};KJUR.crypto.MessageDigest.getHashLength=function(c){var b=KJUR.crypto.MessageDigest;var a=b.getCanonicalAlgName(c);if(b.HASHLENGTH[a]===undefined){throw\"not supported algorithm: \"+c}return b.HASHLENGTH[a]};KJUR.crypto.MessageDigest.HASHLENGTH={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,ripemd160:20};KJUR.crypto.Mac=function(d){var f=null;var c=null;var a=null;var e=null;var b=null;this.setAlgAndProvider=function(k,i){k=k.toLowerCase();if(k==null){k=\"hmacsha1\"}k=k.toLowerCase();if(k.substr(0,4)!=\"hmac\"){throw\"setAlgAndProvider unsupported HMAC alg: \"+k}if(i===undefined){i=KJUR.crypto.Util.DEFAULTPROVIDER[k]}this.algProv=k+\"/\"+i;var g=k.substr(4);if(\":md5:sha1:sha224:sha256:sha384:sha512:ripemd160:\".indexOf(g)!=-1&&i==\"cryptojs\"){try{var j=KJUR.crypto.Util.CRYPTOJSMESSAGEDIGESTNAME[g];this.mac=CryptoJS.algo.HMAC.create(j,this.pass)}catch(h){throw\"setAlgAndProvider hash alg set fail hashAlg=\"+g+\"/\"+h}this.updateString=function(l){this.mac.update(l)};this.updateHex=function(l){var m=CryptoJS.enc.Hex.parse(l);this.mac.update(m)};this.doFinal=function(){var l=this.mac.finalize();return l.toString(CryptoJS.enc.Hex)};this.doFinalString=function(l){this.updateString(l);return this.doFinal()};this.doFinalHex=function(l){this.updateHex(l);return this.doFinal()}}};this.updateString=function(g){throw\"updateString(str) not supported for this alg/prov: \"+this.algProv};this.updateHex=function(g){throw\"updateHex(hex) not supported for this alg/prov: \"+this.algProv};this.doFinal=function(){throw\"digest() not supported for this alg/prov: \"+this.algProv};this.doFinalString=function(g){throw\"digestString(str) not supported for this alg/prov: \"+this.algProv};this.doFinalHex=function(g){throw\"digestHex(hex) not supported for this alg/prov: \"+this.algProv};this.setPassword=function(h){if(typeof h==\"string\"){var g=h;if(h.length%2==1||!h.match(/^[0-9A-Fa-f]+$/)){g=rstrtohex(h)}this.pass=CryptoJS.enc.Hex.parse(g);return}if(typeof h!=\"object\"){throw\"KJUR.crypto.Mac unsupported password type: \"+h}var g=null;if(h.hex!==undefined){if(h.hex.length%2!=0||!h.hex.match(/^[0-9A-Fa-f]+$/)){throw\"Mac: wrong hex password: \"+h.hex}g=h.hex}if(h.utf8!==undefined){g=utf8tohex(h.utf8)}if(h.rstr!==undefined){g=rstrtohex(h.rstr)}if(h.b64!==undefined){g=b64tohex(h.b64)}if(h.b64u!==undefined){g=b64utohex(h.b64u)}if(g==null){throw\"KJUR.crypto.Mac unsupported password type: \"+h}this.pass=CryptoJS.enc.Hex.parse(g)};if(d!==undefined){if(d.pass!==undefined){this.setPassword(d.pass)}if(d.alg!==undefined){this.algName=d.alg;if(d.prov===undefined){this.provName=KJUR.crypto.Util.DEFAULTPROVIDER[this.algName]}this.setAlgAndProvider(this.algName,this.provName)}}};KJUR.crypto.Signature=function(o){var q=null;var n=null;var r=null;var c=null;var l=null;var d=null;var k=null;var h=null;var p=null;var e=null;var b=-1;var g=null;var j=null;var a=null;var i=null;var f=null;this._setAlgNames=function(){var s=this.algName.match(/^(.+)with(.+)$/);if(s){this.mdAlgName=s[1].toLowerCase();this.pubkeyAlgName=s[2].toLowerCase();if(this.pubkeyAlgName==\"rsaandmgf1\"&&this.mdAlgName==\"sha\"){this.mdAlgName=\"sha1\"}}};this._zeroPaddingOfSignature=function(x,w){var v=\"\";var t=w/4-x.length;for(var u=0;u<t;u++){v=v+\"0\"}return v+x};this.setAlgAndProvider=function(u,t){this._setAlgNames();if(t!=\"cryptojs/jsrsa\"){throw new Error(\"provider not supported: \"+t)}if(\":md5:sha1:sha224:sha256:sha384:sha512:ripemd160:\".indexOf(this.mdAlgName)!=-1){try{this.md=new KJUR.crypto.MessageDigest({alg:this.mdAlgName})}catch(s){throw new Error(\"setAlgAndProvider hash alg set fail alg=\"+this.mdAlgName+\"/\"+s)}this.init=function(w,x){var y=null;try{if(x===undefined){y=KEYUTIL.getKey(w)}else{y=KEYUTIL.getKey(w,x)}}catch(v){throw\"init failed:\"+v}if(y.isPrivate===true){this.prvKey=y;this.state=\"SIGN\"}else{if(y.isPublic===true){this.pubKey=y;this.state=\"VERIFY\"}else{throw\"init failed.:\"+y}}};this.updateString=function(v){this.md.updateString(v)};this.updateHex=function(v){this.md.updateHex(v)};this.sign=function(){this.sHashHex=this.md.digest();if(this.prvKey===undefined&&this.ecprvhex!==undefined&&this.eccurvename!==undefined&&KJUR.crypto.ECDSA!==undefined){this.prvKey=new KJUR.crypto.ECDSA({curve:this.eccurvename,prv:this.ecprvhex})}if(this.prvKey instanceof RSAKey&&this.pubkeyAlgName===\"rsaandmgf1\"){this.hSign=this.prvKey.signWithMessageHashPSS(this.sHashHex,this.mdAlgName,this.pssSaltLen)}else{if(this.prvKey instanceof RSAKey&&this.pubkeyAlgName===\"rsa\"){this.hSign=this.prvKey.signWithMessageHash(this.sHashHex,this.mdAlgName)}else{if(this.prvKey instanceof KJUR.crypto.ECDSA){this.hSign=this.prvKey.signWithMessageHash(this.sHashHex)}else{if(this.prvKey instanceof KJUR.crypto.DSA){this.hSign=this.prvKey.signWithMessageHash(this.sHashHex)}else{throw\"Signature: unsupported private key alg: \"+this.pubkeyAlgName}}}}return this.hSign};this.signString=function(v){this.updateString(v);return this.sign()};this.signHex=function(v){this.updateHex(v);return this.sign()};this.verify=function(v){this.sHashHex=this.md.digest();if(this.pubKey===undefined&&this.ecpubhex!==undefined&&this.eccurvename!==undefined&&KJUR.crypto.ECDSA!==undefined){this.pubKey=new KJUR.crypto.ECDSA({curve:this.eccurvename,pub:this.ecpubhex})}if(this.pubKey instanceof RSAKey&&this.pubkeyAlgName===\"rsaandmgf1\"){return this.pubKey.verifyWithMessageHashPSS(this.sHashHex,v,this.mdAlgName,this.pssSaltLen)}else{if(this.pubKey instanceof RSAKey&&this.pubkeyAlgName===\"rsa\"){return this.pubKey.verifyWithMessageHash(this.sHashHex,v)}else{if(KJUR.crypto.ECDSA!==undefined&&this.pubKey instanceof KJUR.crypto.ECDSA){return this.pubKey.verifyWithMessageHash(this.sHashHex,v)}else{if(KJUR.crypto.DSA!==undefined&&this.pubKey instanceof KJUR.crypto.DSA){return this.pubKey.verifyWithMessageHash(this.sHashHex,v)}else{throw\"Signature: unsupported public key alg: \"+this.pubkeyAlgName}}}}}}};this.init=function(s,t){throw\"init(key, pass) not supported for this alg:prov=\"+this.algProvName};this.updateString=function(s){throw\"updateString(str) not supported for this alg:prov=\"+this.algProvName};this.updateHex=function(s){throw\"updateHex(hex) not supported for this alg:prov=\"+this.algProvName};this.sign=function(){throw\"sign() not supported for this alg:prov=\"+this.algProvName};this.signString=function(s){throw\"digestString(str) not supported for this alg:prov=\"+this.algProvName};this.signHex=function(s){throw\"digestHex(hex) not supported for this alg:prov=\"+this.algProvName};this.verify=function(s){throw\"verify(hSigVal) not supported for this alg:prov=\"+this.algProvName};this.initParams=o;if(o!==undefined){if(o.alg!==undefined){this.algName=o.alg;if(o.prov===undefined){this.provName=KJUR.crypto.Util.DEFAULTPROVIDER[this.algName]}else{this.provName=o.prov}this.algProvName=this.algName+\":\"+this.provName;this.setAlgAndProvider(this.algName,this.provName);this._setAlgNames()}if(o.psssaltlen!==undefined){this.pssSaltLen=o.psssaltlen}if(o.prvkeypem!==undefined){if(o.prvkeypas!==undefined){throw\"both prvkeypem and prvkeypas parameters not supported\"}else{try{var q=KEYUTIL.getKey(o.prvkeypem);this.init(q)}catch(m){throw\"fatal error to load pem private key: \"+m}}}}};KJUR.crypto.Cipher=function(a){};KJUR.crypto.Cipher.encrypt=function(e,f,d){if(f instanceof RSAKey&&f.isPublic){var c=KJUR.crypto.Cipher.getAlgByKeyAndName(f,d);if(c===\"RSA\"){return f.encrypt(e)}if(c===\"RSAOAEP\"){return f.encryptOAEP(e,\"sha1\")}var b=c.match(/^RSAOAEP(\\d+)$/);if(b!==null){return f.encryptOAEP(e,\"sha\"+b[1])}throw\"Cipher.encrypt: unsupported algorithm for RSAKey: \"+d}else{throw\"Cipher.encrypt: unsupported key or algorithm\"}};KJUR.crypto.Cipher.decrypt=function(e,f,d){if(f instanceof RSAKey&&f.isPrivate){var c=KJUR.crypto.Cipher.getAlgByKeyAndName(f,d);if(c===\"RSA\"){return f.decrypt(e)}if(c===\"RSAOAEP\"){return f.decryptOAEP(e,\"sha1\")}var b=c.match(/^RSAOAEP(\\d+)$/);if(b!==null){return f.decryptOAEP(e,\"sha\"+b[1])}throw\"Cipher.decrypt: unsupported algorithm for RSAKey: \"+d}else{throw\"Cipher.decrypt: unsupported key or algorithm\"}};KJUR.crypto.Cipher.getAlgByKeyAndName=function(b,a){if(b instanceof RSAKey){if(\":RSA:RSAOAEP:RSAOAEP224:RSAOAEP256:RSAOAEP384:RSAOAEP512:\".indexOf(a)!=-1){return a}if(a===null||a===undefined){return\"RSA\"}throw\"getAlgByKeyAndName: not supported algorithm name for RSAKey: \"+a}throw\"getAlgByKeyAndName: not supported algorithm name: \"+a};KJUR.crypto.OID=new function(){this.oidhex2name={\"2a864886f70d010101\":\"rsaEncryption\",\"2a8648ce3d0201\":\"ecPublicKey\",\"2a8648ce380401\":\"dsa\",\"2a8648ce3d030107\":\"secp256r1\",\"2b8104001f\":\"secp192k1\",\"2b81040021\":\"secp224r1\",\"2b8104000a\":\"secp256k1\",\"2b81040023\":\"secp521r1\",\"2b81040022\":\"secp384r1\",\"2a8648ce380403\":\"SHA1withDSA\",\"608648016503040301\":\"SHA224withDSA\",\"608648016503040302\":\"SHA256withDSA\",}};\nif(typeof KJUR==\"undefined\"||!KJUR){KJUR={}}if(typeof KJUR.crypto==\"undefined\"||!KJUR.crypto){KJUR.crypto={}}KJUR.crypto.ECDSA=function(e){var g=\"secp256r1\";var p=null;var b=null;var i=null;var j=Error,f=BigInteger,h=ECPointFp,m=KJUR.crypto.ECDSA,c=KJUR.crypto.ECParameterDB,d=m.getName,q=ASN1HEX,n=q.getVbyListEx,k=q.isASN1HEX;var a=new SecureRandom();var o=null;this.type=\"EC\";this.isPrivate=false;this.isPublic=false;function l(x,t,w,s){var r=Math.max(t.bitLength(),s.bitLength());var y=x.add2D(w);var v=x.curve.getInfinity();for(var u=r-1;u>=0;--u){v=v.twice2D();v.z=f.ONE;if(t.testBit(u)){if(s.testBit(u)){v=v.add2D(y)}else{v=v.add2D(x)}}else{if(s.testBit(u)){v=v.add2D(w)}}}return v}this.getBigRandom=function(r){return new f(r.bitLength(),a).mod(r.subtract(f.ONE)).add(f.ONE)};this.setNamedCurve=function(r){this.ecparams=c.getByName(r);this.prvKeyHex=null;this.pubKeyHex=null;this.curveName=r};this.setPrivateKeyHex=function(r){this.isPrivate=true;this.prvKeyHex=r};this.setPublicKeyHex=function(r){this.isPublic=true;this.pubKeyHex=r};this.getPublicKeyXYHex=function(){var t=this.pubKeyHex;if(t.substr(0,2)!==\"04\"){throw\"this method supports uncompressed format(04) only\"}var s=this.ecparams.keylen/4;if(t.length!==2+s*2){throw\"malformed public key hex length\"}var r={};r.x=t.substr(2,s);r.y=t.substr(2+s);return r};this.getShortNISTPCurveName=function(){var r=this.curveName;if(r===\"secp256r1\"||r===\"NIST P-256\"||r===\"P-256\"||r===\"prime256v1\"){return\"P-256\"}if(r===\"secp384r1\"||r===\"NIST P-384\"||r===\"P-384\"){return\"P-384\"}return null};this.generateKeyPairHex=function(){var t=this.ecparams.n;var w=this.getBigRandom(t);var u=this.ecparams.G.multiply(w);var z=u.getX().toBigInteger();var x=u.getY().toBigInteger();var r=this.ecparams.keylen/4;var v=(\"0000000000\"+w.toString(16)).slice(-r);var A=(\"0000000000\"+z.toString(16)).slice(-r);var y=(\"0000000000\"+x.toString(16)).slice(-r);var s=\"04\"+A+y;this.setPrivateKeyHex(v);this.setPublicKeyHex(s);return{ecprvhex:v,ecpubhex:s}};this.signWithMessageHash=function(r){return this.signHex(r,this.prvKeyHex)};this.signHex=function(x,u){var A=new f(u,16);var v=this.ecparams.n;var z=new f(x.substring(0,this.ecparams.keylen/4),16);do{var w=this.getBigRandom(v);var B=this.ecparams.G;var y=B.multiply(w);var t=y.getX().toBigInteger().mod(v)}while(t.compareTo(f.ZERO)<=0);var C=w.modInverse(v).multiply(z.add(A.multiply(t))).mod(v);return m.biRSSigToASN1Sig(t,C)};this.sign=function(w,B){var z=B;var u=this.ecparams.n;var y=f.fromByteArrayUnsigned(w);do{var v=this.getBigRandom(u);var A=this.ecparams.G;var x=A.multiply(v);var t=x.getX().toBigInteger().mod(u)}while(t.compareTo(BigInteger.ZERO)<=0);var C=v.modInverse(u).multiply(y.add(z.multiply(t))).mod(u);return this.serializeSig(t,C)};this.verifyWithMessageHash=function(s,r){return this.verifyHex(s,r,this.pubKeyHex)};this.verifyHex=function(v,y,u){try{var t,B;var w=m.parseSigHex(y);t=w.r;B=w.s;var x=h.decodeFromHex(this.ecparams.curve,u);var z=new f(v.substring(0,this.ecparams.keylen/4),16);return this.verifyRaw(z,t,B,x)}catch(A){return false}};this.verify=function(z,A,u){var w,t;if(Bitcoin.Util.isArray(A)){var y=this.parseSig(A);w=y.r;t=y.s}else{if(\"object\"===typeof A&&A.r&&A.s){w=A.r;t=A.s}else{throw\"Invalid value for signature\"}}var v;if(u instanceof ECPointFp){v=u}else{if(Bitcoin.Util.isArray(u)){v=h.decodeFrom(this.ecparams.curve,u)}else{throw\"Invalid format for pubkey value, must be byte array or ECPointFp\"}}var x=f.fromByteArrayUnsigned(z);return this.verifyRaw(x,w,t,v)};this.verifyRaw=function(z,t,E,y){var x=this.ecparams.n;var D=this.ecparams.G;if(t.compareTo(f.ONE)<0||t.compareTo(x)>=0){return false}if(E.compareTo(f.ONE)<0||E.compareTo(x)>=0){return false}var A=E.modInverse(x);var w=z.multiply(A).mod(x);var u=t.multiply(A).mod(x);var B=D.multiply(w).add(y.multiply(u));var C=B.getX().toBigInteger().mod(x);return C.equals(t)};this.serializeSig=function(v,u){var w=v.toByteArraySigned();var t=u.toByteArraySigned();var x=[];x.push(2);x.push(w.length);x=x.concat(w);x.push(2);x.push(t.length);x=x.concat(t);x.unshift(x.length);x.unshift(48);return x};this.parseSig=function(y){var x;if(y[0]!=48){throw new Error(\"Signature not a valid DERSequence\")}x=2;if(y[x]!=2){throw new Error(\"First element in signature must be a DERInteger\")}var w=y.slice(x+2,x+2+y[x+1]);x+=2+y[x+1];if(y[x]!=2){throw new Error(\"Second element in signature must be a DERInteger\")}var t=y.slice(x+2,x+2+y[x+1]);x+=2+y[x+1];var v=f.fromByteArrayUnsigned(w);var u=f.fromByteArrayUnsigned(t);return{r:v,s:u}};this.parseSigCompact=function(w){if(w.length!==65){throw\"Signature has the wrong length\"}var t=w[0]-27;if(t<0||t>7){throw\"Invalid signature type\"}var x=this.ecparams.n;var v=f.fromByteArrayUnsigned(w.slice(1,33)).mod(x);var u=f.fromByteArrayUnsigned(w.slice(33,65)).mod(x);return{r:v,s:u,i:t}};this.readPKCS5PrvKeyHex=function(u){if(k(u)===false){throw new Error(\"not ASN.1 hex string\")}var r,t,v;try{r=n(u,0,[\"[0]\",0],\"06\");t=n(u,0,[1],\"04\");try{v=n(u,0,[\"[1]\",0],\"03\")}catch(s){}}catch(s){throw new Error(\"malformed PKCS#1/5 plain ECC private key\")}this.curveName=d(r);if(this.curveName===undefined){throw\"unsupported curve name\"}this.setNamedCurve(this.curveName);this.setPublicKeyHex(v);this.setPrivateKeyHex(t);this.isPublic=false};this.readPKCS8PrvKeyHex=function(v){if(k(v)===false){throw new j(\"not ASN.1 hex string\")}var t,r,u,w;try{t=n(v,0,[1,0],\"06\");r=n(v,0,[1,1],\"06\");u=n(v,0,[2,0,1],\"04\");try{w=n(v,0,[2,0,\"[1]\",0],\"03\")}catch(s){}}catch(s){throw new j(\"malformed PKCS#8 plain ECC private key\")}this.curveName=d(r);if(this.curveName===undefined){throw new j(\"unsupported curve name\")}this.setNamedCurve(this.curveName);this.setPublicKeyHex(w);this.setPrivateKeyHex(u);this.isPublic=false};this.readPKCS8PubKeyHex=function(u){if(k(u)===false){throw new j(\"not ASN.1 hex string\")}var t,r,v;try{t=n(u,0,[0,0],\"06\");r=n(u,0,[0,1],\"06\");v=n(u,0,[1],\"03\")}catch(s){throw new j(\"malformed PKCS#8 ECC public key\")}this.curveName=d(r);if(this.curveName===null){throw new j(\"unsupported curve name\")}this.setNamedCurve(this.curveName);this.setPublicKeyHex(v)};this.readCertPubKeyHex=function(t,v){if(k(t)===false){throw new j(\"not ASN.1 hex string\")}var r,u;try{r=n(t,0,[0,5,0,1],\"06\");u=n(t,0,[0,5,1],\"03\")}catch(s){throw new j(\"malformed X.509 certificate ECC public key\")}this.curveName=d(r);if(this.curveName===null){throw new j(\"unsupported curve name\")}this.setNamedCurve(this.curveName);this.setPublicKeyHex(u)};if(e!==undefined){if(e.curve!==undefined){this.curveName=e.curve}}if(this.curveName===undefined){this.curveName=g}this.setNamedCurve(this.curveName);if(e!==undefined){if(e.prv!==undefined){this.setPrivateKeyHex(e.prv)}if(e.pub!==undefined){this.setPublicKeyHex(e.pub)}}};KJUR.crypto.ECDSA.parseSigHex=function(a){var b=KJUR.crypto.ECDSA.parseSigHexInHexRS(a);var d=new BigInteger(b.r,16);var c=new BigInteger(b.s,16);return{r:d,s:c}};KJUR.crypto.ECDSA.parseSigHexInHexRS=function(f){var j=ASN1HEX,i=j.getChildIdx,g=j.getV;j.checkStrictDER(f,0);if(f.substr(0,2)!=\"30\"){throw new Error(\"signature is not a ASN.1 sequence\")}var h=i(f,0);if(h.length!=2){throw new Error(\"signature shall have two elements\")}var e=h[0];var d=h[1];if(f.substr(e,2)!=\"02\"){throw new Error(\"1st item not ASN.1 integer\")}if(f.substr(d,2)!=\"02\"){throw new Error(\"2nd item not ASN.1 integer\")}var c=g(f,e);var b=g(f,d);return{r:c,s:b}};KJUR.crypto.ECDSA.asn1SigToConcatSig=function(c){var d=KJUR.crypto.ECDSA.parseSigHexInHexRS(c);var b=d.r;var a=d.s;if(b.substr(0,2)==\"00\"&&(b.length%32)==2){b=b.substr(2)}if(a.substr(0,2)==\"00\"&&(a.length%32)==2){a=a.substr(2)}if((b.length%32)==30){b=\"00\"+b}if((a.length%32)==30){a=\"00\"+a}if(b.length%32!=0){throw\"unknown ECDSA sig r length error\"}if(a.length%32!=0){throw\"unknown ECDSA sig s length error\"}return b+a};KJUR.crypto.ECDSA.concatSigToASN1Sig=function(a){if((((a.length/2)*8)%(16*8))!=0){throw\"unknown ECDSA concatinated r-s sig  length error\"}var c=a.substr(0,a.length/2);var b=a.substr(a.length/2);return KJUR.crypto.ECDSA.hexRSSigToASN1Sig(c,b)};KJUR.crypto.ECDSA.hexRSSigToASN1Sig=function(b,a){var d=new BigInteger(b,16);var c=new BigInteger(a,16);return KJUR.crypto.ECDSA.biRSSigToASN1Sig(d,c)};KJUR.crypto.ECDSA.biRSSigToASN1Sig=function(f,d){var c=KJUR.asn1;var b=new c.DERInteger({bigint:f});var a=new c.DERInteger({bigint:d});var e=new c.DERSequence({array:[b,a]});return e.getEncodedHex()};KJUR.crypto.ECDSA.getName=function(a){if(a===\"2b8104001f\"){return\"secp192k1\"}if(a===\"2a8648ce3d030107\"){return\"secp256r1\"}if(a===\"2b8104000a\"){return\"secp256k1\"}if(a===\"2b81040021\"){return\"secp224r1\"}if(a===\"2b81040022\"){return\"secp384r1\"}if(\"|secp256r1|NIST P-256|P-256|prime256v1|\".indexOf(a)!==-1){return\"secp256r1\"}if(\"|secp256k1|\".indexOf(a)!==-1){return\"secp256k1\"}if(\"|secp224r1|NIST P-224|P-224|\".indexOf(a)!==-1){return\"secp224r1\"}if(\"|secp384r1|NIST P-384|P-384|\".indexOf(a)!==-1){return\"secp384r1\"}return null};\nif(typeof KJUR==\"undefined\"||!KJUR){KJUR={}}if(typeof KJUR.crypto==\"undefined\"||!KJUR.crypto){KJUR.crypto={}}KJUR.crypto.ECParameterDB=new function(){var b={};var c={};function a(d){return new BigInteger(d,16)}this.getByName=function(e){var d=e;if(typeof c[d]!=\"undefined\"){d=c[e]}if(typeof b[d]!=\"undefined\"){return b[d]}throw\"unregistered EC curve name: \"+d};this.regist=function(A,l,o,g,m,e,j,f,k,u,d,x){b[A]={};var s=a(o);var z=a(g);var y=a(m);var t=a(e);var w=a(j);var r=new ECCurveFp(s,z,y);var q=r.decodePointHex(\"04\"+f+k);b[A][\"name\"]=A;b[A][\"keylen\"]=l;b[A][\"curve\"]=r;b[A][\"G\"]=q;b[A][\"n\"]=t;b[A][\"h\"]=w;b[A][\"oid\"]=d;b[A][\"info\"]=x;for(var v=0;v<u.length;v++){c[u[v]]=A}}};KJUR.crypto.ECParameterDB.regist(\"secp128r1\",128,\"FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF\",\"FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFC\",\"E87579C11079F43DD824993C2CEE5ED3\",\"FFFFFFFE0000000075A30D1B9038A115\",\"1\",\"161FF7528B899B2D0C28607CA52C5B86\",\"CF5AC8395BAFEB13C02DA292DDED7A83\",[],\"\",\"secp128r1 : SECG curve over a 128 bit prime field\");KJUR.crypto.ECParameterDB.regist(\"secp160k1\",160,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC73\",\"0\",\"7\",\"0100000000000000000001B8FA16DFAB9ACA16B6B3\",\"1\",\"3B4C382CE37AA192A4019E763036F4F5DD4D7EBB\",\"938CF935318FDCED6BC28286531733C3F03C4FEE\",[],\"\",\"secp160k1 : SECG curve over a 160 bit prime field\");KJUR.crypto.ECParameterDB.regist(\"secp160r1\",160,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFC\",\"1C97BEFC54BD7A8B65ACF89F81D4D4ADC565FA45\",\"0100000000000000000001F4C8F927AED3CA752257\",\"1\",\"4A96B5688EF573284664698968C38BB913CBFC82\",\"23A628553168947D59DCC912042351377AC5FB32\",[],\"\",\"secp160r1 : SECG curve over a 160 bit prime field\");KJUR.crypto.ECParameterDB.regist(\"secp192k1\",192,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFEE37\",\"0\",\"3\",\"FFFFFFFFFFFFFFFFFFFFFFFE26F2FC170F69466A74DEFD8D\",\"1\",\"DB4FF10EC057E9AE26B07D0280B7F4341DA5D1B1EAE06C7D\",\"9B2F2F6D9C5628A7844163D015BE86344082AA88D95E2F9D\",[]);KJUR.crypto.ECParameterDB.regist(\"secp192r1\",192,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC\",\"64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1\",\"FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831\",\"1\",\"188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF1012\",\"07192B95FFC8DA78631011ED6B24CDD573F977A11E794811\",[]);KJUR.crypto.ECParameterDB.regist(\"secp224r1\",224,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE\",\"B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D\",\"1\",\"B70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21\",\"BD376388B5F723FB4C22DFE6CD4375A05A07476444D5819985007E34\",[]);KJUR.crypto.ECParameterDB.regist(\"secp256k1\",256,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F\",\"0\",\"7\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141\",\"1\",\"79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798\",\"483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8\",[]);KJUR.crypto.ECParameterDB.regist(\"secp256r1\",256,\"FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF\",\"FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC\",\"5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B\",\"FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551\",\"1\",\"6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296\",\"4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5\",[\"NIST P-256\",\"P-256\",\"prime256v1\"]);KJUR.crypto.ECParameterDB.regist(\"secp384r1\",384,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFF\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFC\",\"B3312FA7E23EE7E4988E056BE3F82D19181D9C6EFE8141120314088F5013875AC656398D8A2ED19D2A85C8EDD3EC2AEF\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7634D81F4372DDF581A0DB248B0A77AECEC196ACCC52973\",\"1\",\"AA87CA22BE8B05378EB1C71EF320AD746E1D3B628BA79B9859F741E082542A385502F25DBF55296C3A545E3872760AB7\",\"3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f\",[\"NIST P-384\",\"P-384\"]);KJUR.crypto.ECParameterDB.regist(\"secp521r1\",521,\"1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC\",\"051953EB9618E1C9A1F929A21A0B68540EEA2DA725B99B315F3B8B489918EF109E156193951EC7E937B1652C0BD3BB1BF073573DF883D2C34F1EF451FD46B503F00\",\"1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386409\",\"1\",\"C6858E06B70404E9CD9E3ECB662395B4429C648139053FB521F828AF606B4D3DBAA14B5E77EFE75928FE1DC127A2FFA8DE3348B3C1856A429BF97E7E31C2E5BD66\",\"011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650\",[\"NIST P-521\",\"P-521\"]);\nvar KEYUTIL=function(){var d=function(p,r,q){return k(CryptoJS.AES,p,r,q)};var e=function(p,r,q){return k(CryptoJS.TripleDES,p,r,q)};var a=function(p,r,q){return k(CryptoJS.DES,p,r,q)};var k=function(s,x,u,q){var r=CryptoJS.enc.Hex.parse(x);var w=CryptoJS.enc.Hex.parse(u);var p=CryptoJS.enc.Hex.parse(q);var t={};t.key=w;t.iv=p;t.ciphertext=r;var v=s.decrypt(t,w,{iv:p});return CryptoJS.enc.Hex.stringify(v)};var l=function(p,r,q){return g(CryptoJS.AES,p,r,q)};var o=function(p,r,q){return g(CryptoJS.TripleDES,p,r,q)};var f=function(p,r,q){return g(CryptoJS.DES,p,r,q)};var g=function(t,y,v,q){var s=CryptoJS.enc.Hex.parse(y);var x=CryptoJS.enc.Hex.parse(v);var p=CryptoJS.enc.Hex.parse(q);var w=t.encrypt(s,x,{iv:p});var r=CryptoJS.enc.Hex.parse(w.toString());var u=CryptoJS.enc.Base64.stringify(r);return u};var i={\"AES-256-CBC\":{proc:d,eproc:l,keylen:32,ivlen:16},\"AES-192-CBC\":{proc:d,eproc:l,keylen:24,ivlen:16},\"AES-128-CBC\":{proc:d,eproc:l,keylen:16,ivlen:16},\"DES-EDE3-CBC\":{proc:e,eproc:o,keylen:24,ivlen:8},\"DES-CBC\":{proc:a,eproc:f,keylen:8,ivlen:8}};var c=function(p){return i[p][\"proc\"]};var m=function(p){var r=CryptoJS.lib.WordArray.random(p);var q=CryptoJS.enc.Hex.stringify(r);return q};var n=function(v){var w={};var q=v.match(new RegExp(\"DEK-Info: ([^,]+),([0-9A-Fa-f]+)\",\"m\"));if(q){w.cipher=q[1];w.ivsalt=q[2]}var p=v.match(new RegExp(\"-----BEGIN ([A-Z]+) PRIVATE KEY-----\"));if(p){w.type=p[1]}var u=-1;var x=0;if(v.indexOf(\"\\r\\n\\r\\n\")!=-1){u=v.indexOf(\"\\r\\n\\r\\n\");x=2}if(v.indexOf(\"\\n\\n\")!=-1){u=v.indexOf(\"\\n\\n\");x=1}var t=v.indexOf(\"-----END\");if(u!=-1&&t!=-1){var r=v.substring(u+x*2,t-x);r=r.replace(/\\s+/g,\"\");w.data=r}return w};var j=function(q,y,p){var v=p.substring(0,16);var t=CryptoJS.enc.Hex.parse(v);var r=CryptoJS.enc.Utf8.parse(y);var u=i[q][\"keylen\"]+i[q][\"ivlen\"];var x=\"\";var w=null;for(;;){var s=CryptoJS.algo.MD5.create();if(w!=null){s.update(w)}s.update(r);s.update(t);w=s.finalize();x=x+CryptoJS.enc.Hex.stringify(w);if(x.length>=u*2){break}}var z={};z.keyhex=x.substr(0,i[q][\"keylen\"]*2);z.ivhex=x.substr(i[q][\"keylen\"]*2,i[q][\"ivlen\"]*2);return z};var b=function(p,v,r,w){var s=CryptoJS.enc.Base64.parse(p);var q=CryptoJS.enc.Hex.stringify(s);var u=i[v][\"proc\"];var t=u(q,r,w);return t};var h=function(p,s,q,u){var r=i[s][\"eproc\"];var t=r(p,q,u);return t};return{version:\"1.0.0\",parsePKCS5PEM:function(p){return n(p)},getKeyAndUnusedIvByPasscodeAndIvsalt:function(q,p,r){return j(q,p,r)},decryptKeyB64:function(p,r,q,s){return b(p,r,q,s)},getDecryptedKeyHex:function(y,x){var q=n(y);var t=q.type;var r=q.cipher;var p=q.ivsalt;var s=q.data;var w=j(r,x,p);var v=w.keyhex;var u=b(s,r,v,p);return u},getEncryptedPKCS5PEMFromPrvKeyHex:function(x,s,A,t,r){var p=\"\";if(typeof t==\"undefined\"||t==null){t=\"AES-256-CBC\"}if(typeof i[t]==\"undefined\"){throw\"KEYUTIL unsupported algorithm: \"+t}if(typeof r==\"undefined\"||r==null){var v=i[t][\"ivlen\"];var u=m(v);r=u.toUpperCase()}var z=j(t,A,r);var y=z.keyhex;var w=h(s,t,y,r);var q=w.replace(/(.{64})/g,\"$1\\r\\n\");var p=\"-----BEGIN \"+x+\" PRIVATE KEY-----\\r\\n\";p+=\"Proc-Type: 4,ENCRYPTED\\r\\n\";p+=\"DEK-Info: \"+t+\",\"+r+\"\\r\\n\";p+=\"\\r\\n\";p+=q;p+=\"\\r\\n-----END \"+x+\" PRIVATE KEY-----\\r\\n\";return p},parseHexOfEncryptedPKCS8:function(y){var B=ASN1HEX;var z=B.getChildIdx;var w=B.getV;var t={};var r=z(y,0);if(r.length!=2){throw\"malformed format: SEQUENCE(0).items != 2: \"+r.length}t.ciphertext=w(y,r[1]);var A=z(y,r[0]);if(A.length!=2){throw\"malformed format: SEQUENCE(0.0).items != 2: \"+A.length}if(w(y,A[0])!=\"2a864886f70d01050d\"){throw\"this only supports pkcs5PBES2\"}var p=z(y,A[1]);if(A.length!=2){throw\"malformed format: SEQUENCE(0.0.1).items != 2: \"+p.length}var q=z(y,p[1]);if(q.length!=2){throw\"malformed format: SEQUENCE(0.0.1.1).items != 2: \"+q.length}if(w(y,q[0])!=\"2a864886f70d0307\"){throw\"this only supports TripleDES\"}t.encryptionSchemeAlg=\"TripleDES\";t.encryptionSchemeIV=w(y,q[1]);var s=z(y,p[0]);if(s.length!=2){throw\"malformed format: SEQUENCE(0.0.1.0).items != 2: \"+s.length}if(w(y,s[0])!=\"2a864886f70d01050c\"){throw\"this only supports pkcs5PBKDF2\"}var x=z(y,s[1]);if(x.length<2){throw\"malformed format: SEQUENCE(0.0.1.0.1).items < 2: \"+x.length}t.pbkdf2Salt=w(y,x[0]);var u=w(y,x[1]);try{t.pbkdf2Iter=parseInt(u,16)}catch(v){throw\"malformed format pbkdf2Iter: \"+u}return t},getPBKDF2KeyHexFromParam:function(u,p){var t=CryptoJS.enc.Hex.parse(u.pbkdf2Salt);var q=u.pbkdf2Iter;var s=CryptoJS.PBKDF2(p,t,{keySize:192/32,iterations:q});var r=CryptoJS.enc.Hex.stringify(s);return r},_getPlainPKCS8HexFromEncryptedPKCS8PEM:function(x,y){var r=pemtohex(x,\"ENCRYPTED PRIVATE KEY\");var p=this.parseHexOfEncryptedPKCS8(r);var u=KEYUTIL.getPBKDF2KeyHexFromParam(p,y);var v={};v.ciphertext=CryptoJS.enc.Hex.parse(p.ciphertext);var t=CryptoJS.enc.Hex.parse(u);var s=CryptoJS.enc.Hex.parse(p.encryptionSchemeIV);var w=CryptoJS.TripleDES.decrypt(v,t,{iv:s});var q=CryptoJS.enc.Hex.stringify(w);return q},getKeyFromEncryptedPKCS8PEM:function(s,q){var p=this._getPlainPKCS8HexFromEncryptedPKCS8PEM(s,q);var r=this.getKeyFromPlainPrivatePKCS8Hex(p);return r},parsePlainPrivatePKCS8Hex:function(s){var v=ASN1HEX;var u=v.getChildIdx;var t=v.getV;var q={};q.algparam=null;if(s.substr(0,2)!=\"30\"){throw\"malformed plain PKCS8 private key(code:001)\"}var r=u(s,0);if(r.length!=3){throw\"malformed plain PKCS8 private key(code:002)\"}if(s.substr(r[1],2)!=\"30\"){throw\"malformed PKCS8 private key(code:003)\"}var p=u(s,r[1]);if(p.length!=2){throw\"malformed PKCS8 private key(code:004)\"}if(s.substr(p[0],2)!=\"06\"){throw\"malformed PKCS8 private key(code:005)\"}q.algoid=t(s,p[0]);if(s.substr(p[1],2)==\"06\"){q.algparam=t(s,p[1])}if(s.substr(r[2],2)!=\"04\"){throw\"malformed PKCS8 private key(code:006)\"}q.keyidx=v.getVidx(s,r[2]);return q},getKeyFromPlainPrivatePKCS8PEM:function(q){var p=pemtohex(q,\"PRIVATE KEY\");var r=this.getKeyFromPlainPrivatePKCS8Hex(p);return r},getKeyFromPlainPrivatePKCS8Hex:function(p){var q=this.parsePlainPrivatePKCS8Hex(p);var r;if(q.algoid==\"2a864886f70d010101\"){r=new RSAKey()}else{if(q.algoid==\"2a8648ce380401\"){r=new KJUR.crypto.DSA()}else{if(q.algoid==\"2a8648ce3d0201\"){r=new KJUR.crypto.ECDSA()}else{throw\"unsupported private key algorithm\"}}}r.readPKCS8PrvKeyHex(p);return r},_getKeyFromPublicPKCS8Hex:function(q){var p;var r=ASN1HEX.getVbyList(q,0,[0,0],\"06\");if(r===\"2a864886f70d010101\"){p=new RSAKey()}else{if(r===\"2a8648ce380401\"){p=new KJUR.crypto.DSA()}else{if(r===\"2a8648ce3d0201\"){p=new KJUR.crypto.ECDSA()}else{throw\"unsupported PKCS#8 public key hex\"}}}p.readPKCS8PubKeyHex(q);return p},parsePublicRawRSAKeyHex:function(r){var u=ASN1HEX;var t=u.getChildIdx;var s=u.getV;var p={};if(r.substr(0,2)!=\"30\"){throw\"malformed RSA key(code:001)\"}var q=t(r,0);if(q.length!=2){throw\"malformed RSA key(code:002)\"}if(r.substr(q[0],2)!=\"02\"){throw\"malformed RSA key(code:003)\"}p.n=s(r,q[0]);if(r.substr(q[1],2)!=\"02\"){throw\"malformed RSA key(code:004)\"}p.e=s(r,q[1]);return p},parsePublicPKCS8Hex:function(t){var v=ASN1HEX;var u=v.getChildIdx;var s=v.getV;var q={};q.algparam=null;var r=u(t,0);if(r.length!=2){throw\"outer DERSequence shall have 2 elements: \"+r.length}var w=r[0];if(t.substr(w,2)!=\"30\"){throw\"malformed PKCS8 public key(code:001)\"}var p=u(t,w);if(p.length!=2){throw\"malformed PKCS8 public key(code:002)\"}if(t.substr(p[0],2)!=\"06\"){throw\"malformed PKCS8 public key(code:003)\"}q.algoid=s(t,p[0]);if(t.substr(p[1],2)==\"06\"){q.algparam=s(t,p[1])}else{if(t.substr(p[1],2)==\"30\"){q.algparam={};q.algparam.p=v.getVbyList(t,p[1],[0],\"02\");q.algparam.q=v.getVbyList(t,p[1],[1],\"02\");q.algparam.g=v.getVbyList(t,p[1],[2],\"02\")}}if(t.substr(r[1],2)!=\"03\"){throw\"malformed PKCS8 public key(code:004)\"}q.key=s(t,r[1]).substr(2);return q},}}();KEYUTIL.getKey=function(l,k,n){var G=ASN1HEX,L=G.getChildIdx,v=G.getV,d=G.getVbyList,c=KJUR.crypto,i=c.ECDSA,C=c.DSA,w=RSAKey,M=pemtohex,F=KEYUTIL;if(typeof w!=\"undefined\"&&l instanceof w){return l}if(typeof i!=\"undefined\"&&l instanceof i){return l}if(typeof C!=\"undefined\"&&l instanceof C){return l}if(l.curve!==undefined&&l.xy!==undefined&&l.d===undefined){return new i({pub:l.xy,curve:l.curve})}if(l.curve!==undefined&&l.d!==undefined){return new i({prv:l.d,curve:l.curve})}if(l.kty===undefined&&l.n!==undefined&&l.e!==undefined&&l.d===undefined){var P=new w();P.setPublic(l.n,l.e);return P}if(l.kty===undefined&&l.n!==undefined&&l.e!==undefined&&l.d!==undefined&&l.p!==undefined&&l.q!==undefined&&l.dp!==undefined&&l.dq!==undefined&&l.co!==undefined&&l.qi===undefined){var P=new w();P.setPrivateEx(l.n,l.e,l.d,l.p,l.q,l.dp,l.dq,l.co);return P}if(l.kty===undefined&&l.n!==undefined&&l.e!==undefined&&l.d!==undefined&&l.p===undefined){var P=new w();P.setPrivate(l.n,l.e,l.d);return P}if(l.p!==undefined&&l.q!==undefined&&l.g!==undefined&&l.y!==undefined&&l.x===undefined){var P=new C();P.setPublic(l.p,l.q,l.g,l.y);return P}if(l.p!==undefined&&l.q!==undefined&&l.g!==undefined&&l.y!==undefined&&l.x!==undefined){var P=new C();P.setPrivate(l.p,l.q,l.g,l.y,l.x);return P}if(l.kty===\"RSA\"&&l.n!==undefined&&l.e!==undefined&&l.d===undefined){var P=new w();P.setPublic(b64utohex(l.n),b64utohex(l.e));return P}if(l.kty===\"RSA\"&&l.n!==undefined&&l.e!==undefined&&l.d!==undefined&&l.p!==undefined&&l.q!==undefined&&l.dp!==undefined&&l.dq!==undefined&&l.qi!==undefined){var P=new w();P.setPrivateEx(b64utohex(l.n),b64utohex(l.e),b64utohex(l.d),b64utohex(l.p),b64utohex(l.q),b64utohex(l.dp),b64utohex(l.dq),b64utohex(l.qi));return P}if(l.kty===\"RSA\"&&l.n!==undefined&&l.e!==undefined&&l.d!==undefined){var P=new w();P.setPrivate(b64utohex(l.n),b64utohex(l.e),b64utohex(l.d));return P}if(l.kty===\"EC\"&&l.crv!==undefined&&l.x!==undefined&&l.y!==undefined&&l.d===undefined){var j=new i({curve:l.crv});var t=j.ecparams.keylen/4;var B=(\"0000000000\"+b64utohex(l.x)).slice(-t);var z=(\"0000000000\"+b64utohex(l.y)).slice(-t);var u=\"04\"+B+z;j.setPublicKeyHex(u);return j}if(l.kty===\"EC\"&&l.crv!==undefined&&l.x!==undefined&&l.y!==undefined&&l.d!==undefined){var j=new i({curve:l.crv});var t=j.ecparams.keylen/4;var B=(\"0000000000\"+b64utohex(l.x)).slice(-t);var z=(\"0000000000\"+b64utohex(l.y)).slice(-t);var u=\"04\"+B+z;var b=(\"0000000000\"+b64utohex(l.d)).slice(-t);j.setPublicKeyHex(u);j.setPrivateKeyHex(b);return j}if(n===\"pkcs5prv\"){var J=l,G=ASN1HEX,N,P;N=L(J,0);if(N.length===9){P=new w();P.readPKCS5PrvKeyHex(J)}else{if(N.length===6){P=new C();P.readPKCS5PrvKeyHex(J)}else{if(N.length>2&&J.substr(N[1],2)===\"04\"){P=new i();P.readPKCS5PrvKeyHex(J)}else{throw\"unsupported PKCS#1/5 hexadecimal key\"}}}return P}if(n===\"pkcs8prv\"){var P=F.getKeyFromPlainPrivatePKCS8Hex(l);return P}if(n===\"pkcs8pub\"){return F._getKeyFromPublicPKCS8Hex(l)}if(n===\"x509pub\"){return X509.getPublicKeyFromCertHex(l)}if(l.indexOf(\"-END CERTIFICATE-\",0)!=-1||l.indexOf(\"-END X509 CERTIFICATE-\",0)!=-1||l.indexOf(\"-END TRUSTED CERTIFICATE-\",0)!=-1){return X509.getPublicKeyFromCertPEM(l)}if(l.indexOf(\"-END PUBLIC KEY-\")!=-1){var O=pemtohex(l,\"PUBLIC KEY\");return F._getKeyFromPublicPKCS8Hex(O)}if(l.indexOf(\"-END RSA PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")==-1){var m=M(l,\"RSA PRIVATE KEY\");return F.getKey(m,null,\"pkcs5prv\")}if(l.indexOf(\"-END DSA PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")==-1){var I=M(l,\"DSA PRIVATE KEY\");var E=d(I,0,[1],\"02\");var D=d(I,0,[2],\"02\");var K=d(I,0,[3],\"02\");var r=d(I,0,[4],\"02\");var s=d(I,0,[5],\"02\");var P=new C();P.setPrivate(new BigInteger(E,16),new BigInteger(D,16),new BigInteger(K,16),new BigInteger(r,16),new BigInteger(s,16));return P}if(l.indexOf(\"-END EC PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")==-1){var m=M(l,\"EC PRIVATE KEY\");return F.getKey(m,null,\"pkcs5prv\")}if(l.indexOf(\"-END PRIVATE KEY-\")!=-1){return F.getKeyFromPlainPrivatePKCS8PEM(l)}if(l.indexOf(\"-END RSA PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")!=-1){var o=F.getDecryptedKeyHex(l,k);var H=new RSAKey();H.readPKCS5PrvKeyHex(o);return H}if(l.indexOf(\"-END EC PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")!=-1){var I=F.getDecryptedKeyHex(l,k);var P=d(I,0,[1],\"04\");var f=d(I,0,[2,0],\"06\");var A=d(I,0,[3,0],\"03\").substr(2);var e=\"\";if(KJUR.crypto.OID.oidhex2name[f]!==undefined){e=KJUR.crypto.OID.oidhex2name[f]}else{throw\"undefined OID(hex) in KJUR.crypto.OID: \"+f}var j=new i({curve:e});j.setPublicKeyHex(A);j.setPrivateKeyHex(P);j.isPublic=false;return j}if(l.indexOf(\"-END DSA PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")!=-1){var I=F.getDecryptedKeyHex(l,k);var E=d(I,0,[1],\"02\");var D=d(I,0,[2],\"02\");var K=d(I,0,[3],\"02\");var r=d(I,0,[4],\"02\");var s=d(I,0,[5],\"02\");var P=new C();P.setPrivate(new BigInteger(E,16),new BigInteger(D,16),new BigInteger(K,16),new BigInteger(r,16),new BigInteger(s,16));return P}if(l.indexOf(\"-END ENCRYPTED PRIVATE KEY-\")!=-1){return F.getKeyFromEncryptedPKCS8PEM(l,k)}throw new Error(\"not supported argument\")};KEYUTIL.generateKeypair=function(a,c){if(a==\"RSA\"){var b=c;var h=new RSAKey();h.generate(b,\"10001\");h.isPrivate=true;h.isPublic=true;var f=new RSAKey();var e=h.n.toString(16);var i=h.e.toString(16);f.setPublic(e,i);f.isPrivate=false;f.isPublic=true;var k={};k.prvKeyObj=h;k.pubKeyObj=f;return k}else{if(a==\"EC\"){var d=c;var g=new KJUR.crypto.ECDSA({curve:d});var j=g.generateKeyPairHex();var h=new KJUR.crypto.ECDSA({curve:d});h.setPublicKeyHex(j.ecpubhex);h.setPrivateKeyHex(j.ecprvhex);h.isPrivate=true;h.isPublic=false;var f=new KJUR.crypto.ECDSA({curve:d});f.setPublicKeyHex(j.ecpubhex);f.isPrivate=false;f.isPublic=true;var k={};k.prvKeyObj=h;k.pubKeyObj=f;return k}else{throw\"unknown algorithm: \"+a}}};KEYUTIL.getPEM=function(b,D,y,m,q,j){var F=KJUR,k=F.asn1,z=k.DERObjectIdentifier,f=k.DERInteger,l=k.ASN1Util.newObject,a=k.x509,C=a.SubjectPublicKeyInfo,e=F.crypto,u=e.DSA,r=e.ECDSA,n=RSAKey;function A(s){var G=l({seq:[{\"int\":0},{\"int\":{bigint:s.n}},{\"int\":s.e},{\"int\":{bigint:s.d}},{\"int\":{bigint:s.p}},{\"int\":{bigint:s.q}},{\"int\":{bigint:s.dmp1}},{\"int\":{bigint:s.dmq1}},{\"int\":{bigint:s.coeff}}]});return G}function B(G){var s=l({seq:[{\"int\":1},{octstr:{hex:G.prvKeyHex}},{tag:[\"a0\",true,{oid:{name:G.curveName}}]},{tag:[\"a1\",true,{bitstr:{hex:\"00\"+G.pubKeyHex}}]}]});return s}function x(s){var G=l({seq:[{\"int\":0},{\"int\":{bigint:s.p}},{\"int\":{bigint:s.q}},{\"int\":{bigint:s.g}},{\"int\":{bigint:s.y}},{\"int\":{bigint:s.x}}]});return G}if(((n!==undefined&&b instanceof n)||(u!==undefined&&b instanceof u)||(r!==undefined&&b instanceof r))&&b.isPublic==true&&(D===undefined||D==\"PKCS8PUB\")){var E=new C(b);var w=E.getEncodedHex();return hextopem(w,\"PUBLIC KEY\")}if(D==\"PKCS1PRV\"&&n!==undefined&&b instanceof n&&(y===undefined||y==null)&&b.isPrivate==true){var E=A(b);var w=E.getEncodedHex();return hextopem(w,\"RSA PRIVATE KEY\")}if(D==\"PKCS1PRV\"&&r!==undefined&&b instanceof r&&(y===undefined||y==null)&&b.isPrivate==true){var i=new z({name:b.curveName});var v=i.getEncodedHex();var h=B(b);var t=h.getEncodedHex();var p=\"\";p+=hextopem(v,\"EC PARAMETERS\");p+=hextopem(t,\"EC PRIVATE KEY\");return p}if(D==\"PKCS1PRV\"&&u!==undefined&&b instanceof u&&(y===undefined||y==null)&&b.isPrivate==true){var E=x(b);var w=E.getEncodedHex();return hextopem(w,\"DSA PRIVATE KEY\")}if(D==\"PKCS5PRV\"&&n!==undefined&&b instanceof n&&(y!==undefined&&y!=null)&&b.isPrivate==true){var E=A(b);var w=E.getEncodedHex();if(m===undefined){m=\"DES-EDE3-CBC\"}return this.getEncryptedPKCS5PEMFromPrvKeyHex(\"RSA\",w,y,m,j)}if(D==\"PKCS5PRV\"&&r!==undefined&&b instanceof r&&(y!==undefined&&y!=null)&&b.isPrivate==true){var E=B(b);var w=E.getEncodedHex();if(m===undefined){m=\"DES-EDE3-CBC\"}return this.getEncryptedPKCS5PEMFromPrvKeyHex(\"EC\",w,y,m,j)}if(D==\"PKCS5PRV\"&&u!==undefined&&b instanceof u&&(y!==undefined&&y!=null)&&b.isPrivate==true){var E=x(b);var w=E.getEncodedHex();if(m===undefined){m=\"DES-EDE3-CBC\"}return this.getEncryptedPKCS5PEMFromPrvKeyHex(\"DSA\",w,y,m,j)}var o=function(G,s){var I=c(G,s);var H=new l({seq:[{seq:[{oid:{name:\"pkcs5PBES2\"}},{seq:[{seq:[{oid:{name:\"pkcs5PBKDF2\"}},{seq:[{octstr:{hex:I.pbkdf2Salt}},{\"int\":I.pbkdf2Iter}]}]},{seq:[{oid:{name:\"des-EDE3-CBC\"}},{octstr:{hex:I.encryptionSchemeIV}}]}]}]},{octstr:{hex:I.ciphertext}}]});return H.getEncodedHex()};var c=function(N,O){var H=100;var M=CryptoJS.lib.WordArray.random(8);var L=\"DES-EDE3-CBC\";var s=CryptoJS.lib.WordArray.random(8);var I=CryptoJS.PBKDF2(O,M,{keySize:192/32,iterations:H});var J=CryptoJS.enc.Hex.parse(N);var K=CryptoJS.TripleDES.encrypt(J,I,{iv:s})+\"\";var G={};G.ciphertext=K;G.pbkdf2Salt=CryptoJS.enc.Hex.stringify(M);G.pbkdf2Iter=H;G.encryptionSchemeAlg=L;G.encryptionSchemeIV=CryptoJS.enc.Hex.stringify(s);return G};if(D==\"PKCS8PRV\"&&n!=undefined&&b instanceof n&&b.isPrivate==true){var g=A(b);var d=g.getEncodedHex();var E=l({seq:[{\"int\":0},{seq:[{oid:{name:\"rsaEncryption\"}},{\"null\":true}]},{octstr:{hex:d}}]});var w=E.getEncodedHex();if(y===undefined||y==null){return hextopem(w,\"PRIVATE KEY\")}else{var t=o(w,y);return hextopem(t,\"ENCRYPTED PRIVATE KEY\")}}if(D==\"PKCS8PRV\"&&r!==undefined&&b instanceof r&&b.isPrivate==true){var g=new l({seq:[{\"int\":1},{octstr:{hex:b.prvKeyHex}},{tag:[\"a1\",true,{bitstr:{hex:\"00\"+b.pubKeyHex}}]}]});var d=g.getEncodedHex();var E=l({seq:[{\"int\":0},{seq:[{oid:{name:\"ecPublicKey\"}},{oid:{name:b.curveName}}]},{octstr:{hex:d}}]});var w=E.getEncodedHex();if(y===undefined||y==null){return hextopem(w,\"PRIVATE KEY\")}else{var t=o(w,y);return hextopem(t,\"ENCRYPTED PRIVATE KEY\")}}if(D==\"PKCS8PRV\"&&u!==undefined&&b instanceof u&&b.isPrivate==true){var g=new f({bigint:b.x});var d=g.getEncodedHex();var E=l({seq:[{\"int\":0},{seq:[{oid:{name:\"dsa\"}},{seq:[{\"int\":{bigint:b.p}},{\"int\":{bigint:b.q}},{\"int\":{bigint:b.g}}]}]},{octstr:{hex:d}}]});var w=E.getEncodedHex();if(y===undefined||y==null){return hextopem(w,\"PRIVATE KEY\")}else{var t=o(w,y);return hextopem(t,\"ENCRYPTED PRIVATE KEY\")}}throw new Error(\"unsupported object nor format\")};KEYUTIL.getKeyFromCSRPEM=function(b){var a=pemtohex(b,\"CERTIFICATE REQUEST\");var c=KEYUTIL.getKeyFromCSRHex(a);return c};KEYUTIL.getKeyFromCSRHex=function(a){var c=KEYUTIL.parseCSRHex(a);var b=KEYUTIL.getKey(c.p8pubkeyhex,null,\"pkcs8pub\");return b};KEYUTIL.parseCSRHex=function(d){var i=ASN1HEX;var f=i.getChildIdx;var c=i.getTLV;var b={};var g=d;if(g.substr(0,2)!=\"30\"){throw\"malformed CSR(code:001)\"}var e=f(g,0);if(e.length<1){throw\"malformed CSR(code:002)\"}if(g.substr(e[0],2)!=\"30\"){throw\"malformed CSR(code:003)\"}var a=f(g,e[0]);if(a.length<3){throw\"malformed CSR(code:004)\"}b.p8pubkeyhex=c(g,a[2]);return b};KEYUTIL.getKeyID=function(f){var c=KEYUTIL;var e=ASN1HEX;if(typeof f===\"string\"&&f.indexOf(\"BEGIN \")!=-1){f=c.getKey(f)}var d=pemtohex(c.getPEM(f));var b=e.getIdxbyList(d,0,[1]);var a=e.getV(d,b).substring(2);return KJUR.crypto.Util.hashHex(a,\"sha1\")};KEYUTIL.getJWKFromKey=function(d){var b={};if(d instanceof RSAKey&&d.isPrivate){b.kty=\"RSA\";b.n=hextob64u(d.n.toString(16));b.e=hextob64u(d.e.toString(16));b.d=hextob64u(d.d.toString(16));b.p=hextob64u(d.p.toString(16));b.q=hextob64u(d.q.toString(16));b.dp=hextob64u(d.dmp1.toString(16));b.dq=hextob64u(d.dmq1.toString(16));b.qi=hextob64u(d.coeff.toString(16));return b}else{if(d instanceof RSAKey&&d.isPublic){b.kty=\"RSA\";b.n=hextob64u(d.n.toString(16));b.e=hextob64u(d.e.toString(16));return b}else{if(d instanceof KJUR.crypto.ECDSA&&d.isPrivate){var a=d.getShortNISTPCurveName();if(a!==\"P-256\"&&a!==\"P-384\"){throw\"unsupported curve name for JWT: \"+a}var c=d.getPublicKeyXYHex();b.kty=\"EC\";b.crv=a;b.x=hextob64u(c.x);b.y=hextob64u(c.y);b.d=hextob64u(d.prvKeyHex);return b}else{if(d instanceof KJUR.crypto.ECDSA&&d.isPublic){var a=d.getShortNISTPCurveName();if(a!==\"P-256\"&&a!==\"P-384\"){throw\"unsupported curve name for JWT: \"+a}var c=d.getPublicKeyXYHex();b.kty=\"EC\";b.crv=a;b.x=hextob64u(c.x);b.y=hextob64u(c.y);return b}}}}throw\"not supported key object\"};\nRSAKey.getPosArrayOfChildrenFromHex=function(a){return ASN1HEX.getChildIdx(a,0)};RSAKey.getHexValueArrayOfChildrenFromHex=function(f){var n=ASN1HEX;var i=n.getV;var k=RSAKey.getPosArrayOfChildrenFromHex(f);var e=i(f,k[0]);var j=i(f,k[1]);var b=i(f,k[2]);var c=i(f,k[3]);var h=i(f,k[4]);var g=i(f,k[5]);var m=i(f,k[6]);var l=i(f,k[7]);var d=i(f,k[8]);var k=new Array();k.push(e,j,b,c,h,g,m,l,d);return k};RSAKey.prototype.readPrivateKeyFromPEMString=function(d){var c=pemtohex(d);var b=RSAKey.getHexValueArrayOfChildrenFromHex(c);this.setPrivateEx(b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8])};RSAKey.prototype.readPKCS5PrvKeyHex=function(c){var b=RSAKey.getHexValueArrayOfChildrenFromHex(c);this.setPrivateEx(b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8])};RSAKey.prototype.readPKCS8PrvKeyHex=function(e){var c,i,k,b,a,f,d,j;var m=ASN1HEX;var l=m.getVbyListEx;if(m.isASN1HEX(e)===false){throw new Error(\"not ASN.1 hex string\")}try{c=l(e,0,[2,0,1],\"02\");i=l(e,0,[2,0,2],\"02\");k=l(e,0,[2,0,3],\"02\");b=l(e,0,[2,0,4],\"02\");a=l(e,0,[2,0,5],\"02\");f=l(e,0,[2,0,6],\"02\");d=l(e,0,[2,0,7],\"02\");j=l(e,0,[2,0,8],\"02\")}catch(g){throw new Error(\"malformed PKCS#8 plain RSA private key\")}this.setPrivateEx(c,i,k,b,a,f,d,j)};RSAKey.prototype.readPKCS5PubKeyHex=function(c){var e=ASN1HEX;var b=e.getV;if(e.isASN1HEX(c)===false){throw new Error(\"keyHex is not ASN.1 hex string\")}var a=e.getChildIdx(c,0);if(a.length!==2||c.substr(a[0],2)!==\"02\"||c.substr(a[1],2)!==\"02\"){throw new Error(\"wrong hex for PKCS#5 public key\")}var f=b(c,a[0]);var d=b(c,a[1]);this.setPublic(f,d)};RSAKey.prototype.readPKCS8PubKeyHex=function(b){var c=ASN1HEX;if(c.isASN1HEX(b)===false){throw new Error(\"not ASN.1 hex string\")}if(c.getTLVbyListEx(b,0,[0,0])!==\"06092a864886f70d010101\"){throw new Error(\"not PKCS8 RSA public key\")}var a=c.getTLVbyListEx(b,0,[1,0]);this.readPKCS5PubKeyHex(a)};RSAKey.prototype.readCertPubKeyHex=function(b,d){var a,c;a=new X509();a.readCertHex(b);c=a.getPublicKeyHex();this.readPKCS8PubKeyHex(c)};\nvar _RE_HEXDECONLY=new RegExp(\"[^0-9a-f]\",\"gi\");function _rsasign_getHexPaddedDigestInfoForString(d,e,a){var b=function(f){return KJUR.crypto.Util.hashString(f,a)};var c=b(d);return KJUR.crypto.Util.getPaddedDigestInfoHex(c,a,e)}function _zeroPaddingOfSignature(e,d){var c=\"\";var a=d/4-e.length;for(var b=0;b<a;b++){c=c+\"0\"}return c+e}RSAKey.prototype.sign=function(d,a){var b=function(e){return KJUR.crypto.Util.hashString(e,a)};var c=b(d);return this.signWithMessageHash(c,a)};RSAKey.prototype.signWithMessageHash=function(e,c){var f=KJUR.crypto.Util.getPaddedDigestInfoHex(e,c,this.n.bitLength());var b=parseBigInt(f,16);var d=this.doPrivate(b);var a=d.toString(16);return _zeroPaddingOfSignature(a,this.n.bitLength())};function pss_mgf1_str(c,a,e){var b=\"\",d=0;while(b.length<a){b+=hextorstr(e(rstrtohex(c+String.fromCharCode.apply(String,[(d&4278190080)>>24,(d&16711680)>>16,(d&65280)>>8,d&255]))));d+=1}return b}RSAKey.prototype.signPSS=function(e,a,d){var c=function(f){return KJUR.crypto.Util.hashHex(f,a)};var b=c(rstrtohex(e));if(d===undefined){d=-1}return this.signWithMessageHashPSS(b,a,d)};RSAKey.prototype.signWithMessageHashPSS=function(l,a,k){var b=hextorstr(l);var g=b.length;var m=this.n.bitLength()-1;var c=Math.ceil(m/8);var d;var o=function(i){return KJUR.crypto.Util.hashHex(i,a)};if(k===-1||k===undefined){k=g}else{if(k===-2){k=c-g-2}else{if(k<-2){throw new Error(\"invalid salt length\")}}}if(c<(g+k+2)){throw new Error(\"data too long\")}var f=\"\";if(k>0){f=new Array(k);new SecureRandom().nextBytes(f);f=String.fromCharCode.apply(String,f)}var n=hextorstr(o(rstrtohex(\"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\"+b+f)));var j=[];for(d=0;d<c-k-g-2;d+=1){j[d]=0}var e=String.fromCharCode.apply(String,j)+\"\\x01\"+f;var h=pss_mgf1_str(n,e.length,o);var q=[];for(d=0;d<e.length;d+=1){q[d]=e.charCodeAt(d)^h.charCodeAt(d)}var p=(65280>>(8*c-m))&255;q[0]&=~p;for(d=0;d<g;d++){q.push(n.charCodeAt(d))}q.push(188);return _zeroPaddingOfSignature(this.doPrivate(new BigInteger(q)).toString(16),this.n.bitLength())};function _rsasign_getDecryptSignatureBI(a,d,c){var b=new RSAKey();b.setPublic(d,c);var e=b.doPublic(a);return e}function _rsasign_getHexDigestInfoFromSig(a,c,b){var e=_rsasign_getDecryptSignatureBI(a,c,b);var d=e.toString(16).replace(/^1f+00/,\"\");return d}function _rsasign_getAlgNameAndHashFromHexDisgestInfo(f){for(var e in KJUR.crypto.Util.DIGESTINFOHEAD){var d=KJUR.crypto.Util.DIGESTINFOHEAD[e];var b=d.length;if(f.substring(0,b)==d){var c=[e,f.substring(b)];return c}}return[]}RSAKey.prototype.verify=function(f,j){j=j.replace(_RE_HEXDECONLY,\"\");j=j.replace(/[ \\n]+/g,\"\");var b=parseBigInt(j,16);if(b.bitLength()>this.n.bitLength()){return 0}var i=this.doPublic(b);var e=i.toString(16).replace(/^1f+00/,\"\");var g=_rsasign_getAlgNameAndHashFromHexDisgestInfo(e);if(g.length==0){return false}var d=g[0];var h=g[1];var a=function(k){return KJUR.crypto.Util.hashString(k,d)};var c=a(f);return(h==c)};RSAKey.prototype.verifyWithMessageHash=function(e,a){if(a.length!=Math.ceil(this.n.bitLength()/4)){return false}var b=parseBigInt(a,16);if(b.bitLength()>this.n.bitLength()){return 0}var h=this.doPublic(b);var g=h.toString(16).replace(/^1f+00/,\"\");var c=_rsasign_getAlgNameAndHashFromHexDisgestInfo(g);if(c.length==0){return false}var d=c[0];var f=c[1];return(f==e)};RSAKey.prototype.verifyPSS=function(c,b,a,f){var e=function(g){return KJUR.crypto.Util.hashHex(g,a)};var d=e(rstrtohex(c));if(f===undefined){f=-1}return this.verifyWithMessageHashPSS(d,b,a,f)};RSAKey.prototype.verifyWithMessageHashPSS=function(f,s,l,c){if(s.length!=Math.ceil(this.n.bitLength()/4)){return false}var k=new BigInteger(s,16);var r=function(i){return KJUR.crypto.Util.hashHex(i,l)};var j=hextorstr(f);var h=j.length;var g=this.n.bitLength()-1;var m=Math.ceil(g/8);var q;if(c===-1||c===undefined){c=h}else{if(c===-2){c=m-h-2}else{if(c<-2){throw new Error(\"invalid salt length\")}}}if(m<(h+c+2)){throw new Error(\"data too long\")}var a=this.doPublic(k).toByteArray();for(q=0;q<a.length;q+=1){a[q]&=255}while(a.length<m){a.unshift(0)}if(a[m-1]!==188){throw new Error(\"encoded message does not end in 0xbc\")}a=String.fromCharCode.apply(String,a);var d=a.substr(0,m-h-1);var e=a.substr(d.length,h);var p=(65280>>(8*m-g))&255;if((d.charCodeAt(0)&p)!==0){throw new Error(\"bits beyond keysize not zero\")}var n=pss_mgf1_str(e,d.length,r);var o=[];for(q=0;q<d.length;q+=1){o[q]=d.charCodeAt(q)^n.charCodeAt(q)}o[0]&=~p;var b=m-h-c-2;for(q=0;q<b;q+=1){if(o[q]!==0){throw new Error(\"leftmost octets not zero\")}}if(o[b]!==1){throw new Error(\"0x01 marker not found\")}return e===hextorstr(r(rstrtohex(\"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\"+j+String.fromCharCode.apply(String,o.slice(-c)))))};RSAKey.SALT_LEN_HLEN=-1;RSAKey.SALT_LEN_MAX=-2;RSAKey.SALT_LEN_RECOVER=-2;\nfunction X509(q){var j=ASN1HEX,n=j.getChildIdx,g=j.getV,b=j.getTLV,c=j.getVbyList,k=j.getVbyListEx,a=j.getTLVbyList,l=j.getTLVbyListEx,h=j.getIdxbyList,e=j.getIdxbyListEx,i=j.getVidx,p=j.oidname,m=j.hextooidstr,d=X509,r=pemtohex,f;try{f=KJUR.asn1.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV}catch(o){}this.HEX2STAG={\"0c\":\"utf8\",\"13\":\"prn\",\"16\":\"ia5\",\"1a\":\"vis\",\"1e\":\"bmp\"};this.hex=null;this.version=0;this.foffset=0;this.aExtInfo=null;this.getVersion=function(){if(this.hex===null||this.version!==0){return this.version}if(a(this.hex,0,[0,0])!==\"a003020102\"){this.version=1;this.foffset=-1;return 1}this.version=3;return 3};this.getSerialNumberHex=function(){return k(this.hex,0,[0,0],\"02\")};this.getSignatureAlgorithmField=function(){var s=l(this.hex,0,[0,1]);return this.getAlgorithmIdentifierName(s)};this.getAlgorithmIdentifierName=function(s){for(var t in f){if(s===f[t]){return t}}return p(k(s,0,[0],\"06\"))};this.getIssuer=function(){return this.getX500Name(this.getIssuerHex())};this.getIssuerHex=function(){return a(this.hex,0,[0,3+this.foffset],\"30\")};this.getIssuerString=function(){return d.hex2dn(this.getIssuerHex())};this.getSubject=function(){return this.getX500Name(this.getSubjectHex())};this.getSubjectHex=function(){return a(this.hex,0,[0,5+this.foffset],\"30\")};this.getSubjectString=function(){return d.hex2dn(this.getSubjectHex())};this.getNotBefore=function(){var t=c(this.hex,0,[0,4+this.foffset,0]);t=t.replace(/(..)/g,\"%$1\");t=decodeURIComponent(t);return t};this.getNotAfter=function(){var t=c(this.hex,0,[0,4+this.foffset,1]);t=t.replace(/(..)/g,\"%$1\");t=decodeURIComponent(t);return t};this.getPublicKeyHex=function(){return j.getTLVbyList(this.hex,0,[0,6+this.foffset],\"30\")};this.getPublicKeyIdx=function(){return h(this.hex,0,[0,6+this.foffset],\"30\")};this.getPublicKeyContentIdx=function(){var s=this.getPublicKeyIdx();return h(this.hex,s,[1,0],\"30\")};this.getPublicKey=function(){return KEYUTIL.getKey(this.getPublicKeyHex(),null,\"pkcs8pub\")};this.getSignatureAlgorithmName=function(){var s=a(this.hex,0,[1],\"30\");return this.getAlgorithmIdentifierName(s)};this.getSignatureValueHex=function(){return c(this.hex,0,[2],\"03\",true)};this.verifySignature=function(u){var v=this.getSignatureAlgorithmField();var s=this.getSignatureValueHex();var t=a(this.hex,0,[0],\"30\");var w=new KJUR.crypto.Signature({alg:v});w.init(u);w.updateHex(t);return w.verify(s)};this.parseExt=function(B){var u,s,w;if(B===undefined){w=this.hex;if(this.version!==3){return -1}u=h(w,0,[0,7,0],\"30\");s=n(w,u)}else{w=pemtohex(B);var x=h(w,0,[0,3,0,0],\"06\");if(g(w,x)!=\"2a864886f70d01090e\"){this.aExtInfo=new Array();return}u=h(w,0,[0,3,0,1,0],\"30\");s=n(w,u);this.hex=w}this.aExtInfo=new Array();for(var v=0;v<s.length;v++){var z={};z.critical=false;var y=n(w,s[v]);var t=0;if(y.length===3){z.critical=true;t=1}z.oid=j.hextooidstr(c(w,s[v],[0],\"06\"));var A=h(w,s[v],[1+t]);z.vidx=i(w,A);this.aExtInfo.push(z)}};this.getExtInfo=function(u){var s=this.aExtInfo;var v=u;if(!u.match(/^[0-9.]+$/)){v=KJUR.asn1.x509.OID.name2oid(u)}if(v===\"\"){return undefined}for(var t=0;t<s.length;t++){if(s[t].oid===v){return s[t]}}return undefined};this.getExtBasicConstraints=function(t,x){if(t===undefined&&x===undefined){var v=this.getExtInfo(\"basicConstraints\");if(v===undefined){return undefined}t=b(this.hex,v.vidx);x=v.critical}var s={extname:\"basicConstraints\"};if(x){s.critical=true}if(t===\"3000\"){return s}if(t===\"30030101ff\"){s.cA=true;return s}if(t.substr(0,12)===\"30060101ff02\"){var w=g(t,10);var u=parseInt(w,16);s.cA=true;s.pathLen=u;return s}throw new Error(\"hExtV parse error: \"+t)};this.getExtKeyUsage=function(t,v){if(t===undefined&&v===undefined){var u=this.getExtInfo(\"keyUsage\");if(u===undefined){return undefined}t=b(this.hex,u.vidx);v=u.critical}var s={extname:\"keyUsage\"};if(v){s.critical=true}s.names=this.getExtKeyUsageString(t).split(\",\");return s};this.getExtKeyUsageBin=function(u){if(u===undefined){var v=this.getExtInfo(\"keyUsage\");if(v===undefined){return\"\"}u=b(this.hex,v.vidx)}if(u.length!=8&&u.length!=10){throw new Error(\"malformed key usage value: \"+u)}var t=\"000000000000000\"+parseInt(u.substr(6),16).toString(2);if(u.length==8){t=t.slice(-8)}if(u.length==10){t=t.slice(-16)}t=t.replace(/0+$/,\"\");if(t==\"\"){t=\"0\"}return t};this.getExtKeyUsageString=function(u){var v=this.getExtKeyUsageBin(u);var s=new Array();for(var t=0;t<v.length;t++){if(v.substr(t,1)==\"1\"){s.push(X509.KEYUSAGE_NAME[t])}}return s.join(\",\")};this.getExtSubjectKeyIdentifier=function(u,w){if(u===undefined&&w===undefined){var v=this.getExtInfo(\"subjectKeyIdentifier\");if(v===undefined){return undefined}u=b(this.hex,v.vidx);w=v.critical}var s={extname:\"subjectKeyIdentifier\"};if(w){s.critical=true}var t=g(u,0);s.kid={hex:t};return s};this.getExtAuthorityKeyIdentifier=function(y,w){if(y===undefined&&w===undefined){var s=this.getExtInfo(\"authorityKeyIdentifier\");if(s===undefined){return undefined}y=b(this.hex,s.vidx);w=s.critical}var z={extname:\"authorityKeyIdentifier\"};if(w){z.critical=true}var x=n(y,0);for(var t=0;t<x.length;t++){var A=y.substr(x[t],2);if(A===\"80\"){z.kid={hex:g(y,x[t])}}if(A===\"a1\"){var v=b(y,x[t]);var u=this.getGeneralNames(v);z.issuer=u[0][\"dn\"]}if(A===\"82\"){z.sn={hex:g(y,x[t])}}}return z};this.getExtExtKeyUsage=function(v,x){if(v===undefined&&x===undefined){var w=this.getExtInfo(\"extKeyUsage\");if(w===undefined){return undefined}v=b(this.hex,w.vidx);x=w.critical}var s={extname:\"extKeyUsage\",array:[]};if(x){s.critical=true}var t=n(v,0);for(var u=0;u<t.length;u++){s.array.push(p(g(v,t[u])))}return s};this.getExtExtKeyUsageName=function(){var w=this.getExtInfo(\"extKeyUsage\");if(w===undefined){return w}var s=new Array();var v=b(this.hex,w.vidx);if(v===\"\"){return s}var t=n(v,0);for(var u=0;u<t.length;u++){s.push(p(g(v,t[u])))}return s};this.getExtSubjectAltName=function(t,v){if(t===undefined&&v===undefined){var u=this.getExtInfo(\"subjectAltName\");if(u===undefined){return undefined}t=b(this.hex,u.vidx);v=u.critical}var s={extname:\"subjectAltName\",array:[]};if(v){s.critical=true}s.array=this.getGeneralNames(t);return s};this.getExtIssuerAltName=function(t,v){if(t===undefined&&v===undefined){var u=this.getExtInfo(\"issuerAltName\");if(u===undefined){return undefined}t=b(this.hex,u.vidx);v=u.critical}var s={extname:\"issuerAltName\",array:[]};if(v){s.critical=true}s.array=this.getGeneralNames(t);return s};this.getGeneralNames=function(w){var u=n(w,0);var s=[];for(var v=0;v<u.length;v++){var t=this.getGeneralName(b(w,u[v]));if(t!==undefined){s.push(t)}}return s};this.getGeneralName=function(t){var s=t.substr(0,2);var v=g(t,0);var u=hextorstr(v);if(s==\"81\"){return{rfc822:u}}if(s==\"82\"){return{dns:u}}if(s==\"86\"){return{uri:u}}if(s==\"87\"){return{ip:hextoip(v)}}if(s==\"a4\"){return{dn:this.getX500Name(v)}}return undefined};this.getExtSubjectAltName2=function(){var w,z,y;var x=this.getExtInfo(\"subjectAltName\");if(x===undefined){return x}var s=new Array();var v=b(this.hex,x.vidx);var t=n(v,0);for(var u=0;u<t.length;u++){y=v.substr(t[u],2);w=g(v,t[u]);if(y===\"81\"){z=hextoutf8(w);s.push([\"MAIL\",z])}if(y===\"82\"){z=hextoutf8(w);s.push([\"DNS\",z])}if(y===\"84\"){z=X509.hex2dn(w,0);s.push([\"DN\",z])}if(y===\"86\"){z=hextoutf8(w);s.push([\"URI\",z])}if(y===\"87\"){z=hextoip(w);s.push([\"IP\",z])}}return s};this.getExtCRLDistributionPoints=function(w,y){if(w===undefined&&y===undefined){var x=this.getExtInfo(\"cRLDistributionPoints\");if(x===undefined){return undefined}w=b(this.hex,x.vidx);y=x.critical}var t={extname:\"cRLDistributionPoints\",array:[]};if(y){t.critical=true}var u=n(w,0);for(var v=0;v<u.length;v++){var s=b(w,u[v]);t.array.push(this.getDistributionPoint(s))}return t};this.getDistributionPoint=function(x){var u={};var v=n(x,0);for(var w=0;w<v.length;w++){var t=x.substr(v[w],2);var s=b(x,v[w]);if(t==\"a0\"){u.dpname=this.getDistributionPointName(s)}}return u};this.getDistributionPointName=function(x){var u={};var v=n(x,0);for(var w=0;w<v.length;w++){var t=x.substr(v[w],2);var s=b(x,v[w]);if(t==\"a0\"){u.full=this.getGeneralNames(s)}}return u};this.getExtCRLDistributionPointsURI=function(){var x=this.getExtInfo(\"cRLDistributionPoints\");if(x===undefined){return x}var s=new Array();var t=n(this.hex,x.vidx);for(var v=0;v<t.length;v++){try{var y=c(this.hex,t[v],[0,0,0],\"86\");var w=hextoutf8(y);s.push(w)}catch(u){}}return s};this.getExtAIAInfo=function(){var w=this.getExtInfo(\"authorityInfoAccess\");if(w===undefined){return w}var s={ocsp:[],caissuer:[]};var t=n(this.hex,w.vidx);for(var u=0;u<t.length;u++){var x=c(this.hex,t[u],[0],\"06\");var v=c(this.hex,t[u],[1],\"86\");if(x===\"2b06010505073001\"){s.ocsp.push(hextoutf8(v))}if(x===\"2b06010505073002\"){s.caissuer.push(hextoutf8(v))}}return s};this.getExtAuthorityInfoAccess=function(z,x){if(z===undefined&&x===undefined){var s=this.getExtInfo(\"authorityInfoAccess\");if(s===undefined){return undefined}z=b(this.hex,s.vidx);x=s.critical}var A={extname:\"authorityInfoAccess\",array:[]};if(x){A.critical=true}var y=n(z,0);for(var t=0;t<y.length;t++){var w=k(z,y[t],[0],\"06\");var u=c(z,y[t],[1],\"86\");var v=hextoutf8(u);if(w==\"2b06010505073001\"){A.array.push({ocsp:v})}else{if(w==\"2b06010505073002\"){A.array.push({caissuer:v})}else{throw new Error(\"unknown method: \"+w)}}}return A};this.getExtCertificatePolicies=function(w,z){if(w===undefined&&z===undefined){var y=this.getExtInfo(\"certificatePolicies\");if(y===undefined){return undefined}w=b(this.hex,y.vidx);z=y.critical}var s={extname:\"certificatePolicies\",array:[]};if(z){s.critical=true}var t=n(w,0);for(var u=0;u<t.length;u++){var x=b(w,t[u]);var v=this.getPolicyInformation(x);s.array.push(v)}return s};this.getPolicyInformation=function(w){var s={};var y=c(w,0,[0],\"06\");s.policyoid=p(y);var z=e(w,0,[1],\"30\");if(z!=-1){s.array=[];var t=n(w,z);for(var u=0;u<t.length;u++){var x=b(w,t[u]);var v=this.getPolicyQualifierInfo(x);s.array.push(v)}}return s};this.getPolicyQualifierInfo=function(t){var s={};var u=c(t,0,[0],\"06\");if(u===\"2b06010505070201\"){var w=k(t,0,[1],\"16\");s.cps=hextorstr(w)}else{if(u===\"2b06010505070202\"){var v=a(t,0,[1],\"30\");s.unotice=this.getUserNotice(v)}}return s};this.getUserNotice=function(w){var t={};var u=n(w,0);for(var v=0;v<u.length;v++){var s=b(w,u[v]);if(s.substr(0,2)!=\"30\"){t.exptext=this.getDisplayText(s)}}return t};this.getDisplayText=function(t){var u={\"0c\":\"utf8\",\"16\":\"ia5\",\"1a\":\"vis\",\"1e\":\"bmp\"};var s={};s.type=u[t.substr(0,2)];s.str=hextorstr(g(t,0));return s};this.getExtCRLNumber=function(t,u){var s={extname:\"cRLNumber\"};if(u){s.critical=true}if(t.substr(0,2)==\"02\"){s.num={hex:g(t,0)};return s}throw new Error(\"hExtV parse error: \"+t)};this.getExtCRLReason=function(t,u){var s={extname:\"cRLReason\"};if(u){s.critical=true}if(t.substr(0,2)==\"0a\"){s.code=parseInt(g(t,0),16);return s}throw new Error(\"hExtV parse error: \"+t)};this.getExtOcspNonce=function(t,v){var s={extname:\"ocspNonce\"};if(v){s.critical=true}var u=g(t,0);s.hex=u;return s};this.getExtOcspNoCheck=function(t,u){var s={extname:\"ocspNoCheck\"};if(u){s.critical=true}return s};this.getExtAdobeTimeStamp=function(v,y){if(v===undefined&&y===undefined){var x=this.getExtInfo(\"adobeTimeStamp\");if(x===undefined){return undefined}v=b(this.hex,x.vidx);y=x.critical}var s={extname:\"adobeTimeStamp\"};if(y){s.critical=true}var u=n(v,0);if(u.length>1){var z=b(v,u[1]);var t=this.getGeneralName(z);if(t.uri!=undefined){s.uri=t.uri}}if(u.length>2){var w=b(v,u[2]);if(w==\"0101ff\"){s.reqauth=true}if(w==\"010100\"){s.reqauth=false}}return s};this.getX500NameRule=function(s){var z=true;var D=true;var C=false;var t=\"\";var w=\"\";var F=null;var A=[];for(var v=0;v<s.length;v++){var x=s[v];for(var u=0;u<x.length;u++){A.push(x[u])}}for(var v=0;v<A.length;v++){var E=A[v];var G=E.ds;var B=E.value;var y=E.type;t+=\":\"+G;if(G!=\"prn\"&&G!=\"utf8\"&&G!=\"ia5\"){return\"mixed\"}if(G==\"ia5\"){if(y!=\"CN\"){return\"mixed\"}else{if(!KJUR.lang.String.isMail(B)){return\"mixed\"}else{continue}}}if(y==\"C\"){if(G==\"prn\"){continue}else{return\"mixed\"}}w+=\":\"+G;if(F==null){F=G}else{if(F!==G){return\"mixed\"}}}if(F==null){return\"prn\"}else{return F}};this.getX500Name=function(v){var t=this.getX500NameArray(v);var u=this.dnarraytostr(t);return{array:t,str:u}};this.getX500NameArray=function(v){var s=[];var t=n(v,0);for(var u=0;u<t.length;u++){s.push(this.getRDN(b(v,t[u])))}return s};this.getRDN=function(v){var s=[];var t=n(v,0);for(var u=0;u<t.length;u++){s.push(this.getAttrTypeAndValue(b(v,t[u])))}return s};this.getAttrTypeAndValue=function(u){var s={type:null,value:null,ds:null};var t=n(u,0);var x=c(u,t[0],[],\"06\");var w=c(u,t[1],[]);var v=KJUR.asn1.ASN1Util.oidHexToInt(x);s.type=KJUR.asn1.x509.OID.oid2atype(v);s.value=hextorstr(w);s.ds=this.HEX2STAG[u.substr(t[1],2)];return s};this.readCertPEM=function(s){this.readCertHex(r(s))};this.readCertHex=function(s){this.hex=s;this.getVersion();try{h(this.hex,0,[0,7],\"a3\");this.parseExt()}catch(t){}};this.getParam=function(){var s={};s.version=this.getVersion();s.serial={hex:this.getSerialNumberHex()};s.sigalg=this.getSignatureAlgorithmField();s.issuer=this.getIssuer();s.notbefore=this.getNotBefore();s.notafter=this.getNotAfter();s.subject=this.getSubject();s.sbjpubkey=hextopem(this.getPublicKeyHex(),\"PUBLIC KEY\");if(this.aExtInfo.length>0){s.ext=this.getExtParamArray()}s.sighex=this.getSignatureValueHex();return s};this.getExtParamArray=function(t){if(t==undefined){var v=e(this.hex,0,[0,\"[3]\"]);if(v!=-1){t=l(this.hex,0,[0,\"[3]\",0],\"30\")}}var s=[];var u=n(t,0);for(var w=0;w<u.length;w++){var y=b(t,u[w]);var x=this.getExtParam(y);if(x!=null){s.push(x)}}return s};this.getExtParam=function(t){var A={};var v=n(t,0);var w=v.length;if(w!=2&&w!=3){throw new Error(\"wrong number elements in Extension: \"+w+\" \"+t)}var u=m(c(t,0,[0],\"06\"));var y=false;if(w==3&&a(t,0,[1])==\"0101ff\"){y=true}var z=a(t,0,[w-1,0]);var x=undefined;if(u==\"2.5.29.14\"){x=this.getExtSubjectKeyIdentifier(z,y)}else{if(u==\"2.5.29.15\"){x=this.getExtKeyUsage(z,y)}else{if(u==\"2.5.29.17\"){x=this.getExtSubjectAltName(z,y)}else{if(u==\"2.5.29.18\"){x=this.getExtIssuerAltName(z,y)}else{if(u==\"2.5.29.19\"){x=this.getExtBasicConstraints(z,y)}else{if(u==\"2.5.29.31\"){x=this.getExtCRLDistributionPoints(z,y)}else{if(u==\"2.5.29.32\"){x=this.getExtCertificatePolicies(z,y)}else{if(u==\"2.5.29.35\"){x=this.getExtAuthorityKeyIdentifier(z,y)}else{if(u==\"2.5.29.37\"){x=this.getExtExtKeyUsage(z,y)}else{if(u==\"1.3.6.1.5.5.7.1.1\"){x=this.getExtAuthorityInfoAccess(z,y)}else{if(u==\"2.5.29.20\"){x=this.getExtCRLNumber(z,y)}else{if(u==\"2.5.29.21\"){x=this.getExtCRLReason(z,y)}else{if(u==\"1.3.6.1.5.5.7.48.1.2\"){x=this.getExtOcspNonce(z,y)}else{if(u==\"1.3.6.1.5.5.7.48.1.5\"){x=this.getExtOcspNoCheck(z,y)}else{if(u==\"1.2.840.113583.1.1.9.1\"){x=this.getExtAdobeTimeStamp(z,y)}}}}}}}}}}}}}}}if(x!=undefined){return x}var s={extname:u,extn:z};if(y){s.critical=true}return s};this.findExt=function(t,u){for(var s=0;s<t.length;s++){if(t[s].extname==u){return t[s]}}return null};this.updateExtCDPFullURI=function(w,s){var v=this.findExt(w,\"cRLDistributionPoints\");if(v==null){return}if(v.array==undefined){return}var y=v.array;for(var u=0;u<y.length;u++){if(y[u].dpname==undefined){continue}if(y[u].dpname.full==undefined){continue}var z=y[u].dpname.full;for(var t=0;t<z.length;t++){var x=z[u];if(x.uri==undefined){continue}x.uri=s}}};this.updateExtAIAOCSP=function(w,t){var v=this.findExt(w,\"authorityInfoAccess\");if(v==null){return}if(v.array==undefined){return}var s=v.array;for(var u=0;u<s.length;u++){if(s[u].ocsp!=undefined){s[u].ocsp=t}}};this.updateExtAIACAIssuer=function(w,t){var v=this.findExt(w,\"authorityInfoAccess\");if(v==null){return}if(v.array==undefined){return}var s=v.array;for(var u=0;u<s.length;u++){if(s[u].caissuer!=undefined){s[u].caissuer=t}}};this.dnarraytostr=function(u){function s(v){return v.map(function(w){return t(w)}).join(\"+\")}function t(v){return v.type+\"=\"+v.value}return\"/\"+u.map(function(v){return s(v)}).join(\"/\")};this.getInfo=function(){var u=function(M){var L=JSON.stringify(M.array).replace(/[\\[\\]\\{\\}\\\"]/g,\"\");return L};var A=function(R){var P=\"\";var L=R.array;for(var O=0;O<L.length;O++){var Q=L[O];P+=\"    policy oid: \"+Q.policyoid+\"\\n\";if(Q.array===undefined){continue}for(var N=0;N<Q.array.length;N++){var M=Q.array[N];if(M.cps!==undefined){P+=\"    cps: \"+M.cps+\"\\n\"}}}return P};var D=function(P){var O=\"\";var L=P.array;for(var N=0;N<L.length;N++){var Q=L[N];try{if(Q.dpname.full[0].uri!==undefined){O+=\"    \"+Q.dpname.full[0].uri+\"\\n\"}}catch(M){}try{if(Q.dname.full[0].dn.hex!==undefined){O+=\"    \"+X509.hex2dn(Q.dpname.full[0].dn.hex)+\"\\n\"}}catch(M){}}return O};var B=function(P){var O=\"\";var L=P.array;for(var M=0;M<L.length;M++){var N=L[M];if(N.caissuer!==undefined){O+=\"    caissuer: \"+N.caissuer+\"\\n\"}if(N.ocsp!==undefined){O+=\"    ocsp: \"+N.ocsp+\"\\n\"}}return O};var v=X509;var F,E,K;F=\"Basic Fields\\n\";F+=\"  serial number: \"+this.getSerialNumberHex()+\"\\n\";F+=\"  signature algorithm: \"+this.getSignatureAlgorithmField()+\"\\n\";F+=\"  issuer: \"+this.getIssuerString()+\"\\n\";F+=\"  notBefore: \"+this.getNotBefore()+\"\\n\";F+=\"  notAfter: \"+this.getNotAfter()+\"\\n\";F+=\"  subject: \"+this.getSubjectString()+\"\\n\";F+=\"  subject public key info: \\n\";E=this.getPublicKey();F+=\"    key algorithm: \"+E.type+\"\\n\";if(E.type===\"RSA\"){F+=\"    n=\"+hextoposhex(E.n.toString(16)).substr(0,16)+\"...\\n\";F+=\"    e=\"+hextoposhex(E.e.toString(16))+\"\\n\"}K=this.aExtInfo;if(K!==undefined&&K!==null){F+=\"X509v3 Extensions:\\n\";for(var H=0;H<K.length;H++){var J=K[H];var t=KJUR.asn1.x509.OID.oid2name(J.oid);if(t===\"\"){t=J.oid}var G=\"\";if(J.critical===true){G=\"CRITICAL\"}F+=\"  \"+t+\" \"+G+\":\\n\";if(t===\"basicConstraints\"){var w=this.getExtBasicConstraints();if(w.cA===undefined){F+=\"    {}\\n\"}else{F+=\"    cA=true\";if(w.pathLen!==undefined){F+=\", pathLen=\"+w.pathLen}F+=\"\\n\"}}else{if(t===\"keyUsage\"){F+=\"    \"+this.getExtKeyUsageString()+\"\\n\"}else{if(t===\"subjectKeyIdentifier\"){F+=\"    \"+this.getExtSubjectKeyIdentifier().kid.hex+\"\\n\"}else{if(t===\"authorityKeyIdentifier\"){var x=this.getExtAuthorityKeyIdentifier();if(x.kid!==undefined){F+=\"    kid=\"+x.kid.hex+\"\\n\"}}else{if(t===\"extKeyUsage\"){var I=this.getExtExtKeyUsage().array;F+=\"    \"+I.join(\", \")+\"\\n\"}else{if(t===\"subjectAltName\"){var y=u(this.getExtSubjectAltName());F+=\"    \"+y+\"\\n\"}else{if(t===\"cRLDistributionPoints\"){var C=this.getExtCRLDistributionPoints();F+=D(C)}else{if(t===\"authorityInfoAccess\"){var z=this.getExtAuthorityInfoAccess();F+=B(z)}else{if(t===\"certificatePolicies\"){F+=A(this.getExtCertificatePolicies())}}}}}}}}}}}F+=\"signature algorithm: \"+this.getSignatureAlgorithmName()+\"\\n\";F+=\"signature: \"+this.getSignatureValueHex().substr(0,16)+\"...\\n\";return F};if(typeof q==\"string\"){if(q.indexOf(\"-----BEGIN\")!=-1){this.readCertPEM(q)}else{if(KJUR.lang.String.isHex(q)){this.readCertHex(q)}}}}X509.hex2dn=function(f,b){if(b===undefined){b=0}if(f.substr(b,2)!==\"30\"){throw new Error(\"malformed DN\")}var c=new Array();var d=ASN1HEX.getChildIdx(f,b);for(var e=0;e<d.length;e++){c.push(X509.hex2rdn(f,d[e]))}c=c.map(function(a){return a.replace(\"/\",\"\\\\/\")});return\"/\"+c.join(\"/\")};X509.hex2rdn=function(f,b){if(b===undefined){b=0}if(f.substr(b,2)!==\"31\"){throw new Error(\"malformed RDN\")}var c=new Array();var d=ASN1HEX.getChildIdx(f,b);for(var e=0;e<d.length;e++){c.push(X509.hex2attrTypeValue(f,d[e]))}c=c.map(function(a){return a.replace(\"+\",\"\\\\+\")});return c.join(\"+\")};X509.hex2attrTypeValue=function(d,i){var j=ASN1HEX;var h=j.getV;if(i===undefined){i=0}if(d.substr(i,2)!==\"30\"){throw new Error(\"malformed attribute type and value\")}var g=j.getChildIdx(d,i);if(g.length!==2||d.substr(g[0],2)!==\"06\"){\"malformed attribute type and value\"}var b=h(d,g[0]);var f=KJUR.asn1.ASN1Util.oidHexToInt(b);var e=KJUR.asn1.x509.OID.oid2atype(f);var a=h(d,g[1]);var c=hextorstr(a);return e+\"=\"+c};X509.getPublicKeyFromCertHex=function(b){var a=new X509();a.readCertHex(b);return a.getPublicKey()};X509.getPublicKeyFromCertPEM=function(b){var a=new X509();a.readCertPEM(b);return a.getPublicKey()};X509.getPublicKeyInfoPropOfCertPEM=function(c){var e=ASN1HEX;var g=e.getVbyList;var b={};var a,f,d;b.algparam=null;a=new X509();a.readCertPEM(c);f=a.getPublicKeyHex();b.keyhex=g(f,0,[1],\"03\").substr(2);b.algoid=g(f,0,[0,0],\"06\");if(b.algoid===\"2a8648ce3d0201\"){b.algparam=g(f,0,[0,1],\"06\")}return b};X509.KEYUSAGE_NAME=[\"digitalSignature\",\"nonRepudiation\",\"keyEncipherment\",\"dataEncipherment\",\"keyAgreement\",\"keyCertSign\",\"cRLSign\",\"encipherOnly\",\"decipherOnly\"];\nif(typeof KJUR==\"undefined\"||!KJUR){KJUR={}}if(typeof KJUR.jws==\"undefined\"||!KJUR.jws){KJUR.jws={}}KJUR.jws.JWS=function(){var b=KJUR,a=b.jws.JWS,c=a.isSafeJSONString;this.parseJWS=function(g,j){if((this.parsedJWS!==undefined)&&(j||(this.parsedJWS.sigvalH!==undefined))){return}var i=g.match(/^([^.]+)\\.([^.]+)\\.([^.]+)$/);if(i==null){throw\"JWS signature is not a form of 'Head.Payload.SigValue'.\"}var k=i[1];var e=i[2];var l=i[3];var n=k+\".\"+e;this.parsedJWS={};this.parsedJWS.headB64U=k;this.parsedJWS.payloadB64U=e;this.parsedJWS.sigvalB64U=l;this.parsedJWS.si=n;if(!j){var h=b64utohex(l);var f=parseBigInt(h,16);this.parsedJWS.sigvalH=h;this.parsedJWS.sigvalBI=f}var d=b64utoutf8(k);var m=b64utoutf8(e);this.parsedJWS.headS=d;this.parsedJWS.payloadS=m;if(!c(d,this.parsedJWS,\"headP\")){throw\"malformed JSON string for JWS Head: \"+d}}};KJUR.jws.JWS.sign=function(j,w,z,A,a){var x=KJUR,n=x.jws,r=n.JWS,h=r.readSafeJSONString,q=r.isSafeJSONString,d=x.crypto,l=d.ECDSA,p=d.Mac,c=d.Signature,u=JSON;var t,k,o;if(typeof w!=\"string\"&&typeof w!=\"object\"){throw\"spHeader must be JSON string or object: \"+w}if(typeof w==\"object\"){k=w;t=u.stringify(k)}if(typeof w==\"string\"){t=w;if(!q(t)){throw\"JWS Head is not safe JSON string: \"+t}k=h(t)}o=z;if(typeof z==\"object\"){o=u.stringify(z)}if((j==\"\"||j==null)&&k.alg!==undefined){j=k.alg}if((j!=\"\"&&j!=null)&&k.alg===undefined){k.alg=j;t=u.stringify(k)}if(j!==k.alg){throw\"alg and sHeader.alg doesn't match: \"+j+\"!=\"+k.alg}var s=null;if(r.jwsalg2sigalg[j]===undefined){throw\"unsupported alg name: \"+j}else{s=r.jwsalg2sigalg[j]}var e=utf8tob64u(t);var m=utf8tob64u(o);var b=e+\".\"+m;var y=\"\";if(s.substr(0,4)==\"Hmac\"){if(A===undefined){throw\"mac key shall be specified for HS* alg\"}var i=new p({alg:s,prov:\"cryptojs\",pass:A});i.updateString(b);y=i.doFinal()}else{if(s.indexOf(\"withECDSA\")!=-1){var f=new c({alg:s});f.init(A,a);f.updateString(b);var g=f.sign();y=KJUR.crypto.ECDSA.asn1SigToConcatSig(g)}else{if(s!=\"none\"){var f=new c({alg:s});f.init(A,a);f.updateString(b);y=f.sign()}}}var v=hextob64u(y);return b+\".\"+v};KJUR.jws.JWS.verify=function(w,B,n){var x=KJUR,q=x.jws,t=q.JWS,i=t.readSafeJSONString,e=x.crypto,p=e.ECDSA,s=e.Mac,d=e.Signature,m;if(typeof RSAKey!==undefined){m=RSAKey}var y=w.split(\".\");if(y.length!==3){return false}var f=y[0];var r=y[1];var c=f+\".\"+r;var A=b64utohex(y[2]);var l=i(b64utoutf8(y[0]));var k=null;var z=null;if(l.alg===undefined){throw\"algorithm not specified in header\"}else{k=l.alg;z=k.substr(0,2)}if(n!=null&&Object.prototype.toString.call(n)===\"[object Array]\"&&n.length>0){var b=\":\"+n.join(\":\")+\":\";if(b.indexOf(\":\"+k+\":\")==-1){throw\"algorithm '\"+k+\"' not accepted in the list\"}}if(k!=\"none\"&&B===null){throw\"key shall be specified to verify.\"}if(typeof B==\"string\"&&B.indexOf(\"-----BEGIN \")!=-1){B=KEYUTIL.getKey(B)}if(z==\"RS\"||z==\"PS\"){if(!(B instanceof m)){throw\"key shall be a RSAKey obj for RS* and PS* algs\"}}if(z==\"ES\"){if(!(B instanceof p)){throw\"key shall be a ECDSA obj for ES* algs\"}}if(k==\"none\"){}var u=null;if(t.jwsalg2sigalg[l.alg]===undefined){throw\"unsupported alg name: \"+k}else{u=t.jwsalg2sigalg[k]}if(u==\"none\"){throw\"not supported\"}else{if(u.substr(0,4)==\"Hmac\"){var o=null;if(B===undefined){throw\"hexadecimal key shall be specified for HMAC\"}var j=new s({alg:u,pass:B});j.updateString(c);o=j.doFinal();return A==o}else{if(u.indexOf(\"withECDSA\")!=-1){var h=null;try{h=p.concatSigToASN1Sig(A)}catch(v){return false}var g=new d({alg:u});g.init(B);g.updateString(c);return g.verify(h)}else{var g=new d({alg:u});g.init(B);g.updateString(c);return g.verify(A)}}}};KJUR.jws.JWS.parse=function(g){var c=g.split(\".\");var b={};var f,e,d;if(c.length!=2&&c.length!=3){throw\"malformed sJWS: wrong number of '.' splitted elements\"}f=c[0];e=c[1];if(c.length==3){d=c[2]}b.headerObj=KJUR.jws.JWS.readSafeJSONString(b64utoutf8(f));b.payloadObj=KJUR.jws.JWS.readSafeJSONString(b64utoutf8(e));b.headerPP=JSON.stringify(b.headerObj,null,\"  \");if(b.payloadObj==null){b.payloadPP=b64utoutf8(e)}else{b.payloadPP=JSON.stringify(b.payloadObj,null,\"  \")}if(d!==undefined){b.sigHex=b64utohex(d)}return b};KJUR.jws.JWS.verifyJWT=function(e,l,r){var d=KJUR,j=d.jws,o=j.JWS,n=o.readSafeJSONString,p=o.inArray,f=o.includedArray;var k=e.split(\".\");var c=k[0];var i=k[1];var q=c+\".\"+i;var m=b64utohex(k[2]);var h=n(b64utoutf8(c));var g=n(b64utoutf8(i));if(h.alg===undefined){return false}if(r.alg===undefined){throw\"acceptField.alg shall be specified\"}if(!p(h.alg,r.alg)){return false}if(g.iss!==undefined&&typeof r.iss===\"object\"){if(!p(g.iss,r.iss)){return false}}if(g.sub!==undefined&&typeof r.sub===\"object\"){if(!p(g.sub,r.sub)){return false}}if(g.aud!==undefined&&typeof r.aud===\"object\"){if(typeof g.aud==\"string\"){if(!p(g.aud,r.aud)){return false}}else{if(typeof g.aud==\"object\"){if(!f(g.aud,r.aud)){return false}}}}var b=j.IntDate.getNow();if(r.verifyAt!==undefined&&typeof r.verifyAt===\"number\"){b=r.verifyAt}if(r.gracePeriod===undefined||typeof r.gracePeriod!==\"number\"){r.gracePeriod=0}if(g.exp!==undefined&&typeof g.exp==\"number\"){if(g.exp+r.gracePeriod<b){return false}}if(g.nbf!==undefined&&typeof g.nbf==\"number\"){if(b<g.nbf-r.gracePeriod){return false}}if(g.iat!==undefined&&typeof g.iat==\"number\"){if(b<g.iat-r.gracePeriod){return false}}if(g.jti!==undefined&&r.jti!==undefined){if(g.jti!==r.jti){return false}}if(!o.verify(e,l,r.alg)){return false}return true};KJUR.jws.JWS.includedArray=function(b,a){var c=KJUR.jws.JWS.inArray;if(b===null){return false}if(typeof b!==\"object\"){return false}if(typeof b.length!==\"number\"){return false}for(var d=0;d<b.length;d++){if(!c(b[d],a)){return false}}return true};KJUR.jws.JWS.inArray=function(d,b){if(b===null){return false}if(typeof b!==\"object\"){return false}if(typeof b.length!==\"number\"){return false}for(var c=0;c<b.length;c++){if(b[c]==d){return true}}return false};KJUR.jws.JWS.jwsalg2sigalg={HS256:\"HmacSHA256\",HS384:\"HmacSHA384\",HS512:\"HmacSHA512\",RS256:\"SHA256withRSA\",RS384:\"SHA384withRSA\",RS512:\"SHA512withRSA\",ES256:\"SHA256withECDSA\",ES384:\"SHA384withECDSA\",PS256:\"SHA256withRSAandMGF1\",PS384:\"SHA384withRSAandMGF1\",PS512:\"SHA512withRSAandMGF1\",none:\"none\",};KJUR.jws.JWS.isSafeJSONString=function(c,b,d){var e=null;try{e=jsonParse(c);if(typeof e!=\"object\"){return 0}if(e.constructor===Array){return 0}if(b){b[d]=e}return 1}catch(a){return 0}};KJUR.jws.JWS.readSafeJSONString=function(b){var c=null;try{c=jsonParse(b);if(typeof c!=\"object\"){return null}if(c.constructor===Array){return null}return c}catch(a){return null}};KJUR.jws.JWS.getEncodedSignatureValueFromJWS=function(b){var a=b.match(/^[^.]+\\.[^.]+\\.([^.]+)$/);if(a==null){throw\"JWS signature is not a form of 'Head.Payload.SigValue'.\"}return a[1]};KJUR.jws.JWS.getJWKthumbprint=function(d){if(d.kty!==\"RSA\"&&d.kty!==\"EC\"&&d.kty!==\"oct\"){throw\"unsupported algorithm for JWK Thumprint\"}var a=\"{\";if(d.kty===\"RSA\"){if(typeof d.n!=\"string\"||typeof d.e!=\"string\"){throw\"wrong n and e value for RSA key\"}a+='\"e\":\"'+d.e+'\",';a+='\"kty\":\"'+d.kty+'\",';a+='\"n\":\"'+d.n+'\"}'}else{if(d.kty===\"EC\"){if(typeof d.crv!=\"string\"||typeof d.x!=\"string\"||typeof d.y!=\"string\"){throw\"wrong crv, x and y value for EC key\"}a+='\"crv\":\"'+d.crv+'\",';a+='\"kty\":\"'+d.kty+'\",';a+='\"x\":\"'+d.x+'\",';a+='\"y\":\"'+d.y+'\"}'}else{if(d.kty===\"oct\"){if(typeof d.k!=\"string\"){throw\"wrong k value for oct(symmetric) key\"}a+='\"kty\":\"'+d.kty+'\",';a+='\"k\":\"'+d.k+'\"}'}}}var b=rstrtohex(a);var c=KJUR.crypto.Util.hashHex(b,\"sha256\");var e=hextob64u(c);return e};KJUR.jws.IntDate={};KJUR.jws.IntDate.get=function(c){var b=KJUR.jws.IntDate,d=b.getNow,a=b.getZulu;if(c==\"now\"){return d()}else{if(c==\"now + 1hour\"){return d()+60*60}else{if(c==\"now + 1day\"){return d()+60*60*24}else{if(c==\"now + 1month\"){return d()+60*60*24*30}else{if(c==\"now + 1year\"){return d()+60*60*24*365}else{if(c.match(/Z$/)){return a(c)}else{if(c.match(/^[0-9]+$/)){return parseInt(c)}}}}}}}throw\"unsupported format: \"+c};KJUR.jws.IntDate.getZulu=function(a){return zulutosec(a)};KJUR.jws.IntDate.getNow=function(){var a=~~(new Date()/1000);return a};KJUR.jws.IntDate.intDate2UTCString=function(a){var b=new Date(a*1000);return b.toUTCString()};KJUR.jws.IntDate.intDate2Zulu=function(e){var i=new Date(e*1000),h=(\"0000\"+i.getUTCFullYear()).slice(-4),g=(\"00\"+(i.getUTCMonth()+1)).slice(-2),b=(\"00\"+i.getUTCDate()).slice(-2),a=(\"00\"+i.getUTCHours()).slice(-2),c=(\"00\"+i.getUTCMinutes()).slice(-2),f=(\"00\"+i.getUTCSeconds()).slice(-2);return h+g+b+a+c+f+\"Z\"};\nexport { SecureRandom };\r\nexport { rng_seed_time };\r\n\r\nexport { BigInteger };\r\nexport { RSAKey };\r\nexport const { EDSA } = KJUR.crypto;\r\nexport const { DSA } = KJUR.crypto;\r\nexport const { Signature } = KJUR.crypto;\r\nexport const { MessageDigest } =  KJUR.crypto;\r\nexport const { Mac } = KJUR.crypto;\r\nexport const { Cipher } =  KJUR.crypto;\r\nexport { KEYUTIL };\r\nexport { ASN1HEX };\r\nexport { X509 };\r\nexport { CryptoJS };\r\n\r\n// ext/base64.js\r\nexport { b64tohex };\r\nexport { b64toBA };\r\n\r\n// base64x.js\r\nexport { stoBA };\r\nexport { BAtos };\r\nexport { BAtohex };\r\nexport { stohex };\r\nexport { stob64 };\r\nexport { stob64u };\r\nexport { b64utos };\r\nexport { b64tob64u };\r\nexport { b64utob64 };\r\nexport { hex2b64 };\r\nexport { hextob64u };\r\nexport { b64utohex };\r\nexport { utf8tob64u };\r\nexport { b64utoutf8 };\r\nexport { utf8tob64 };\r\nexport { b64toutf8 };\r\nexport { utf8tohex };\r\nexport { hextoutf8 };\r\nexport { hextorstr };\r\nexport { rstrtohex };\r\nexport { hextob64 };\r\nexport { hextob64nl };\r\nexport { b64nltohex };\r\nexport { hextopem };\r\nexport { pemtohex };\r\nexport { hextoArrayBuffer };\r\nexport { ArrayBuffertohex };\r\nexport { zulutomsec };\r\nexport { zulutosec };\r\nexport { zulutodate };\r\nexport { datetozulu };\r\nexport { uricmptohex };\r\nexport { hextouricmp };\r\nexport { ipv6tohex };\r\nexport { hextoipv6 };\r\nexport { hextoip };\r\nexport { iptohex };\r\nexport { encodeURIComponentAll };\r\nexport { newline_toUnix };\r\nexport { newline_toDos };\r\nexport { hextoposhex };\r\nexport { intarystrtohex };\r\nexport { strdiffidx };\r\n\r\n// name spaces\r\nexport { KJUR };\r\nconst _crypto =  KJUR.crypto;\r\nexport { _crypto as crypto };\r\nexport const { asn1 } = KJUR;\r\nexport const { jws } = KJUR;\r\nexport const { lang } = KJUR;\r\n\r\n\r\n","import { jws, KeyUtil, X509, crypto, hextob64u, b64tohex, AllowedSigningAlgs } from './crypto/jsrsasign';\r\nimport getJoseUtil from './JoseUtilImpl';\r\n\r\nexport const JoseUtil = getJoseUtil({ jws, KeyUtil, X509, crypto, hextob64u, b64tohex, AllowedSigningAlgs });\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\n\r\nexport default function getJoseUtil({ jws, KeyUtil, X509, crypto, hextob64u, b64tohex, AllowedSigningAlgs }) {\r\n    return class JoseUtil {\r\n\r\n        static parseJwt(jwt) {\r\n            Log.debug(\"JoseUtil.parseJwt\");\r\n            try {\r\n                var token = jws.JWS.parse(jwt);\r\n                return {\r\n                    header: token.headerObj,\r\n                    payload: token.payloadObj\r\n                }\r\n            } catch (e) {\r\n                Log.error(e);\r\n            }\r\n        }\r\n\r\n        static validateJwt(jwt, key, issuer, audience, clockSkew, now, timeInsensitive) {\r\n            Log.debug(\"JoseUtil.validateJwt\");\r\n\r\n            try {\r\n                if (key.kty === \"RSA\") {\r\n                    if (key.e && key.n) {\r\n                        key = KeyUtil.getKey(key);\r\n                    } else if (key.x5c && key.x5c.length) {\r\n                        var hex = b64tohex(key.x5c[0]);\r\n                        key = X509.getPublicKeyFromCertHex(hex);\r\n                    } else {\r\n                        Log.error(\"JoseUtil.validateJwt: RSA key missing key material\", key);\r\n                        return Promise.reject(new Error(\"RSA key missing key material\"));\r\n                    }\r\n                } else if (key.kty === \"EC\") {\r\n                    if (key.crv && key.x && key.y) {\r\n                        key = KeyUtil.getKey(key);\r\n                    } else {\r\n                        Log.error(\"JoseUtil.validateJwt: EC key missing key material\", key);\r\n                        return Promise.reject(new Error(\"EC key missing key material\"));\r\n                    }\r\n                } else {\r\n                    Log.error(\"JoseUtil.validateJwt: Unsupported key type\", key && key.kty);\r\n                    return Promise.reject(new Error(\"Unsupported key type: \" + key && key.kty));\r\n                }\r\n\r\n                return JoseUtil._validateJwt(jwt, key, issuer, audience, clockSkew, now, timeInsensitive);\r\n            } catch (e) {\r\n                Log.error(e && e.message || e);\r\n                return Promise.reject(\"JWT validation failed\");\r\n            }\r\n        }\r\n\r\n        static validateJwtAttributes(jwt, issuer, audience, clockSkew, now, timeInsensitive) {\r\n            if (!clockSkew) {\r\n                clockSkew = 0;\r\n            }\r\n\r\n            if (!now) {\r\n                now = parseInt(Date.now() / 1000);\r\n            }\r\n\r\n            var payload = JoseUtil.parseJwt(jwt).payload;\r\n\r\n            if (!payload.iss) {\r\n                Log.error(\"JoseUtil._validateJwt: issuer was not provided\");\r\n                return Promise.reject(new Error(\"issuer was not provided\"));\r\n            }\r\n            if (payload.iss !== issuer) {\r\n                Log.error(\"JoseUtil._validateJwt: Invalid issuer in token\", payload.iss);\r\n                return Promise.reject(new Error(\"Invalid issuer in token: \" + payload.iss));\r\n            }\r\n\r\n            if (!payload.aud) {\r\n                Log.error(\"JoseUtil._validateJwt: aud was not provided\");\r\n                return Promise.reject(new Error(\"aud was not provided\"));\r\n            }\r\n            var validAudience = payload.aud === audience || (Array.isArray(payload.aud) && payload.aud.indexOf(audience) >= 0);\r\n            if (!validAudience) {\r\n                Log.error(\"JoseUtil._validateJwt: Invalid audience in token\", payload.aud);\r\n                return Promise.reject(new Error(\"Invalid audience in token: \" + payload.aud));\r\n            }\r\n            if (payload.azp && payload.azp !== audience) {\r\n                Log.error(\"JoseUtil._validateJwt: Invalid azp in token\", payload.azp);\r\n                return Promise.reject(new Error(\"Invalid azp in token: \" + payload.azp));\r\n            }\r\n\r\n            if (!timeInsensitive) {\r\n                var lowerNow = now + clockSkew;\r\n                var upperNow = now - clockSkew;\r\n\r\n                if (!payload.iat) {\r\n                    Log.error(\"JoseUtil._validateJwt: iat was not provided\");\r\n                    return Promise.reject(new Error(\"iat was not provided\"));\r\n                }\r\n                if (lowerNow < payload.iat) {\r\n                    Log.error(\"JoseUtil._validateJwt: iat is in the future\", payload.iat);\r\n                    return Promise.reject(new Error(\"iat is in the future: \" + payload.iat));\r\n                }\r\n\r\n                if (payload.nbf && lowerNow < payload.nbf) {\r\n                    Log.error(\"JoseUtil._validateJwt: nbf is in the future\", payload.nbf);\r\n                    return Promise.reject(new Error(\"nbf is in the future: \" + payload.nbf));\r\n                }\r\n\r\n                if (!payload.exp) {\r\n                    Log.error(\"JoseUtil._validateJwt: exp was not provided\");\r\n                    return Promise.reject(new Error(\"exp was not provided\"));\r\n                }\r\n                if (payload.exp < upperNow) {\r\n                    Log.error(\"JoseUtil._validateJwt: exp is in the past\", payload.exp);\r\n                    return Promise.reject(new Error(\"exp is in the past:\" + payload.exp));\r\n                }\r\n            }\r\n\r\n            return Promise.resolve(payload);\r\n        }\r\n\r\n        static _validateJwt(jwt, key, issuer, audience, clockSkew, now, timeInsensitive) {\r\n\r\n            return JoseUtil.validateJwtAttributes(jwt, issuer, audience, clockSkew, now, timeInsensitive).then(payload => {\r\n                try {\r\n                    if (!jws.JWS.verify(jwt, key, AllowedSigningAlgs)) {\r\n                        Log.error(\"JoseUtil._validateJwt: signature validation failed\");\r\n                        return Promise.reject(new Error(\"signature validation failed\"));\r\n                    }\r\n\r\n                    return payload;\r\n                } catch (e) {\r\n                    Log.error(e && e.message || e);\r\n                    return Promise.reject(new Error(\"signature validation failed\"));\r\n                }\r\n            });\r\n        }\r\n\r\n        static hashString(value, alg) {\r\n            try {\r\n                return crypto.Util.hashString(value, alg);\r\n            } catch (e) {\r\n                Log.error(e);\r\n            }\r\n        }\r\n\r\n        static hexToBase64Url(value) {\r\n            try {\r\n                return hextob64u(value);\r\n            } catch (e) {\r\n                Log.error(e);\r\n            }\r\n        }\r\n    }\r\n}\r\n","import { jws, KEYUTIL as KeyUtil, X509, crypto, hextob64u, b64tohex } from '../../jsrsasign/dist/jsrsasign.js';\r\n\r\nconst AllowedSigningAlgs = ['RS256', 'RS384', 'RS512', 'PS256', 'PS384', 'PS512', 'ES256', 'ES384', 'ES512'];\r\n\r\nexport {\r\n    jws,\r\n    KeyUtil,\r\n    X509,\r\n    crypto,\r\n    hextob64u,\r\n    b64tohex,\r\n    AllowedSigningAlgs\r\n};\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { JsonService } from './JsonService.js';\r\nimport { MetadataService } from './MetadataService.js';\r\nimport { Log } from './Log.js';\r\nimport { JoseUtil } from './JoseUtil.js';\r\n\r\nexport class UserInfoService {\r\n    constructor(\r\n        settings, \r\n        JsonServiceCtor = JsonService, \r\n        MetadataServiceCtor = MetadataService, \r\n        joseUtil = JoseUtil\r\n    ) {\r\n        if (!settings) {\r\n            Log.error(\"UserInfoService.ctor: No settings passed\");\r\n            throw new Error(\"settings\");\r\n        }\r\n\r\n        this._settings = settings;\r\n        this._jsonService = new JsonServiceCtor(undefined, undefined, this._getClaimsFromJwt.bind(this));\r\n        this._metadataService = new MetadataServiceCtor(this._settings);\r\n        this._joseUtil = joseUtil;\r\n    }\r\n\r\n    getClaims(token) {\r\n        if (!token) {\r\n            Log.error(\"UserInfoService.getClaims: No token passed\");\r\n            return Promise.reject(new Error(\"A token is required\"));\r\n        }\r\n\r\n        return this._metadataService.getUserInfoEndpoint().then(url => {\r\n            Log.debug(\"UserInfoService.getClaims: received userinfo url\", url);\r\n\r\n            return this._jsonService.getJson(url, token).then(claims => {\r\n                Log.debug(\"UserInfoService.getClaims: claims received\", claims);\r\n                return claims;\r\n            });\r\n        });\r\n    }\r\n\r\n    _getClaimsFromJwt(req) {\r\n        try {\r\n            let jwt = this._joseUtil.parseJwt(req.responseText);\r\n            if (!jwt || !jwt.header || !jwt.payload) {\r\n                Log.error(\"UserInfoService._getClaimsFromJwt: Failed to parse JWT\", jwt);\r\n                return Promise.reject(new Error(\"Failed to parse id_token\"));\r\n            }\r\n\r\n            var kid = jwt.header.kid;\r\n\r\n            let issuerPromise;\r\n            switch (this._settings.userInfoJwtIssuer) {\r\n                case 'OP':\r\n                    issuerPromise = this._metadataService.getIssuer();\r\n                    break;\r\n                case 'ANY':\r\n                    issuerPromise = Promise.resolve(jwt.payload.iss);\r\n                    break;\r\n                default:\r\n                    issuerPromise = Promise.resolve(this._settings.userInfoJwtIssuer);\r\n                    break;\r\n            }\r\n\r\n            return issuerPromise.then(issuer => {\r\n                Log.debug(\"UserInfoService._getClaimsFromJwt: Received issuer:\" + issuer);\r\n\r\n                return this._metadataService.getSigningKeys().then(keys => {\r\n                    if (!keys) {\r\n                        Log.error(\"UserInfoService._getClaimsFromJwt: No signing keys from metadata\");\r\n                        return Promise.reject(new Error(\"No signing keys from metadata\"));\r\n                    }\r\n\r\n                    Log.debug(\"UserInfoService._getClaimsFromJwt: Received signing keys\");\r\n                    let key;\r\n                    if (!kid) {\r\n                        keys = this._filterByAlg(keys, jwt.header.alg);\r\n\r\n                        if (keys.length > 1) {\r\n                            Log.error(\"UserInfoService._getClaimsFromJwt: No kid found in id_token and more than one key found in metadata\");\r\n                            return Promise.reject(new Error(\"No kid found in id_token and more than one key found in metadata\"));\r\n                        }\r\n                        else {\r\n                            // kid is mandatory only when there are multiple keys in the referenced JWK Set document\r\n                            // see http://openid.net/specs/openid-connect-core-1_0.html#Signing\r\n                            key = keys[0];\r\n                        }\r\n                    }\r\n                    else {\r\n                        key = keys.filter(key => {\r\n                            return key.kid === kid;\r\n                        })[0];\r\n                    }\r\n\r\n                    if (!key) {\r\n                        Log.error(\"UserInfoService._getClaimsFromJwt: No key matching kid or alg found in signing keys\");\r\n                        return Promise.reject(new Error(\"No key matching kid or alg found in signing keys\"));\r\n                    }\r\n\r\n                    let audience = this._settings.client_id;\r\n\r\n                    let clockSkewInSeconds = this._settings.clockSkew;\r\n                    Log.debug(\"UserInfoService._getClaimsFromJwt: Validaing JWT; using clock skew (in seconds) of: \", clockSkewInSeconds);\r\n\r\n                    return this._joseUtil.validateJwt(req.responseText, key, issuer, audience, clockSkewInSeconds, undefined, true).then(() => {\r\n                        Log.debug(\"UserInfoService._getClaimsFromJwt: JWT validation successful\");\r\n                        return jwt.payload;\r\n                    });\r\n                });\r\n            });\r\n            return;\r\n        }\r\n        catch (e) {\r\n            Log.error(\"UserInfoService._getClaimsFromJwt: Error parsing JWT response\", e.message);\r\n            reject(e);\r\n            return;\r\n        }\r\n    }\r\n\r\n    _filterByAlg(keys, alg) {\r\n        var kty = null;\r\n        if (alg.startsWith(\"RS\")) {\r\n            kty = \"RSA\";\r\n        }\r\n        else if (alg.startsWith(\"PS\")) {\r\n            kty = \"PS\";\r\n        }\r\n        else if (alg.startsWith(\"ES\")) {\r\n            kty = \"EC\";\r\n        }\r\n        else {\r\n            Log.debug(\"UserInfoService._filterByAlg: alg not supported: \", alg);\r\n            return [];\r\n        }\r\n\r\n        Log.debug(\"UserInfoService._filterByAlg: Looking for keys that match kty: \", kty);\r\n\r\n        keys = keys.filter(key => {\r\n            return key.kty === kty;\r\n        });\r\n\r\n        Log.debug(\"UserInfoService._filterByAlg: Number of keys that match kty: \", kty, keys.length);\r\n\r\n        return keys;\r\n    }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { JsonService } from './JsonService.js';\r\nimport { MetadataService } from './MetadataService.js';\r\nimport { Log } from './Log.js';\r\n\r\nexport class TokenClient {\r\n    constructor(settings, JsonServiceCtor = JsonService, MetadataServiceCtor = MetadataService) {\r\n        if (!settings) {\r\n            Log.error(\"TokenClient.ctor: No settings passed\");\r\n            throw new Error(\"settings\");\r\n        }\r\n\r\n        this._settings = settings;\r\n        this._jsonService = new JsonServiceCtor();\r\n        this._metadataService = new MetadataServiceCtor(this._settings);\r\n    }\r\n\r\n    exchangeCode(args = {}) {\r\n        args = Object.assign({}, args);\r\n\r\n        args.grant_type = args.grant_type || \"authorization_code\";\r\n        args.client_id = args.client_id || this._settings.client_id;\r\n        args.client_secret = args.client_secret || this._settings.client_secret;\r\n        args.redirect_uri = args.redirect_uri || this._settings.redirect_uri;\r\n\r\n        var basicAuth = undefined;\r\n        var client_authentication = args._client_authentication || this._settings._client_authentication;\r\n        delete args._client_authentication;\r\n\r\n        if (!args.code) {\r\n            Log.error(\"TokenClient.exchangeCode: No code passed\");\r\n            return Promise.reject(new Error(\"A code is required\"));\r\n        }\r\n        if (!args.redirect_uri) {\r\n            Log.error(\"TokenClient.exchangeCode: No redirect_uri passed\");\r\n            return Promise.reject(new Error(\"A redirect_uri is required\"));\r\n        }\r\n        if (!args.code_verifier) {\r\n            Log.error(\"TokenClient.exchangeCode: No code_verifier passed\");\r\n            return Promise.reject(new Error(\"A code_verifier is required\"));\r\n        }\r\n        if (!args.client_id) {\r\n            Log.error(\"TokenClient.exchangeCode: No client_id passed\");\r\n            return Promise.reject(new Error(\"A client_id is required\"));\r\n        }\r\n        if (!args.client_secret && client_authentication == \"client_secret_basic\") {\r\n            Log.error(\"TokenClient.exchangeCode: No client_secret passed\");\r\n            return Promise.reject(new Error(\"A client_secret is required\"));\r\n        }\r\n\r\n        // Sending the client credentials using the Basic Auth method\r\n        if(client_authentication == \"client_secret_basic\")\r\n        {\r\n            basicAuth = args.client_id + ':' + args.client_secret;\r\n            delete args.client_id;\r\n            delete args.client_secret;\r\n        }\r\n\r\n        return this._metadataService.getTokenEndpoint(false).then(url => {\r\n            Log.debug(\"TokenClient.exchangeCode: Received token endpoint\");\r\n            return this._jsonService.postForm(url, args, basicAuth).then(response => {\r\n                Log.debug(\"TokenClient.exchangeCode: response received\");\r\n                return response;\r\n            });\r\n        });\r\n    }\r\n\r\n    exchangeRefreshToken(args = {}) {\r\n        args = Object.assign({}, args);\r\n\r\n        args.grant_type = args.grant_type || \"refresh_token\";\r\n        args.client_id = args.client_id || this._settings.client_id;\r\n        args.client_secret = args.client_secret || this._settings.client_secret;\r\n\r\n        var basicAuth = undefined;\r\n        var client_authentication = args._client_authentication || this._settings._client_authentication;\r\n        delete args._client_authentication;\r\n\r\n        if (!args.refresh_token) {\r\n            Log.error(\"TokenClient.exchangeRefreshToken: No refresh_token passed\");\r\n            return Promise.reject(new Error(\"A refresh_token is required\"));\r\n        }\r\n        if (!args.client_id) {\r\n            Log.error(\"TokenClient.exchangeRefreshToken: No client_id passed\");\r\n            return Promise.reject(new Error(\"A client_id is required\"));\r\n        }\r\n\r\n        // Sending the client credentials using the Basic Auth method\r\n        if(client_authentication == \"client_secret_basic\")\r\n        {\r\n            basicAuth = args.client_id + ':' + args.client_secret;\r\n            delete args.client_id;\r\n            delete args.client_secret;\r\n        }\r\n\r\n        return this._metadataService.getTokenEndpoint(false).then(url => {\r\n            Log.debug(\"TokenClient.exchangeRefreshToken: Received token endpoint\");\r\n\r\n            return this._jsonService.postForm(url, args, basicAuth).then(response => {\r\n                Log.debug(\"TokenClient.exchangeRefreshToken: response received\");\r\n                return response;\r\n            });\r\n        });\r\n    }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\n\r\nexport class ErrorResponse extends Error {\r\n    constructor({error, error_description, error_uri, state, session_state}={}\r\n    ) {\r\n         if (!error){\r\n            Log.error(\"No error passed to ErrorResponse\");\r\n            throw new Error(\"error\");\r\n        }\r\n\r\n        super(error_description || error);\r\n\r\n        this.name = \"ErrorResponse\";\r\n\r\n        this.error = error;\r\n        this.error_description = error_description;\r\n        this.error_uri = error_uri;\r\n\r\n        this.state = state;\r\n        this.session_state = session_state;\r\n    }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { MetadataService } from './MetadataService.js';\r\nimport { UserInfoService } from './UserInfoService.js';\r\nimport { TokenClient } from './TokenClient.js';\r\nimport { ErrorResponse } from './ErrorResponse.js';\r\nimport { JoseUtil } from './JoseUtil.js';\r\n\r\nconst ProtocolClaims = [\"nonce\", \"at_hash\", \"iat\", \"nbf\", \"exp\", \"aud\", \"iss\", \"c_hash\"];\r\n\r\nexport class ResponseValidator {\r\n\r\n    constructor(settings, \r\n        MetadataServiceCtor = MetadataService,\r\n        UserInfoServiceCtor = UserInfoService, \r\n        joseUtil = JoseUtil,\r\n        TokenClientCtor = TokenClient) {\r\n        if (!settings) {\r\n            Log.error(\"ResponseValidator.ctor: No settings passed to ResponseValidator\");\r\n            throw new Error(\"settings\");\r\n        }\r\n\r\n        this._settings = settings;\r\n        this._metadataService = new MetadataServiceCtor(this._settings);\r\n        this._userInfoService = new UserInfoServiceCtor(this._settings);\r\n        this._joseUtil = joseUtil;\r\n        this._tokenClient = new TokenClientCtor(this._settings);\r\n    }\r\n\r\n    validateSigninResponse(state, response) {\r\n        Log.debug(\"ResponseValidator.validateSigninResponse\");\r\n\r\n        return this._processSigninParams(state, response).then(response => {\r\n            Log.debug(\"ResponseValidator.validateSigninResponse: state processed\");\r\n            return this._validateTokens(state, response).then(response => {\r\n                Log.debug(\"ResponseValidator.validateSigninResponse: tokens validated\");\r\n                return this._processClaims(state, response).then(response => {\r\n                    Log.debug(\"ResponseValidator.validateSigninResponse: claims processed\");\r\n                    return response;\r\n                });\r\n            });\r\n        });\r\n    }\r\n\r\n    validateSignoutResponse(state, response) {\r\n        if (state.id !== response.state) {\r\n            Log.error(\"ResponseValidator.validateSignoutResponse: State does not match\");\r\n            return Promise.reject(new Error(\"State does not match\"));\r\n        }\r\n\r\n        // now that we know the state matches, take the stored data\r\n        // and set it into the response so callers can get their state\r\n        // this is important for both success & error outcomes\r\n        Log.debug(\"ResponseValidator.validateSignoutResponse: state validated\");\r\n        response.state = state.data;\r\n\r\n        if (response.error) {\r\n            Log.warn(\"ResponseValidator.validateSignoutResponse: Response was error\", response.error);\r\n            return Promise.reject(new ErrorResponse(response));\r\n        }\r\n\r\n        return Promise.resolve(response);\r\n    }\r\n\r\n    _processSigninParams(state, response) {\r\n        if (state.id !== response.state) {\r\n            Log.error(\"ResponseValidator._processSigninParams: State does not match\");\r\n            return Promise.reject(new Error(\"State does not match\"));\r\n        }\r\n\r\n        if (!state.client_id) {\r\n            Log.error(\"ResponseValidator._processSigninParams: No client_id on state\");\r\n            return Promise.reject(new Error(\"No client_id on state\"));\r\n        }\r\n\r\n        if (!state.authority) {\r\n            Log.error(\"ResponseValidator._processSigninParams: No authority on state\");\r\n            return Promise.reject(new Error(\"No authority on state\"));\r\n        }\r\n\r\n        // this allows the authority to be loaded from the signin state\r\n        if (!this._settings.authority) {\r\n            this._settings.authority = state.authority;\r\n        }\r\n        // ensure we're using the correct authority if the authority is not loaded from signin state\r\n        else if (this._settings.authority && this._settings.authority !== state.authority) {\r\n            Log.error(\"ResponseValidator._processSigninParams: authority mismatch on settings vs. signin state\");\r\n            return Promise.reject(new Error(\"authority mismatch on settings vs. signin state\"));\r\n        }\r\n        // this allows the client_id to be loaded from the signin state\r\n        if (!this._settings.client_id) {\r\n            this._settings.client_id = state.client_id;\r\n        }\r\n        // ensure we're using the correct client_id if the client_id is not loaded from signin state\r\n        else if (this._settings.client_id && this._settings.client_id !== state.client_id) {\r\n            Log.error(\"ResponseValidator._processSigninParams: client_id mismatch on settings vs. signin state\");\r\n            return Promise.reject(new Error(\"client_id mismatch on settings vs. signin state\"));\r\n        }\r\n\r\n        // now that we know the state matches, take the stored data\r\n        // and set it into the response so callers can get their state\r\n        // this is important for both success & error outcomes\r\n        Log.debug(\"ResponseValidator._processSigninParams: state validated\");\r\n        response.state = state.data;\r\n\r\n        if (response.error) {\r\n            Log.warn(\"ResponseValidator._processSigninParams: Response was error\", response.error);\r\n            return Promise.reject(new ErrorResponse(response));\r\n        }\r\n\r\n        if (state.nonce && !response.id_token) {\r\n            Log.error(\"ResponseValidator._processSigninParams: Expecting id_token in response\");\r\n            return Promise.reject(new Error(\"No id_token in response\"));\r\n        }\r\n\r\n        if (!state.nonce && response.id_token) {\r\n            Log.error(\"ResponseValidator._processSigninParams: Not expecting id_token in response\");\r\n            return Promise.reject(new Error(\"Unexpected id_token in response\"));\r\n        }\r\n\r\n        if (state.code_verifier && !response.code) {\r\n            Log.error(\"ResponseValidator._processSigninParams: Expecting code in response\");\r\n            return Promise.reject(new Error(\"No code in response\"));\r\n        }\r\n\r\n        if (!state.code_verifier && response.code) {\r\n            Log.error(\"ResponseValidator._processSigninParams: Not expecting code in response\");\r\n            return Promise.reject(new Error(\"Unexpected code in response\"));\r\n        }\r\n\r\n        if (!response.scope) {\r\n            // if there's no scope on the response, then assume all scopes granted (per-spec) and copy over scopes from original request\r\n            response.scope = state.scope;\r\n        }\r\n\r\n        return Promise.resolve(response);\r\n    }\r\n\r\n    _processClaims(state, response) {\r\n        if (response.isOpenIdConnect) {\r\n            Log.debug(\"ResponseValidator._processClaims: response is OIDC, processing claims\");\r\n\r\n            response.profile = this._filterProtocolClaims(response.profile);\r\n\r\n            if (state.skipUserInfo !== true && this._settings.loadUserInfo && response.access_token) {\r\n                Log.debug(\"ResponseValidator._processClaims: loading user info\");\r\n\r\n                return this._userInfoService.getClaims(response.access_token).then(claims => {\r\n                    Log.debug(\"ResponseValidator._processClaims: user info claims received from user info endpoint\");\r\n\r\n                    if (claims.sub !== response.profile.sub) {\r\n                        Log.error(\"ResponseValidator._processClaims: sub from user info endpoint does not match sub in id_token\");\r\n                        return Promise.reject(new Error(\"sub from user info endpoint does not match sub in id_token\"));\r\n                    }\r\n\r\n                    response.profile = this._mergeClaims(response.profile, claims);\r\n                    Log.debug(\"ResponseValidator._processClaims: user info claims received, updated profile:\", response.profile);\r\n\r\n                    return response;\r\n                });\r\n            }\r\n            else {\r\n                Log.debug(\"ResponseValidator._processClaims: not loading user info\");\r\n            }\r\n        }\r\n        else {\r\n            Log.debug(\"ResponseValidator._processClaims: response is not OIDC, not processing claims\");\r\n        }\r\n\r\n        return Promise.resolve(response);\r\n    }\r\n\r\n    _mergeClaims(claims1, claims2) {\r\n        var result = Object.assign({}, claims1);\r\n\r\n        for (let name in claims2) {\r\n            var values = claims2[name];\r\n            if (!Array.isArray(values)) {\r\n                values = [values];\r\n            }\r\n\r\n            for (let i = 0; i < values.length; i++) {\r\n                let value = values[i];\r\n                if (!result[name]) {\r\n                    result[name] = value;\r\n                }\r\n                else if (Array.isArray(result[name])) {\r\n                    if (result[name].indexOf(value) < 0) {\r\n                        result[name].push(value);\r\n                    }\r\n                }\r\n                else if (result[name] !== value) {\r\n                    if (typeof value === 'object' && this._settings.mergeClaims) {\r\n                        result[name] = this._mergeClaims(result[name], value);\r\n                    }\r\n                    else {\r\n                        result[name] = [result[name], value];\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    _filterProtocolClaims(claims) {\r\n        Log.debug(\"ResponseValidator._filterProtocolClaims, incoming claims:\", claims);\r\n\r\n        var result = Object.assign({}, claims);\r\n\r\n        if (this._settings._filterProtocolClaims) {\r\n            ProtocolClaims.forEach(type => {\r\n                delete result[type];\r\n            });\r\n\r\n            Log.debug(\"ResponseValidator._filterProtocolClaims: protocol claims filtered\", result);\r\n        }\r\n        else {\r\n            Log.debug(\"ResponseValidator._filterProtocolClaims: protocol claims not filtered\")\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    _validateTokens(state, response) {\r\n        if (response.code) {\r\n            Log.debug(\"ResponseValidator._validateTokens: Validating code\");\r\n            return this._processCode(state, response);\r\n        }\r\n\r\n        if (response.id_token) {\r\n            if (response.access_token) {\r\n                Log.debug(\"ResponseValidator._validateTokens: Validating id_token and access_token\");\r\n                return this._validateIdTokenAndAccessToken(state, response);\r\n            }\r\n\r\n            Log.debug(\"ResponseValidator._validateTokens: Validating id_token\");\r\n            return this._validateIdToken(state, response);\r\n        }\r\n\r\n        Log.debug(\"ResponseValidator._validateTokens: No code to process or id_token to validate\");\r\n        return Promise.resolve(response);\r\n    }\r\n\r\n    _processCode(state, response) {\r\n        var request = {\r\n            client_id: state.client_id,\r\n            client_secret: state.client_secret,\r\n            code : response.code,\r\n            redirect_uri: state.redirect_uri,\r\n            code_verifier: state.code_verifier\r\n        };\r\n\r\n        if (state.extraTokenParams && typeof(state.extraTokenParams) === 'object') {\r\n            Object.assign(request, state.extraTokenParams);\r\n        }\r\n        \r\n        return this._tokenClient.exchangeCode(request).then(tokenResponse => {\r\n            \r\n            for(var key in tokenResponse) {\r\n                response[key] = tokenResponse[key];\r\n            }\r\n\r\n            if (response.id_token) {\r\n                Log.debug(\"ResponseValidator._processCode: token response successful, processing id_token\");\r\n                return this._validateIdTokenAttributes(state, response);\r\n            }\r\n            else {\r\n                Log.debug(\"ResponseValidator._processCode: token response successful, returning response\");\r\n            }\r\n            \r\n            return response;\r\n        });\r\n    }\r\n\r\n    _validateIdTokenAttributes(state, response) {\r\n        return this._metadataService.getIssuer().then(issuer => {\r\n\r\n            let audience = state.client_id;\r\n            let clockSkewInSeconds = this._settings.clockSkew;\r\n            Log.debug(\"ResponseValidator._validateIdTokenAttributes: Validaing JWT attributes; using clock skew (in seconds) of: \", clockSkewInSeconds);\r\n\r\n            return this._settings.getEpochTime().then(now => {\r\n                return this._joseUtil.validateJwtAttributes(response.id_token, issuer, audience, clockSkewInSeconds, now).then(payload => {\r\n                \r\n                    if (state.nonce && state.nonce !== payload.nonce) {\r\n                        Log.error(\"ResponseValidator._validateIdTokenAttributes: Invalid nonce in id_token\");\r\n                        return Promise.reject(new Error(\"Invalid nonce in id_token\"));\r\n                    }\r\n    \r\n                    if (!payload.sub) {\r\n                        Log.error(\"ResponseValidator._validateIdTokenAttributes: No sub present in id_token\");\r\n                        return Promise.reject(new Error(\"No sub present in id_token\"));\r\n                    }\r\n    \r\n                    response.profile = payload;\r\n                    return response;\r\n                });\r\n            });\r\n        });\r\n    }\r\n\r\n    _validateIdTokenAndAccessToken(state, response) {\r\n        return this._validateIdToken(state, response).then(response => {\r\n            return this._validateAccessToken(response);\r\n        });\r\n    }\r\n\r\n    _getSigningKeyForJwt(jwt) {\r\n        return this._metadataService.getSigningKeys().then(keys => {\r\n            const kid = jwt.header.kid;\r\n            if (!keys) {\r\n                Log.error(\"ResponseValidator._validateIdToken: No signing keys from metadata\");\r\n                return Promise.reject(new Error(\"No signing keys from metadata\"));\r\n            }\r\n\r\n            Log.debug(\"ResponseValidator._validateIdToken: Received signing keys\");\r\n            let key;\r\n            if (!kid) {\r\n                keys = this._filterByAlg(keys, jwt.header.alg);\r\n\r\n                if (keys.length > 1) {\r\n                    Log.error(\"ResponseValidator._validateIdToken: No kid found in id_token and more than one key found in metadata\");\r\n                    return Promise.reject(new Error(\"No kid found in id_token and more than one key found in metadata\"));\r\n                } else {\r\n                    // kid is mandatory only when there are multiple keys in the referenced JWK Set document\r\n                    // see http://openid.net/specs/openid-connect-core-1_0.html#Signing\r\n                    key = keys[0];\r\n                }\r\n            } else {\r\n                key = keys.filter(key => {\r\n                    return key.kid === kid;\r\n                })[0];\r\n            }\r\n            return Promise.resolve(key);\r\n        });\r\n    }\r\n\r\n    _getSigningKeyForJwtWithSingleRetry(jwt) {\r\n        return this._getSigningKeyForJwt(jwt).then(key => {\r\n            // Refreshing signingKeys if no suitable verification key is present for given jwt header.\r\n            if (!key) {\r\n                // set to undefined, to trigger network call to jwks_uri.\r\n                this._metadataService.resetSigningKeys();\r\n                return this._getSigningKeyForJwt(jwt);\r\n            } else {\r\n                return Promise.resolve(key);\r\n            }\r\n        });\r\n    }\r\n\r\n    _validateIdToken(state, response) {\r\n        if (!state.nonce) {\r\n            Log.error(\"ResponseValidator._validateIdToken: No nonce on state\");\r\n            return Promise.reject(new Error(\"No nonce on state\"));\r\n        }\r\n\r\n        let jwt = this._joseUtil.parseJwt(response.id_token);\r\n        if (!jwt || !jwt.header || !jwt.payload) {\r\n            Log.error(\"ResponseValidator._validateIdToken: Failed to parse id_token\", jwt);\r\n            return Promise.reject(new Error(\"Failed to parse id_token\"));\r\n        }\r\n\r\n        if (state.nonce !== jwt.payload.nonce) {\r\n            Log.error(\"ResponseValidator._validateIdToken: Invalid nonce in id_token\");\r\n            return Promise.reject(new Error(\"Invalid nonce in id_token\"));\r\n        }\r\n\r\n        return this._metadataService.getIssuer().then(issuer => {\r\n            Log.debug(\"ResponseValidator._validateIdToken: Received issuer\");\r\n            return this._getSigningKeyForJwtWithSingleRetry(jwt).then(key => {\r\n                if (!key) {\r\n                    Log.error(\"ResponseValidator._validateIdToken: No key matching kid or alg found in signing keys\");\r\n                    return Promise.reject(new Error(\"No key matching kid or alg found in signing keys\"));\r\n                }\r\n\r\n                let audience = state.client_id;\r\n\r\n                let clockSkewInSeconds = this._settings.clockSkew;\r\n                Log.debug(\"ResponseValidator._validateIdToken: Validaing JWT; using clock skew (in seconds) of: \", clockSkewInSeconds);\r\n\r\n                return this._joseUtil.validateJwt(response.id_token, key, issuer, audience, clockSkewInSeconds).then(()=>{\r\n                    Log.debug(\"ResponseValidator._validateIdToken: JWT validation successful\");\r\n\r\n                    if (!jwt.payload.sub) {\r\n                        Log.error(\"ResponseValidator._validateIdToken: No sub present in id_token\");\r\n                        return Promise.reject(new Error(\"No sub present in id_token\"));\r\n                    }\r\n\r\n                    response.profile = jwt.payload;\r\n\r\n                    return response;\r\n                });\r\n            });\r\n        });\r\n    }\r\n\r\n    _filterByAlg(keys, alg){\r\n        var kty = null;\r\n        if (alg.startsWith(\"RS\")) {\r\n            kty = \"RSA\";\r\n        }\r\n        else if (alg.startsWith(\"PS\")) {\r\n            kty = \"PS\";\r\n        }\r\n        else if (alg.startsWith(\"ES\")) {\r\n            kty = \"EC\";\r\n        }\r\n        else {\r\n            Log.debug(\"ResponseValidator._filterByAlg: alg not supported: \", alg);\r\n            return [];\r\n        }\r\n\r\n        Log.debug(\"ResponseValidator._filterByAlg: Looking for keys that match kty: \", kty);\r\n\r\n        keys = keys.filter(key => {\r\n            return key.kty === kty;\r\n        });\r\n\r\n        Log.debug(\"ResponseValidator._filterByAlg: Number of keys that match kty: \", kty, keys.length);\r\n\r\n        return keys;\r\n    }\r\n\r\n    _validateAccessToken(response) {\r\n        if (!response.profile) {\r\n            Log.error(\"ResponseValidator._validateAccessToken: No profile loaded from id_token\");\r\n            return Promise.reject(new Error(\"No profile loaded from id_token\"));\r\n        }\r\n\r\n        if (!response.profile.at_hash) {\r\n            Log.error(\"ResponseValidator._validateAccessToken: No at_hash in id_token\");\r\n            return Promise.reject(new Error(\"No at_hash in id_token\"));\r\n        }\r\n\r\n        if (!response.id_token) {\r\n            Log.error(\"ResponseValidator._validateAccessToken: No id_token\");\r\n            return Promise.reject(new Error(\"No id_token\"));\r\n        }\r\n\r\n        let jwt = this._joseUtil.parseJwt(response.id_token);\r\n        if (!jwt || !jwt.header) {\r\n            Log.error(\"ResponseValidator._validateAccessToken: Failed to parse id_token\", jwt);\r\n            return Promise.reject(new Error(\"Failed to parse id_token\"));\r\n        }\r\n\r\n        var hashAlg = jwt.header.alg;\r\n        if (!hashAlg || hashAlg.length !== 5) {\r\n            Log.error(\"ResponseValidator._validateAccessToken: Unsupported alg:\", hashAlg);\r\n            return Promise.reject(new Error(\"Unsupported alg: \" + hashAlg));\r\n        }\r\n\r\n        var hashBits = hashAlg.substr(2, 3);\r\n        if (!hashBits) {\r\n            Log.error(\"ResponseValidator._validateAccessToken: Unsupported alg:\", hashAlg, hashBits);\r\n            return Promise.reject(new Error(\"Unsupported alg: \" + hashAlg));\r\n        }\r\n\r\n        hashBits = parseInt(hashBits);\r\n        if (hashBits !== 256 && hashBits !== 384 && hashBits !== 512) {\r\n            Log.error(\"ResponseValidator._validateAccessToken: Unsupported alg:\", hashAlg, hashBits);\r\n            return Promise.reject(new Error(\"Unsupported alg: \" + hashAlg));\r\n        }\r\n\r\n        let sha = \"sha\" + hashBits;\r\n        var hash = this._joseUtil.hashString(response.access_token, sha);\r\n        if (!hash) {\r\n            Log.error(\"ResponseValidator._validateAccessToken: access_token hash failed:\", sha);\r\n            return Promise.reject(new Error(\"Failed to validate at_hash\"));\r\n        }\r\n\r\n        var left = hash.substr(0, hash.length / 2);\r\n        var left_b64u = this._joseUtil.hexToBase64Url(left);\r\n        if (left_b64u !== response.profile.at_hash) {\r\n            Log.error(\"ResponseValidator._validateAccessToken: Failed to validate at_hash\", left_b64u, response.profile.at_hash);\r\n            return Promise.reject(new Error(\"Failed to validate at_hash\"));\r\n        }\r\n\r\n        Log.debug(\"ResponseValidator._validateAccessToken: success\");\r\n\r\n        return Promise.resolve(response);\r\n    }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { ClockService } from './ClockService.js';\r\nimport { WebStorageStateStore } from './WebStorageStateStore.js';\r\nimport { ResponseValidator } from './ResponseValidator.js';\r\nimport { MetadataService } from './MetadataService.js';\r\n\r\nconst OidcMetadataUrlPath = '.well-known/openid-configuration';\r\n\r\nconst DefaultResponseType = \"id_token\";\r\nconst DefaultScope = \"openid\";\r\nconst DefaultClientAuthentication = \"client_secret_post\" // The default value must be client_secret_basic, as explained in https://openid.net/specs/openid-connect-core-1_0.html#ClientAuthentication\r\nconst DefaultStaleStateAge = 60 * 15; // seconds\r\nconst DefaultClockSkewInSeconds = 60 * 5;\r\n\r\nexport class OidcClientSettings {\r\n    constructor({\r\n        // metadata related\r\n        authority, metadataUrl, metadata, signingKeys, metadataSeed,\r\n        // client related\r\n        client_id, client_secret, response_type = DefaultResponseType, scope = DefaultScope,\r\n        redirect_uri, post_logout_redirect_uri,\r\n        client_authentication = DefaultClientAuthentication,\r\n        // optional protocol\r\n        prompt, display, max_age, ui_locales, acr_values, resource, response_mode,\r\n        // behavior flags\r\n        filterProtocolClaims = true, loadUserInfo = true,\r\n        staleStateAge = DefaultStaleStateAge, \r\n        clockSkew = DefaultClockSkewInSeconds,\r\n        clockService = new ClockService(),\r\n        userInfoJwtIssuer = 'OP',\r\n        mergeClaims = false,\r\n        // other behavior\r\n        stateStore = new WebStorageStateStore(),\r\n        ResponseValidatorCtor = ResponseValidator,\r\n        MetadataServiceCtor = MetadataService,\r\n        // extra query params\r\n        extraQueryParams = {},\r\n        extraTokenParams = {}\r\n    } = {}) {\r\n\r\n        this._authority = authority;\r\n        this._metadataUrl = metadataUrl;\r\n        this._metadata = metadata;\r\n        this._metadataSeed = metadataSeed;\r\n        this._signingKeys = signingKeys;\r\n\r\n        this._client_id = client_id;\r\n        this._client_secret = client_secret;\r\n        this._response_type = response_type;\r\n        this._scope = scope;\r\n        this._redirect_uri = redirect_uri;\r\n        this._post_logout_redirect_uri = post_logout_redirect_uri;\r\n        this._client_authentication = client_authentication;\r\n\r\n        this._prompt = prompt;\r\n        this._display = display;\r\n        this._max_age = max_age;\r\n        this._ui_locales = ui_locales;\r\n        this._acr_values = acr_values;\r\n        this._resource = resource;\r\n        this._response_mode = response_mode;\r\n\r\n        this._filterProtocolClaims = !!filterProtocolClaims;\r\n        this._loadUserInfo = !!loadUserInfo;\r\n        this._staleStateAge = staleStateAge;\r\n        this._clockSkew = clockSkew;\r\n        this._clockService = clockService;\r\n        this._userInfoJwtIssuer = userInfoJwtIssuer;\r\n        this._mergeClaims = !!mergeClaims;\r\n\r\n        this._stateStore = stateStore;\r\n        this._validator = new ResponseValidatorCtor(this);\r\n        this._metadataService = new MetadataServiceCtor(this);\r\n\r\n        this._extraQueryParams = typeof extraQueryParams === 'object' ? extraQueryParams : {};\r\n        this._extraTokenParams = typeof extraTokenParams === 'object' ? extraTokenParams : {};\r\n    }\r\n\r\n    // client config\r\n    get client_id() {\r\n        return this._client_id;\r\n    }\r\n    set client_id(value) {\r\n        if (!this._client_id) {\r\n            // one-time set only\r\n            this._client_id = value;\r\n        }\r\n        else {\r\n            Log.error(\"OidcClientSettings.set_client_id: client_id has already been assigned.\")\r\n            throw new Error(\"client_id has already been assigned.\")\r\n        }\r\n    }\r\n    get client_secret() {\r\n        return this._client_secret;\r\n    }\r\n    get response_type() {\r\n        return this._response_type;\r\n    }\r\n    get scope() {\r\n        return this._scope;\r\n    }\r\n    get redirect_uri() {\r\n        return this._redirect_uri;\r\n    }\r\n    get post_logout_redirect_uri() {\r\n        return this._post_logout_redirect_uri;\r\n    }\r\n    get client_authentication() {\r\n        return this._client_authentication;\r\n    }\r\n    \r\n\r\n    // optional protocol params\r\n    get prompt() {\r\n        return this._prompt;\r\n    }\r\n    get display() {\r\n        return this._display;\r\n    }\r\n    get max_age() {\r\n        return this._max_age;\r\n    }\r\n    get ui_locales() {\r\n        return this._ui_locales;\r\n    }\r\n    get acr_values() {\r\n        return this._acr_values;\r\n    }\r\n    get resource() {\r\n        return this._resource;\r\n    }\r\n    get response_mode() {\r\n        return this._response_mode;\r\n    }\r\n\r\n\r\n    // metadata\r\n    get authority() {\r\n        return this._authority;\r\n    }\r\n    set authority(value) {\r\n        if (!this._authority) {\r\n            // one-time set only\r\n            this._authority = value;\r\n        }\r\n        else {\r\n            Log.error(\"OidcClientSettings.set_authority: authority has already been assigned.\")\r\n            throw new Error(\"authority has already been assigned.\")\r\n        }\r\n    }\r\n    get metadataUrl() {\r\n        if (!this._metadataUrl) {\r\n            this._metadataUrl = this.authority;\r\n\r\n            if (this._metadataUrl && this._metadataUrl.indexOf(OidcMetadataUrlPath) < 0) {\r\n                if (this._metadataUrl[this._metadataUrl.length - 1] !== '/') {\r\n                    this._metadataUrl += '/';\r\n                }\r\n                this._metadataUrl += OidcMetadataUrlPath;\r\n            }\r\n        }\r\n\r\n        return this._metadataUrl;\r\n    }\r\n\r\n    // settable/cachable metadata values\r\n    get metadata() {\r\n        return this._metadata;\r\n    }\r\n    set metadata(value) {\r\n        this._metadata = value;\r\n    }\r\n    get metadataSeed() {\r\n        return this._metadataSeed;\r\n    }\r\n    set metadataSeed(value) {\r\n        this._metadataSeed = value;\r\n    }\r\n\r\n    get signingKeys() {\r\n        return this._signingKeys;\r\n    }\r\n    set signingKeys(value) {\r\n        this._signingKeys = value;\r\n    }\r\n\r\n    // behavior flags\r\n    get filterProtocolClaims() {\r\n        return this._filterProtocolClaims;\r\n    }\r\n    get loadUserInfo() {\r\n        return this._loadUserInfo;\r\n    }\r\n    get staleStateAge() {\r\n        return this._staleStateAge;\r\n    }\r\n    get clockSkew() {\r\n        return this._clockSkew;\r\n    }\r\n    get userInfoJwtIssuer() {\r\n        return this._userInfoJwtIssuer;\r\n    }\r\n    get mergeClaims() {\r\n        return this._mergeClaims;\r\n    }\r\n    \r\n    get stateStore() {\r\n        return this._stateStore;\r\n    }\r\n    get validator() {\r\n        return this._validator;\r\n    }\r\n    get metadataService() {\r\n        return this._metadataService;\r\n    }\r\n\r\n    // extra query params\r\n    get extraQueryParams() {\r\n        return this._extraQueryParams;\r\n    }\r\n    set extraQueryParams(value) {\r\n        if (typeof value === 'object'){\r\n            this._extraQueryParams = value;\r\n        } else {\r\n            this._extraQueryParams = {};\r\n        }\r\n    }\r\n\r\n    // extra token params\r\n    get extraTokenParams() {\r\n        return this._extraTokenParams;\r\n    }\r\n    set extraTokenParams(value) {\r\n        if (typeof value === 'object'){\r\n            this._extraTokenParams = value;\r\n        } else {\r\n            this._extraTokenParams = {};\r\n        }\r\n    }\r\n\r\n    // get the time\r\n    getEpochTime() {\r\n        return this._clockService.getEpochTime();\r\n    }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { Global } from './Global.js';\r\n\r\nexport class UrlUtility {\r\n    static addQueryParam(url, name, value) {\r\n        if (url.indexOf('?') < 0) {\r\n            url += \"?\";\r\n        }\r\n\r\n        if (url[url.length - 1] !== \"?\") {\r\n            url += \"&\";\r\n        }\r\n\r\n        url += encodeURIComponent(name);\r\n        url += \"=\";\r\n        url += encodeURIComponent(value);\r\n\r\n        return url;\r\n    }\r\n\r\n    static parseUrlFragment(value, delimiter = \"#\", global = Global) {\r\n        if (typeof value !== 'string'){\r\n            value = global.location.href;\r\n        }\r\n\r\n        var idx = value.lastIndexOf(delimiter);\r\n        if (idx >= 0) {\r\n            value = value.substr(idx + 1);\r\n        }\r\n\r\n        if (delimiter === \"?\") {\r\n            // if we're doing query, then strip off hash fragment before we parse\r\n            idx = value.indexOf('#');\r\n            if (idx >= 0) {\r\n                value = value.substr(0, idx);\r\n            }\r\n        }\r\n\r\n        var params = {},\r\n            regex = /([^&=]+)=([^&]*)/g,\r\n            m;\r\n\r\n        var counter = 0;\r\n        while (m = regex.exec(value)) {\r\n            params[decodeURIComponent(m[1])] = decodeURIComponent(m[2].replace(/\\+/g, ' '));\r\n            if (counter++ > 50) {\r\n                Log.error(\"UrlUtility.parseUrlFragment: response exceeded expected number of parameters\", value);\r\n                return {\r\n                    error: \"Response exceeded expected number of parameters\"\r\n                };\r\n            }\r\n        }\r\n\r\n        for (var prop in params) {\r\n            return params;\r\n        }\r\n\r\n        return {};\r\n    }\r\n}\r\n","/**\r\n * Generates RFC4122 version 4 guid ()\r\n */\r\n\r\nvar crypto = (typeof window !== 'undefined') ? (window.crypto || window.msCrypto) : null;\r\n\r\nfunction _cryptoUuidv4() {\r\n  return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c =>\r\n    (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)\r\n  )\r\n}\r\n\r\nfunction _uuidv4() {\r\n    return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c =>\r\n    (c ^ Math.random() * 16 >> c / 4).toString(16)\r\n  )\r\n}\r\n\r\nexport default function random() {\r\n  var hasCrypto = crypto != 'undefined' && crypto !== null;\r\n  var hasRandomValues = hasCrypto && (typeof(crypto.getRandomValues) != 'undefined');  \r\n  var uuid = hasRandomValues ? _cryptoUuidv4 : _uuidv4;\r\n  return uuid().replace(/-/g, '');\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport random from './random.js';\r\n\r\nexport class State {\r\n    constructor({id, data, created, request_type} = {}) {\r\n        this._id = id || random();\r\n        this._data = data;\r\n\r\n        if (typeof created === 'number' && created > 0) {\r\n            this._created = created;\r\n        }\r\n        else {\r\n            this._created = parseInt(Date.now() / 1000);\r\n        }\r\n        this._request_type =  request_type;\r\n    }\r\n\r\n    get id() {\r\n        return this._id;\r\n    }\r\n    get data() {\r\n        return this._data;\r\n    }\r\n    get created() {\r\n        return this._created;\r\n    }\r\n    get request_type() {\r\n        return this._request_type;\r\n    }\r\n\r\n    toStorageString() {\r\n        Log.debug(\"State.toStorageString\");\r\n        return JSON.stringify({\r\n            id: this.id,\r\n            data: this.data,\r\n            created: this.created,\r\n            request_type: this.request_type\r\n        });\r\n    }\r\n\r\n    static fromStorageString(storageString) {\r\n        Log.debug(\"State.fromStorageString\");\r\n        return new State(JSON.parse(storageString));\r\n    }\r\n\r\n    static clearStaleState(storage, age) {\r\n\r\n        var cutoff = Date.now() / 1000 - age;\r\n\r\n        return storage.getAllKeys().then(keys => {\r\n            Log.debug(\"State.clearStaleState: got keys\", keys);\r\n\r\n            var promises = [];\r\n            for (let i = 0; i < keys.length; i++) {\r\n                let key = keys[i];\r\n                var p = storage.get(key).then(item => {\r\n                    let remove = false;\r\n\r\n                    if (item) {\r\n                        try {\r\n                            var state = State.fromStorageString(item)\r\n\r\n                            Log.debug(\"State.clearStaleState: got item from key: \", key, state.created);\r\n\r\n                            if (state.created <= cutoff) {\r\n                                remove = true;\r\n                            }\r\n                        }\r\n                        catch (e) {\r\n                            Log.error(\"State.clearStaleState: Error parsing state for key\", key, e.message);\r\n                            remove = true;\r\n                        }\r\n                    }\r\n                    else {\r\n                        Log.debug(\"State.clearStaleState: no item in storage for key: \", key);\r\n                        remove = true;\r\n                    }\r\n\r\n                    if (remove) {\r\n                        Log.debug(\"State.clearStaleState: removed item for key: \", key);\r\n                        return storage.remove(key);\r\n                    }\r\n                });\r\n\r\n                promises.push(p);\r\n            }\r\n\r\n            Log.debug(\"State.clearStaleState: waiting on promise count:\", promises.length);\r\n            return Promise.all(promises);\r\n        });\r\n    }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { State } from './State.js';\r\nimport { JoseUtil } from './JoseUtil.js';\r\nimport random from './random.js';\r\n\r\nexport class SigninState extends State {\r\n    constructor({nonce, authority, client_id, redirect_uri, code_verifier, response_mode, client_secret, scope, extraTokenParams, skipUserInfo} = {}) {\r\n        super(arguments[0]);\r\n\r\n        if (nonce === true) {\r\n            this._nonce = random();\r\n        }\r\n        else if (nonce) {\r\n            this._nonce = nonce;\r\n        }\r\n\r\n        if (code_verifier === true) {\r\n            // random() produces 32 length\r\n            this._code_verifier = random() + random() + random();\r\n        }\r\n        else if (code_verifier) {\r\n            this._code_verifier = code_verifier;\r\n        }\r\n        \r\n        if (this.code_verifier) {\r\n            let hash = JoseUtil.hashString(this.code_verifier, \"SHA256\");\r\n            this._code_challenge = JoseUtil.hexToBase64Url(hash);\r\n        }\r\n\r\n        this._redirect_uri = redirect_uri;\r\n        this._authority = authority;\r\n        this._client_id = client_id;\r\n        this._response_mode = response_mode;\r\n        this._client_secret = client_secret;\r\n        this._scope = scope;\r\n        this._extraTokenParams = extraTokenParams;\r\n        this._skipUserInfo = skipUserInfo;\r\n    }\r\n\r\n    get nonce() {\r\n        return this._nonce;\r\n    }\r\n    get authority() {\r\n        return this._authority;\r\n    }\r\n    get client_id() {\r\n        return this._client_id;\r\n    }\r\n    get redirect_uri() {\r\n        return this._redirect_uri;\r\n    }\r\n    get code_verifier() {\r\n        return this._code_verifier;\r\n    }\r\n    get code_challenge() {\r\n        return this._code_challenge;\r\n    }\r\n    get response_mode() {\r\n        return this._response_mode;\r\n    }\r\n    get client_secret() {\r\n        return this._client_secret;\r\n    }\r\n    get scope() {\r\n        return this._scope;\r\n    }\r\n    get extraTokenParams() {\r\n        return this._extraTokenParams;\r\n    }\r\n    get skipUserInfo() {\r\n        return this._skipUserInfo;\r\n    }\r\n    \r\n    toStorageString() {\r\n        Log.debug(\"SigninState.toStorageString\");\r\n        return JSON.stringify({\r\n            id: this.id,\r\n            data: this.data,\r\n            created: this.created,\r\n            request_type: this.request_type,\r\n            nonce: this.nonce,\r\n            code_verifier: this.code_verifier,\r\n            redirect_uri: this.redirect_uri,\r\n            authority: this.authority,\r\n            client_id: this.client_id,\r\n            response_mode: this.response_mode,\r\n            client_secret: this.client_secret,\r\n            scope: this.scope,\r\n            extraTokenParams : this.extraTokenParams,\r\n            skipUserInfo: this.skipUserInfo\r\n        });\r\n    }\r\n\r\n    static fromStorageString(storageString) {\r\n        Log.debug(\"SigninState.fromStorageString\");\r\n        var data = JSON.parse(storageString);\r\n        return new SigninState(data);\r\n    }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { UrlUtility } from './UrlUtility.js';\r\nimport { SigninState } from './SigninState.js';\r\n\r\nexport class SigninRequest {\r\n    constructor({\r\n        // mandatory\r\n        url, client_id, redirect_uri, response_type, scope, authority,\r\n        // optional\r\n        data, prompt, display, max_age, ui_locales, id_token_hint, login_hint, acr_values, resource, response_mode,\r\n        request, request_uri, extraQueryParams, request_type, client_secret, extraTokenParams, skipUserInfo\r\n    }) {\r\n        if (!url) {\r\n            Log.error(\"SigninRequest.ctor: No url passed\");\r\n            throw new Error(\"url\");\r\n        }\r\n        if (!client_id) {\r\n            Log.error(\"SigninRequest.ctor: No client_id passed\");\r\n            throw new Error(\"client_id\");\r\n        }\r\n        if (!redirect_uri) {\r\n            Log.error(\"SigninRequest.ctor: No redirect_uri passed\");\r\n            throw new Error(\"redirect_uri\");\r\n        }\r\n        if (!response_type) {\r\n            Log.error(\"SigninRequest.ctor: No response_type passed\");\r\n            throw new Error(\"response_type\");\r\n        }\r\n        if (!scope) {\r\n            Log.error(\"SigninRequest.ctor: No scope passed\");\r\n            throw new Error(\"scope\");\r\n        }\r\n        if (!authority) {\r\n            Log.error(\"SigninRequest.ctor: No authority passed\");\r\n            throw new Error(\"authority\");\r\n        }\r\n\r\n        let oidc = SigninRequest.isOidc(response_type);\r\n        let code = SigninRequest.isCode(response_type);\r\n\r\n        if (!response_mode) {\r\n            response_mode = SigninRequest.isCode(response_type) ? \"query\" : null;\r\n        }\r\n\r\n        this.state = new SigninState({ nonce: oidc, \r\n            data, client_id, authority, redirect_uri, \r\n            code_verifier: code, \r\n            request_type, response_mode,\r\n            client_secret, scope, extraTokenParams, skipUserInfo });\r\n\r\n        url = UrlUtility.addQueryParam(url, \"client_id\", client_id);\r\n        url = UrlUtility.addQueryParam(url, \"redirect_uri\", redirect_uri);\r\n        url = UrlUtility.addQueryParam(url, \"response_type\", response_type);\r\n        url = UrlUtility.addQueryParam(url, \"scope\", scope);\r\n\r\n        url = UrlUtility.addQueryParam(url, \"state\", this.state.id);\r\n        if (oidc) {\r\n            url = UrlUtility.addQueryParam(url, \"nonce\", this.state.nonce);\r\n        }\r\n        if (code) {\r\n            url = UrlUtility.addQueryParam(url, \"code_challenge\", this.state.code_challenge);\r\n            url = UrlUtility.addQueryParam(url, \"code_challenge_method\", \"S256\");\r\n        }\r\n\r\n        var optional = { prompt, display, max_age, ui_locales, id_token_hint, login_hint, acr_values, resource, request, request_uri, response_mode };\r\n        for(let key in optional){\r\n            if (optional[key]) {\r\n                url = UrlUtility.addQueryParam(url, key, optional[key]);\r\n            }\r\n        }\r\n\r\n        for(let key in extraQueryParams){\r\n            url = UrlUtility.addQueryParam(url, key, extraQueryParams[key])\r\n        }\r\n\r\n        this.url = url;\r\n    }\r\n\r\n    static isOidc(response_type) {\r\n        var result = response_type.split(/\\s+/g).filter(function(item) {\r\n            return item === \"id_token\";\r\n        });\r\n        return !!(result[0]);\r\n    }\r\n\r\n    static isOAuth(response_type) {\r\n        var result = response_type.split(/\\s+/g).filter(function(item) {\r\n            return item === \"token\";\r\n        });\r\n        return !!(result[0]);\r\n    }\r\n    \r\n    static isCode(response_type) {\r\n        var result = response_type.split(/\\s+/g).filter(function(item) {\r\n            return item === \"code\";\r\n        });\r\n        return !!(result[0]);\r\n    }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { UrlUtility } from './UrlUtility.js';\r\n\r\nconst OidcScope = \"openid\";\r\n\r\nexport class SigninResponse {\r\n    constructor(url, delimiter = \"#\") {\r\n\r\n        var values = UrlUtility.parseUrlFragment(url, delimiter);\r\n\r\n        this.error = values.error;\r\n        this.error_description = values.error_description;\r\n        this.error_uri = values.error_uri;\r\n\r\n        this.code = values.code;\r\n        this.state = values.state;\r\n        this.id_token = values.id_token;\r\n        this.session_state = values.session_state;\r\n        this.access_token = values.access_token;\r\n        this.token_type = values.token_type;\r\n        this.scope = values.scope;\r\n        this.profile = undefined; // will be set from ResponseValidator\r\n\r\n        this.expires_in = values.expires_in;\r\n    }\r\n\r\n    get expires_in() {\r\n        if (this.expires_at) {\r\n            let now = parseInt(Date.now() / 1000);\r\n            return this.expires_at - now;\r\n        }\r\n        return undefined;\r\n    }\r\n    set expires_in(value){\r\n        let expires_in = parseInt(value);\r\n        if (typeof expires_in === 'number' && expires_in > 0) {\r\n            let now = parseInt(Date.now() / 1000);\r\n            this.expires_at = now + expires_in;\r\n        }\r\n    }\r\n\r\n    get expired() {\r\n        let expires_in = this.expires_in;\r\n        if (expires_in !== undefined) {\r\n            return expires_in <= 0;\r\n        }\r\n        return undefined;\r\n    }\r\n\r\n    get scopes() {\r\n        return (this.scope || \"\").split(\" \");\r\n    }\r\n\r\n    get isOpenIdConnect() {\r\n        return this.scopes.indexOf(OidcScope) >= 0 || !!this.id_token;\r\n    }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { UrlUtility } from './UrlUtility.js';\r\nimport { State } from './State.js';\r\n\r\nexport class SignoutRequest {\r\n    constructor({url, id_token_hint, post_logout_redirect_uri, data, extraQueryParams, request_type}) {\r\n        if (!url) {\r\n            Log.error(\"SignoutRequest.ctor: No url passed\");\r\n            throw new Error(\"url\");\r\n        }\r\n\r\n        if (id_token_hint) {\r\n            url = UrlUtility.addQueryParam(url, \"id_token_hint\", id_token_hint);\r\n        }\r\n\r\n        if (post_logout_redirect_uri) {\r\n            url = UrlUtility.addQueryParam(url, \"post_logout_redirect_uri\", post_logout_redirect_uri);\r\n\r\n            if (data) {\r\n                this.state = new State({ data, request_type });\r\n\r\n                url = UrlUtility.addQueryParam(url, \"state\", this.state.id);\r\n            }\r\n        }\r\n\r\n        for(let key in extraQueryParams){\r\n            url = UrlUtility.addQueryParam(url, key, extraQueryParams[key])\r\n        }\r\n\r\n        this.url = url;\r\n    }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { UrlUtility } from './UrlUtility.js';\r\n\r\nexport class SignoutResponse {\r\n    constructor(url) {\r\n\r\n        var values = UrlUtility.parseUrlFragment(url, \"?\");\r\n\r\n        this.error = values.error;\r\n        this.error_description = values.error_description;\r\n        this.error_uri = values.error_uri;\r\n\r\n        this.state = values.state;\r\n    }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { OidcClientSettings } from './OidcClientSettings.js';\r\nimport { ErrorResponse } from './ErrorResponse.js';\r\nimport { SigninRequest } from './SigninRequest.js';\r\nimport { SigninResponse } from './SigninResponse.js';\r\nimport { SignoutRequest } from './SignoutRequest.js';\r\nimport { SignoutResponse } from './SignoutResponse.js';\r\nimport { SigninState } from './SigninState.js';\r\nimport { State } from './State.js';\r\n\r\nexport class OidcClient {\r\n    constructor(settings = {}) {\r\n        if (settings instanceof OidcClientSettings) {\r\n            this._settings = settings;\r\n        }\r\n        else {\r\n            this._settings = new OidcClientSettings(settings);\r\n        }\r\n    }\r\n\r\n    get _stateStore() {\r\n        return this.settings.stateStore;\r\n    }\r\n    get _validator() {\r\n        return this.settings.validator;\r\n    }\r\n    get _metadataService() {\r\n        return this.settings.metadataService;\r\n    }\r\n\r\n    get settings() {\r\n        return this._settings;\r\n    }\r\n    get metadataService() {\r\n        return this._metadataService;\r\n    }\r\n\r\n    createSigninRequest({\r\n        response_type, scope, redirect_uri,\r\n        // data was meant to be the place a caller could indicate the data to\r\n        // have round tripped, but people were getting confused, so i added state (since that matches the spec)\r\n        // and so now if data is not passed, but state is then state will be used\r\n        data, state, prompt, display, max_age, ui_locales, id_token_hint, login_hint, acr_values,\r\n        resource, request, request_uri, response_mode, extraQueryParams, extraTokenParams, request_type, skipUserInfo } = {},\r\n        stateStore\r\n    ) {\r\n        Log.debug(\"OidcClient.createSigninRequest\");\r\n\r\n        let client_id = this._settings.client_id;\r\n        response_type = response_type || this._settings.response_type;\r\n        scope = scope || this._settings.scope;\r\n        redirect_uri = redirect_uri || this._settings.redirect_uri;\r\n\r\n        // id_token_hint, login_hint aren't allowed on _settings\r\n        prompt = prompt || this._settings.prompt;\r\n        display = display || this._settings.display;\r\n        max_age = max_age || this._settings.max_age;\r\n        ui_locales = ui_locales || this._settings.ui_locales;\r\n        acr_values = acr_values || this._settings.acr_values;\r\n        resource = resource || this._settings.resource;\r\n        response_mode = response_mode || this._settings.response_mode;\r\n        extraQueryParams = extraQueryParams || this._settings.extraQueryParams;\r\n        extraTokenParams = extraTokenParams || this._settings.extraTokenParams;\r\n\r\n        let authority = this._settings.authority;\r\n\r\n        if (SigninRequest.isCode(response_type) && response_type !== \"code\") {\r\n            return Promise.reject(new Error(\"OpenID Connect hybrid flow is not supported\"));\r\n        }\r\n\r\n        return this._metadataService.getAuthorizationEndpoint().then(url => {\r\n            Log.debug(\"OidcClient.createSigninRequest: Received authorization endpoint\", url);\r\n\r\n            let signinRequest = new SigninRequest({\r\n                url,\r\n                client_id,\r\n                redirect_uri,\r\n                response_type,\r\n                scope,\r\n                data: data || state,\r\n                authority,\r\n                prompt, display, max_age, ui_locales, id_token_hint, login_hint, acr_values,\r\n                resource, request, request_uri, extraQueryParams, extraTokenParams, request_type, response_mode,\r\n                client_secret: this._settings.client_secret,\r\n                skipUserInfo\r\n            });\r\n\r\n            var signinState = signinRequest.state;\r\n            stateStore = stateStore || this._stateStore;\r\n\r\n            return stateStore.set(signinState.id, signinState.toStorageString()).then(() => {\r\n                return signinRequest;\r\n            });\r\n        });\r\n    }\r\n\r\n    readSigninResponseState(url, stateStore, removeState = false) {\r\n        Log.debug(\"OidcClient.readSigninResponseState\");\r\n\r\n        let useQuery = this._settings.response_mode === \"query\" || \r\n            (!this._settings.response_mode && SigninRequest.isCode(this._settings.response_type));\r\n        let delimiter = useQuery ? \"?\" : \"#\";\r\n\r\n        var response = new SigninResponse(url, delimiter);\r\n\r\n        if (!response.state) {\r\n            Log.error(\"OidcClient.readSigninResponseState: No state in response\");\r\n            return Promise.reject(new Error(\"No state in response\"));\r\n        }\r\n\r\n        stateStore = stateStore || this._stateStore;\r\n\r\n        var stateApi = removeState ? stateStore.remove.bind(stateStore) : stateStore.get.bind(stateStore);\r\n\r\n        return stateApi(response.state).then(storedStateString => {\r\n            if (!storedStateString) {\r\n                Log.error(\"OidcClient.readSigninResponseState: No matching state found in storage\");\r\n                throw new Error(\"No matching state found in storage\");\r\n            }\r\n\r\n            let state = SigninState.fromStorageString(storedStateString);\r\n            return {state, response};\r\n        });\r\n    }\r\n\r\n    processSigninResponse(url, stateStore) {\r\n        Log.debug(\"OidcClient.processSigninResponse\");\r\n\r\n        return this.readSigninResponseState(url, stateStore, true).then(({state, response}) => {\r\n            Log.debug(\"OidcClient.processSigninResponse: Received state from storage; validating response\");\r\n            return this._validator.validateSigninResponse(state, response);\r\n        });\r\n    }\r\n\r\n    createSignoutRequest({id_token_hint, data, state, post_logout_redirect_uri, extraQueryParams, request_type } = {},\r\n        stateStore\r\n    ) {\r\n        Log.debug(\"OidcClient.createSignoutRequest\");\r\n\r\n        post_logout_redirect_uri = post_logout_redirect_uri || this._settings.post_logout_redirect_uri;\r\n        extraQueryParams = extraQueryParams || this._settings.extraQueryParams;\r\n\r\n        return this._metadataService.getEndSessionEndpoint().then(url => {\r\n            if (!url) {\r\n                Log.error(\"OidcClient.createSignoutRequest: No end session endpoint url returned\");\r\n                throw new Error(\"no end session endpoint\");\r\n            }\r\n\r\n            Log.debug(\"OidcClient.createSignoutRequest: Received end session endpoint\", url);\r\n\r\n            let request = new SignoutRequest({\r\n                url,\r\n                id_token_hint,\r\n                post_logout_redirect_uri,\r\n                data: data || state,\r\n                extraQueryParams,\r\n                request_type\r\n            });\r\n\r\n            var signoutState = request.state;\r\n            if (signoutState) {\r\n                Log.debug(\"OidcClient.createSignoutRequest: Signout request has state to persist\");\r\n\r\n                stateStore = stateStore || this._stateStore;\r\n                stateStore.set(signoutState.id, signoutState.toStorageString());\r\n            }\r\n\r\n            return request;\r\n        });\r\n    }\r\n\r\n    readSignoutResponseState(url, stateStore, removeState = false) {\r\n        Log.debug(\"OidcClient.readSignoutResponseState\");\r\n\r\n        var response = new SignoutResponse(url);\r\n        if (!response.state) {\r\n            Log.debug(\"OidcClient.readSignoutResponseState: No state in response\");\r\n\r\n            if (response.error) {\r\n                Log.warn(\"OidcClient.readSignoutResponseState: Response was error: \", response.error);\r\n                return Promise.reject(new ErrorResponse(response));\r\n            }\r\n\r\n            return Promise.resolve({state: undefined, response});\r\n        }\r\n\r\n        var stateKey = response.state;\r\n\r\n        stateStore = stateStore || this._stateStore;\r\n\r\n        var stateApi = removeState ? stateStore.remove.bind(stateStore) : stateStore.get.bind(stateStore);\r\n        return stateApi(stateKey).then(storedStateString => {\r\n            if (!storedStateString) {\r\n                Log.error(\"OidcClient.readSignoutResponseState: No matching state found in storage\");\r\n                throw new Error(\"No matching state found in storage\");\r\n            }\r\n\r\n            let state = State.fromStorageString(storedStateString);\r\n\r\n            return {state, response};\r\n        });\r\n    }\r\n\r\n    processSignoutResponse(url, stateStore) {\r\n        Log.debug(\"OidcClient.processSignoutResponse\");\r\n\r\n        return this.readSignoutResponseState(url, stateStore, true).then(({state, response}) => {\r\n            if (state) {\r\n                Log.debug(\"OidcClient.processSignoutResponse: Received state from storage; validating response\");\r\n                return this._validator.validateSignoutResponse(state, response);\r\n            }\r\n            else {\r\n                Log.debug(\"OidcClient.processSignoutResponse: No state from storage; skipping validating response\");\r\n                return response;\r\n            }\r\n        });\r\n    }\r\n\r\n    clearStaleState(stateStore) {\r\n        Log.debug(\"OidcClient.clearStaleState\");\r\n\r\n        stateStore = stateStore || this._stateStore;\r\n\r\n        return State.clearStaleState(stateStore, this.settings.staleStateAge);\r\n    }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\n\r\nexport class RedirectNavigator {\r\n\r\n    prepare() {\r\n        return Promise.resolve(this);\r\n    }\r\n\r\n    navigate(params) {\r\n        if (!params || !params.url) {\r\n            Log.error(\"RedirectNavigator.navigate: No url provided\");\r\n            return Promise.reject(new Error(\"No url provided\"));\r\n        }\r\n\r\n        if (params.useReplaceToNavigate) {\r\n            window.location.replace(params.url);\r\n        }\r\n        else {\r\n            window.location = params.url;\r\n        }\r\n\r\n        return Promise.resolve();\r\n    }\r\n\r\n    get url() {\r\n        return window.location.href;\r\n    }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { UrlUtility } from './UrlUtility.js';\r\n\r\nconst CheckForPopupClosedInterval = 500;\r\nconst DefaultPopupFeatures = 'location=no,toolbar=no,width=500,height=500,left=100,top=100;';\r\n//const DefaultPopupFeatures = 'location=no,toolbar=no,width=500,height=500,left=100,top=100;resizable=yes';\r\n\r\nconst DefaultPopupTarget = \"_blank\";\r\n\r\nexport class PopupWindow {\r\n\r\n    constructor(params) {\r\n        this._promise = new Promise((resolve, reject) => {\r\n            this._resolve = resolve;\r\n            this._reject = reject;\r\n        });\r\n\r\n        let target = params.popupWindowTarget || DefaultPopupTarget;\r\n        let features = params.popupWindowFeatures || DefaultPopupFeatures;\r\n\r\n        this._popup = window.open('', target, features);\r\n        if (this._popup) {\r\n            Log.debug(\"PopupWindow.ctor: popup successfully created\");\r\n            this._checkForPopupClosedTimer = window.setInterval(this._checkForPopupClosed.bind(this), CheckForPopupClosedInterval);\r\n        }\r\n    }\r\n\r\n    get promise() {\r\n        return this._promise;\r\n    }\r\n\r\n    navigate(params) {\r\n        if (!this._popup) {\r\n            this._error(\"PopupWindow.navigate: Error opening popup window\");\r\n        }\r\n        else if (!params || !params.url) {\r\n            this._error(\"PopupWindow.navigate: no url provided\");\r\n            this._error(\"No url provided\");\r\n        }\r\n        else {\r\n            Log.debug(\"PopupWindow.navigate: Setting URL in popup\");\r\n\r\n            this._id = params.id;\r\n            if (this._id) {\r\n                window[\"popupCallback_\" + params.id] = this._callback.bind(this);\r\n            }\r\n\r\n            this._popup.focus();\r\n            this._popup.window.location = params.url;\r\n        }\r\n\r\n        return this.promise;\r\n    }\r\n\r\n    _success(data) {\r\n        Log.debug(\"PopupWindow.callback: Successful response from popup window\");\r\n\r\n        this._cleanup();\r\n        this._resolve(data);\r\n    }\r\n    _error(message) {\r\n        Log.error(\"PopupWindow.error: \", message);\r\n        \r\n        this._cleanup();\r\n        this._reject(new Error(message));\r\n    }\r\n\r\n    close() {\r\n        this._cleanup(false);\r\n    }\r\n\r\n    _cleanup(keepOpen) {\r\n        Log.debug(\"PopupWindow.cleanup\");\r\n\r\n        window.clearInterval(this._checkForPopupClosedTimer);\r\n        this._checkForPopupClosedTimer = null;\r\n\r\n        delete window[\"popupCallback_\" + this._id];\r\n\r\n        if (this._popup && !keepOpen) {\r\n            this._popup.close();\r\n        }\r\n        this._popup = null;\r\n    }\r\n\r\n    _checkForPopupClosed() {\r\n        if (!this._popup || this._popup.closed) {\r\n            this._error(\"Popup window closed\");\r\n        }\r\n    }\r\n\r\n    _callback(url, keepOpen) {\r\n        this._cleanup(keepOpen);\r\n\r\n        if (url) {\r\n            Log.debug(\"PopupWindow.callback success\");\r\n            this._success({ url: url });\r\n        }\r\n        else {\r\n            Log.debug(\"PopupWindow.callback: Invalid response from popup\");\r\n            this._error(\"Invalid response from popup\");\r\n        }\r\n    }\r\n\r\n    static notifyOpener(url, keepOpen, delimiter) {\r\n        if (window.opener) {\r\n            url = url || window.location.href;\r\n            if (url) {\r\n                var data = UrlUtility.parseUrlFragment(url, delimiter);\r\n\r\n                if (data.state) {\r\n                    var name = \"popupCallback_\" + data.state;\r\n                    var callback = window.opener[name];\r\n                    if (callback) {\r\n                        Log.debug(\"PopupWindow.notifyOpener: passing url message to opener\");\r\n                        callback(url, keepOpen);\r\n                    }\r\n                    else {\r\n                        Log.warn(\"PopupWindow.notifyOpener: no matching callback found on opener\");\r\n                    }\r\n                }\r\n                else {\r\n                    Log.warn(\"PopupWindow.notifyOpener: no state found in response url\");\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            Log.warn(\"PopupWindow.notifyOpener: no window.opener. Can't complete notification.\");\r\n        }\r\n    }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { PopupWindow } from './PopupWindow.js';\r\n\r\nexport class PopupNavigator {\r\n\r\n    prepare(params) {\r\n        let popup = new PopupWindow(params);\r\n        return Promise.resolve(popup);\r\n    }\r\n\r\n    callback(url, keepOpen, delimiter) {\r\n        Log.debug(\"PopupNavigator.callback\");\r\n\r\n        try {\r\n            PopupWindow.notifyOpener(url, keepOpen, delimiter);\r\n            return Promise.resolve();\r\n        }\r\n        catch (e) {\r\n            return Promise.reject(e);\r\n        }\r\n    }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\n\r\nconst DefaultTimeout = 10000;\r\n\r\nexport class IFrameWindow {\r\n\r\n    constructor(params) {\r\n        this._promise = new Promise((resolve, reject) => {\r\n            this._resolve = resolve;\r\n            this._reject = reject;\r\n        });\r\n\r\n        this._boundMessageEvent = this._message.bind(this);\r\n        window.addEventListener(\"message\", this._boundMessageEvent, false);\r\n\r\n        this._frame = window.document.createElement(\"iframe\");\r\n\r\n        // shotgun approach\r\n        this._frame.style.visibility = \"hidden\";\r\n        this._frame.style.position = \"absolute\";\r\n        this._frame.width = 0;\r\n        this._frame.height = 0;\r\n\r\n        window.document.body.appendChild(this._frame);\r\n    }\r\n\r\n    navigate(params) {\r\n        if (!params || !params.url) {\r\n            this._error(\"No url provided\");\r\n        }\r\n        else {\r\n            let timeout = params.silentRequestTimeout || DefaultTimeout;\r\n            Log.debug(\"IFrameWindow.navigate: Using timeout of:\", timeout);\r\n            this._timer = window.setTimeout(this._timeout.bind(this), timeout);\r\n            this._frame.src = params.url;\r\n        }\r\n\r\n        return this.promise;\r\n    }\r\n\r\n    get promise() {\r\n        return this._promise;\r\n    }\r\n\r\n    _success(data) {\r\n        this._cleanup();\r\n\r\n        Log.debug(\"IFrameWindow: Successful response from frame window\");\r\n        this._resolve(data);\r\n    }\r\n    _error(message) {\r\n        this._cleanup();\r\n\r\n        Log.error(message);\r\n        this._reject(new Error(message));\r\n    }\r\n\r\n    close() {\r\n        this._cleanup();\r\n    }\r\n\r\n    _cleanup() {\r\n        if (this._frame) {\r\n            Log.debug(\"IFrameWindow: cleanup\");\r\n\r\n            window.removeEventListener(\"message\", this._boundMessageEvent, false);\r\n            window.clearTimeout(this._timer);\r\n            window.document.body.removeChild(this._frame);\r\n\r\n            this._timer = null;\r\n            this._frame = null;\r\n            this._boundMessageEvent = null;\r\n        }\r\n    }\r\n\r\n    _timeout() {\r\n        Log.debug(\"IFrameWindow.timeout\");\r\n        this._error(\"Frame window timed out\");\r\n    }\r\n\r\n    _message(e) {\r\n        Log.debug(\"IFrameWindow.message\");\r\n\r\n        if (this._timer &&\r\n            e.origin === this._origin &&\r\n            e.source === this._frame.contentWindow &&\r\n            (typeof e.data === 'string' && (e.data.startsWith('http://') || e.data.startsWith('https://')))\r\n        ) {\r\n            let url = e.data;\r\n            if (url) {\r\n                this._success({ url: url });\r\n            }\r\n            else {\r\n                this._error(\"Invalid response from frame\");\r\n            }\r\n        }\r\n    }\r\n\r\n    get _origin() {\r\n        return location.protocol + \"//\" + location.host;\r\n    }\r\n\r\n    static notifyParent(url) {\r\n        Log.debug(\"IFrameWindow.notifyParent\");\r\n        url = url || window.location.href;\r\n        if (url) {\r\n            Log.debug(\"IFrameWindow.notifyParent: posting url message to parent\");\r\n            window.parent.postMessage(url, location.protocol + \"//\" + location.host);\r\n        }\r\n    }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { IFrameWindow } from './IFrameWindow.js';\r\n\r\nexport class IFrameNavigator {\r\n\r\n    prepare(params) {\r\n        let frame = new IFrameWindow(params);\r\n        return Promise.resolve(frame);\r\n    }\r\n\r\n    callback(url) {\r\n        Log.debug(\"IFrameNavigator.callback\");\r\n\r\n        try {\r\n            IFrameWindow.notifyParent(url);\r\n            return Promise.resolve();\r\n        }\r\n        catch (e) {\r\n            return Promise.reject(e);\r\n        }\r\n    }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { OidcClientSettings } from './OidcClientSettings.js';\r\nimport { RedirectNavigator } from './RedirectNavigator.js';\r\nimport { PopupNavigator } from './PopupNavigator.js';\r\nimport { IFrameNavigator } from './IFrameNavigator.js';\r\nimport { WebStorageStateStore } from './WebStorageStateStore.js';\r\nimport { Global } from './Global.js';\r\nimport { SigninRequest } from './SigninRequest.js';\r\n\r\nconst DefaultAccessTokenExpiringNotificationTime = 60;\r\nconst DefaultCheckSessionInterval = 2000;\r\n\r\nexport class UserManagerSettings extends OidcClientSettings {\r\n    constructor({\r\n        popup_redirect_uri,\r\n        popup_post_logout_redirect_uri,\r\n        popupWindowFeatures,\r\n        popupWindowTarget,\r\n        silent_redirect_uri,\r\n        silentRequestTimeout,\r\n        automaticSilentRenew = false,\r\n        validateSubOnSilentRenew = false,\r\n        includeIdTokenInSilentRenew = true,\r\n        monitorSession = true,\r\n        monitorAnonymousSession = false,\r\n        checkSessionInterval = DefaultCheckSessionInterval,\r\n        stopCheckSessionOnError = true,\r\n        query_status_response_type,\r\n        revokeAccessTokenOnSignout = false,\r\n        accessTokenExpiringNotificationTime = DefaultAccessTokenExpiringNotificationTime,\r\n        redirectNavigator = new RedirectNavigator(),\r\n        popupNavigator = new PopupNavigator(),\r\n        iframeNavigator = new IFrameNavigator(),\r\n        userStore = new WebStorageStateStore({ store: Global.sessionStorage })\r\n    } = {}) {\r\n        super(arguments[0]);\r\n\r\n        this._popup_redirect_uri = popup_redirect_uri;\r\n        this._popup_post_logout_redirect_uri = popup_post_logout_redirect_uri;\r\n        this._popupWindowFeatures = popupWindowFeatures;\r\n        this._popupWindowTarget = popupWindowTarget;\r\n\r\n        this._silent_redirect_uri = silent_redirect_uri;\r\n        this._silentRequestTimeout = silentRequestTimeout;\r\n        this._automaticSilentRenew = automaticSilentRenew;\r\n        this._validateSubOnSilentRenew = validateSubOnSilentRenew;\r\n        this._includeIdTokenInSilentRenew = includeIdTokenInSilentRenew;\r\n        this._accessTokenExpiringNotificationTime = accessTokenExpiringNotificationTime;\r\n\r\n        this._monitorSession = monitorSession;\r\n        this._monitorAnonymousSession = monitorAnonymousSession;\r\n        this._checkSessionInterval = checkSessionInterval;\r\n        this._stopCheckSessionOnError = stopCheckSessionOnError;\r\n        if (query_status_response_type) {\r\n            this._query_status_response_type = query_status_response_type;\r\n        } \r\n        else if (arguments[0] && arguments[0].response_type) {\r\n            this._query_status_response_type = SigninRequest.isOidc(arguments[0].response_type) ? \"id_token\" : \"code\";\r\n        }\r\n        else {\r\n            this._query_status_response_type = \"id_token\";\r\n        }\r\n        this._revokeAccessTokenOnSignout = revokeAccessTokenOnSignout;\r\n\r\n        this._redirectNavigator = redirectNavigator;\r\n        this._popupNavigator = popupNavigator;\r\n        this._iframeNavigator = iframeNavigator;\r\n\r\n        this._userStore = userStore;\r\n    }\r\n\r\n    get popup_redirect_uri() {\r\n        return this._popup_redirect_uri;\r\n    }\r\n    get popup_post_logout_redirect_uri() {\r\n        return this._popup_post_logout_redirect_uri;\r\n    }\r\n    get popupWindowFeatures() {\r\n        return this._popupWindowFeatures;\r\n    }\r\n    get popupWindowTarget() {\r\n        return this._popupWindowTarget;\r\n    }\r\n\r\n    get silent_redirect_uri() {\r\n        return this._silent_redirect_uri;\r\n    }\r\n     get silentRequestTimeout() {\r\n        return this._silentRequestTimeout;\r\n    }\r\n    get automaticSilentRenew() {\r\n        return this._automaticSilentRenew;\r\n    }\r\n    get validateSubOnSilentRenew() {\r\n        return this._validateSubOnSilentRenew;\r\n    }\r\n    get includeIdTokenInSilentRenew() {\r\n        return this._includeIdTokenInSilentRenew;\r\n    }\r\n    get accessTokenExpiringNotificationTime() {\r\n        return this._accessTokenExpiringNotificationTime;\r\n    }\r\n\r\n    get monitorSession() {\r\n        return this._monitorSession;\r\n    }\r\n    get monitorAnonymousSession() {\r\n        return this._monitorAnonymousSession;\r\n    }\r\n    get checkSessionInterval() {\r\n        return this._checkSessionInterval;\r\n    }\r\n    get stopCheckSessionOnError(){\r\n        return this._stopCheckSessionOnError;\r\n    }\r\n    get query_status_response_type(){\r\n        return this._query_status_response_type;\r\n    }\r\n    get revokeAccessTokenOnSignout() {\r\n        return this._revokeAccessTokenOnSignout;\r\n    }\r\n\r\n    get redirectNavigator() {\r\n        return this._redirectNavigator;\r\n    }\r\n    get popupNavigator() {\r\n        return this._popupNavigator;\r\n    }\r\n    get iframeNavigator() {\r\n        return this._iframeNavigator;\r\n    }\r\n\r\n    get userStore() {\r\n        return this._userStore;\r\n    }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\n\r\nexport class User {\r\n    constructor({id_token, session_state, access_token, refresh_token, token_type, scope, profile, expires_at, state}) {\r\n        this.id_token = id_token;\r\n        this.session_state = session_state;\r\n        this.access_token = access_token;\r\n        this.refresh_token = refresh_token;\r\n        this.token_type = token_type;\r\n        this.scope = scope;\r\n        this.profile = profile;\r\n        this.expires_at = expires_at;\r\n        this.state = state;\r\n    }\r\n\r\n    get expires_in() {\r\n        if (this.expires_at) {\r\n            let now = parseInt(Date.now() / 1000);\r\n            return this.expires_at - now;\r\n        }\r\n        return undefined;\r\n    }\r\n    set expires_in(value) {\r\n        let expires_in = parseInt(value);\r\n        if (typeof expires_in === 'number' && expires_in > 0) {\r\n            let now = parseInt(Date.now() / 1000);\r\n            this.expires_at = now + expires_in;\r\n        }\r\n    }\r\n\r\n    get expired() {\r\n        let expires_in = this.expires_in;\r\n        if (expires_in !== undefined) {\r\n            return expires_in <= 0;\r\n        }\r\n        return undefined;\r\n    }\r\n\r\n    get scopes() {\r\n        return (this.scope || \"\").split(\" \");\r\n    }\r\n\r\n    toStorageString() {\r\n        Log.debug(\"User.toStorageString\");\r\n        return JSON.stringify({\r\n            id_token: this.id_token,\r\n            session_state: this.session_state,\r\n            access_token: this.access_token,\r\n            refresh_token: this.refresh_token,\r\n            token_type: this.token_type,\r\n            scope: this.scope,\r\n            profile: this.profile,\r\n            expires_at: this.expires_at\r\n        });\r\n    }\r\n\r\n    static fromStorageString(storageString) {\r\n        Log.debug(\"User.fromStorageString\");\r\n        return new User(JSON.parse(storageString));\r\n    }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\n\r\nexport class Event {\r\n\r\n    constructor(name) {\r\n        this._name = name;\r\n        this._callbacks = [];\r\n    }\r\n\r\n    addHandler(cb) {\r\n        this._callbacks.push(cb);\r\n    }\r\n\r\n    removeHandler(cb) {\r\n        var idx = this._callbacks.findIndex(item => item === cb);\r\n        if (idx >= 0) {\r\n            this._callbacks.splice(idx, 1);\r\n        }\r\n    }\r\n\r\n    raise(...params) {\r\n        Log.debug(\"Event: Raising event: \" + this._name);\r\n        for (let i = 0; i < this._callbacks.length; i++) {\r\n            this._callbacks[i](...params);\r\n        }\r\n    }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { Global } from './Global.js';\r\nimport { Event } from './Event.js';\r\n\r\nconst TimerDuration = 5; // seconds\r\n\r\nexport class Timer extends Event {\r\n\r\n    constructor(name, timer = Global.timer, nowFunc = undefined) {\r\n        super(name);\r\n        this._timer = timer;\r\n\r\n        if (nowFunc) {\r\n            this._nowFunc = nowFunc;\r\n        }\r\n        else {\r\n            this._nowFunc = () => Date.now() / 1000;\r\n        }\r\n    }\r\n\r\n    get now() {\r\n        return parseInt(this._nowFunc());\r\n    }\r\n\r\n    init(duration) {\r\n        if (duration <= 0) {\r\n            duration = 1;\r\n        }\r\n        duration = parseInt(duration);\r\n\r\n        var expiration = this.now + duration;\r\n        if (this.expiration === expiration && this._timerHandle) {\r\n            // no need to reinitialize to same expiration, so bail out\r\n            Log.debug(\"Timer.init timer \" + this._name + \" skipping initialization since already initialized for expiration:\", this.expiration);\r\n            return;\r\n        }\r\n\r\n        this.cancel();\r\n\r\n        Log.debug(\"Timer.init timer \" + this._name + \" for duration:\", duration);\r\n        this._expiration = expiration;\r\n\r\n        // we're using a fairly short timer and then checking the expiration in the\r\n        // callback to handle scenarios where the browser device sleeps, and then\r\n        // the timers end up getting delayed.\r\n        var timerDuration = TimerDuration;\r\n        if (duration < timerDuration) {\r\n            timerDuration = duration;\r\n        }\r\n        this._timerHandle = this._timer.setInterval(this._callback.bind(this), timerDuration * 1000);\r\n    }\r\n    \r\n    get expiration() {\r\n        return this._expiration;\r\n    }\r\n\r\n    cancel() {\r\n        if (this._timerHandle) {\r\n            Log.debug(\"Timer.cancel: \", this._name);\r\n            this._timer.clearInterval(this._timerHandle);\r\n            this._timerHandle = null;\r\n        }\r\n    }\r\n\r\n    _callback() {\r\n        var diff = this._expiration - this.now;\r\n        Log.debug(\"Timer.callback; \" + this._name + \" timer expires in:\", diff);\r\n\r\n        if (this._expiration <= this.now) {\r\n            this.cancel();\r\n            super.raise();\r\n        }\r\n    }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { Timer } from './Timer.js';\r\n\r\nconst DefaultAccessTokenExpiringNotificationTime = 60; // seconds\r\n\r\nexport class AccessTokenEvents {\r\n\r\n    constructor({\r\n        accessTokenExpiringNotificationTime = DefaultAccessTokenExpiringNotificationTime,\r\n        accessTokenExpiringTimer = new Timer(\"Access token expiring\"),\r\n        accessTokenExpiredTimer = new Timer(\"Access token expired\")\r\n    } = {}) {\r\n        this._accessTokenExpiringNotificationTime = accessTokenExpiringNotificationTime;\r\n\r\n        this._accessTokenExpiring = accessTokenExpiringTimer;\r\n        this._accessTokenExpired = accessTokenExpiredTimer;\r\n    }\r\n\r\n    load(container) {\r\n        // only register events if there's an access token and it has an expiration\r\n        if (container.access_token && container.expires_in !== undefined) {\r\n            let duration = container.expires_in;\r\n            Log.debug(\"AccessTokenEvents.load: access token present, remaining duration:\", duration);\r\n\r\n            if (duration > 0) {\r\n                // only register expiring if we still have time\r\n                let expiring = duration - this._accessTokenExpiringNotificationTime;\r\n                if (expiring <= 0){\r\n                    expiring = 1;\r\n                }\r\n                \r\n                Log.debug(\"AccessTokenEvents.load: registering expiring timer in:\", expiring);\r\n                this._accessTokenExpiring.init(expiring);\r\n            }\r\n            else {\r\n                Log.debug(\"AccessTokenEvents.load: canceling existing expiring timer becase we're past expiration.\");\r\n                this._accessTokenExpiring.cancel();\r\n            }\r\n\r\n            // if it's negative, it will still fire\r\n            let expired = duration + 1;\r\n            Log.debug(\"AccessTokenEvents.load: registering expired timer in:\", expired);\r\n            this._accessTokenExpired.init(expired);\r\n        }\r\n        else {\r\n            this._accessTokenExpiring.cancel();\r\n            this._accessTokenExpired.cancel();\r\n        }\r\n    }\r\n\r\n    unload() {\r\n        Log.debug(\"AccessTokenEvents.unload: canceling existing access token timers\");\r\n        this._accessTokenExpiring.cancel();\r\n        this._accessTokenExpired.cancel();\r\n    }\r\n\r\n    addAccessTokenExpiring(cb) {\r\n        this._accessTokenExpiring.addHandler(cb);\r\n    }\r\n    removeAccessTokenExpiring(cb) {\r\n        this._accessTokenExpiring.removeHandler(cb);\r\n    }\r\n\r\n    addAccessTokenExpired(cb) {\r\n        this._accessTokenExpired.addHandler(cb);\r\n    }\r\n    removeAccessTokenExpired(cb) {\r\n        this._accessTokenExpired.removeHandler(cb);\r\n    }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { AccessTokenEvents } from './AccessTokenEvents.js';\r\nimport { Event } from './Event.js';\r\n\r\nexport class UserManagerEvents extends AccessTokenEvents {\r\n\r\n    constructor(settings) {\r\n        super(settings);\r\n        this._userLoaded = new Event(\"User loaded\");\r\n        this._userUnloaded = new Event(\"User unloaded\");\r\n        this._silentRenewError = new Event(\"Silent renew error\");\r\n        this._userSignedIn = new Event(\"User signed in\");\r\n        this._userSignedOut = new Event(\"User signed out\");\r\n        this._userSessionChanged = new Event(\"User session changed\");\r\n    }\r\n\r\n    load(user, raiseEvent=true) {\r\n        Log.debug(\"UserManagerEvents.load\");\r\n        super.load(user);\r\n        if (raiseEvent) {\r\n            this._userLoaded.raise(user);\r\n        }\r\n    }\r\n    unload() {\r\n        Log.debug(\"UserManagerEvents.unload\");\r\n        super.unload();\r\n        this._userUnloaded.raise();\r\n    }\r\n\r\n    addUserLoaded(cb) {\r\n        this._userLoaded.addHandler(cb);\r\n    }\r\n    removeUserLoaded(cb) {\r\n        this._userLoaded.removeHandler(cb);\r\n    }\r\n\r\n    addUserUnloaded(cb) {\r\n        this._userUnloaded.addHandler(cb);\r\n    }\r\n    removeUserUnloaded(cb) {\r\n        this._userUnloaded.removeHandler(cb);\r\n    }\r\n\r\n    addSilentRenewError(cb) {\r\n        this._silentRenewError.addHandler(cb);\r\n    }\r\n    removeSilentRenewError(cb) {\r\n        this._silentRenewError.removeHandler(cb);\r\n    }\r\n    _raiseSilentRenewError(e) {\r\n        Log.debug(\"UserManagerEvents._raiseSilentRenewError\", e.message);\r\n        this._silentRenewError.raise(e);\r\n    }\r\n\r\n    addUserSignedIn(cb) {\r\n        this._userSignedIn.addHandler(cb);\r\n    }\r\n    removeUserSignedIn(cb) {\r\n        this._userSignedIn.removeHandler(cb);\r\n    }\r\n    _raiseUserSignedIn() {\r\n        Log.debug(\"UserManagerEvents._raiseUserSignedIn\");\r\n        this._userSignedIn.raise();\r\n    }\r\n\r\n    addUserSignedOut(cb) {\r\n        this._userSignedOut.addHandler(cb);\r\n    }\r\n    removeUserSignedOut(cb) {\r\n        this._userSignedOut.removeHandler(cb);\r\n    }\r\n    _raiseUserSignedOut() {\r\n        Log.debug(\"UserManagerEvents._raiseUserSignedOut\");\r\n        this._userSignedOut.raise();\r\n    }\r\n\r\n    addUserSessionChanged(cb) {\r\n        this._userSessionChanged.addHandler(cb);\r\n    }\r\n    removeUserSessionChanged(cb) {\r\n        this._userSessionChanged.removeHandler(cb);\r\n    }\r\n    _raiseUserSessionChanged() {\r\n        Log.debug(\"UserManagerEvents._raiseUserSessionChanged\");\r\n        this._userSessionChanged.raise();\r\n    }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\n\r\nexport class SilentRenewService {\r\n\r\n    constructor(userManager) {\r\n        this._userManager = userManager;\r\n    }\r\n\r\n    start() {\r\n        if (!this._callback) {\r\n            this._callback = this._tokenExpiring.bind(this);\r\n            this._userManager.events.addAccessTokenExpiring(this._callback);\r\n\r\n            // this will trigger loading of the user so the expiring events can be initialized\r\n            this._userManager.getUser().then(user=>{\r\n                // deliberate nop\r\n            }).catch(err=>{\r\n                // catch to suppress errors since we're in a ctor\r\n                Log.error(\"SilentRenewService.start: Error from getUser:\", err.message);\r\n            });\r\n        }\r\n    }\r\n\r\n    stop() {\r\n        if (this._callback) {\r\n            this._userManager.events.removeAccessTokenExpiring(this._callback);\r\n            delete this._callback;\r\n        }\r\n    }\r\n\r\n    _tokenExpiring() {\r\n        this._userManager.signinSilent().then(user => {\r\n            Log.debug(\"SilentRenewService._tokenExpiring: Silent token renewal successful\");\r\n        }, err => {\r\n            Log.error(\"SilentRenewService._tokenExpiring: Error from signinSilent:\", err.message);\r\n            this._userManager.events._raiseSilentRenewError(err);\r\n        });\r\n    }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\n\r\nconst DefaultInterval = 2000;\r\n\r\nexport class CheckSessionIFrame {\r\n    constructor(callback, client_id, url, interval, stopOnError = true) {\r\n        this._callback = callback;\r\n        this._client_id = client_id;\r\n        this._url = url;\r\n        this._interval = interval || DefaultInterval;\r\n        this._stopOnError = stopOnError;\r\n\r\n        var idx = url.indexOf(\"/\", url.indexOf(\"//\") + 2);\r\n        this._frame_origin = url.substr(0, idx);\r\n\r\n        this._frame = window.document.createElement(\"iframe\");\r\n\r\n        // shotgun approach\r\n        this._frame.style.visibility = \"hidden\";\r\n        this._frame.style.position = \"absolute\";\r\n        this._frame.style.display = \"none\";\r\n        this._frame.width = 0;\r\n        this._frame.height = 0;\r\n\r\n        this._frame.src = url;\r\n    }\r\n    load() {\r\n        return new Promise((resolve) => {\r\n            this._frame.onload = () => {\r\n                resolve();\r\n            }\r\n\r\n            window.document.body.appendChild(this._frame);\r\n            this._boundMessageEvent = this._message.bind(this);\r\n            window.addEventListener(\"message\", this._boundMessageEvent, false);\r\n        });\r\n    }\r\n    _message(e) {\r\n        if (e.origin === this._frame_origin &&\r\n            e.source === this._frame.contentWindow\r\n        ) {\r\n            if (e.data === \"error\") {\r\n                Log.error(\"CheckSessionIFrame: error message from check session op iframe\");\r\n                if (this._stopOnError) {\r\n                    this.stop();\r\n                }\r\n            }\r\n            else if (e.data === \"changed\") {\r\n                Log.debug(\"CheckSessionIFrame: changed message from check session op iframe\");\r\n                this.stop();\r\n                this._callback();\r\n            }\r\n            else {\r\n                Log.debug(\"CheckSessionIFrame: \" + e.data + \" message from check session op iframe\");\r\n            }\r\n        }\r\n    }\r\n    start(session_state) {\r\n        if (this._session_state !== session_state) {\r\n            Log.debug(\"CheckSessionIFrame.start\");\r\n\r\n            this.stop();\r\n\r\n            this._session_state = session_state;\r\n\r\n            let send = () => {\r\n                this._frame.contentWindow.postMessage(this._client_id + \" \" + this._session_state, this._frame_origin);\r\n            };\r\n            \r\n            // trigger now\r\n            send();\r\n\r\n            // and setup timer\r\n            this._timer = window.setInterval(send, this._interval);\r\n        }\r\n    }\r\n\r\n    stop() {\r\n        this._session_state = null;\r\n\r\n        if (this._timer) {\r\n            Log.debug(\"CheckSessionIFrame.stop\");\r\n\r\n            window.clearInterval(this._timer);\r\n            this._timer = null;\r\n        }\r\n    }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { CheckSessionIFrame } from './CheckSessionIFrame.js';\r\nimport { Global } from './Global.js';\r\n\r\nexport class SessionMonitor {\r\n\r\n    constructor(userManager, CheckSessionIFrameCtor = CheckSessionIFrame, timer = Global.timer) {\r\n        if (!userManager) {\r\n            Log.error(\"SessionMonitor.ctor: No user manager passed to SessionMonitor\");\r\n            throw new Error(\"userManager\");\r\n        }\r\n\r\n        this._userManager = userManager;\r\n        this._CheckSessionIFrameCtor = CheckSessionIFrameCtor;\r\n        this._timer = timer;\r\n\r\n        this._userManager.events.addUserLoaded(this._start.bind(this));\r\n        this._userManager.events.addUserUnloaded(this._stop.bind(this));\r\n\r\n        Promise.resolve(this._userManager.getUser().then(user => {\r\n            // doing this manually here since calling getUser \r\n            // doesn't trigger load event.\r\n            if (user) {\r\n                this._start(user);\r\n            }\r\n            else if (this._settings.monitorAnonymousSession) {\r\n                this._userManager.querySessionStatus().then(session => {\r\n                    let tmpUser = {\r\n                        session_state : session.session_state\r\n                    };\r\n                    if (session.sub && session.sid) {\r\n                        tmpUser.profile = {\r\n                            sub: session.sub,\r\n                            sid: session.sid\r\n                        };\r\n                    }\r\n                    this._start(tmpUser);\r\n                })\r\n                .catch(err => {\r\n                    // catch to suppress errors since we're in a ctor\r\n                    Log.error(\"SessionMonitor ctor: error from querySessionStatus:\", err.message);\r\n                });\r\n            }\r\n        }).catch(err => {\r\n            // catch to suppress errors since we're in a ctor\r\n            Log.error(\"SessionMonitor ctor: error from getUser:\", err.message);\r\n        }));\r\n    }\r\n\r\n    get _settings() {\r\n        return this._userManager.settings;\r\n    }\r\n    get _metadataService() {\r\n        return this._userManager.metadataService;\r\n    }\r\n    get _client_id() {\r\n        return this._settings.client_id;\r\n    }\r\n    get _checkSessionInterval() {\r\n        return this._settings.checkSessionInterval;\r\n    }\r\n    get _stopCheckSessionOnError() {\r\n        return this._settings.stopCheckSessionOnError;\r\n    }\r\n\r\n    _start(user) {\r\n        let session_state = user.session_state;\r\n\r\n        if (session_state) {\r\n            if (user.profile) {\r\n                this._sub = user.profile.sub;\r\n                this._sid = user.profile.sid;\r\n                Log.debug(\"SessionMonitor._start: session_state:\", session_state, \", sub:\", this._sub);\r\n            }\r\n            else {\r\n                this._sub = undefined;\r\n                this._sid = undefined;\r\n                Log.debug(\"SessionMonitor._start: session_state:\", session_state, \", anonymous user\");\r\n            }\r\n\r\n            if (!this._checkSessionIFrame) {\r\n                this._metadataService.getCheckSessionIframe().then(url => {\r\n                    if (url) {\r\n                        Log.debug(\"SessionMonitor._start: Initializing check session iframe\")\r\n\r\n                        let client_id = this._client_id;\r\n                        let interval = this._checkSessionInterval;\r\n                        let stopOnError = this._stopCheckSessionOnError;\r\n\r\n                        this._checkSessionIFrame = new this._CheckSessionIFrameCtor(this._callback.bind(this), client_id, url, interval, stopOnError);\r\n                        this._checkSessionIFrame.load().then(() => {\r\n                            this._checkSessionIFrame.start(session_state);\r\n                        });\r\n                    }\r\n                    else {\r\n                        Log.warn(\"SessionMonitor._start: No check session iframe found in the metadata\");\r\n                    }\r\n                }).catch(err => {\r\n                    // catch to suppress errors since we're in non-promise callback\r\n                    Log.error(\"SessionMonitor._start: Error from getCheckSessionIframe:\", err.message);\r\n                });\r\n            }\r\n            else {\r\n                this._checkSessionIFrame.start(session_state);\r\n            }\r\n        }\r\n    }\r\n\r\n    _stop() {\r\n        this._sub = undefined;\r\n        this._sid = undefined;\r\n\r\n        if (this._checkSessionIFrame) {\r\n            Log.debug(\"SessionMonitor._stop\");\r\n            this._checkSessionIFrame.stop();\r\n        }\r\n\r\n        if (this._settings.monitorAnonymousSession) {\r\n            // using a timer to delay re-initialization to avoid race conditions during signout\r\n            let timerHandle = this._timer.setInterval(()=>{\r\n                this._timer.clearInterval(timerHandle);\r\n\r\n                this._userManager.querySessionStatus().then(session => {\r\n                    let tmpUser = {\r\n                        session_state : session.session_state\r\n                    };\r\n                    if (session.sub && session.sid) {\r\n                        tmpUser.profile = {\r\n                            sub: session.sub,\r\n                            sid: session.sid\r\n                        };\r\n                    }\r\n                    this._start(tmpUser);\r\n                })\r\n                .catch(err => {\r\n                    // catch to suppress errors since we're in a callback\r\n                    Log.error(\"SessionMonitor: error from querySessionStatus:\", err.message);\r\n                });\r\n\r\n            }, 1000);\r\n        }\r\n    }\r\n\r\n    _callback() {\r\n        this._userManager.querySessionStatus().then(session => {\r\n            var raiseEvent = true;\r\n\r\n            if (session) {\r\n                if (session.sub === this._sub) {\r\n                    raiseEvent = false;\r\n                    this._checkSessionIFrame.start(session.session_state);\r\n\r\n                    if (session.sid === this._sid) {\r\n                        Log.debug(\"SessionMonitor._callback: Same sub still logged in at OP, restarting check session iframe; session_state:\", session.session_state);\r\n                    }\r\n                    else {\r\n                        Log.debug(\"SessionMonitor._callback: Same sub still logged in at OP, session state has changed, restarting check session iframe; session_state:\", session.session_state);\r\n                        this._userManager.events._raiseUserSessionChanged();\r\n                    }\r\n                }\r\n                else {\r\n                    Log.debug(\"SessionMonitor._callback: Different subject signed into OP:\", session.sub);\r\n                }\r\n            }\r\n            else {\r\n                Log.debug(\"SessionMonitor._callback: Subject no longer signed into OP\");\r\n            }\r\n\r\n            if (raiseEvent) {\r\n                if (this._sub) {\r\n                    Log.debug(\"SessionMonitor._callback: SessionMonitor._callback; raising signed out event\");\r\n                    this._userManager.events._raiseUserSignedOut();\r\n                }\r\n                else {\r\n                    Log.debug(\"SessionMonitor._callback: SessionMonitor._callback; raising signed in event\");\r\n                    this._userManager.events._raiseUserSignedIn();\r\n                }\r\n            }\r\n        }).catch(err => {\r\n            if (this._sub) {\r\n                Log.debug(\"SessionMonitor._callback: Error calling queryCurrentSigninSession; raising signed out event\", err.message);\r\n                this._userManager.events._raiseUserSignedOut();\r\n            }\r\n        });\r\n    }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { MetadataService } from './MetadataService.js';\r\nimport { Global } from './Global.js';\r\n\r\nconst AccessTokenTypeHint = \"access_token\";\r\nconst RefreshTokenTypeHint = \"refresh_token\";\r\n\r\nexport class TokenRevocationClient {\r\n    constructor(settings, XMLHttpRequestCtor = Global.XMLHttpRequest, MetadataServiceCtor = MetadataService) {\r\n        if (!settings) {\r\n            Log.error(\"TokenRevocationClient.ctor: No settings provided\");\r\n            throw new Error(\"No settings provided.\");\r\n        }\r\n\r\n        this._settings = settings;\r\n        this._XMLHttpRequestCtor = XMLHttpRequestCtor;\r\n        this._metadataService = new MetadataServiceCtor(this._settings);\r\n    }\r\n\r\n    revoke(token, required, type = \"access_token\") {\r\n        if (!token) {\r\n            Log.error(\"TokenRevocationClient.revoke: No token provided\");\r\n            throw new Error(\"No token provided.\");\r\n        }\r\n\r\n        if (type !== AccessTokenTypeHint && type != RefreshTokenTypeHint) {\r\n            Log.error(\"TokenRevocationClient.revoke: Invalid token type\");\r\n            throw new Error(\"Invalid token type.\");\r\n        }\r\n\r\n        return this._metadataService.getRevocationEndpoint().then(url => {\r\n            if (!url) {\r\n                if (required) {\r\n                    Log.error(\"TokenRevocationClient.revoke: Revocation not supported\");\r\n                    throw new Error(\"Revocation not supported\");\r\n                }\r\n\r\n                // not required, so don't error and just return\r\n                return;\r\n            }\r\n\r\n            Log.debug(\"TokenRevocationClient.revoke: Revoking \" + type);\r\n            var client_id = this._settings.client_id;\r\n            var client_secret = this._settings.client_secret;\r\n            return this._revoke(url, client_id, client_secret, token, type);\r\n        });\r\n    }\r\n\r\n    _revoke(url, client_id, client_secret, token, type) {\r\n\r\n        return new Promise((resolve, reject) => {\r\n\r\n            var xhr = new this._XMLHttpRequestCtor();\r\n            xhr.open(\"POST\", url);\r\n\r\n            xhr.onload = () => {\r\n                Log.debug(\"TokenRevocationClient.revoke: HTTP response received, status\", xhr.status);\r\n\r\n                if (xhr.status === 200) {\r\n                    resolve();\r\n                }\r\n                else {\r\n                    reject(Error(xhr.statusText + \" (\" + xhr.status + \")\"));\r\n                }\r\n            };\r\n            xhr.onerror = () => { \r\n                Log.debug(\"TokenRevocationClient.revoke: Network Error.\")\r\n                reject(\"Network Error\");\r\n            };\r\n\r\n            var body = \"client_id=\" + encodeURIComponent(client_id);\r\n            if (client_secret) {\r\n                body += \"&client_secret=\" + encodeURIComponent(client_secret);\r\n            }\r\n            body += \"&token_type_hint=\" + encodeURIComponent(type);\r\n            body += \"&token=\" + encodeURIComponent(token);\r\n\r\n            xhr.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\r\n            xhr.send(body);\r\n        });\r\n    }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { OidcClient } from './OidcClient.js';\r\nimport { UserManagerSettings } from './UserManagerSettings.js';\r\nimport { User } from './User.js';\r\nimport { UserManagerEvents } from './UserManagerEvents.js';\r\nimport { SilentRenewService } from './SilentRenewService.js';\r\nimport { SessionMonitor } from './SessionMonitor.js';\r\nimport { SigninRequest } from \"./SigninRequest\";\r\nimport { TokenRevocationClient } from './TokenRevocationClient.js';\r\nimport { TokenClient } from './TokenClient.js';\r\nimport { JoseUtil } from './JoseUtil.js';\r\n\r\n\r\nexport class UserManager extends OidcClient {\r\n    constructor(settings = {},\r\n        SilentRenewServiceCtor = SilentRenewService,\r\n        SessionMonitorCtor = SessionMonitor,\r\n        TokenRevocationClientCtor = TokenRevocationClient,\r\n        TokenClientCtor = TokenClient,\r\n        joseUtil = JoseUtil\r\n    ) {\r\n\r\n        if (!(settings instanceof UserManagerSettings)) {\r\n            settings = new UserManagerSettings(settings);\r\n        }\r\n        super(settings);\r\n\r\n        this._events = new UserManagerEvents(settings);\r\n        this._silentRenewService = new SilentRenewServiceCtor(this);\r\n\r\n        // order is important for the following properties; these services depend upon the events.\r\n        if (this.settings.automaticSilentRenew) {\r\n            Log.debug(\"UserManager.ctor: automaticSilentRenew is configured, setting up silent renew\");\r\n            this.startSilentRenew();\r\n        }\r\n\r\n        if (this.settings.monitorSession) {\r\n            Log.debug(\"UserManager.ctor: monitorSession is configured, setting up session monitor\");\r\n            this._sessionMonitor = new SessionMonitorCtor(this);\r\n        }\r\n\r\n        this._tokenRevocationClient = new TokenRevocationClientCtor(this._settings);\r\n        this._tokenClient = new TokenClientCtor(this._settings);\r\n        this._joseUtil = joseUtil;\r\n    }\r\n\r\n    get _redirectNavigator() {\r\n        return this.settings.redirectNavigator;\r\n    }\r\n    get _popupNavigator() {\r\n        return this.settings.popupNavigator;\r\n    }\r\n    get _iframeNavigator() {\r\n        return this.settings.iframeNavigator;\r\n    }\r\n    get _userStore() {\r\n        return this.settings.userStore;\r\n    }\r\n\r\n    get events() {\r\n        return this._events;\r\n    }\r\n\r\n    getUser() {\r\n        return this._loadUser().then(user => {\r\n            if (user) {\r\n                Log.info(\"UserManager.getUser: user loaded\");\r\n\r\n                this._events.load(user, false);\r\n\r\n                return user;\r\n            }\r\n            else {\r\n                Log.info(\"UserManager.getUser: user not found in storage\");\r\n                return null;\r\n            }\r\n        });\r\n    }\r\n\r\n    removeUser() {\r\n        return this.storeUser(null).then(() => {\r\n            Log.info(\"UserManager.removeUser: user removed from storage\");\r\n            this._events.unload();\r\n        });\r\n    }\r\n\r\n    signinRedirect(args = {}) {\r\n        args = Object.assign({}, args);\r\n\r\n        args.request_type = \"si:r\";\r\n        let navParams = {\r\n            useReplaceToNavigate : args.useReplaceToNavigate\r\n        };\r\n        return this._signinStart(args, this._redirectNavigator, navParams).then(()=>{\r\n            Log.info(\"UserManager.signinRedirect: successful\");\r\n        });\r\n    }\r\n    signinRedirectCallback(url) {\r\n        return this._signinEnd(url || this._redirectNavigator.url).then(user => {\r\n            if (user.profile && user.profile.sub) {\r\n                Log.info(\"UserManager.signinRedirectCallback: successful, signed in sub: \", user.profile.sub);\r\n            }\r\n            else {\r\n                Log.info(\"UserManager.signinRedirectCallback: no sub\");\r\n            }\r\n\r\n            return user;\r\n        });\r\n    }\r\n\r\n    signinPopup(args = {}) {\r\n        args = Object.assign({}, args);\r\n\r\n        args.request_type = \"si:p\";\r\n        let url = args.redirect_uri || this.settings.popup_redirect_uri || this.settings.redirect_uri;\r\n        if (!url) {\r\n            Log.error(\"UserManager.signinPopup: No popup_redirect_uri or redirect_uri configured\");\r\n            return Promise.reject(new Error(\"No popup_redirect_uri or redirect_uri configured\"));\r\n        }\r\n\r\n        args.redirect_uri = url;\r\n        args.display = \"popup\";\r\n\r\n        return this._signin(args, this._popupNavigator, {\r\n            startUrl: url,\r\n            popupWindowFeatures: args.popupWindowFeatures || this.settings.popupWindowFeatures,\r\n            popupWindowTarget: args.popupWindowTarget || this.settings.popupWindowTarget\r\n        }).then(user => {\r\n            if (user) {\r\n                if (user.profile && user.profile.sub) {\r\n                    Log.info(\"UserManager.signinPopup: signinPopup successful, signed in sub: \", user.profile.sub);\r\n                }\r\n                else {\r\n                    Log.info(\"UserManager.signinPopup: no sub\");\r\n                }\r\n            }\r\n\r\n            return user;\r\n        });\r\n    }\r\n    signinPopupCallback(url) {\r\n        return this._signinCallback(url, this._popupNavigator).then(user => {\r\n            if (user) {\r\n                if (user.profile && user.profile.sub) {\r\n                    Log.info(\"UserManager.signinPopupCallback: successful, signed in sub: \", user.profile.sub);\r\n                }\r\n                else {\r\n                    Log.info(\"UserManager.signinPopupCallback: no sub\");\r\n                }\r\n            }\r\n\r\n            return user;\r\n        }).catch(err=>{\r\n            Log.error(\"UserManager.signinPopupCallback error: \" + err && err.message);\r\n        });\r\n    }\r\n\r\n    signinSilent(args = {}) {\r\n        args = Object.assign({}, args);\r\n\r\n        // first determine if we have a refresh token, or need to use iframe\r\n        return this._loadUser().then(user => {\r\n            if (user && user.refresh_token) {\r\n                args.refresh_token = user.refresh_token;\r\n                return this._useRefreshToken(args);\r\n            }\r\n            else {\r\n                args.request_type = \"si:s\";\r\n                args.id_token_hint = args.id_token_hint || (this.settings.includeIdTokenInSilentRenew && user && user.id_token);\r\n                if (user && this._settings.validateSubOnSilentRenew) {\r\n                    Log.debug(\"UserManager.signinSilent, subject prior to silent renew: \", user.profile.sub);\r\n                    args.current_sub = user.profile.sub;\r\n                }\r\n                return this._signinSilentIframe(args);\r\n            }\r\n        });\r\n    }\r\n\r\n    _useRefreshToken(args = {}) {\r\n        return this._tokenClient.exchangeRefreshToken(args).then(result => {\r\n            if (!result) {\r\n                Log.error(\"UserManager._useRefreshToken: No response returned from token endpoint\");\r\n                return Promise.reject(\"No response returned from token endpoint\");\r\n            }\r\n            if (!result.access_token) {\r\n                Log.error(\"UserManager._useRefreshToken: No access token returned from token endpoint\");\r\n                return Promise.reject(\"No access token returned from token endpoint\");\r\n            }\r\n\r\n            return this._loadUser().then(user => {\r\n                if (user) {\r\n                    let idTokenValidation = Promise.resolve();\r\n                    if (result.id_token) {\r\n                        idTokenValidation = this._validateIdTokenFromTokenRefreshToken(user.profile, result.id_token);\r\n                    }\r\n\r\n                    return idTokenValidation.then(() => {\r\n                        Log.debug(\"UserManager._useRefreshToken: refresh token response success\");\r\n                        user.id_token = result.id_token || user.id_token;\r\n                        user.access_token = result.access_token;\r\n                        user.refresh_token = result.refresh_token || user.refresh_token;\r\n                        user.expires_in = result.expires_in;\r\n\r\n                        return this.storeUser(user).then(()=>{\r\n                            this._events.load(user);\r\n                            return user;\r\n                        });\r\n                    });\r\n                }\r\n                else {\r\n                    return null;\r\n                }\r\n            });\r\n        });\r\n    }\r\n\r\n    _validateIdTokenFromTokenRefreshToken(profile, id_token) {\r\n        return this._metadataService.getIssuer().then(issuer => {\r\n            return this.settings.getEpochTime().then(now => {\r\n                return this._joseUtil.validateJwtAttributes(id_token, issuer, this._settings.client_id, this._settings.clockSkew, now).then(payload => {\r\n                    if (!payload) {\r\n                        Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: Failed to validate id_token\");\r\n                        return Promise.reject(new Error(\"Failed to validate id_token\"));\r\n                    }\r\n                    if (payload.sub !== profile.sub) {\r\n                        Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: sub in id_token does not match current sub\");\r\n                        return Promise.reject(new Error(\"sub in id_token does not match current sub\"));\r\n                    }\r\n                    if (payload.auth_time && payload.auth_time !== profile.auth_time) {\r\n                        Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: auth_time in id_token does not match original auth_time\");\r\n                        return Promise.reject(new Error(\"auth_time in id_token does not match original auth_time\"));\r\n                    }\r\n                    if (payload.azp && payload.azp !== profile.azp) {\r\n                        Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: azp in id_token does not match original azp\");\r\n                        return Promise.reject(new Error(\"azp in id_token does not match original azp\"));\r\n                    }\r\n                    if (!payload.azp && profile.azp) {\r\n                        Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: azp not in id_token, but present in original id_token\");\r\n                        return Promise.reject(new Error(\"azp not in id_token, but present in original id_token\"));\r\n                    }\r\n                });\r\n            });\r\n        });\r\n    }\r\n    \r\n    _signinSilentIframe(args = {}) {\r\n        let url = args.redirect_uri || this.settings.silent_redirect_uri || this.settings.redirect_uri;\r\n        if (!url) {\r\n            Log.error(\"UserManager.signinSilent: No silent_redirect_uri configured\");\r\n            return Promise.reject(new Error(\"No silent_redirect_uri configured\"));\r\n        }\r\n\r\n        args.redirect_uri = url;\r\n        args.prompt = args.prompt || \"none\";\r\n\r\n        return this._signin(args, this._iframeNavigator, {\r\n            startUrl: url,\r\n            silentRequestTimeout: args.silentRequestTimeout || this.settings.silentRequestTimeout\r\n        }).then(user => {\r\n            if (user) {\r\n                if (user.profile && user.profile.sub) {\r\n                    Log.info(\"UserManager.signinSilent: successful, signed in sub: \", user.profile.sub);\r\n                }\r\n                else {\r\n                    Log.info(\"UserManager.signinSilent: no sub\");\r\n                }\r\n            }\r\n\r\n            return user;\r\n        });\r\n    }\r\n\r\n    signinSilentCallback(url) {\r\n        return this._signinCallback(url, this._iframeNavigator).then(user => {\r\n            if (user) {\r\n                if (user.profile && user.profile.sub) {\r\n                    Log.info(\"UserManager.signinSilentCallback: successful, signed in sub: \", user.profile.sub);\r\n                }\r\n                else {\r\n                    Log.info(\"UserManager.signinSilentCallback: no sub\");\r\n                }\r\n            }\r\n\r\n            return user;\r\n        });\r\n    }\r\n\r\n    signinCallback(url) {\r\n        return this.readSigninResponseState(url).then(({state, response}) => {\r\n            if (state.request_type === \"si:r\") {\r\n                return this.signinRedirectCallback(url);\r\n            }\r\n            if (state.request_type === \"si:p\") {\r\n                return this.signinPopupCallback(url);\r\n            }\r\n            if (state.request_type === \"si:s\") {\r\n                return this.signinSilentCallback(url);\r\n            }\r\n            return Promise.reject(new Error(\"invalid response_type in state\"));\r\n        });\r\n    }\r\n\r\n    signoutCallback(url, keepOpen) {\r\n        return this.readSignoutResponseState(url).then(({state, response}) => {\r\n            if (state) {\r\n                if (state.request_type === \"so:r\") {\r\n                    return this.signoutRedirectCallback(url);\r\n                }\r\n                if (state.request_type === \"so:p\") {\r\n                    return this.signoutPopupCallback(url, keepOpen);\r\n                }\r\n                return Promise.reject(new Error(\"invalid response_type in state\"));\r\n            }\r\n            return response;\r\n        });\r\n    }\r\n\r\n    querySessionStatus(args = {}) {\r\n        args = Object.assign({}, args);\r\n\r\n        args.request_type = \"si:s\"; // this acts like a signin silent\r\n        let url = args.redirect_uri || this.settings.silent_redirect_uri || this.settings.redirect_uri;\r\n        if (!url) {\r\n            Log.error(\"UserManager.querySessionStatus: No silent_redirect_uri configured\");\r\n            return Promise.reject(new Error(\"No silent_redirect_uri configured\"));\r\n        }\r\n\r\n        args.redirect_uri = url;\r\n        args.prompt = \"none\";\r\n        args.response_type = args.response_type || this.settings.query_status_response_type;\r\n        args.scope = args.scope || \"openid\";\r\n        args.skipUserInfo = true;\r\n\r\n        return this._signinStart(args, this._iframeNavigator, {\r\n            startUrl: url,\r\n            silentRequestTimeout: args.silentRequestTimeout || this.settings.silentRequestTimeout\r\n        }).then(navResponse => {\r\n            return this.processSigninResponse(navResponse.url).then(signinResponse => {\r\n                Log.debug(\"UserManager.querySessionStatus: got signin response\");\r\n\r\n                if (signinResponse.session_state && signinResponse.profile.sub) {\r\n                    Log.info(\"UserManager.querySessionStatus: querySessionStatus success for sub: \",  signinResponse.profile.sub);\r\n                    return {\r\n                        session_state: signinResponse.session_state,\r\n                        sub: signinResponse.profile.sub,\r\n                        sid: signinResponse.profile.sid\r\n                    };\r\n                }\r\n                else {\r\n                    Log.info(\"querySessionStatus successful, user not authenticated\");\r\n                }\r\n            })\r\n            .catch(err => {\r\n                if (err.session_state && this.settings.monitorAnonymousSession) {\r\n                    if (err.message == \"login_required\" || \r\n                        err.message == \"consent_required\" || \r\n                        err.message == \"interaction_required\" || \r\n                        err.message == \"account_selection_required\"\r\n                    ) {\r\n                        Log.info(\"UserManager.querySessionStatus: querySessionStatus success for anonymous user\");\r\n                        return {\r\n                            session_state: err.session_state\r\n                        };\r\n                    }\r\n                }\r\n\r\n                throw err;\r\n            });\r\n        });\r\n    }\r\n\r\n    _signin(args, navigator, navigatorParams = {}) {\r\n        return this._signinStart(args, navigator, navigatorParams).then(navResponse => {\r\n            return this._signinEnd(navResponse.url, args);\r\n        });\r\n    }\r\n    _signinStart(args, navigator, navigatorParams = {}) {\r\n\r\n        return navigator.prepare(navigatorParams).then(handle => {\r\n            Log.debug(\"UserManager._signinStart: got navigator window handle\");\r\n\r\n            return this.createSigninRequest(args).then(signinRequest => {\r\n                Log.debug(\"UserManager._signinStart: got signin request\");\r\n\r\n                navigatorParams.url = signinRequest.url;\r\n                navigatorParams.id = signinRequest.state.id;\r\n\r\n                return handle.navigate(navigatorParams);\r\n            }).catch(err => {\r\n                if (handle.close) {\r\n                    Log.debug(\"UserManager._signinStart: Error after preparing navigator, closing navigator window\");\r\n                    handle.close();\r\n                }\r\n                throw err;\r\n            });\r\n        });\r\n    }\r\n    _signinEnd(url, args = {}) {\r\n        return this.processSigninResponse(url).then(signinResponse => {\r\n            Log.debug(\"UserManager._signinEnd: got signin response\");\r\n\r\n            let user = new User(signinResponse);\r\n\r\n            if (args.current_sub) {\r\n                if (args.current_sub !== user.profile.sub) {\r\n                    Log.debug(\"UserManager._signinEnd: current user does not match user returned from signin. sub from signin: \", user.profile.sub);\r\n                    return Promise.reject(new Error(\"login_required\"));\r\n                }\r\n                else {\r\n                    Log.debug(\"UserManager._signinEnd: current user matches user returned from signin\");\r\n                }\r\n            }\r\n\r\n            return this.storeUser(user).then(() => {\r\n                Log.debug(\"UserManager._signinEnd: user stored\");\r\n\r\n                this._events.load(user);\r\n\r\n                return user;\r\n            });\r\n        });\r\n    }\r\n    _signinCallback(url, navigator) {\r\n        Log.debug(\"UserManager._signinCallback\");\r\n        let useQuery = this._settings.response_mode === \"query\" || (!this._settings.response_mode && SigninRequest.isCode(this._settings.response_type));\r\n        let delimiter = useQuery ? \"?\" : \"#\";\r\n        return navigator.callback(url, undefined, delimiter);\r\n    }\r\n\r\n    signoutRedirect(args = {}) {\r\n        args = Object.assign({}, args);\r\n\r\n        args.request_type = \"so:r\";\r\n        let postLogoutRedirectUri = args.post_logout_redirect_uri || this.settings.post_logout_redirect_uri;\r\n        if (postLogoutRedirectUri){\r\n            args.post_logout_redirect_uri = postLogoutRedirectUri;\r\n        }\r\n        let navParams = {\r\n            useReplaceToNavigate : args.useReplaceToNavigate\r\n        };\r\n        return this._signoutStart(args, this._redirectNavigator, navParams).then(()=>{\r\n            Log.info(\"UserManager.signoutRedirect: successful\");\r\n        });\r\n    }\r\n    signoutRedirectCallback(url) {\r\n        return this._signoutEnd(url || this._redirectNavigator.url).then(response=>{\r\n            Log.info(\"UserManager.signoutRedirectCallback: successful\");\r\n            return response;\r\n        });\r\n    }\r\n\r\n    signoutPopup(args = {}) {\r\n        args = Object.assign({}, args);\r\n\r\n        args.request_type = \"so:p\";\r\n        let url = args.post_logout_redirect_uri || this.settings.popup_post_logout_redirect_uri || this.settings.post_logout_redirect_uri;\r\n        args.post_logout_redirect_uri = url;\r\n        args.display = \"popup\";\r\n        if (args.post_logout_redirect_uri){\r\n            // we're putting a dummy entry in here because we\r\n            // need a unique id from the state for notification\r\n            // to the parent window, which is necessary if we\r\n            // plan to return back to the client after signout\r\n            // and so we can close the popup after signout\r\n            args.state = args.state || {};\r\n        }\r\n\r\n        return this._signout(args, this._popupNavigator, {\r\n            startUrl: url,\r\n            popupWindowFeatures: args.popupWindowFeatures || this.settings.popupWindowFeatures,\r\n            popupWindowTarget: args.popupWindowTarget || this.settings.popupWindowTarget\r\n        }).then(() => {\r\n            Log.info(\"UserManager.signoutPopup: successful\");\r\n        });\r\n    }\r\n    signoutPopupCallback(url, keepOpen) {\r\n        if (typeof(keepOpen) === 'undefined' && typeof(url) === 'boolean') {\r\n            keepOpen = url;\r\n            url = null;\r\n        }\r\n\r\n        let delimiter = '?';\r\n        return this._popupNavigator.callback(url, keepOpen, delimiter).then(() => {\r\n            Log.info(\"UserManager.signoutPopupCallback: successful\");\r\n        });\r\n    }\r\n\r\n    _signout(args, navigator, navigatorParams = {}) {\r\n        return this._signoutStart(args, navigator, navigatorParams).then(navResponse => {\r\n            return this._signoutEnd(navResponse.url);\r\n        });\r\n    }\r\n    _signoutStart(args = {}, navigator, navigatorParams = {}) {\r\n        return navigator.prepare(navigatorParams).then(handle => {\r\n            Log.debug(\"UserManager._signoutStart: got navigator window handle\");\r\n\r\n            return this._loadUser().then(user => {\r\n                Log.debug(\"UserManager._signoutStart: loaded current user from storage\");\r\n\r\n                var revokePromise = this._settings.revokeAccessTokenOnSignout ? this._revokeInternal(user) : Promise.resolve();\r\n                return revokePromise.then(() => {\r\n\r\n                    var id_token = args.id_token_hint || user && user.id_token;\r\n                    if (id_token) {\r\n                        Log.debug(\"UserManager._signoutStart: Setting id_token into signout request\");\r\n                        args.id_token_hint = id_token;\r\n                    }\r\n\r\n                    return this.removeUser().then(() => {\r\n                        Log.debug(\"UserManager._signoutStart: user removed, creating signout request\");\r\n\r\n                        return this.createSignoutRequest(args).then(signoutRequest => {\r\n                            Log.debug(\"UserManager._signoutStart: got signout request\");\r\n\r\n                            navigatorParams.url = signoutRequest.url;\r\n                            if (signoutRequest.state) {\r\n                                navigatorParams.id = signoutRequest.state.id;\r\n                            }\r\n                            return handle.navigate(navigatorParams);\r\n                        });\r\n                    });\r\n                });\r\n            }).catch(err => {\r\n                if (handle.close) {\r\n                    Log.debug(\"UserManager._signoutStart: Error after preparing navigator, closing navigator window\");\r\n                    handle.close();\r\n                }\r\n                throw err;\r\n            });\r\n        });\r\n    }\r\n    _signoutEnd(url) {\r\n        return this.processSignoutResponse(url).then(signoutResponse => {\r\n            Log.debug(\"UserManager._signoutEnd: got signout response\");\r\n\r\n            return signoutResponse;\r\n        });\r\n    }\r\n\r\n    revokeAccessToken() {\r\n        return this._loadUser().then(user => {\r\n            return this._revokeInternal(user, true).then(success => {\r\n                if (success) {\r\n                    Log.debug(\"UserManager.revokeAccessToken: removing token properties from user and re-storing\");\r\n\r\n                    user.access_token = null;\r\n                    user.refresh_token = null;\r\n                    user.expires_at = null;\r\n                    user.token_type = null;\r\n\r\n                    return this.storeUser(user).then(() => {\r\n                        Log.debug(\"UserManager.revokeAccessToken: user stored\");\r\n                        this._events.load(user);\r\n                    });\r\n                }\r\n            });\r\n        }).then(()=>{\r\n            Log.info(\"UserManager.revokeAccessToken: access token revoked successfully\");\r\n        });\r\n    }\r\n\r\n    _revokeInternal(user, required) {\r\n        if (user) {\r\n            var access_token = user.access_token;\r\n            var refresh_token = user.refresh_token;\r\n\r\n            return this._revokeAccessTokenInternal(access_token, required)\r\n                .then(atSuccess => {\r\n                    return this._revokeRefreshTokenInternal(refresh_token, required)\r\n                        .then(rtSuccess => {\r\n                            if (!atSuccess && !rtSuccess) {\r\n                                Log.debug(\"UserManager.revokeAccessToken: no need to revoke due to no token(s), or JWT format\");\r\n                            }\r\n                            \r\n                            return atSuccess || rtSuccess;\r\n                        });\r\n                });\r\n        }\r\n\r\n        return Promise.resolve(false);\r\n    }\r\n\r\n    _revokeAccessTokenInternal(access_token, required) {\r\n        // check for JWT vs. reference token\r\n        if (!access_token || access_token.indexOf('.') >= 0) {\r\n            return Promise.resolve(false);\r\n        }\r\n\r\n        return this._tokenRevocationClient.revoke(access_token, required).then(() => true);\r\n    }\r\n\r\n    _revokeRefreshTokenInternal(refresh_token, required) {\r\n        if (!refresh_token) {\r\n            return Promise.resolve(false);\r\n        }\r\n\r\n        return this._tokenRevocationClient.revoke(refresh_token, required, \"refresh_token\").then(() => true);\r\n    }\r\n\r\n    startSilentRenew() {\r\n        this._silentRenewService.start();\r\n    }\r\n\r\n    stopSilentRenew() {\r\n        this._silentRenewService.stop();\r\n    }\r\n\r\n    get _userStoreKey() {\r\n        return `user:${this.settings.authority}:${this.settings.client_id}`;\r\n    }\r\n\r\n    _loadUser() {\r\n        return this._userStore.get(this._userStoreKey).then(storageString => {\r\n            if (storageString) {\r\n                Log.debug(\"UserManager._loadUser: user storageString loaded\");\r\n                return User.fromStorageString(storageString);\r\n            }\r\n\r\n            Log.debug(\"UserManager._loadUser: no user storageString\");\r\n            return null;\r\n        });\r\n    }\r\n\r\n    storeUser(user) {\r\n        if (user) {\r\n            Log.debug(\"UserManager.storeUser: storing user\");\r\n\r\n            var storageString = user.toStorageString();\r\n            return this._userStore.set(this._userStoreKey, storageString);\r\n        }\r\n        else {\r\n            Log.debug(\"storeUser.storeUser: removing user\");\r\n            return this._userStore.remove(this._userStoreKey);\r\n        }\r\n    }\r\n}\r\n","\r\nimport { WebStorageStateStore, Log } from \"oidc-client\";\r\nimport appsettings from '../../assets/appsettings.json';\r\nimport { UserManager } from \"../../../node_modules/oidc-client/src/UserManager.js\";\r\nexport default class AuthService {\r\n    UserManager;\r\n    constructor() {\r\n        const settings = {\r\n            authority: appsettings.OIDC.REACT_APP_OIDC_AUTHORITY,\r\n            metadataUrl: appsettings.OIDC.REACT_APP_OIDC_METADATA_URL,\r\n            client_id: appsettings.OIDC.REACT_APP_OIDC_CLIENT_ID,\r\n            redirect_uri: appsettings.OIDC.REACT_APP_OIDC_REDIRECT_URI,\r\n            silent_redirect_uri: appsettings.OIDC.REACT_APP_OIDC_SILENT_REDIRECT_URI,\r\n            post_logout_redirect_uri: appsettings.OIDC.REACT_APP_OIDC_REDIRECT_URI,\r\n            response_type: 'code',  \r\n            scope: \"openid profile offline_access\",\r\n            \r\n            filterProtocolClaims: true,  \r\n            loadUserInfo: false\r\n        };\r\n\r\n        this.UserManager = new UserManager({\r\n            ...settings,\r\n            userStore: new WebStorageStateStore({ store: window.sessionStorage }),\r\n\r\n        });\r\n        // Logger\r\n        Log.logger = console;\r\n        Log.level = Log.DEBUG;\r\n        this.UserManager.events.addUserLoaded((user) => {\r\n            if (window.location.href.indexOf(\"signin-oidc\") !== -1) {\r\n                this.navigateToScreen();\r\n            }\r\n        });\r\n        this.UserManager.events.addSilentRenewError((e) => {\r\n        });\r\n            //oidc-client js \r\n        this.UserManager.events.addAccessTokenExpired(() => {\r\n            this.UserManager.signinSilent()\r\n        });\r\n    }\r\n\r\n    signinRedirectCallback = () => {\r\n        this.UserManager.signinRedirectCallback().then(() => {\r\n        });\r\n    };\r\n\r\n\r\n    getUser = async () => {\r\n        const user = await this.UserManager.getUser();\r\n        if (!user) {\r\n            return await this.UserManager.signinRedirectCallback();\r\n        }\r\n        return user;\r\n    };\r\n\r\n    login() {\r\n        return this.userManager.signinRedirect().then(res => {\r\n           \r\n        });\r\n    }\r\n\r\n    parseJwt = (token) => {\r\n        const base64Url = token.split(\".\")[1];\r\n        const base64 = base64Url.replace(\"-\", \"+\").replace(\"_\", \"/\");\r\n        return JSON.parse(window.atob(base64));\r\n    };\r\n\r\n    signinRedirect = () => {\r\n        localStorage.setItem(\"redirectUri\", window.location.pathname);\r\n        this.UserManager.signinRedirect({});\r\n    };\r\n\r\n\r\n    navigateToScreen = () => {\r\n        window.location.replace(\"/Home\");\r\n    };\r\n\r\n\r\n    isAuthenticated = () => {\r\n        const oidcStorage = JSON.parse(sessionStorage.getItem(`oidc.user:${process.env.REACT_APP_AUTH_URL}:${process.env.REACT_APP_IDENTITY_CLIENT_ID}`))\r\n        return (!!oidcStorage && !!oidcStorage.access_token)\r\n    };\r\n\r\n    renewToken() {\r\n      return this.UserManager.signinSilent()\r\n    };\r\n    signinSilentCallback = () => {\r\n        this.UserManager.signinSilentCallback();\r\n    };\r\n\r\n    createSigninRequest = () => {\r\n        return this.UserManager.createSigninRequest();\r\n    };\r\n\r\n    logout = () => {\r\n        this.UserManager.signoutRedirect({\r\n            id_token_hint: localStorage.getItem(\"id_token\")\r\n        });\r\n        sessionStorage.clear()\r\n        localStorage.clear();\r\n        \r\n    };\r\n\r\n    signoutRedirectCallback = () => {\r\n        this.UserManager.signoutRedirectCallback().then(() => {\r\n            localStorage.clear();\r\n            sessionStorage.clear()\r\n            window.location.replace(process.env.REACT_APP_PUBLIC_URL);\r\n        });\r\n        this.UserManager.clearStaleState();\r\n    };\r\n}","import axios, { AxiosInstance, AxiosResponse, AxiosError, AxiosRequestConfig } from 'axios'\r\nimport React, { useRef } from 'react';\r\nimport appsettings from '../assets/appsettings.json'\r\nimport LocalStorageService from './LocalStorage';\r\nimport RbacService from '../services/RBACService'\r\nimport { IRBACUser } from '../model/IRBACUser';\r\nimport jwt_decode from \"jwt-decode\";\r\nimport { UserProfileType } from './AppContext';\r\nimport AuthService from './oidc/LMIAuthService';\r\nimport moment from 'moment';\r\n\r\nexport const AxiosInstances = axios.create({\r\n    baseURL: appsettings.REACT_APP_BASE_API_URL,\r\n    timeout: 50000,\r\n    headers: {\r\n        'X-LMI-ClientId': '837E5E65-6754-4B65-9160-113D72936875',\r\n        'Accept': 'application/json',\r\n        'Content-Type': 'application/json'\r\n    }\r\n});\r\nconst authService = new AuthService()\r\nlet refreshingToken = false\r\n\r\nconst onRequest = async (request: AxiosRequestConfig) => {\r\n\r\n    let userProfile = sessionStorage.getItem(`oidc.user:${appsettings.OIDC.REACT_APP_OIDC_AUTHORITY}:${appsettings.OIDC.REACT_APP_OIDC_CLIENT_ID}`) ?? ''\r\n    let claimToken = sessionStorage.getItem(`lmi.user:claim:${appsettings.OIDC.REACT_APP_OIDC_CLIENT_ID}`)\r\n    let claim = claimToken == null ? '' : JSON.parse(claimToken).rbac_token\r\n    let token = JSON.parse(userProfile)\r\n    request.headers = {\r\n        'Authorization': `Bearer ${token.id_token}`,\r\n        'Claim': `${claim}`,\r\n    }\r\n    return request;\r\n};\r\n\r\nconst onRequestError = (error: AxiosError) => {\r\n    return Promise.reject(error);\r\n};\r\n\r\nconst onResponse =  (response: AxiosResponse) => {\r\n    if (response.status === 401) {\r\n        window.location.pathname = '/';\r\n        localStorage.clear();\r\n        sessionStorage.clear();\r\n    }\r\n    return response;\r\n};\r\n\r\nconst onResponseError = (error: AxiosError) => {\r\n    if (error.response?.status === 401) {\r\n        console.error(`[response error] [${JSON.stringify(error)}]`);\r\n        axios.request(error.config)\r\n        window.location.pathname = '/';\r\n        localStorage.clear();\r\n        sessionStorage.clear()\r\n    }\r\n    return Promise.reject(error);\r\n}\r\n\r\nexport const refreshToken = async () => {\r\n    refreshingToken = true\r\n    await authService.renewToken()\r\n    await authService.getUser().then((user) => {\r\n        RbacService.getUserRole().then((claim) => {\r\n            sessionStorage.setItem(`lmi.user:claim:${appsettings.OIDC.REACT_APP_OIDC_CLIENT_ID}`, JSON.stringify(claim.data))\r\n            let rbacUser = jwt_decode<IRBACUser>(claim.data.rbac_token)\r\n            let userProfileFromClaim: UserProfileType = {\r\n                userName: user?.profile.name, role: rbacUser\r\n            }\r\n            LocalStorageService.setUserProfile(userProfileFromClaim)\r\n            LocalStorageService.setExpirationTime()\r\n            refreshingToken = false\r\n        })\r\n    })\r\n}\r\n\r\nexport const isTokenExpired = () => {\r\n\r\n    if (!LocalStorageService.getExpirationTime()) {\r\n        return false\r\n    }\r\n    let userLoggedIn = sessionStorage.getItem(`lmi.user:claim:${appsettings.OIDC.REACT_APP_OIDC_CLIENT_ID}`)\r\n    if (!userLoggedIn) {\r\n        return false\r\n    }\r\n    var now = moment();\r\n    var expirationDate = moment(LocalStorageService.getExpirationTime());\r\n    var isExpired = now.isSameOrAfter(expirationDate)\r\n    return (isExpired && !refreshingToken)\r\n}\r\n\r\nexport function setupInterceptorsTo(axiosInstance: AxiosInstance): AxiosInstance {\r\n\r\n    axiosInstance.interceptors.request.use(onRequest, onRequestError);\r\n    axiosInstance.interceptors.response.use(onResponse, onResponseError);\r\n\r\n    return axiosInstance;\r\n}","import { User } from 'oidc-client'\r\nimport { useContext } from 'react'\r\nimport IAnnouncement from '../model/IAnnouncement'\r\nimport { AxiosInstances as AxiosInstance} from './BaseService'\r\n\r\n\r\nexport default {\r\n    getData: () =>    \r\n      AxiosInstance({\r\n            'method': 'GET',\r\n            'url': '/announcement',\r\n        }),\r\n        getRecent: () =>\r\n        AxiosInstance({\r\n              'method': 'GET',\r\n              'url': '/announcement/getrecent',\r\n          }),\r\n    getById: (id: number) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': '/announcement/getbyid?id=' + id,\r\n        }),\r\n    post: (requestdata: IAnnouncement) =>\r\n        AxiosInstance({\r\n            'method': 'POST',\r\n            'url': '/announcement',\r\n            'data': requestdata\r\n        }),\r\n    edit: (requestdata: IAnnouncement) =>\r\n        AxiosInstance({\r\n            'method': 'PUT',\r\n            'url': '/announcement?id=' + requestdata.id,\r\n            'data': requestdata\r\n        }),\r\n    delete: (id: number) =>\r\n        AxiosInstance({\r\n            'method': 'DELETE',\r\n            'url': '/announcement?id=' + id,\r\n        })\r\n}","/**\n * @hidden\n */\nexport var isPresent = function (value) { return value !== null && value !== undefined; };\n/**\n * @hidden\n */\nexport var isBlank = function (value) { return value === null || value === undefined; };\n/**\n * @hidden\n */\nexport var isArray = function (value) { return Array.isArray(value); };\n/**\n * @hidden\n */\nexport var isFunction = function (value) { return typeof value === 'function'; };\n/**\n * @hidden\n */\nexport var isString = function (value) { return typeof value === 'string'; };\n/**\n * @hidden\n */\nexport var isTruthy = function (value) { return !!value; };\n/**\n * @hidden\n */\nexport var isNullOrEmptyString = function (value) { return isBlank(value) || value.trim().length === 0; };\n/**\n * @hidden\n */\nexport var isNotNullOrEmptyString = function (value) { return !isNullOrEmptyString(value); };\n/**\n * @hidden\n */\nexport var isNumeric = function (value) { return !isNaN(value - parseFloat(value)); };\n/**\n * @hidden\n */\nexport var isDate = function (value) { return value && value.getTime; };\n","/**\n * @hidden\n */\nexport var ifElse = function (predicate, right, left) { return function (value) { return predicate(value) ? right(value) : left(value); }; };\n/**\n * @hidden\n * Performs the right-to-left function composition. Functions should have a unary.\n */\nexport var compose = function () {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n    }\n    return function (data) { return args.reduceRight(function (acc, curr) { return curr(acc); }, data); };\n};\n/**\n * @hidden\n */\nexport var constant = function (x) { return function () { return x; }; };\n/**\n * @hidden\n */\nexport var identity = function (x) { return x; };\n","import { isPresent } from '../utils';\n// tslint:enable:max-line-length\n/**\n * @hidden\n * Type guard for `CompositeFilterDescriptor`.\n */\nexport var isCompositeFilterDescriptor = function (source) {\n    return isPresent(source.filters);\n};\n","import { isPresent } from './utils';\nvar getterCache = {};\nvar FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\n// tslint:disable-next-line:no-string-literal\ngetterCache['undefined'] = function (obj) { return obj; };\n/**\n * @hidden\n */\nexport var getter = function (field, safe) {\n    var key = field + safe;\n    if (getterCache[key]) {\n        return getterCache[key];\n    }\n    var fields = [];\n    field.replace(FIELD_REGEX, function (_, index, indexAccessor, field) {\n        fields.push(isPresent(index) ? index : (indexAccessor || field));\n        return undefined;\n    });\n    getterCache[key] = function (obj) {\n        var result = obj;\n        for (var idx = 0; idx < fields.length; idx++) {\n            result = result[fields[idx]];\n            if (!isPresent(result) && safe) {\n                return result;\n            }\n        }\n        return result;\n    };\n    return getterCache[key];\n};\n","import { __makeTemplateObject } from \"tslib\";\nimport { isPresent, isNotNullOrEmptyString } from './utils';\nimport { serializeFilter } from './odata-filtering.operators';\nimport { ifElse, constant } from './funcs';\nvar serializeSort = function (orderby) {\n    var str = orderby\n        .filter(function (sort) { return isPresent(sort.dir); })\n        .map(function (sort) {\n        var order = sort.field.replace(/\\./g, \"/\");\n        return sort.dir === \"desc\" ? order + \" desc\" : order;\n    }).join(\",\");\n    return str ? \"$orderby=\".concat(str) : str;\n};\nvar emptyString = constant('');\nvar concat = function (a) { return function (b) { return a + b; }; };\nvar serializeKey = function (strings, val) { return ifElse(isPresent, concat(strings[0]), emptyString)(val); };\nvar rules = function (settings, state) { return function (key) { return ({\n    \"filter\": serializeFilter(state.filter || {}, settings),\n    \"skip\": serializeKey(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"$skip=\", \"\"], [\"$skip=\", \"\"])), state.skip),\n    \"sort\": serializeSort(state.sort || []),\n    \"take\": serializeKey(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"$top=\", \"\"], [\"$top=\", \"\"])), state.take)\n}[key]); }; };\n// tslint:enable:max-line-length\n/**\n * Converts a [State]({% slug api_kendo-data-query_state %}) into an OData v4 compatible string.\n *\n * @param {State} state - The state that will be serialized.\n * @param {ODataSettings} settings - The settings that are used during the serialization.\n * @returns {string} - The serialized state.\n */\nexport var toODataString = function (state, settings) {\n    if (settings === void 0) { settings = {}; }\n    return (Object.keys(state)\n        .map(rules(settings, state))\n        .filter(isNotNullOrEmptyString)\n        .join('&'));\n};\nvar templateObject_1, templateObject_2;\n","import { __assign, __spreadArray } from \"tslib\";\nimport { isCompositeFilterDescriptor } from '../filtering/filter-descriptor.interface';\nimport { isPresent, isNotNullOrEmptyString, isArray } from '../utils';\nimport { getter } from '../accessor';\nimport { compose, ifElse, identity } from '../funcs';\nimport { isStringValue, isDateValue, quote, serializeFilters, toUTC, encodeValue } from '../filter-serialization.common';\nvar toQueryString = function (values) { return values.reduce(function (acc, _a) {\n    var key = _a[0], value = _a[1];\n    return __spreadArray(__spreadArray([], acc, true), [\"\".concat(key, \"=\").concat(value)], false);\n}, []); };\nvar toObject = function (values) { return values.reduce(function (acc, _a) {\n    var _b;\n    var key = _a[0], value = _a[1];\n    return (__assign(__assign({}, acc), (_b = {}, _b[key] = value, _b)));\n}, {}); };\nvar pairwise = function (key) { return function (value) { return [key, value]; }; };\nvar empty = function () { return null; };\nvar isNotEmptyArray = function (value) { return isPresent(value) && isArray(value) && value.length > 0; };\nvar has = function (accessor) { return function (value) { return isPresent(accessor(value)); }; };\nvar isNotEmpty = function (accessor) { return function (value) { return isNotEmptyArray(accessor(value)); }; };\nvar runOrEmpty = function (predicate, fn) { return ifElse(predicate, fn, empty); };\nvar calcPage = function (_a) {\n    var skip = _a.skip, take = _a.take;\n    return Math.floor((skip || 0) / take) + 1;\n};\nvar formatDescriptors = function (accessor, formatter) { return function (state) { return (accessor(state).map(formatter).join(\"~\")); }; };\nvar removeAfter = function (what) { return function (str) { return str.slice(0, str.indexOf(what)); }; };\nvar replace = function (patterns) {\n    return compose.apply(void 0, patterns.map(function (_a) {\n        var left = _a[0], right = _a[1];\n        return function (s) { return s.replace(new RegExp(left, \"g\"), right); };\n    }));\n};\nvar sanitizeDateLiterals = replace([[\"\\\"\", \"\"], [\":\", \"-\"]]);\nvar removeAfterDot = removeAfter(\".\");\nvar directionFormatter = function (_a) {\n    var field = _a.field, _b = _a.dir, dir = _b === void 0 ? \"asc\" : _b;\n    return \"\".concat(field, \"-\").concat(dir);\n};\nvar aggregateFormatter = function (_a) {\n    var field = _a.field, aggregate = _a.aggregate;\n    return \"\".concat(field, \"-\").concat(aggregate);\n};\nvar take = getter(\"take\");\nvar aggregates = getter(\"aggregates\");\nvar skip = getter(\"skip\");\nvar group = getter(\"group\");\nvar sort = getter(\"sort\", true);\nvar formatSort = formatDescriptors(sort, directionFormatter);\nvar formatGroup = formatDescriptors(group, directionFormatter);\nvar formatAggregates = formatDescriptors(aggregates, aggregateFormatter);\nvar prefixDateValue = function (value) { return \"datetime'\".concat(value, \"'\"); };\nvar formatDateValue = compose(prefixDateValue, removeAfterDot, sanitizeDateLiterals, JSON.stringify, toUTC);\nvar formatDate = function (_a) {\n    var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n    return ({\n        value: formatDateValue(value),\n        field: field,\n        ignoreCase: ignoreCase,\n        operator: operator\n    });\n};\nvar normalizeSort = function (state) { return Object.assign({}, state, {\n    sort: (sort(state) || []).filter(function (_a) {\n        var dir = _a.dir;\n        return isNotNullOrEmptyString(dir);\n    })\n}); };\nvar transformSkip = compose(pairwise('page'), calcPage);\nvar transformTake = compose(pairwise('pageSize'), take);\nvar transformGroup = compose(pairwise('group'), formatGroup);\nvar transformSort = compose(pairwise('sort'), formatSort);\nvar transformAggregates = compose(pairwise('aggregate'), formatAggregates);\nvar serializePage = runOrEmpty(has(skip), transformSkip);\nvar serializePageSize = runOrEmpty(has(take), transformTake);\nvar serializeGroup = runOrEmpty(isNotEmpty(group), transformGroup);\nvar serializeAggregates = runOrEmpty(has(aggregates), transformAggregates);\nvar serializeSort = compose(runOrEmpty(isNotEmpty(sort), transformSort), normalizeSort);\nvar hasField = function (_a) {\n    var field = _a.field;\n    return isNotNullOrEmptyString(field);\n};\nvar filterFormatter = function (_a) {\n    var field = _a.field, operator = _a.operator, value = _a.value;\n    return \"\".concat(field, \"~\").concat(operator, \"~\").concat(value);\n};\nvar dateFormatter = ifElse(isDateValue, compose(filterFormatter, formatDate), filterFormatter);\nvar typedFormatter = function (encode) { return runOrEmpty(hasField, ifElse(isStringValue, compose(filterFormatter, quote, encode ? encodeValue : identity), dateFormatter)); };\nvar join = function (_a) {\n    var logic = _a.logic;\n    return \"~\".concat(logic, \"~\");\n};\nvar serialize = function (encode) { return serializeFilters(function (filter) { return ifElse(isCompositeFilterDescriptor, serialize(encode), typedFormatter(encode))(filter); }, join); };\nvar serializeFilter = function (_a, encode) {\n    var filter = _a.filter;\n    if (filter && filter.filters) {\n        var filters = serialize(encode)(filter);\n        if (filters.length) {\n            return ['filter', filters];\n        }\n    }\n    return null;\n};\nvar rules = function (state, encode) {\n    if (encode === void 0) { encode = true; }\n    return function (key) { return ({\n        \"aggregates\": serializeAggregates(state),\n        \"filter\": serializeFilter(state, encode),\n        \"group\": serializeGroup(state),\n        \"skip\": serializePage(state),\n        \"sort\": serializeSort(state),\n        \"take\": serializePageSize(state)\n    }[key]); };\n};\n/**\n * Converts a [DataSourceRequestState]({% slug api_kendo-data-query_datasourcerequeststate %}) into a string\n * that is comparable with the `DataSourceRequest` format in UI for ASP.NET MVC.\n *\n * @param {DataSourceRequestState} state - The state that will be serialized.\n * @returns {string} - The serialized state.\n *\n * @example\n * {% platform_content angular %}\n * ```ts\n *  import {\n *      toDataSourceRequestString,\n *      translateDataSourceResultGroups,\n *      translateAggregateResults\n * } from '@progress/kendo-data-query';\n *\n * export class Service {\n *  private BASE_URL: string = '...';\n *\n *  constructor(private http: Http) { }\n *\n *  // Omitted for brevity...\n *\n *  private fetch(state: DataSourceRequestState): Observable<DataResult> {\n *   const queryStr = `${toDataSourceRequestString(state)}`; //serialize the state\n *   const hasGroups = state.group && state.group.length;\n *\n *   return this.http\n *       .get(`${this.BASE_URL}?${queryStr}`) //send the state to the server\n *       .map(response => response.json())\n *       .map(({Data, Total, AggregateResults}) => // process the response\n *           (<GridDataResult>{\n *               //if there are groups convert them to compatible format\n *               data: hasGroups ? translateDataSourceResultGroups(Data) : Data,\n *               total: Total,\n *               // convert the aggregates if such exists\n *               aggregateResult: translateAggregateResults(AggregateResults)\n *           })\n *       );\n *  }\n * }\n * ```\n * {% endplatform_content %}\n *\n * {% platform_content react %}\n * ```jsx\n * import React from 'react';\n * import { toDataSourceRequestString, translateDataSourceResultGroups } from '@progress/kendo-data-query';\n *\n * export function withState(WrappedGrid) {\n *     return class StatefullGrid extends React.Component {\n *         constructor(props) {\n *             super(props);\n *             this.state = { dataState: { skip: 0, take: 20 } };\n *         }\n *\n *         render() {\n *             return (\n *                 <WrappedGrid\n *                     filterable={true}\n *                     sortable={true}\n *                     pageable={{ pageSizes: true }}\n *                     {...this.props}\n *                     total={this.state.total}\n *                     data={this.state.data}\n *                     skip={this.state.dataState.skip}\n *                     pageSize={this.state.dataState.take}\n *                     filter={this.state.dataState.filter}\n *                     sort={this.state.dataState.sort}\n *                     dataStateChange={this.dataStateChange}\n *                 />\n *             );\n *         }\n *\n *         componentDidMount() {\n *             this.fetchData(this.state.dataState);\n *         }\n *\n *         dataStateChange = (changeEvent) => {\n *             this.setState({ dataState: changeEvent.data });\n *             this.fetchData(changeEvent.data);\n *         }\n *\n *         fetchData(dataState) {\n *             const queryStr = `${toDataSourceRequestString(dataState)}`; // Serialize the state\n *             const hasGroups = dataState.group && dataState.group.length;\n *\n *             const base_url = 'api/Products';\n *             const init = { method: 'GET', accept: 'application/json', headers: {} };\n *\n *             fetch(`${base_url}?${queryStr}`, init)\n *                 .then(response => response.json())\n *                 .then(({ data, total }) => {\n *                     this.setState({\n *                         data: hasGroups ? translateDataSourceResultGroups(data) : data,\n *                         total,\n *                         dataState\n *                     });\n *                 });\n *         }\n *     }\n * }\n * ```\n * {% endplatform_content %}\n */\nexport var toDataSourceRequestString = function (state) { return (toQueryString(Object.keys(state)\n    .map(rules(state))\n    .filter(isPresent)).join('&')); };\n/**\n * Converts a [DataSourceRequestState]({% slug api_kendo-data-query_datasourcerequeststate %}) into an object\n * that is compatible with the `DataSourceRequest` format in UI for ASP.NET MVC.\n *\n * @param {DataSourceRequestState} state - The state that will be serialized.\n * @returns {any} - The serialized state.\n */\nexport var toDataSourceRequest = function (state) { return (toObject(Object.keys(state)\n    .map(rules(state, false))\n    .filter(isPresent))); };\n","import { __makeTemplateObject } from \"tslib\";\nimport { isString, isDate } from './utils';\n/**\n * @hidden\n * Creates a single arity function which wraps the value based on the provided predicate.\n * @example\n * ```\n * wrapIf(() => ignoreCase) `tolower(${field})`\n * //ignoreCase=true -> tolower(${field})`\n * //ignoreCase=false -> ${field}`\n * ```\n */\nexport var wrapIf = function (predicate) { return function (str) {\n    var args = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        args[_i - 1] = arguments[_i];\n    }\n    return predicate() ? \"\".concat(str[0]).concat(args[0]).concat(str[1]) : args[0];\n}; };\n/**\n * @hidden\n */\nexport var toUTC = function (date) {\n    return new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n};\n/**\n * @hidden\n */\nexport var quote = function (_a) {\n    var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n    return ({\n        value: \"'\".concat(value.replace(/'/g, \"''\"), \"'\"),\n        field: field,\n        ignoreCase: ignoreCase,\n        operator: operator\n    });\n};\n/**\n * @hidden\n */\nexport var encodeValue = function (_a) {\n    var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n    return ({\n        value: \"\".concat(encodeURIComponent(value)),\n        field: field,\n        ignoreCase: ignoreCase,\n        operator: operator\n    });\n};\n/**\n * @hidden\n */\nexport var toLower = function (_a) {\n    var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n    return ({\n        field: wrapIf(function () { return ignoreCase; })(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"tolower(\", \")\"], [\"tolower(\", \")\"])), field),\n        value: value,\n        ignoreCase: ignoreCase,\n        operator: operator\n    });\n};\n/**\n * @hidden\n */\nexport var normalizeField = function (_a) {\n    var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n    return ({\n        value: value,\n        field: field.replace(/\\./g, \"/\"),\n        ignoreCase: ignoreCase,\n        operator: operator\n    });\n};\n/**\n * @hidden\n */\nexport var isStringValue = function (x) { return isString(x.value); };\n/**\n * @hidden\n */\nexport var isDateValue = function (x) { return isDate(x.value); };\n/**\n * @hidden\n */\nexport var serializeFilters = function (map, join) { return function (filter) {\n    var brackets = wrapIf(function () { return filter.filters.length > 1; });\n    return brackets(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"(\", \")\"], [\"(\", \")\"])), filter.filters\n        .map(map)\n        .join(join(filter)));\n}; };\nvar templateObject_1, templateObject_2;\n","import { isPresent } from '../utils';\nimport { compose } from '../funcs';\n// tslint:enable:max-line-length\nvar set = function (field, target, value) {\n    target[field] = value;\n    return target;\n};\nvar toCamelCase = function (str) { return str.replace(/(^[A-Z])/g, function (_, g1) { return g1.toLowerCase(); }); };\nvar prop = function (fieldName) { return function (obj) {\n    var value = obj[fieldName];\n    if (isPresent(value)) {\n        return value;\n    }\n    return obj[toCamelCase(fieldName)];\n}; };\nvar member = prop(\"Member\");\nvar aggregateMethodName = prop(\"AggregateMethodName\");\nvar value = prop(\"Value\");\nvar convert = function (mapper) { return function (values) { return Object.keys(values).reduce(mapper.bind(null, values), {}); }; };\nvar translateAggregate = convert(function (source, acc, field) { return set(field.toLowerCase(), acc, source[field]); });\nvar translateAggregates = convert(function (source, acc, field) { return set(field, acc, translateAggregate(source[field])); });\nvar valueOrDefault = function (value, defaultValue) { return isPresent(value) ? value : defaultValue; };\nvar normalizeGroup = function (group) { return ({\n    aggregates: group.Aggregates || group.aggregates,\n    field: group.Member || group.member || group.field,\n    hasSubgroups: group.HasSubgroups || group.hasSubgroups || false,\n    items: group.Items || group.items,\n    value: valueOrDefault(group.Key, valueOrDefault(group.key, group.value))\n}); };\nvar translateGroup = compose(function (_a) {\n    var field = _a.field, hasSubgroups = _a.hasSubgroups, value = _a.value, aggregates = _a.aggregates, items = _a.items;\n    return ({\n        aggregates: translateAggregates(aggregates),\n        field: field,\n        items: hasSubgroups ? items.map(translateGroup) : items,\n        value: value\n    });\n}, normalizeGroup);\n// tslint:disable:max-line-length\n/**\n * Converts the grouped result, which is returned into the `Data` field of the UI for ASP.NET MVC `ToDataSourceResult` method, to a comparable format.\n * @param data - The value of the `Data` field of the response.\n * @returns {GroupResult[]} - The converted result.\n */\nexport var translateDataSourceResultGroups = function (data) { return data.map(translateGroup); };\n/**\n * Converts the `AggregateResults` field content, which is returned by the UI for ASP.NET MVC `ToDataSourceResult` method, to a comparable format.\n * @param data - The value of the `AggregateResults` field of the response.\n * @returns {AggregateResult} - The converted result.\n */\n// tslint:enable:max-line-length\nexport var translateAggregateResults = function (data) { return ((data || []).reduce(function (acc, x) { return set(member(x), acc, set(aggregateMethodName(x).toLowerCase(), acc[member(x)] || {}, value(x))); }, {})); };\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar 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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n  return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n  if (typeof b !== \"function\" && b !== null)\n      throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n  extendStatics(d, b);\n  function __() { this.constructor = d; }\n  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n  __assign = Object.assign || function __assign(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)) t[p] = s[p];\n      }\n      return t;\n  }\n  return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n      for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n          if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n              t[p[i]] = s[p[i]];\n      }\n  return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n  return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n  return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n  function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n  var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n  var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n  var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n  var _, done = false;\n  for (var i = decorators.length - 1; i >= 0; i--) {\n      var context = {};\n      for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n      for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n      context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n      var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n      if (kind === \"accessor\") {\n          if (result === void 0) continue;\n          if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n          if (_ = accept(result.get)) descriptor.get = _;\n          if (_ = accept(result.set)) descriptor.set = _;\n          if (_ = accept(result.init)) initializers.unshift(_);\n      }\n      else if (_ = accept(result)) {\n          if (kind === \"field\") initializers.unshift(_);\n          else descriptor[key] = _;\n      }\n  }\n  if (target) Object.defineProperty(target, contextIn.name, descriptor);\n  done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n  var useValue = arguments.length > 2;\n  for (var i = 0; i < initializers.length; i++) {\n      value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n  }\n  return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n  return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n  if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n  return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n  if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(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}\n\nexport function __generator(thisArg, body) {\n  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n  return g.next = verb(0), g[\"throw\"] = verb(1), g[\"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 (g && (g = 0, op[0] && (_ = 0)), _) 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}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  var desc = Object.getOwnPropertyDescriptor(m, k);\n  if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n  }\n  Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n  for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n      next: function () {\n          if (o && i >= o.length) o = void 0;\n          return { value: o && o[i++], done: !o };\n      }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o), r, ar = [], e;\n  try {\n      while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n  }\n  catch (error) { e = { error: error }; }\n  finally {\n      try {\n          if (r && !r.done && (m = i[\"return\"])) m.call(i);\n      }\n      finally { if (e) throw e.error; }\n  }\n  return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n  for (var ar = [], i = 0; i < arguments.length; i++)\n      ar = ar.concat(__read(arguments[i]));\n  return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n  for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n  for (var r = Array(s), k = 0, i = 0; i < il; i++)\n      for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n          r[k] = a[j];\n  return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n      if (ar || !(i in from)) {\n          if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n          ar[i] = from[i];\n      }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n  return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var g = generator.apply(thisArg, _arguments || []), i, q = [];\n  return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n  function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n  function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n  function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n  function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n  function fulfill(value) { resume(\"next\", value); }\n  function reject(value) { resume(\"throw\", value); }\n  function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n  var i, p;\n  return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n  function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var m = o[Symbol.asyncIterator], i;\n  return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n  function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n  if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n  return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n  Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n  o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n  ownKeys = Object.getOwnPropertyNames || function (o) {\n    var ar = [];\n    for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n    return ar;\n  };\n  return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n  if (mod && mod.__esModule) return mod;\n  var result = {};\n  if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n  __setModuleDefault(result, mod);\n  return result;\n}\n\nexport function __importDefault(mod) {\n  return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n  return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n  if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n  return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n  if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n  return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n  if (value !== null && value !== void 0) {\n    if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n    var dispose, inner;\n    if (async) {\n      if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n      dispose = value[Symbol.asyncDispose];\n    }\n    if (dispose === void 0) {\n      if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n      dispose = value[Symbol.dispose];\n      if (async) inner = dispose;\n    }\n    if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n    if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n    env.stack.push({ value: value, dispose: dispose, async: async });\n  }\n  else if (async) {\n    env.stack.push({ async: true });\n  }\n  return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n  function fail(e) {\n    env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n    env.hasError = true;\n  }\n  var r, s = 0;\n  function next() {\n    while (r = env.stack.pop()) {\n      try {\n        if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n        if (r.dispose) {\n          var result = r.dispose.call(r.value);\n          if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n        }\n        else s |= 1;\n      }\n      catch (e) {\n        fail(e);\n      }\n    }\n    if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n    if (env.hasError) throw env.error;\n  }\n  return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n  if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n      return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n          return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n      });\n  }\n  return path;\n}\n\nexport default {\n  __extends,\n  __assign,\n  __rest,\n  __decorate,\n  __param,\n  __esDecorate,\n  __runInitializers,\n  __propKey,\n  __setFunctionName,\n  __metadata,\n  __awaiter,\n  __generator,\n  __createBinding,\n  __exportStar,\n  __values,\n  __read,\n  __spread,\n  __spreadArrays,\n  __spreadArray,\n  __await,\n  __asyncGenerator,\n  __asyncDelegator,\n  __asyncValues,\n  __makeTemplateObject,\n  __importStar,\n  __importDefault,\n  __classPrivateFieldGet,\n  __classPrivateFieldSet,\n  __classPrivateFieldIn,\n  __addDisposableResource,\n  __disposeResources,\n  __rewriteRelativeImportExtension,\n};\n","import { isPresent, isBlank } from '../utils';\nimport { getter } from '../accessor';\nvar compare = function (a, b) {\n    if (isBlank(a)) {\n        return a === b ? 0 : -1;\n    }\n    if (isBlank(b)) {\n        return 1;\n    }\n    if (a.localeCompare) {\n        return a.localeCompare(b);\n    }\n    return a > b ? 1 : (a < b ? -1 : 0);\n};\nvar compareDesc = function (a, b) { return compare(b, a); };\nvar descriptorAsFunc = function (descriptor) {\n    if (typeof descriptor.compare === 'function') {\n        return descriptor.compare;\n    }\n    var prop = getter(descriptor.field, true);\n    return function (a, b) { return (descriptor.dir === 'asc' ? compare : compareDesc)(prop(a), prop(b)); };\n};\nvar initial = function (_a, _b) { return 0; };\n// tslint:disable:max-line-length\n/**\n * Converts the `SortDescriptors` into a [Comparer]({% slug api_kendo-data-query_comparer %}) function that can be used through `Array.sort`. If multiple descriptors are provided, sorting is applied in a right-to-left order.\n * @param {SortDescriptor[]} descriptors - The descriptors which will be converted.\n * @returns {Comparer} - The produced function.\n *\n * @example\n * ```ts\n * import { composeSortDescriptors } from '@progress/kendo-data-query';\n *\n * const data = [{ name: \"Pork\" }, { name: \"Pepper\" }, { name: \"Beef\" } ];\n * const comparer = composeSortDescriptors([{ field: \"name\", dir: \"asc\" }]);\n * const result = data.sort(comparer);\n * // output: [{ name: \"Beef\" }, { name: \"Pepper\" }, { name: \"Pork\" }];\n * ```\n */\n// tslint:enable:max-line-length\nexport var composeSortDescriptors = function (descriptors) { return (descriptors\n    .filter(function (x) { return isPresent(x.dir) || isPresent(x.compare); })\n    .map(function (descriptor) { return descriptorAsFunc(descriptor); })\n    .reduce(function (acc, curr) { return function (a, b) { return acc(a, b) || curr(a, b); }; }, initial)); };\n","/**\n * Represents the list of supported [`FilterDescriptor`]({% slug api_kendo-data-query_filterdescriptor %}) operators.\n * Allows restricting `FilterDescriptor.operator` definition to available values only.\n */\nexport var FilterOperator;\n(function (FilterOperator) {\n    /**\n     * The `contains` operator.\n     */\n    FilterOperator[\"Contains\"] = \"contains\";\n    /**\n     * The `doesnotcontain` operator.\n     */\n    FilterOperator[\"DoesNotContain\"] = \"doesnotcontain\";\n    /**\n     * The `doesnotendwith` operator.\n     */\n    FilterOperator[\"DoesNotEndWith\"] = \"doesnotendwith\";\n    /**\n     * The `doesnotstartwith` operator.\n     */\n    FilterOperator[\"DoesNotStartWith\"] = \"doesnotstartwith\";\n    /**\n     * The `endswith` operator.\n     */\n    FilterOperator[\"EndsWith\"] = \"endswith\";\n    /**\n     * The `eq` operator.\n     */\n    FilterOperator[\"EqualTo\"] = \"eq\";\n    /**\n     * The `gt` operator.\n     */\n    FilterOperator[\"GreaterThan\"] = \"gt\";\n    /**\n     * The `gte` operator.\n     */\n    FilterOperator[\"GreaterThanOrEqual\"] = \"gte\";\n    /**\n     * The `isempty` operator.\n     */\n    FilterOperator[\"IsEmpty\"] = \"isempty\";\n    /**\n     * The `isnotempty` operator.\n     */\n    FilterOperator[\"IsNotEmpty\"] = \"isnotempty\";\n    /**\n     * The `isnotnull` operator.\n     */\n    FilterOperator[\"IsNotNull\"] = \"isnotnull\";\n    /**\n     * The `isnull` operator.\n     */\n    FilterOperator[\"IsNull\"] = \"isnull\";\n    /**\n     * The `lt` operator.\n     */\n    FilterOperator[\"LessThan\"] = \"lt\";\n    /**\n     * The `lte` operator.\n     */\n    FilterOperator[\"LessThanOrEqual\"] = \"lte\";\n    /**\n     * The `neq` operator.\n     */\n    FilterOperator[\"NotEqualTo\"] = \"neq\";\n    /**\n     * The `startswith` operator.\n     */\n    FilterOperator[\"StartsWith\"] = \"startswith\";\n})(FilterOperator || (FilterOperator = {}));\n","import { isPresent, isNumeric, isDate } from './utils';\nimport { getter } from './accessor';\nvar valueToString = function (value) {\n    value = isPresent(value) && value.getTime ? value.getTime() : value;\n    return value + \"\";\n};\n/**\n * @hidden\n */\nexport var groupCombinator = function (field) {\n    var prop = getter(field, true);\n    var position = 0;\n    return function (agg, value) {\n        agg[field] = agg[field] || {};\n        var groupValue = prop(value);\n        var key = valueToString(groupValue);\n        var values = agg[field][key] || { __position: position++, aggregates: {}, items: [], value: groupValue };\n        values.items.push(value);\n        agg[field][key] = values;\n        return agg;\n    };\n};\n/**\n * @hidden\n */\nexport var expandAggregates = function (result) {\n    if (result === void 0) { result = {}; }\n    Object.keys(result).forEach(function (field) {\n        var aggregates = result[field];\n        Object.keys(aggregates).forEach(function (aggregate) {\n            aggregates[aggregate] = aggregates[aggregate].result();\n        });\n    });\n    return result;\n};\nvar aggregatesFuncs = function (name) { return ({\n    average: function () {\n        var value = 0;\n        var count = 0;\n        return {\n            calc: function (curr) {\n                if (isNumeric(curr)) {\n                    value += curr;\n                    count++;\n                }\n                else {\n                    value = curr;\n                }\n            },\n            result: function () { return isNumeric(value) ? value / count : value; }\n        };\n    },\n    count: function () {\n        var state = 0;\n        return {\n            calc: function () { return state++; },\n            result: function () { return state; }\n        };\n    },\n    max: function () {\n        var state = Number.NEGATIVE_INFINITY;\n        return {\n            calc: function (value) {\n                state = isNumeric(state) || isDate(state) ? state : value;\n                if (state < value && (isNumeric(value) || isDate(value))) {\n                    state = value;\n                }\n            },\n            result: function () { return state; }\n        };\n    },\n    min: function () {\n        var state = Number.POSITIVE_INFINITY;\n        return {\n            calc: function (value) {\n                state = isNumeric(state) || isDate(state) ? state : value;\n                if (state > value && (isNumeric(value) || isDate(value))) {\n                    state = value;\n                }\n            },\n            result: function () { return state; }\n        };\n    },\n    sum: function () {\n        var state = 0;\n        return {\n            calc: function (value) {\n                value = isPresent(value) ? value : 0;\n                state += value;\n            },\n            result: function () { return state; }\n        };\n    }\n}[name]()); };\n/**\n * @hidden\n */\nexport var aggregatesCombinator = function (descriptors) {\n    var functions = descriptors.map(function (descriptor) {\n        var fieldAccessor = getter(descriptor.field, true);\n        var aggregateName = (descriptor.aggregate || \"\").toLowerCase();\n        var aggregateAccessor = getter(aggregateName, true);\n        return function (state, value) {\n            var fieldAggregates = state[descriptor.field] || {};\n            var aggregateFunction = aggregateAccessor(fieldAggregates)\n                || aggregatesFuncs(aggregateName);\n            aggregateFunction.calc(fieldAccessor(value));\n            fieldAggregates[descriptor.aggregate] = aggregateFunction;\n            state[descriptor.field] = fieldAggregates;\n            return state;\n        };\n    });\n    return function (state, value) { return functions.reduce(function (agg, calc) { return calc(agg, value); }, state); };\n};\n/**\n * @hidden\n * Adds the value to the `arr` and produces a new array.\n *\n * > The original array will be modified.\n */\nexport var concat = function (arr, value) {\n    arr.push(value);\n    return arr;\n};\n/**\n * @hidden\n * Returns a reducer that will apply the specified transformation to the value.\n */\nexport var map = function (transform) { return (function (reduce) { return (function (acc, curr, index) { return reduce(acc, transform(curr, index)); }); }); };\n/**\n * @hidden\n * Returns a reducer that will filter out items which do not match the `Predicate`.\n */\nexport var filter = function (predicate) { return (function (reduce) { return (function (acc, curr) { return predicate(curr) ? reduce(acc, curr) : acc; }); }); };\n/**\n * @hidden\n */\nexport var isTransformerResult = function (source) {\n    return isPresent(source.__value);\n};\nvar reduced = function (x) {\n    if (isTransformerResult(x)) {\n        return x;\n    }\n    return {\n        __value: x,\n        reduced: true\n    };\n};\n/**\n * @hidden\n * Returns a reducer that will take the specified number of items.\n */\nexport var take = function (count) { return (function (reduce) { return (function (acc, curr) { return count-- > 0 ? reduce(acc, curr) : reduced(acc); }); }); };\n/**\n * @hidden\n * Returns a reducer that will take the specified number of items.\n */\nexport var takeWhile = function (predicate) { return (function (reduce) { return (function (acc, curr) { return predicate(curr) ? reduce(acc, curr) : reduced(acc); }); }); };\n/**\n * @hidden\n * Returns a reducer that will skip the specified number of items.\n */\nexport var skip = function (count) { return (function (reduce) { return (function (acc, curr) { return count-- <= 0 ? reduce(acc, curr) : acc; }); }); };\n/**\n * @hidden\n * Transforms the data by applying the supplied transformer.\n */\nexport var exec = function (transform, initialValue, data) {\n    var result = initialValue;\n    for (var idx = 0, length_1 = data.length; idx < length_1; idx++) {\n        result = transform(result, data[idx], idx);\n        if (isTransformerResult(result)) {\n            result = result.__value;\n            break;\n        }\n    }\n    return result;\n};\n","import { exec, map, aggregatesCombinator, expandAggregates } from '../transducers';\nvar identity = map(function (x) { return x; });\n// tslint:disable:max-line-length\n/**\n * Applies the specified [`AggregateDescriptors`]({% slug api_kendo-data-query_aggregatedescriptor %}) to the data. Returns an [`AggregateResult`]({% slug api_kendo-data-query_aggregateresult %}) instance.\n *\n * @example\n * ```ts\n * const data = [\n *    { unitPrice: 23, unitsInStock: 21 },\n *    { unitPrice: 10, unitsInStock: 12 },\n *    { unitPrice: 20, unitsInStock: 33 }\n * ];\n *\n * const result = aggregateBy(data, [\n *   { aggregate: \"sum\", field: \"unitPrice\" },\n *   { aggregate: \"sum\", field: \"unitsInStock\" }\n * ]);\n *\n * //output:\n * // {\n * //     \"unitPrice\": { \"sum\": 53 },\n * //     \"unitsInStock\": { \"sum\": 66 }\n * // }\n * ```\n * @param {T[]} data - The data on which the calculation will be executed.\n * @param {AggregateDescriptor[]} descriptors - The aggregate operations that will be executed.\n * @param {any} transformers - For internal use.\n * @returns {AggregateResult} - The aggregated result.\n * For more information, refer to the [aggregateresult](slug:api_kendo-data-query_aggregateresult) configuration.\n */\n// tslint:enable:max-line-length\nexport var aggregateBy = function (data, descriptors, transformers) {\n    if (descriptors === void 0) { descriptors = []; }\n    if (transformers === void 0) { transformers = identity; }\n    var initialValue = {};\n    if (!descriptors.length) {\n        return initialValue;\n    }\n    var result = exec(transformers(aggregatesCombinator(descriptors)), initialValue, data);\n    return expandAggregates(result);\n};\n","import { isPresent, isString, isArray } from '../utils';\nimport { isCompositeFilterDescriptor } from './filter-descriptor.interface';\nvar operatorMap = function (key) { return ({\n    \"!=\": \"neq\",\n    \"<\": \"lt\",\n    \"<=\": \"lte\",\n    \"==\": \"eq\",\n    \">\": \"gt\",\n    \">=\": \"gte\",\n    equal: \"eq\",\n    equals: \"eq\",\n    equalto: \"eq\",\n    ge: \"gte\",\n    greater: \"gt\",\n    greaterthan: \"gt\",\n    greaterthanequal: \"gte\",\n    isempty: \"isempty\",\n    isequalto: \"eq\",\n    isgreaterthan: \"gt\",\n    isgreaterthanorequalto: \"gte\",\n    islessthan: \"lt\",\n    islessthanorequalto: \"lte\",\n    isnotempty: \"isnotempty\",\n    isnotequalto: \"neq\",\n    isnull: \"isnull\",\n    le: \"lte\",\n    less: \"lt\",\n    lessthan: \"lt\",\n    lessthanequal: \"lte\",\n    ne: \"neq\",\n    notequal: \"neq\",\n    notequals: \"neq\",\n    notequalto: \"neq\",\n    notsubstringof: \"doesnotcontain\"\n}[key.toLowerCase()] || key); };\nvar normalizeOperator = function (descriptor) {\n    if (descriptor.filters) {\n        descriptor.filters = descriptor.filters.map(function (filter) {\n            var result = Object.assign({}, filter);\n            if (!isCompositeFilterDescriptor(filter) && isString(filter.operator)) {\n                result.operator = operatorMap(filter.operator);\n            }\n            if (isCompositeFilterDescriptor(filter)) {\n                normalizeOperator(result);\n            }\n            return result;\n        });\n    }\n};\nvar normalizeDescriptor = function (descriptor) {\n    if (!isCompositeFilterDescriptor(descriptor)) {\n        return {\n            filters: isArray(descriptor) ? descriptor : [descriptor],\n            logic: \"and\"\n        };\n    }\n    return Object.assign({}, descriptor);\n};\n// tslint:disable:max-line-length\n/**\n * Converts a [`FilterDescriptor`]({% slug api_kendo-data-query_filterdescriptor %}) into a [`CompositeFilterDescriptor`]({% slug api_kendo-data-query_compositefilterdescriptor %}). If a `CompositeFilterDescriptor` is passed, no modifications will be made.\n *\n * @param {CompositeFilterDescriptor | FilterDescriptor} descriptor - The descriptor that will be normalized.\n * @returns {CompositeFilterDescriptor} - The normalized descriptor.\n */\n// tslint:enable:max-line-length\nexport var normalizeFilters = function (descriptor) {\n    if (isPresent(descriptor)) {\n        descriptor = normalizeDescriptor(descriptor);\n        normalizeOperator(descriptor);\n    }\n    return descriptor;\n};\n","import { isCompositeFilterDescriptor } from \"./filter-descriptor.interface\";\nimport { getter } from \"../accessor\";\nimport { isFunction, isPresent, isDate, isString, isBlank } from \"../utils\";\nvar logic = {\n    \"or\": {\n        concat: function (acc, fn) { return function (a) { return acc(a) || fn(a); }; },\n        identity: function () { return false; }\n    },\n    \"and\": {\n        concat: function (acc, fn) { return function (a) { return acc(a) && fn(a); }; },\n        identity: function () { return true; }\n    }\n};\nvar operatorsMap = {\n    contains: function (a, b) { return (a || \"\").indexOf(b) >= 0; },\n    doesnotcontain: function (a, b) { return (a || \"\").indexOf(b) === -1; },\n    doesnotendwith: function (a, b) { return (a || \"\").indexOf(b, (a || \"\").length - (b || \"\").length) < 0; },\n    doesnotstartwith: function (a, b) { return (a || \"\").lastIndexOf(b, 0) === -1; },\n    endswith: function (a, b) { return (a || \"\").indexOf(b, (a || \"\").length - (b || \"\").length) >= 0; },\n    eq: function (a, b) { return a === b; },\n    gt: function (a, b) { return a > b; },\n    gte: function (a, b) { return a >= b; },\n    isempty: function (a) { return a === ''; },\n    isnotempty: function (a) { return a !== ''; },\n    isnotnull: function (a) { return isPresent(a); },\n    isnull: function (a) { return isBlank(a); },\n    lt: function (a, b) { return a < b; },\n    lte: function (a, b) { return a <= b; },\n    neq: function (a, b) { return a != b; },\n    startswith: function (a, b) { return (a || \"\").lastIndexOf(b, 0) === 0; }\n};\nvar dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\nvar convertValue = function (value, ignoreCase) {\n    if (value != null && isString(value)) {\n        var date = dateRegExp.exec(value);\n        if (date) {\n            return new Date(+date[1]).getTime();\n        }\n        else if (ignoreCase) {\n            return value.toLowerCase();\n        }\n    }\n    else if (value != null && isDate(value)) {\n        return value.getTime();\n    }\n    return value;\n};\nvar typedGetter = function (prop, value, ignoreCase) {\n    if (!isPresent(value)) {\n        return prop;\n    }\n    var acc = prop;\n    if (isString(value)) {\n        var date = dateRegExp.exec(value);\n        if (date) {\n            value = new Date(+date[1]);\n        }\n        else {\n            acc = function (a) {\n                var x = prop(a);\n                if (x === null) {\n                    return x;\n                }\n                var stringValue = typeof x === 'string' ? x : x + \"\";\n                return ignoreCase ? stringValue.toLowerCase() : stringValue;\n            };\n        }\n    }\n    if (isDate(value)) {\n        return function (a) {\n            var x = acc(a);\n            return isDate(x) ? x.getTime() : x;\n        };\n    }\n    return acc;\n};\nvar transformFilter = function (_a) {\n    var field = _a.field, ignoreCase = _a.ignoreCase, value = _a.value, operator = _a.operator;\n    field = !isPresent(field) ? function (a) { return a; } : field;\n    ignoreCase = isPresent(ignoreCase) ? ignoreCase : true;\n    var itemProp = typedGetter(isFunction(field) ? field : getter(field, true), value, ignoreCase);\n    value = convertValue(value, ignoreCase);\n    var op = isFunction(operator) ? operator : operatorsMap[operator];\n    return function (a) { return op(itemProp(a), value, ignoreCase); };\n};\n/**\n * @hidden\n */\nexport var transformCompositeFilter = function (filter) {\n    var combiner = logic[filter.logic];\n    return filter.filters\n        .filter(isPresent)\n        .map(function (x) { return isCompositeFilterDescriptor(x) ? transformCompositeFilter(x) : transformFilter(x); })\n        .reduce(combiner.concat, combiner.identity);\n};\n","import { isPresent } from '../utils';\nimport { isCompositeFilterDescriptor } from './filter-descriptor.interface';\nimport { normalizeFilters } from './filter.operators';\nimport { transformCompositeFilter } from \"./filter-no-eval\";\n// tslint:disable:max-line-length\n/**\n * Creates a [Predicate]({% slug api_kendo-data-query_predicate %}) function for the specified [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}).\n *\n * @param {CompositeFilterDescriptor} descriptor - The descriptor for which the predicate is created.\n * @returns {Predicate} - The created function instance.\n *\n * @example\n * ```ts\n * import { compileFilter } from '@progress/kendo-data-query';\n *\n * const data = [{ name: \"Pork\" }, { name: \"Pepper\" }, { name: \"Beef\" } ];\n * const predicate = compileFilter({ logic: \"and\", filters: [{ field: \"name\", operator: \"startswith\", value: \"P\" }] });\n * const result = data.filter(predicate);\n *\n * ```\n */\n// tslint:enable:max-line-length\nexport var compileFilter = function (descriptor) {\n    if (!descriptor || descriptor.filters.length === 0) {\n        return function () { return true; };\n    }\n    return transformCompositeFilter(descriptor);\n};\n// tslint:disable:max-line-length\n/**\n * Filters the provided array according to the specified [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}).\n *\n * @param {T[]} data - The data that will be filtered.\n * @param {(CompositeFilterDescriptor | FilterDescriptor)} descriptor - The filter criteria that will be applied.\n * @returns {T[]} - The filtered data.\n *\n * @example\n * ```ts\n * import { filterBy } from '@progress/kendo-data-query';\n *\n * const data = [\n *  { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n *  { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n *  { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = filterBy(data, {\n *     logic: 'and',\n *     filters: [\n *           { field: \"name\", operator: \"startswith\", value: \"p\", ignoreCase: true },\n *           { field: \"subcategory\", operator: \"eq\", value: \"Meat\" },\n *     ]\n * });\n *\n * // output:\n * // [{ \"name\": \"Pork\", \"category\": \"Food\", \"subcategory\": \"Meat\" }]\n * ```\n */\n// tslint:enable:max-line-length\nexport var filterBy = function (data, descriptor) {\n    if (!isPresent(descriptor) || (isCompositeFilterDescriptor(descriptor) && descriptor.filters.length === 0)) {\n        return data;\n    }\n    return data.filter(compileFilter(normalizeFilters(descriptor)));\n};\n","import { exec, map, groupCombinator } from '../transducers';\nimport { isArray, isPresent } from '../utils';\nimport { aggregateBy } from './aggregate.operators';\nimport { filterBy } from '../filtering/filter-expression.factory';\n/**\n * @hidden\n */\nexport var normalizeGroups = function (descriptors) {\n    descriptors = isArray(descriptors) ? descriptors : [descriptors];\n    return descriptors.map(function (x) { return Object.assign({ dir: \"asc\" }, x); });\n};\nvar identity = map(function (x) { return x; });\n/**\n * Groups the provided data according to the specified descriptors.\n *\n * @param {Array} data - The data that will be grouped.\n * @param {GroupDescriptor[]} descriptors - The descriptors.\n * @param {any} transformers - For internal use.\n * @param {Array} originalData - For internal use.\n * @returns {(Array<GroupResult<T>> | T[])} - The grouped data.\n *\n * @example\n * ```ts\n *\n * import { groupBy } from '@progress/kendo-data-query';\n *\n * const data = [\n *     { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n *     { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n *     { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = groupBy(data, [{ field: \"subcategory\" }]);\n * ```\n */\nexport var groupBy = function (data, descriptors, transformers, originalData) {\n    if (descriptors === void 0) { descriptors = []; }\n    if (transformers === void 0) { transformers = identity; }\n    if (originalData === void 0) { originalData = data; }\n    descriptors = normalizeGroups(descriptors);\n    if (!descriptors.length) {\n        return data;\n    }\n    var descriptor = descriptors[0];\n    var initialValue = {};\n    var view = exec(transformers(groupCombinator(descriptor.field)), initialValue, data);\n    var result = [];\n    Object.keys(view).forEach(function (field) {\n        Object.keys(view[field]).forEach(function (value) {\n            var group = view[field][value];\n            var aggregateResult = {};\n            var filteredData = originalData;\n            if (isPresent(descriptor.aggregates)) {\n                filteredData = filterBy(originalData, {\n                    field: descriptor.field,\n                    ignoreCase: false,\n                    operator: 'eq',\n                    value: group.value\n                });\n                aggregateResult = aggregateBy(filteredData, descriptor.aggregates);\n            }\n            result[group.__position] = {\n                aggregates: aggregateResult,\n                field: field,\n                items: descriptors.length > 1 ?\n                    groupBy(group.items, descriptors.slice(1), identity, filteredData)\n                    : group.items,\n                value: group.value\n            };\n        });\n    });\n    return result;\n};\n","import { __spreadArray } from \"tslib\";\nimport { isPresent, isString } from './utils';\nimport { composeSortDescriptors } from './sorting/sort-array.operator';\nimport { groupBy, normalizeGroups } from './grouping/group.operators';\nimport { normalizeFilters } from './filtering/filter.operators';\nimport { compileFilter } from './filtering/filter-expression.factory';\nimport { exec, skip, take, filter, concat } from './transducers';\nimport { getter } from './accessor';\nimport { compose } from './funcs';\n/**\n * Orders the specified array according to the provided sort descriptors.\n *\n * @param {T[]} data - The data to be sorted.\n * @param {SortDescriptor[]} descriptors - The descriptors by which the data will be sorted.\n * @returns {T[]} - The sorted data.\n *\n * @example\n * ```ts\n * import { orderBy } from '@progress/kendo-data-query';\n *\n * const data = [\n *     { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n *     { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n *     { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const sortDesc: SortDescriptor[] = [{ field: \"name\", dir: \"asc\" }];\n *\n * const result = orderBy(data, sortDesc);\n * ```\n */\nexport var orderBy = function (data, descriptors) {\n    if (descriptors.some(function (x) { return isPresent(x.dir) || isPresent(x.compare); })) {\n        data = data.slice(0);\n        var comparer = composeSortDescriptors(descriptors);\n        data.sort(comparer);\n    }\n    return data;\n};\nvar defaultComparer = function (a, b) { return a === b; };\nvar normalizeComparer = function (comparer) {\n    if (isString(comparer)) {\n        var accessor_1 = getter(comparer);\n        comparer = function (a, b) { return accessor_1(a) === accessor_1(b); };\n    }\n    return comparer;\n};\nvar _distinct = function (data, comparer) {\n    return data.filter(function (x, idx, xs) { return xs.findIndex(comparer.bind(null, x)) === idx; });\n};\n/**\n * Reduces the provided array so it contains only unique values.\n *\n * @param {T[]} data - The array that will be reduced.\n * @param {(Comparer | string)} comparer - An optional custom comparer function or the field name that will be used for comparison.\n * @returns {T[]} - The reduced data.\n *\n * @example\n * ```ts\n * import { distinct } from '@progress/kendo-data-query';\n *\n * const data = [\n *     { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n *     { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n *     { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = distinct(data, \"subcategory\");\n *\n * // output:\n * // result => [\n * //     { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * //     { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" }\n * // ];\n * ```\n */\nexport var distinct = function (data, comparer) {\n    if (comparer === void 0) { comparer = defaultComparer; }\n    return _distinct(data, normalizeComparer(comparer));\n};\n/**\n * @hidden\n */\nexport var count = function (data, predicate) {\n    var counter = 0;\n    for (var idx = 0, length_1 = data.length; idx < length_1; idx++) {\n        if (predicate(data[idx])) {\n            counter++;\n        }\n    }\n    return counter;\n};\n/**\n * @hidden\n */\nexport var limit = function (data, predicate) {\n    if (predicate) {\n        return data.filter(predicate);\n    }\n    return data;\n};\n/**\n * Applies the specified operation descriptors to the data.\n *\n * @param {T[]} data - The data to be processed.\n * @param {State} state - The operation descriptors that will be applied to the data.\n * @returns {DataResult} - The processed data.\n *\n * @example\n * ```ts\n *\n * const result = process(data, {\n *     skip: 10,\n *     take: 20,\n *     group: [{\n *       field: 'category.categoryName',\n *             aggregates: [\n *                   { aggregate: \"sum\", field: \"unitPrice\" },\n *                   { aggregate: \"sum\", field: \"unitsInStock\" }\n *             ]\n *       }],\n *     sort: [{ field: 'productName', dir: 'desc' }],\n *     filter: {\n *         logic: \"or\",\n *         filters: [\n *           { field: \"discontinued\", operator: \"eq\", value: true },\n *           { field: \"unitPrice\", operator: \"lt\", value: 22 }\n *         ]\n *     }\n * });\n *\n * ```\n */\nexport var process = function (data, state) {\n    var skipCount = state.skip, takeCount = state.take, filterDescriptor = state.filter, sort = state.sort, group = state.group;\n    var sortDescriptors = __spreadArray(__spreadArray([], normalizeGroups(group || []), true), sort || [], true);\n    if (sortDescriptors.length) {\n        data = orderBy(data, sortDescriptors);\n    }\n    var hasFilters = isPresent(filterDescriptor) && filter.length;\n    var hasGroups = isPresent(group) && group.length;\n    if (!hasFilters && !hasGroups) {\n        return {\n            data: takeCount ? data.slice(skipCount, skipCount + takeCount) : data,\n            total: data.length\n        };\n    }\n    var total;\n    var transformers = [];\n    var predicate;\n    if (hasFilters) {\n        predicate = compileFilter(normalizeFilters(filterDescriptor));\n        total = count(data, predicate);\n        transformers.push(filter(predicate));\n    }\n    else {\n        total = data.length;\n    }\n    if (isPresent(skipCount) && isPresent(takeCount)) {\n        transformers.push(skip(skipCount));\n        transformers.push(take(takeCount));\n    }\n    if (transformers.length) {\n        var transform = compose.apply(void 0, transformers);\n        var result = hasGroups ?\n            groupBy(data, group, transform, limit(data, predicate)) :\n            exec(transform(concat), [], data);\n        return { data: result, total: total };\n    }\n    return {\n        data: hasGroups ? groupBy(data, group) : data,\n        total: total\n    };\n};\n","var __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})();\nimport * as React from 'react';\n/**\n * The GridColumnMenuItem component that is used inside the Grid ColumnMenu.\n */\nvar GridColumnMenuItem = /** @class */ (function (_super) {\n    __extends(GridColumnMenuItem, _super);\n    function GridColumnMenuItem() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.onClick = function (e) {\n            if (_this.props.onClick) {\n                _this.props.onClick(e);\n            }\n        };\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    GridColumnMenuItem.prototype.render = function () {\n        var _a = this.props, title = _a.title, iconClass = _a.iconClass, selected = _a.selected;\n        return (React.createElement(\"div\", { onClick: this.onClick, className: \"k-columnmenu-item \" + (selected ? 'k-state-selected' : '') },\n            iconClass && React.createElement(\"span\", { className: \"k-icon \" + iconClass }),\n            title));\n    };\n    return GridColumnMenuItem;\n}(React.Component));\nexport { GridColumnMenuItem };\n","var __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})();\nimport * as React from 'react';\n/**\n * The GridColumnMenuItemGroup that will be used inside the Grid ColumnMenu.\n */\nvar GridColumnMenuItemGroup = /** @class */ (function (_super) {\n    __extends(GridColumnMenuItemGroup, _super);\n    function GridColumnMenuItemGroup() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @hidden\n     */\n    GridColumnMenuItemGroup.prototype.render = function () {\n        var children = this.props.children;\n        return (React.createElement(\"div\", { className: \"k-columnmenu-item-wrapper\" }, children));\n    };\n    return GridColumnMenuItemGroup;\n}(React.Component));\nexport { GridColumnMenuItemGroup };\n","/**\n * @hidden\n */\nexport var classNames = function () {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n    }\n    var result = {};\n    var addLeafKeys = function (arg) { return typeof arg === 'object' ? Object\n        .keys(arg)\n        .forEach(function (key) {\n        result[key] = arg[key];\n    }) : result[arg] = true; };\n    ;\n    var addKeys = function (list) { return list\n        .filter(function (arg) { return arg !== true && !!arg; })\n        .map(function (arg) {\n        return Array.isArray(arg) ?\n            addKeys(arg) :\n            addLeafKeys(arg);\n    }); };\n    ;\n    addKeys(args);\n    return Object\n        .keys(result)\n        .map(function (key) { return (result[key] && key) || null; })\n        .filter(function (el) { return el !== null; })\n        .join(' ');\n};\n","/**\n * @hidden\n */\nexport var noop = function () { };\n","import hasClass from './hasClass';\n/**\n * Adds a CSS class to a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\nexport default function addClass(element, className) {\n  if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}","function replaceClassName(origClass, classToRemove) {\n  return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n/**\n * Removes a CSS class from a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\n\nexport default function removeClass(element, className) {\n  if (element.classList) {\n    element.classList.remove(className);\n  } else if (typeof element.className === 'string') {\n    element.className = replaceClassName(element.className, className);\n  } else {\n    element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n  }\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport addOneClass from 'dom-helpers/addClass';\nimport removeOneClass from 'dom-helpers/removeClass';\nimport React from 'react';\nimport Transition from './Transition';\nimport { classNamesShape } from './utils/PropTypes';\nimport { forceReflow } from './utils/reflow';\n\nvar _addClass = function addClass(node, classes) {\n  return node && classes && classes.split(' ').forEach(function (c) {\n    return addOneClass(node, c);\n  });\n};\n\nvar removeClass = function removeClass(node, classes) {\n  return node && classes && classes.split(' ').forEach(function (c) {\n    return removeOneClass(node, c);\n  });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](https://docs.angularjs.org/api/ngAnimate) library, you should\n * use it if you're using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n *   const [inProp, setInProp] = useState(false);\n *   return (\n *     <div>\n *       <CSSTransition in={inProp} timeout={200} classNames=\"my-node\">\n *         <div>\n *           {\"I'll receive my-node-* classes\"}\n *         </div>\n *       </CSSTransition>\n *       <button type=\"button\" onClick={() => setInProp(true)}>\n *         Click to Enter\n *       </button>\n *     </div>\n *   );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n *   opacity: 0;\n * }\n * .my-node-enter-active {\n *   opacity: 1;\n *   transition: opacity 200ms;\n * }\n * .my-node-exit {\n *   opacity: 1;\n * }\n * .my-node-exit-active {\n *   opacity: 0;\n *   transition: opacity 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**, so it's\n * important to add `transition` declaration only to them, otherwise transitions\n * might not behave as intended! This might not be obvious when the transitions\n * are symmetrical, i.e. when `*-enter-active` is the same as `*-exit`, like in\n * the example above (minus `transition`), but it becomes apparent in more\n * complex transitions.\n *\n * **Note**: If you're using the\n * [`appear`](http://reactcommunity.org/react-transition-group/transition#Transition-prop-appear)\n * prop, make sure to define styles for `.appear-*` classes as well.\n */\n\n\nvar CSSTransition = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(CSSTransition, _React$Component);\n\n  function CSSTransition() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n    _this.appliedClasses = {\n      appear: {},\n      enter: {},\n      exit: {}\n    };\n\n    _this.onEnter = function (maybeNode, maybeAppearing) {\n      var _this$resolveArgument = _this.resolveArguments(maybeNode, maybeAppearing),\n          node = _this$resolveArgument[0],\n          appearing = _this$resolveArgument[1];\n\n      _this.removeClasses(node, 'exit');\n\n      _this.addClass(node, appearing ? 'appear' : 'enter', 'base');\n\n      if (_this.props.onEnter) {\n        _this.props.onEnter(maybeNode, maybeAppearing);\n      }\n    };\n\n    _this.onEntering = function (maybeNode, maybeAppearing) {\n      var _this$resolveArgument2 = _this.resolveArguments(maybeNode, maybeAppearing),\n          node = _this$resolveArgument2[0],\n          appearing = _this$resolveArgument2[1];\n\n      var type = appearing ? 'appear' : 'enter';\n\n      _this.addClass(node, type, 'active');\n\n      if (_this.props.onEntering) {\n        _this.props.onEntering(maybeNode, maybeAppearing);\n      }\n    };\n\n    _this.onEntered = function (maybeNode, maybeAppearing) {\n      var _this$resolveArgument3 = _this.resolveArguments(maybeNode, maybeAppearing),\n          node = _this$resolveArgument3[0],\n          appearing = _this$resolveArgument3[1];\n\n      var type = appearing ? 'appear' : 'enter';\n\n      _this.removeClasses(node, type);\n\n      _this.addClass(node, type, 'done');\n\n      if (_this.props.onEntered) {\n        _this.props.onEntered(maybeNode, maybeAppearing);\n      }\n    };\n\n    _this.onExit = function (maybeNode) {\n      var _this$resolveArgument4 = _this.resolveArguments(maybeNode),\n          node = _this$resolveArgument4[0];\n\n      _this.removeClasses(node, 'appear');\n\n      _this.removeClasses(node, 'enter');\n\n      _this.addClass(node, 'exit', 'base');\n\n      if (_this.props.onExit) {\n        _this.props.onExit(maybeNode);\n      }\n    };\n\n    _this.onExiting = function (maybeNode) {\n      var _this$resolveArgument5 = _this.resolveArguments(maybeNode),\n          node = _this$resolveArgument5[0];\n\n      _this.addClass(node, 'exit', 'active');\n\n      if (_this.props.onExiting) {\n        _this.props.onExiting(maybeNode);\n      }\n    };\n\n    _this.onExited = function (maybeNode) {\n      var _this$resolveArgument6 = _this.resolveArguments(maybeNode),\n          node = _this$resolveArgument6[0];\n\n      _this.removeClasses(node, 'exit');\n\n      _this.addClass(node, 'exit', 'done');\n\n      if (_this.props.onExited) {\n        _this.props.onExited(maybeNode);\n      }\n    };\n\n    _this.resolveArguments = function (maybeNode, maybeAppearing) {\n      return _this.props.nodeRef ? [_this.props.nodeRef.current, maybeNode] // here `maybeNode` is actually `appearing`\n      : [maybeNode, maybeAppearing];\n    };\n\n    _this.getClassNames = function (type) {\n      var classNames = _this.props.classNames;\n      var isStringClassNames = typeof classNames === 'string';\n      var prefix = isStringClassNames && classNames ? classNames + \"-\" : '';\n      var baseClassName = isStringClassNames ? \"\" + prefix + type : classNames[type];\n      var activeClassName = isStringClassNames ? baseClassName + \"-active\" : classNames[type + \"Active\"];\n      var doneClassName = isStringClassNames ? baseClassName + \"-done\" : classNames[type + \"Done\"];\n      return {\n        baseClassName: baseClassName,\n        activeClassName: activeClassName,\n        doneClassName: doneClassName\n      };\n    };\n\n    return _this;\n  }\n\n  var _proto = CSSTransition.prototype;\n\n  _proto.addClass = function addClass(node, type, phase) {\n    var className = this.getClassNames(type)[phase + \"ClassName\"];\n\n    var _this$getClassNames = this.getClassNames('enter'),\n        doneClassName = _this$getClassNames.doneClassName;\n\n    if (type === 'appear' && phase === 'done' && doneClassName) {\n      className += \" \" + doneClassName;\n    } // This is to force a repaint,\n    // which is necessary in order to transition styles when adding a class name.\n\n\n    if (phase === 'active') {\n      if (node) forceReflow(node);\n    }\n\n    if (className) {\n      this.appliedClasses[type][phase] = className;\n\n      _addClass(node, className);\n    }\n  };\n\n  _proto.removeClasses = function removeClasses(node, type) {\n    var _this$appliedClasses$ = this.appliedClasses[type],\n        baseClassName = _this$appliedClasses$.base,\n        activeClassName = _this$appliedClasses$.active,\n        doneClassName = _this$appliedClasses$.done;\n    this.appliedClasses[type] = {};\n\n    if (baseClassName) {\n      removeClass(node, baseClassName);\n    }\n\n    if (activeClassName) {\n      removeClass(node, activeClassName);\n    }\n\n    if (doneClassName) {\n      removeClass(node, doneClassName);\n    }\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        _ = _this$props.classNames,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"classNames\"]);\n\n    return /*#__PURE__*/React.createElement(Transition, _extends({}, props, {\n      onEnter: this.onEnter,\n      onEntered: this.onEntered,\n      onEntering: this.onEntering,\n      onExit: this.onExit,\n      onExiting: this.onExiting,\n      onExited: this.onExited\n    }));\n  };\n\n  return CSSTransition;\n}(React.Component);\n\nCSSTransition.defaultProps = {\n  classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, Transition.propTypes, {\n  /**\n   * The animation classNames applied to the component as it appears, enters,\n   * exits or has finished the transition. A single name can be provided, which\n   * will be suffixed for each stage, e.g. `classNames=\"fade\"` applies:\n   *\n   * - `fade-appear`, `fade-appear-active`, `fade-appear-done`\n   * - `fade-enter`, `fade-enter-active`, `fade-enter-done`\n   * - `fade-exit`, `fade-exit-active`, `fade-exit-done`\n   *\n   * A few details to note about how these classes are applied:\n   *\n   * 1. They are _joined_ with the ones that are already defined on the child\n   *    component, so if you want to add some base styles, you can use\n   *    `className` without worrying that it will be overridden.\n   *\n   * 2. If the transition component mounts with `in={false}`, no classes are\n   *    applied yet. You might be expecting `*-exit-done`, but if you think\n   *    about it, a component cannot finish exiting if it hasn't entered yet.\n   *\n   * 2. `fade-appear-done` and `fade-enter-done` will _both_ be applied. This\n   *    allows you to define different behavior for when appearing is done and\n   *    when regular entering is done, using selectors like\n   *    `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply\n   *    an epic entrance animation when element first appears in the DOM using\n   *    [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n   *    simply use `fade-enter-done` for defining both cases.\n   *\n   * Each individual classNames can also be specified independently like:\n   *\n   * ```js\n   * classNames={{\n   *  appear: 'my-appear',\n   *  appearActive: 'my-active-appear',\n   *  appearDone: 'my-done-appear',\n   *  enter: 'my-enter',\n   *  enterActive: 'my-active-enter',\n   *  enterDone: 'my-done-enter',\n   *  exit: 'my-exit',\n   *  exitActive: 'my-active-exit',\n   *  exitDone: 'my-done-exit',\n   * }}\n   * ```\n   *\n   * If you want to set these classes using CSS Modules:\n   *\n   * ```js\n   * import styles from './styles.css';\n   * ```\n   *\n   * you might want to use camelCase in your CSS file, that way could simply\n   * spread them instead of listing them one by one:\n   *\n   * ```js\n   * classNames={{ ...styles }}\n   * ```\n   *\n   * @type {string | {\n   *  appear?: string,\n   *  appearActive?: string,\n   *  appearDone?: string,\n   *  enter?: string,\n   *  enterActive?: string,\n   *  enterDone?: string,\n   *  exit?: string,\n   *  exitActive?: string,\n   *  exitDone?: string,\n   * }}\n   */\n  classNames: classNamesShape,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'enter' or 'appear' class is\n   * applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'enter-active' or\n   * 'appear-active' class is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'enter' or\n   * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'exit' class is\n   * applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed\n   *\n   * @type Function(node: HtmlElement)\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'exit-active' is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed\n   *\n   * @type Function(node: HtmlElement)\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'exit' classes\n   * are **removed** and the `exit-done` class is added to the DOM node.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed\n   *\n   * @type Function(node: HtmlElement)\n   */\n  onExited: PropTypes.func\n}) : {};\nexport default CSSTransition;","/**\n * @hidden\n */\nvar outerHeight = function (element) {\n    if (!element) {\n        return 0;\n    }\n    var wnd = element.ownerDocument.defaultView;\n    var computedStyles = wnd.getComputedStyle(element);\n    var marginTop = parseFloat(computedStyles.marginTop);\n    var marginBottom = parseFloat(computedStyles.marginBottom);\n    return element.offsetHeight + marginTop + marginBottom;\n};\n/**\n * @hidden\n */\nvar outerWidth = function (element) {\n    if (!element) {\n        return 0;\n    }\n    var wnd = element.ownerDocument.defaultView;\n    var computedStyles = wnd.getComputedStyle(element);\n    var marginLeft = parseFloat(computedStyles.marginLeft);\n    var marginRight = parseFloat(computedStyles.marginRight);\n    return element.offsetWidth + marginLeft + marginRight;\n};\n/**\n * @hidden\n */\nvar styles = {\n    'animation-container': 'k-animation-container',\n    'animation-container-relative': 'k-animation-container-relative',\n    'animation-container-fixed': 'k-animation-container-fixed',\n    'push-right-enter': 'k-push-right-enter',\n    'push-right-appear': 'k-push-right-appear',\n    'push-right-enter-active': 'k-push-right-enter-active',\n    'push-right-appear-active': 'k-push-right-appear-active',\n    'push-right-exit': 'k-push-right-exit',\n    'push-right-exit-active': 'k-push-right-exit-active',\n    'push-left-enter': 'k-push-left-enter',\n    'push-left-appear': 'k-push-left-appear',\n    'push-left-enter-active': 'k-push-left-enter-active',\n    'push-left-appear-active': 'k-push-left-appear-active',\n    'push-left-exit': 'k-push-left-exit',\n    'push-left-exit-active': 'k-push-left-exit-active',\n    'push-down-enter': 'k-push-down-enter',\n    'push-down-appear': 'k-push-down-appear',\n    'push-down-enter-active': 'k-push-down-enter-active',\n    'push-down-appear-active': 'k-push-down-appear-active',\n    'push-down-exit': 'k-push-down-exit',\n    'push-down-exit-active': 'k-push-down-exit-active',\n    'push-up-enter': 'k-push-up-enter',\n    'push-up-appear': 'k-push-up-appear',\n    'push-up-enter-active': 'k-push-up-enter-active',\n    'push-up-appear-active': 'k-push-up-appear-active',\n    'push-up-exit': 'k-push-up-exit',\n    'push-up-exit-active': 'k-push-up-exit-active',\n    'expand': 'k-expand',\n    'expand-vertical-enter': 'k-expand-vertical-enter',\n    'expand-vertical-appear': 'k-expand-vertical-appear',\n    'expand-vertical-enter-active': 'k-expand-vertical-enter-active',\n    'expand-vertical-appear-active': 'k-expand-vertical-appear-active',\n    'expand-vertical-exit': 'k-expand-vertical-exit',\n    'expand-vertical-exit-active': 'k-expand-vertical-exit-active',\n    'expand-horizontal-enter': 'k-expand-horizontal-enter',\n    'expand-horizontal-appear': 'k-expand-horizontal-appear',\n    'expand-horizontal-enter-active': 'k-expand-horizontal-enter-active',\n    'expand-horizontal-appear-active': 'k-expand-horizontal-appear-active',\n    'expand-horizontal-exit': 'k-expand-horizontal-exit',\n    'expand-horizontal-exit-active': 'k-expand-horizontal-exit-active',\n    'child-animation-container': 'k-child-animation-container',\n    'fade-enter': 'k-fade-enter',\n    'fade-appear': 'k-fade-appear',\n    'fade-enter-active': 'k-fade-enter-active',\n    'fade-appear-active': 'k-fade-appear-active',\n    'fade-exit': 'k-fade-exit',\n    'fade-exit-active': 'k-fade-exit-active',\n    'zoom-in-enter': 'k-zoom-in-enter',\n    'zoom-in-appear': 'k-zoom-in-appear',\n    'zoom-in-enter-active': 'k-zoom-in-enter-active',\n    'zoom-in-appear-active': 'k-zoom-in-appear-active',\n    'zoom-in-exit': 'k-zoom-in-exit',\n    'zoom-in-exit-active': 'k-zoom-in-exit-active',\n    'zoom-out-enter': 'k-zoom-out-enter',\n    'zoom-out-appear': 'k-zoom-out-appear',\n    'zoom-out-enter-active': 'k-zoom-out-enter-active',\n    'zoom-out-appear-active': 'k-zoom-out-appear-active',\n    'zoom-out-exit': 'k-zoom-out-exit',\n    'zoom-out-exit-active': 'k-zoom-out-exit-active',\n    'slide-in-appear': 'k-slide-in-appear',\n    'centered': 'k-centered',\n    'slide-in-appear-active': 'k-slide-in-appear-active',\n    'slide-down-enter': 'k-slide-down-enter',\n    'slide-down-appear': 'k-slide-down-appear',\n    'slide-down-enter-active': 'k-slide-down-enter-active',\n    'slide-down-appear-active': 'k-slide-down-appear-active',\n    'slide-down-exit': 'k-slide-down-exit',\n    'slide-down-exit-active': 'k-slide-down-exit-active',\n    'slide-up-enter': 'k-slide-up-enter',\n    'slide-up-appear': 'k-slide-up-appear',\n    'slide-up-enter-active': 'k-slide-up-enter-active',\n    'slide-up-appear-active': 'k-slide-up-appear-active',\n    'slide-up-exit': 'k-slide-up-exit',\n    'slide-up-exit-active': 'k-slide-up-exit-active',\n    'slide-right-enter': 'k-slide-right-enter',\n    'slide-right-appear': 'k-slide-right-appear',\n    'slide-right-enter-active': 'k-slide-right-enter-active',\n    'slide-right-appear-active': 'k-slide-right-appear-active',\n    'slide-right-exit': 'k-slide-right-exit',\n    'slide-right-exit-active': 'k-slide-right-exit-active',\n    'slide-left-enter': 'k-slide-left-enter',\n    'slide-left-appear': 'k-slide-left-appear',\n    'slide-left-enter-active': 'k-slide-left-enter-active',\n    'slide-left-appear-active': 'k-slide-left-appear-active',\n    'slide-left-exit': 'k-slide-left-exit',\n    'slide-left-exit-active': 'k-slide-left-exit-active',\n    'reveal-vertical-enter': 'k-reveal-vertical-enter',\n    'reveal-vertical-appear': 'k-reveal-vertical-appear',\n    'reveal-vertical-enter-active': 'k-reveal-vertical-enter-active',\n    'reveal-vertical-appear-active': 'k-reveal-vertical-appear-active',\n    'reveal-vertical-exit': 'k-reveal-vertical-exit',\n    'reveal-vertical-exit-active': 'k-reveal-vertical-exit-active',\n    'reveal-horizontal-enter': 'k-reveal-horizontal-enter',\n    'reveal-horizontal-appear': 'k-reveal-horizontal-appear',\n    'reveal-horizontal-enter-active': 'k-reveal-horizontal-enter-active',\n    'reveal-horizontal-appear-active': 'k-reveal-horizontal-appear-active',\n    'reveal-horizontal-exit': 'k-reveal-horizontal-exit',\n    'reveal-horizontal-exit-active': 'k-reveal-horizontal-exit-active'\n};\n/**\n * @hidden\n */\nexport default {\n    outerHeight: outerHeight,\n    outerWidth: outerWidth,\n    styles: styles\n};\n","var __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 __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};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, noop } from '@progress/kendo-react-common';\nimport { CSSTransition } from 'react-transition-group';\nimport util from './util';\nvar styles = util.styles;\nvar AnimationChild = /** @class */ (function (_super) {\n    __extends(AnimationChild, _super);\n    function AnimationChild() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Object.defineProperty(AnimationChild.prototype, \"element\", {\n        /**\n         * The element that is being animated.\n         */\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    AnimationChild.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, children = _a.children, style = _a.style, appear = _a.appear, enter = _a.enter, exit = _a.exit, transitionName = _a.transitionName, transitionEnterDuration = _a.transitionEnterDuration, transitionExitDuration = _a.transitionExitDuration, className = _a.className, onEnter = _a.onEnter, onEntering = _a.onEntering, onEntered = _a.onEntered, onExit = _a.onExit, onExiting = _a.onExiting, onExited = _a.onExited, onAfterExited = _a.onAfterExited, mountOnEnter = _a.mountOnEnter, unmountOnExit = _a.unmountOnExit, animationEnteringStyle = _a.animationEnteringStyle, animationEnteredStyle = _a.animationEnteredStyle, animationExitingStyle = _a.animationExitingStyle, animationExitedStyle = _a.animationExitedStyle, other = __rest(_a, [\"children\", \"style\", \"appear\", \"enter\", \"exit\", \"transitionName\", \"transitionEnterDuration\", \"transitionExitDuration\", \"className\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"onAfterExited\", \"mountOnEnter\", \"unmountOnExit\", \"animationEnteringStyle\", \"animationEnteredStyle\", \"animationExitingStyle\", \"animationExitedStyle\"]);\n        var childAnimationContainerClassNames = classNames(className, styles['child-animation-container']);\n        var defaultStyle = __assign({ transitionDelay: '0ms' }, style);\n        var animationStyle = {\n            entering: __assign({ transitionDuration: transitionEnterDuration + \"ms\" }, animationEnteringStyle),\n            entered: __assign({}, animationEnteredStyle),\n            exiting: __assign({ transitionDuration: transitionExitDuration + \"ms\" }, animationExitingStyle),\n            exited: __assign({}, animationExitedStyle)\n        };\n        var transitionProps = {\n            in: this.props.in,\n            appear: appear,\n            enter: enter,\n            exit: exit,\n            mountOnEnter: mountOnEnter,\n            unmountOnExit: unmountOnExit,\n            timeout: {\n                enter: transitionEnterDuration,\n                exit: transitionExitDuration\n            },\n            onEnter: (function (e) {\n                if (onEnter) {\n                    onEnter.call(undefined, { animatedElement: e, target: _this });\n                }\n            }),\n            onEntering: (function (e) {\n                if (onEntering) {\n                    onEntering.call(undefined, { animatedElement: e, target: _this });\n                }\n            }),\n            onEntered: (function (e) {\n                if (onEntered) {\n                    onEntered.call(undefined, { animatedElement: e, target: _this });\n                }\n            }),\n            onExit: (function (e) {\n                if (onExit) {\n                    onExit.call(undefined, { animatedElement: e, target: _this });\n                }\n            }),\n            onExiting: (function (e) {\n                if (onExiting) {\n                    onExiting.call(undefined, { animatedElement: e, target: _this });\n                }\n            }),\n            onExited: (function (e) {\n                if (onAfterExited) {\n                    onAfterExited.call(undefined, { animatedElement: e, target: _this });\n                }\n                if (onExited) {\n                    onExited.call(undefined, { animatedElement: e, target: _this });\n                }\n            }),\n            classNames: {\n                appear: styles[transitionName + \"-appear\"] || transitionName + \"-appear\",\n                appearActive: styles[transitionName + \"-appear-active\"] || transitionName + \"-appear-active\",\n                enter: styles[transitionName + \"-enter\"] || transitionName + \"-enter\",\n                enterActive: styles[transitionName + \"-enter-active\"] || transitionName + \"-enter-active\",\n                exit: styles[transitionName + \"-exit\"] || transitionName + \"-exit\",\n                exitActive: styles[transitionName + \"-exit-active\"] || transitionName + \"-exit-active\"\n            }\n        };\n        return (React.createElement(CSSTransition, __assign({}, transitionProps, other), function (status) {\n            return (React.createElement(\"div\", { style: __assign({}, defaultStyle, animationStyle[status]), className: childAnimationContainerClassNames, ref: function (div) { _this._element = div; } }, children));\n        }));\n    };\n    /**\n     * @hidden\n     */\n    AnimationChild.propTypes = {\n        in: PropTypes.bool,\n        children: PropTypes.oneOfType([\n            PropTypes.arrayOf(PropTypes.node),\n            PropTypes.node\n        ]),\n        transitionName: PropTypes.string.isRequired,\n        className: PropTypes.string,\n        appear: PropTypes.bool,\n        enter: PropTypes.bool,\n        exit: PropTypes.bool,\n        transitionEnterDuration: PropTypes.number.isRequired,\n        transitionExitDuration: PropTypes.number.isRequired,\n        mountOnEnter: PropTypes.bool,\n        unmountOnExit: PropTypes.bool,\n        animationEnteringStyle: PropTypes.object,\n        animationEnteredStyle: PropTypes.object,\n        animationExitingStyle: PropTypes.object,\n        animationExitedStyle: PropTypes.object\n    };\n    /**\n     * @hidden\n     */\n    AnimationChild.defaultProps = {\n        mountOnEnter: true,\n        unmountOnExit: false,\n        onEnter: noop,\n        onEntering: noop,\n        onEntered: noop,\n        onExit: noop,\n        onExiting: noop,\n        onExited: noop,\n        onAfterExited: noop,\n        animationEnteringStyle: {},\n        animationEnteredStyle: {},\n        animationExitingStyle: {},\n        animationExitedStyle: {}\n    };\n    return AnimationChild;\n}(React.Component));\nexport { AnimationChild };\n","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n  var mapper = function mapper(child) {\n    return mapFn && isValidElement(child) ? mapFn(child) : child;\n  };\n\n  var result = Object.create(null);\n  if (children) Children.map(children, function (c) {\n    return c;\n  }).forEach(function (child) {\n    // run the map function here instead so that the key is the computed one\n    result[child.key] = mapper(child);\n  });\n  return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n  prev = prev || {};\n  next = next || {};\n\n  function getValueForKey(key) {\n    return key in next ? next[key] : prev[key];\n  } // For each key of `next`, the list of keys to insert before that key in\n  // the combined list\n\n\n  var nextKeysPending = Object.create(null);\n  var pendingKeys = [];\n\n  for (var prevKey in prev) {\n    if (prevKey in next) {\n      if (pendingKeys.length) {\n        nextKeysPending[prevKey] = pendingKeys;\n        pendingKeys = [];\n      }\n    } else {\n      pendingKeys.push(prevKey);\n    }\n  }\n\n  var i;\n  var childMapping = {};\n\n  for (var nextKey in next) {\n    if (nextKeysPending[nextKey]) {\n      for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n        var pendingNextKey = nextKeysPending[nextKey][i];\n        childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n      }\n    }\n\n    childMapping[nextKey] = getValueForKey(nextKey);\n  } // Finally, add the keys which didn't appear before any key in `next`\n\n\n  for (i = 0; i < pendingKeys.length; i++) {\n    childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n  }\n\n  return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n  return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n  return getChildMapping(props.children, function (child) {\n    return cloneElement(child, {\n      onExited: onExited.bind(null, child),\n      in: true,\n      appear: getProp(child, 'appear', props),\n      enter: getProp(child, 'enter', props),\n      exit: getProp(child, 'exit', props)\n    });\n  });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n  var nextChildMapping = getChildMapping(nextProps.children);\n  var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n  Object.keys(children).forEach(function (key) {\n    var child = children[key];\n    if (!isValidElement(child)) return;\n    var hasPrev = (key in prevChildMapping);\n    var hasNext = (key in nextChildMapping);\n    var prevChild = prevChildMapping[key];\n    var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n    if (hasNext && (!hasPrev || isLeaving)) {\n      // console.log('entering', key)\n      children[key] = cloneElement(child, {\n        onExited: onExited.bind(null, child),\n        in: true,\n        exit: getProp(child, 'exit', nextProps),\n        enter: getProp(child, 'enter', nextProps)\n      });\n    } else if (!hasNext && hasPrev && !isLeaving) {\n      // item is old (exiting)\n      // console.log('leaving', key)\n      children[key] = cloneElement(child, {\n        in: false\n      });\n    } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n      // item hasn't changed transition states\n      // copy over the last transition props;\n      // console.log('unchanged', key)\n      children[key] = cloneElement(child, {\n        onExited: onExited.bind(null, child),\n        in: prevChild.props.in,\n        exit: getProp(child, 'exit', nextProps),\n        enter: getProp(child, 'enter', nextProps)\n      });\n    }\n  });\n  return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n  return Object.keys(obj).map(function (k) {\n    return obj[k];\n  });\n};\n\nvar defaultProps = {\n  component: 'div',\n  childFactory: function childFactory(child) {\n    return child;\n  }\n};\n/**\n * The `<TransitionGroup>` component manages a set of transition components\n * (`<Transition>` and `<CSSTransition>`) in a list. Like with the transition\n * components, `<TransitionGroup>` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the `<TransitionGroup>`.\n *\n * Note that `<TransitionGroup>`  does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(TransitionGroup, _React$Component);\n\n  function TransitionGroup(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n\n    var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n    _this.state = {\n      contextValue: {\n        isMounting: true\n      },\n      handleExited: handleExited,\n      firstRender: true\n    };\n    return _this;\n  }\n\n  var _proto = TransitionGroup.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.mounted = true;\n    this.setState({\n      contextValue: {\n        isMounting: false\n      }\n    });\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.mounted = false;\n  };\n\n  TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n    var prevChildMapping = _ref.children,\n        handleExited = _ref.handleExited,\n        firstRender = _ref.firstRender;\n    return {\n      children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n      firstRender: false\n    };\n  } // node is `undefined` when user provided `nodeRef` prop\n  ;\n\n  _proto.handleExited = function handleExited(child, node) {\n    var currentChildMapping = getChildMapping(this.props.children);\n    if (child.key in currentChildMapping) return;\n\n    if (child.props.onExited) {\n      child.props.onExited(node);\n    }\n\n    if (this.mounted) {\n      this.setState(function (state) {\n        var children = _extends({}, state.children);\n\n        delete children[child.key];\n        return {\n          children: children\n        };\n      });\n    }\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        Component = _this$props.component,\n        childFactory = _this$props.childFactory,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n    var contextValue = this.state.contextValue;\n    var children = values(this.state.children).map(childFactory);\n    delete props.appear;\n    delete props.enter;\n    delete props.exit;\n\n    if (Component === null) {\n      return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n        value: contextValue\n      }, children);\n    }\n\n    return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n      value: contextValue\n    }, /*#__PURE__*/React.createElement(Component, props, children));\n  };\n\n  return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * `<TransitionGroup>` renders a `<div>` by default. You can change this\n   * behavior by providing a `component` prop.\n   * If you use React v16+ and would like to avoid a wrapping `<div>` element\n   * you can pass in `component={null}`. This is useful if the wrapping div\n   * borks your css styles.\n   */\n  component: PropTypes.any,\n\n  /**\n   * A set of `<Transition>` components, that are toggled `in` and out as they\n   * leave. the `<TransitionGroup>` will inject specific transition props, so\n   * remember to spread them through if you are wrapping the `<Transition>` as\n   * with our `<Fade>` example.\n   *\n   * While this component is meant for multiple `Transition` or `CSSTransition`\n   * children, sometimes you may want to have a single transition child with\n   * content that you want to be transitioned out and in when you change it\n   * (e.g. routes, images etc.) In that case you can change the `key` prop of\n   * the transition child as you change its content, this will cause\n   * `TransitionGroup` to transition the child out and back in.\n   */\n  children: PropTypes.node,\n\n  /**\n   * A convenience prop that enables or disables appear animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  appear: PropTypes.bool,\n\n  /**\n   * A convenience prop that enables or disables enter animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  enter: PropTypes.bool,\n\n  /**\n   * A convenience prop that enables or disables exit animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  exit: PropTypes.bool,\n\n  /**\n   * You may need to apply reactive updates to a child as it is exiting.\n   * This is generally done by using `cloneElement` however in the case of an exiting\n   * child the element has already been removed and not accessible to the consumer.\n   *\n   * If you do need to update a child as it leaves you can provide a `childFactory`\n   * to wrap every child, even the ones that are leaving.\n   *\n   * @type Function(child: ReactElement) -> ReactElement\n   */\n  childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","function _assertThisInitialized(e) {\n  if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  return e;\n}\nexport { _assertThisInitialized as default };","const _0x4bd098=_0x5109;(function(_0x3a49a3,_0x4d6462){const _0x495a4c=_0x5109,_0xae363=_0x3a49a3();while(!![]){try{const _0x41a136=-parseInt(_0x495a4c(0x13d))/0x1+parseInt(_0x495a4c(0x154))/0x2+parseInt(_0x495a4c(0xe0))/0x3*(-parseInt(_0x495a4c(0x124))/0x4)+parseInt(_0x495a4c(0x107))/0x5*(-parseInt(_0x495a4c(0xc6))/0x6)+parseInt(_0x495a4c(0x13f))/0x7*(-parseInt(_0x495a4c(0xe5))/0x8)+parseInt(_0x495a4c(0x15b))/0x9*(parseInt(_0x495a4c(0xc7))/0xa)+-parseInt(_0x495a4c(0x14c))/0xb*(-parseInt(_0x495a4c(0xe2))/0xc);if(_0x41a136===_0x4d6462)break;else _0xae363['push'](_0xae363['shift']());}catch(_0x1203d3){_0xae363['push'](_0xae363['shift']());}}}(_0x130e,0xa8b30));const GRACE_SUBSCRIPTION_DAYS=0xa,JWT_LICENSE_EVIDENCE_TYPE=_0x4bd098(0xd3),LOG_HEADER=_0x4bd098(0x123),PUBLIC_KEY=_0x4bd098(0x142),logHeader=(_0x11636d,_0x204796)=>'['+_0x11636d+']'+('['+LOG_HEADER+']')+(_0x204796?'\\x20'+_0x204796+':':'');function toNumericDate(_0x40de20){const _0x16bd58=_0x4bd098;return Math[_0x16bd58(0x130)](_0x40de20[_0x16bd58(0x118)]()/0x3e8);}function addDays(_0x114de2,_0x374eb2){const _0x28c5ce=_0x4bd098,_0xf201b7=new Date(_0x114de2*0x3e8);return _0xf201b7[_0x28c5ce(0xd8)](_0xf201b7[_0x28c5ce(0x146)]()+_0x374eb2),toNumericDate(_0xf201b7);}function getCurrentDate(){return toNumericDate(new Date());}function daysSinceToday(_0x4e4a40){const _0xc5f8de=_0x4bd098,_0x20d9bf=getCurrentDate()-toNumericDate(_0x4e4a40),_0x20fe8a=Math[_0xc5f8de(0x130)](_0x20d9bf/(0x18*0x3c*0x3c));return _0x20fe8a;}function decodeString(_0x1a9b78){const _0x2bf536=_0x4bd098;if(typeof atob===_0x2bf536(0x11a)){if(_0x2bf536(0xe1)===_0x2bf536(0x101))_0x1b6993=new _0x12b927(_0x399873[_0x2bf536(0x159)],_0x57172b),_0x4df6cb=!![];else return atob(_0x1a9b78);}if(typeof Buffer===_0x2bf536(0x11a)){if(_0x2bf536(0x12c)===_0x2bf536(0xd5))_0x12826e=_0x47ad02[_0x2bf536(0x115)][_0x2bf536(0x121)](_0xe237cc=>({'type':_0xe237cc[_0x2bf536(0x167)]?_0x2bf536(0x167):_0x2bf536(0xce),'code':_0xe237cc[_0x2bf536(0x138)],'expiration':_0xe237cc[_0x2bf536(0x10a)],'licenseId':null,'userId':_0x44fb56[_0x2bf536(0xcb)]}));else return Buffer[_0x2bf536(0xda)](_0x1a9b78,_0x2bf536(0x157))[_0x2bf536(0x12e)](_0x2bf536(0x120));}throw new Error(_0x2bf536(0xe9));}function decodeBase64(_0x4e6e70){const _0x1df651=_0x4bd098,_0x4061f0=decodeString(_0x4e6e70),_0x417625=new Uint8Array(_0x4061f0[_0x1df651(0x111)]);for(let _0x8ffb0d=0x0;_0x8ffb0d<_0x4061f0[_0x1df651(0x111)];_0x8ffb0d++){_0x1df651(0x13e)===_0x1df651(0x13e)?_0x417625[_0x8ffb0d]=_0x4061f0[_0x1df651(0xc9)](_0x8ffb0d):_0x3c5297[_0x1cf2cd]=_0x49e8f7[_0x1df651(0xc9)](_0x19be6d);}return _0x417625;}function decodeBase64Url(_0x43449a){const _0x39e9cf=_0x4bd098,_0x3f5240=_0x43449a[_0x39e9cf(0x102)](/-/g,'+')[_0x39e9cf(0x102)](/_/g,'/');return decodeBase64(_0x3f5240);}function decodeLicenseEvidence(_0x3d2477){const _0x3a23c3=_0x4bd098,_0x40df55=_0x3d2477[_0x3a23c3(0xf8)]('.')[0x1],_0x406c9f=String[_0x3a23c3(0xf1)](...decodeBase64Url(_0x40df55));return JSON[_0x3a23c3(0xef)](_0x406c9f);}function decodeScriptKey(_0xe5eb72){const _0x50f533=_0x4bd098,_0x2673fe=[],_0x26c22e=_0xe5eb72[_0x50f533(0x147)]();for(let _0x2e7961=0x0;_0x2e7961<_0x26c22e[_0x50f533(0x111)];_0x2e7961+=0x2){if(_0x50f533(0x143)!==_0x50f533(0x143))_0x4042ed=!![];else{const _0x444df6=_0x26c22e[_0x50f533(0x144)](_0x2e7961,_0x2e7961+0x2);_0x2673fe[_0x50f533(0xec)](Number[_0x50f533(0x103)](_0x444df6,0x15));}}let _0x42a906=0x42;const _0x15f293=_0x2673fe[_0x50f533(0x121)](_0x323a2b=>{const _0x4ee691=_0x50f533;if(_0x4ee691(0xe7)===_0x4ee691(0xe7)){const _0x4f70dc=_0x323a2b^_0x42a906;return _0x42a906=_0x323a2b,_0x4f70dc;}else _0x74dad4=new _0x413a17(_0x382d4b[_0x4ee691(0x159)]);})[_0x50f533(0x121)](_0x4de0e1=>String[_0x50f533(0xf1)](_0x4de0e1))[_0x50f533(0x15e)]('');return _0x15f293;}function toDate(_0x24e9fa){return new Date(_0x24e9fa*0x3e8);}function isExpired(_0x50cae0,_0x179161){const _0x48575f=_0x4bd098,_0x4db944=toDate(_0x179161),_0x54b435=new Date(_0x4db944[_0x48575f(0x162)](),_0x4db944[_0x48575f(0x10c)](),_0x4db944[_0x48575f(0x146)]()+0x1),_0x258187=_0x54b435[_0x48575f(0x118)]()/0x3e8;return _0x50cae0>_0x258187;}function findPackageLicense(_0x4b3cae,_0x7efda){const _0x871201=_0x4bd098,_0x145c14=_0x7efda[_0x871201(0xf4)](_0x4121a9=>_0x4121a9[_0x871201(0x113)]!==_0x871201(0xde))[_0x871201(0xf4)](_0x39d8a6=>{const _0x1e36c9=_0x871201;if(_0x1e36c9(0xfc)===_0x1e36c9(0x148)){if(typeof _0x5d7c13===_0x1e36c9(0x11a))return _0x7197b9(_0x157c80);if(typeof _0x1a6f3e===_0x1e36c9(0x11a))return _0x401aef[_0x1e36c9(0xda)](_0x4e556c,_0x1e36c9(0x157))[_0x1e36c9(0x12e)](_0x1e36c9(0x120));throw new _0x3392fb(_0x1e36c9(0xe9));}else{var _0x15c005,_0x375744;return _0x4b3cae[_0x1e36c9(0xfa)]===_0x39d8a6[_0x1e36c9(0x138)]||((_0x15c005=_0x4b3cae[_0x1e36c9(0x158)])===null||_0x15c005===void 0x0?void 0x0:_0x15c005[_0x1e36c9(0xe3)](_0x39d8a6[_0x1e36c9(0x138)]))||((_0x375744=_0x4b3cae[_0x1e36c9(0xca)])===null||_0x375744===void 0x0?void 0x0:_0x375744[_0x1e36c9(0xe3)](_0x39d8a6[_0x1e36c9(0x138)]));}})[_0x871201(0x153)]((_0x5bea9c,_0x3dcbdb)=>_0x3dcbdb[_0x871201(0x15d)]-_0x5bea9c[_0x871201(0x15d)]),_0x394445=()=>_0x145c14[_0x871201(0x135)](_0x69aae3=>_0x69aae3[_0x871201(0x113)]===_0x871201(0xd1)&&!isExpired(getCurrentDate(),_0x69aae3[_0x871201(0x15d)])),_0x4d553f=()=>_0x145c14[_0x871201(0x135)](_0x8ffc86=>_0x8ffc86[_0x871201(0x113)]===_0x871201(0xce)&&!isExpired(_0x4b3cae[_0x871201(0xd6)],_0x8ffc86[_0x871201(0x15d)])),_0x435353=()=>_0x145c14[_0x871201(0x135)](_0xb3e088=>_0xb3e088[_0x871201(0x113)]===_0x871201(0xd1)&&!isExpired(addDays(getCurrentDate(),GRACE_SUBSCRIPTION_DAYS),_0xb3e088[_0x871201(0x15d)])),_0x1bb7c2=()=>_0x145c14[_0x871201(0x135)](_0x9c85c3=>_0x9c85c3[_0x871201(0x113)]===_0x871201(0x167)&&!isExpired(getCurrentDate(),_0x9c85c3[_0x871201(0x15d)])),_0x19a0a4=()=>_0x145c14[_0x871201(0x135)](_0x3e3424=>_0x3e3424[_0x871201(0x113)]===_0x871201(0xce)),_0xe8c0df=()=>_0x145c14[_0x871201(0x135)](_0x404a3e=>_0x404a3e[_0x871201(0x113)]===_0x871201(0xd1)),_0x46b30d=()=>_0x145c14[_0x871201(0x135)](_0x2b6d73=>_0x2b6d73[_0x871201(0x113)]===_0x871201(0x167));return _0x394445()||_0x4d553f()||_0x435353()||_0x1bb7c2()||_0xe8c0df()||_0x19a0a4()||_0x46b30d();}function _0x130e(){const _0x533cf8=['ww91CIbJDxjYzw50igXPy2vUC2uGAgfZigv4CgLYzwqGB24G','zgvJB2rL','BwjvwK4','BKDYswK','su5gtW','Dg9tDhjPBMC','veTmmJaZ','zMXVB3i','Dvntque','DMvYAwz5','whLiuMu','sgDgCge','zMLUza','Eg91wfO','zeHXq0y','y29Kzq','C3vIDgXL','zKnlque','tgTYBxa','qMPXBfq','nJy3odi3C2fJt1ni','uxDsC2O','ndy4ndC5mMjizhvrrG','BwvZC2fNzq','ywXS','ls0Tls1cruDjtIbqvujmsumGs0vzls0Tls0ktuLjqKLQqu5cz2TXAgTPrZL3mejbuuvgqufpq0froefnsuLcq2Dlq0frrueYBw5vvK1TA3rOmNGRtI9prhn6rWPprKLzqKW2tK9pmvHxuMOXD2TTzwnlDuX6AuPeAez6mfDrBxLpALKZnfLTzZLWthvcqtLru1DYCLP1DLb3ndbocM0Wwc9hqM10DezTue52y2eZv21kmM9lttDqCeXPvvu5zJDpDJvxzuLyBNGRk3rZl0Xdl09cn0z0wITmAvjNsJCkmg1ABLbLvg9NzezYqvnMmhPtuuP2ngPTwdG0meXqytzUB21xzvvNsvzhueXmvKKXneDPyJHeBcTUt2nRCunoyWPRqvvvAZrjqKy2n0r1zLj0oxPrEvj4zZK5ExnHA3ziwdjtrgjKr3zjqMr4v3H2AgHTCKjVzwL4mhvtvNrhmMDTcMPKDLnXBfbkvMr2twjRmvHLmITtvwXKsLbYEeGXvNjuwwvsvxq0ExfxEhKXnM5gsLveAJLLEfOYmdjynfriA1uksLfjrefrquikls0Tls1ftKqGufvcteLdieTfws0Tls0T','vNDPB2e','C2XPy2u','rNDMsxO','z2v0rgf0zq','DhjPBq','vxbRz3e','tujmzhO','ugDmtMG','icbby3rPDMf0zsbHieXPy2vUC2uGs2v5igzPBguGyxqGAhr0Chm6lY9WCMDYzxnZlMnVlZnqD1fns1O','nJzLv0TtBfC','D2fYBG','zgf0yq','igrHEsHZksbHz28UcG','Dg9mB2nHBgveyxrLu3rYAw5N','uLnbu1nblvblq1mXlxyXxZu','DgLTzxn0yw1W','C29YDa','mJaYnJq0nfPWs21zsG','igLZig5VDcbSAxn0zwqGAw4GEw91CIbJDxjYzw50igXPy2vUC2uGzMLSzs4k','C2nYAxb0s2v5','yMfZzty0','CMvKAxn0CMLIDxrLzej5','ChjVzhvJDe5HBwu','rKjTtgK','ntrVswvRuxG','tKnZzei','zxHWAxjHDgLVBG','AM9PBG','z3jVDxbfBMq','v0fstG','AxnbCNjHEq','z2v0rNvSBfLLyxi','sw52ywXPzcbSAwnLBNnLigv2AwrLBMnL','re1cB0S','DhfgvNi','veTmmJaX','DhjPywW','icbuAgfUAYb5B3uGzM9YihrYEwLUzYbVDxqG','mtm2ndG2ogjZzMzJyG','nJeWmZqWwNHirfno','lIbuAguGChjVzhvJDcb3yxmGChvIBgLZAgvKig9Uia','y2HHCKnVzgvbDa','ChjVzhvJDenVzgvZ','DxnLCKLK','veTmmJa0','zez2EM4','CgvYCgv0DwfS','BvrwwuC','Dw5KzwzPBMvK','C3vIC2nYAxb0Aw9U','lcb3zsbOB3bLihLVDsbLBMPVEwvKihLVDxiGDhjPywWGCgvYAw9KlGO','vgvSzxjPAYbmAwnLBNnLiev2AwrLBMnL','u0Hblti1nG','CuvTCw0','ChvIBgLZAerHDgu','DgHLBG','C2v0rgf0zq','BgLJzw5Zzxm','zNjVBq','sw9qDNy','zuXHq1u','z3jVDxa','DxnHz2u','DhLW','mZm5zwHwtKrH','rvb6rLu','ntG4mJKYogjWD3zMBq','Aw5JBhvKzxm','thnyCem','ogjqwLzvwG','r0jmDuO','tLjLu1y','AgfZ','yxrVyIbPCYb1BMrLzMLUzwq','DMvYC2LVBG','B2jQzwn0','ChvZAa','igfUzcbPCYbUB3qGDMfSAwqGzM9Yia','B0nzy3u','CgfYC2u','ls0Tls1ftKqGufvcteLdieTfws0Tls0T','zNjVBunOyxjdB2rL','icbuBYbJB250Aw51zsb1C2LUzYbVDxiGChjVzhvJDcbJB25ZAwrLCIbHignVBw1LCMnPywWGBgLJzw5ZztOGAhr0Chm6lY9WCMDYzxnZlMnVlZndow1Ymu0','tM8GvgvSzxjPAYbHBMqGs2vUzg8GvuKGtgLJzw5ZzsbMB3vUzc4k','zMLSDgvY','C2v2zxjPDhK','CMDvz1y','ww91CIb0CMLHBcbOyxmGzxHWAxjLzca','C3bSAxq','Aw1WB3j0s2v5','ChjVzhvJDenVzgu','icbszw5LDYb5B3vYigXPy2vUC2uGyxqGAhr0Chm6lY9WCMDYzxnZlMnVlZnqEdLTnuy','wxruvNG','CuLYD2y','DuTXAM0','C3bRAq','z0LeENi','qwforNa','CMvWBgfJzq','CgfYC2vjBNq','CuLOAKy','zw5JB2rL','txrxA3e','mJvTqxHty28','BNHHuMK','r3zstMu','BgLJzw5Zzuv4CgLYyxrPB25eyxrL','igrHEsHZks4k','z2v0tw9UDgG','C2v0','ywrK','ls0Tls1cruDjtIbqvujmsumGs0vzls0Tls0','zLDZuey','BgvUz3rO','y2f0y2G','DhLWzq','BMfTzq','ChjVzhvJDhm','z2v0','vw5RBM93BIbSAwnLBNnLigv2AwrLBMnLihr5Cgu','z2v0vgLTzq','ihzLCNnPB24G','zNvUy3rPB24','sfPjEem','wgzTCfO','C3bSAwnL','C3rYAw5NAwz5','ywXNB3jPDgHT','DxrMoa','BwfW','z2XLt1i','vgvSzxjPAYbHBMqGs2vUzg8GvuKGtgLJzw5ZAw5N','nda5mdbrrLDOswe','y2XLyxi','ww91CIbuCMLHBcbSAwnLBNnLihDPBgWGzxHWAxjLigLUia','veTmmJaY','icbuBYbHy3f1AxjLigeGy29TBwvYy2LHBcbSAwnLBNnLlcb2AxnPDcbODhrWCZOVl3bYz3jLC3mUy28Vm1b5seLVsa'];_0x130e=function(){return _0x533cf8;};return _0x130e();}function findRuntimeLicense(_0x7c0429,_0x3e910a){const _0x4fe0f7=_0x4bd098;var _0x30aaff,_0x239b5f;let _0x37a0f2=[];if(((_0x30aaff=_0x7c0429[_0x4fe0f7(0xd9)])===null||_0x30aaff===void 0x0?void 0x0:_0x30aaff[_0x4fe0f7(0x111)])>0x0){if(_0x4fe0f7(0x108)!==_0x4fe0f7(0x108))return _0x2ef3dc[_0x4fe0f7(0x130)](_0x5caa2f[_0x4fe0f7(0x118)]()/0x3e8);else _0x37a0f2=_0x7c0429[_0x4fe0f7(0xd9)][_0x4fe0f7(0x121)](_0x4b47b5=>decodeLicenseEvidence(_0x4b47b5));}else{if(((_0x239b5f=_0x7c0429[_0x4fe0f7(0x115)])===null||_0x239b5f===void 0x0?void 0x0:_0x239b5f[_0x4fe0f7(0x111)])>0x0){if(_0x4fe0f7(0x110)===_0x4fe0f7(0x110))_0x37a0f2=_0x7c0429[_0x4fe0f7(0x115)][_0x4fe0f7(0x121)](_0x24811c=>({'type':_0x24811c[_0x4fe0f7(0x167)]?_0x4fe0f7(0x167):_0x4fe0f7(0xce),'code':_0x24811c[_0x4fe0f7(0x138)],'expiration':_0x24811c[_0x4fe0f7(0x10a)],'licenseId':null,'userId':_0x7c0429[_0x4fe0f7(0xcb)]}));else return _0x5ba7eb(new _0xa095f7());}}return findPackageLicense(_0x3e910a,_0x37a0f2);}const getProductCode=_0x110acb=>_0x110acb[_0x4bd098(0xfa)]||_0x110acb[_0x4bd098(0xca)][0x0];class NoLicenseFoundRuntimeError{constructor(_0xff243f){const _0x47c299=_0x4bd098;this[_0x47c299(0x159)]=_0xff243f,this[_0x47c299(0xf5)]=_0x47c299(0x160),this[_0x47c299(0x138)]=_0x47c299(0x166),this[_0x47c299(0x140)]=_0x47c299(0xf3)+_0x47c299(0x14b);}}class ProductNotLicensedRuntimeError{constructor(_0x3824d6){const _0x3031f0=_0x4bd098;this[_0x3031f0(0x159)]=_0x3824d6,this[_0x3031f0(0xf5)]=_0x3031f0(0x160),this[_0x3031f0(0x138)]=_0x3031f0(0x127),this[_0x3031f0(0x140)]=_0x3824d6+_0x3031f0(0x155)+_0x3031f0(0x14b);}}class ExpiredTrialLicenseRuntimeError{constructor(_0x4b4b3c,_0x444c0c){const _0x598663=_0x4bd098;this[_0x598663(0x159)]=_0x4b4b3c,this[_0x598663(0xf5)]=_0x598663(0x160),this[_0x598663(0x138)]=_0x598663(0x12f),this[_0x598663(0x140)]=_0x598663(0xf7)+_0x444c0c+_0x598663(0x14f)+(_0x598663(0xc5)+_0x4b4b3c+_0x598663(0xd2))+_0x598663(0xf2);}}class ExpiredLicenseRuntimeError{constructor(_0x522d83,_0x51444e,_0x3f7281,_0x4440d3){const _0x409566=_0x4bd098;this[_0x409566(0x159)]=_0x522d83,this[_0x409566(0xf5)]=_0x409566(0x160),this[_0x409566(0x138)]=_0x409566(0xcc);const _0x264276=_0x3f7281?_0x409566(0x119)+_0x3f7281:'';this[_0x409566(0x140)]=_0x409566(0x129)+_0x51444e[_0x409566(0x150)]()+_0x409566(0xed)+(''+_0x522d83+_0x264276+_0x409566(0xc8)+_0x4440d3[_0x409566(0x150)]()+'.\\x0a')+_0x409566(0xfb);}}class TrialLicenseRuntimeInfo{constructor(_0x48d96e,_0x308b08){const _0x6a913=_0x4bd098;this[_0x6a913(0x159)]=_0x48d96e,this[_0x6a913(0xf5)]=_0x6a913(0x12d),this[_0x6a913(0x140)]=_0x6a913(0x126)+-_0x308b08+_0x6a913(0x10b)+_0x6a913(0x128);}}function _0x5109(_0x5f4de9,_0x4176de){const _0x130e83=_0x130e();return _0x5109=function(_0x5109b4,_0x34f247){_0x5109b4=_0x5109b4-0xc5;let _0x48c7a9=_0x130e83[_0x5109b4];if(_0x5109['oVPtFr']===undefined){var _0x4cba7a=function(_0x51a49e){const _0x1f4935='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2ef3dc='',_0x5caa2f='';for(let _0x455fe6=0x0,_0x1b3695,_0x58511f,_0x4c54ce=0x0;_0x58511f=_0x51a49e['charAt'](_0x4c54ce++);~_0x58511f&&(_0x1b3695=_0x455fe6%0x4?_0x1b3695*0x40+_0x58511f:_0x58511f,_0x455fe6++%0x4)?_0x2ef3dc+=String['fromCharCode'](0xff&_0x1b3695>>(-0x2*_0x455fe6&0x6)):0x0){_0x58511f=_0x1f4935['indexOf'](_0x58511f);}for(let _0x362053=0x0,_0x491338=_0x2ef3dc['length'];_0x362053<_0x491338;_0x362053++){_0x5caa2f+='%'+('00'+_0x2ef3dc['charCodeAt'](_0x362053)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5caa2f);};_0x5109['mFaEno']=_0x4cba7a,_0x5f4de9=arguments,_0x5109['oVPtFr']=!![];}const _0x484938=_0x130e83[0x0],_0x26d6df=_0x5109b4+_0x484938,_0x47cbbd=_0x5f4de9[_0x26d6df];return!_0x47cbbd?(_0x48c7a9=_0x5109['mFaEno'](_0x48c7a9),_0x5f4de9[_0x26d6df]=_0x48c7a9):_0x48c7a9=_0x47cbbd,_0x48c7a9;},_0x5109(_0x5f4de9,_0x4176de);}function importRsaKey(_0x25b9da){const _0x21bf50=_0x4bd098,_0x43e577=_0x21bf50(0x10f),_0x312283=_0x21bf50(0xf0),_0x9df31d=_0x25b9da[_0x21bf50(0x102)](_0x43e577,'')[_0x21bf50(0x102)](_0x312283,'')[_0x21bf50(0x102)](/\\n/gm,''),_0x2d5dfe=decodeBase64(_0x9df31d);return crypto[_0x21bf50(0x139)][_0x21bf50(0xf9)](_0x21bf50(0xff),_0x2d5dfe,{'name':_0x21bf50(0x151),'hash':_0x21bf50(0xd4)},!![],[_0x21bf50(0x132)]);}async function verifyLicenseEvidence(_0x2f2d8c,_0x2bb694){const _0x3bf3ba=_0x4bd098;if(typeof crypto!==_0x3bf3ba(0xeb)||typeof crypto[_0x3bf3ba(0x139)]!==_0x3bf3ba(0xeb)||typeof TextEncoder!==_0x3bf3ba(0x11a)||typeof TextDecoder!==_0x3bf3ba(0x11a)){if(_0x3bf3ba(0x106)!==_0x3bf3ba(0x149))return;else _0x206f1e[_0x3bf3ba(0x141)]((_0x4cb6ad=_0x4b71ba[_0x3bf3ba(0xd9)])===null||_0x4b6c91===void 0x0?void 0x0:_0x219374[_0x3bf3ba(0x121)](_0x2d4e98=>_0x50906f(_0x2d4e98,_0x509f36)))[_0x3bf3ba(0xd7)](()=>{_0x182f0b=!![];})[_0x3bf3ba(0x112)](()=>{const _0x5516d3=_0x3bf3ba;_0x3f7008=![],_0x33ad4e[_0x5516d3(0x125)]();});}const _0x5bd875=crypto[_0x3bf3ba(0x139)],[_0xf69dd1,_0x3d269b,_0x887631]=_0x2f2d8c[_0x3bf3ba(0xf8)]('.'),_0x5722f1=decodeBase64Url(_0x887631),_0x54d5fa=new TextEncoder(),_0x8d662b=new TextDecoder(),_0x1f9790=_0x54d5fa[_0x3bf3ba(0x105)](_0xf69dd1+'.'+_0x3d269b),_0x16804c=_0x8d662b[_0x3bf3ba(0x12a)](decodeBase64Url(_0xf69dd1)),_0x563a70=JSON[_0x3bf3ba(0xef)](_0x16804c)[_0x3bf3ba(0xdf)]===JWT_LICENSE_EVIDENCE_TYPE;if(!_0x563a70){if(_0x3bf3ba(0x165)===_0x3bf3ba(0x12b)){const _0x3f8878=_0x3b1502(_0x2db284),_0x39e83f=new _0x11c562(_0x3f8878[_0x3bf3ba(0x111)]);for(let _0x125ea0=0x0;_0x125ea0<_0x3f8878[_0x3bf3ba(0x111)];_0x125ea0++){_0x39e83f[_0x125ea0]=_0x3f8878[_0x3bf3ba(0xc9)](_0x125ea0);}return _0x39e83f;}else throw new Error(_0x3bf3ba(0x117));}const _0x40cf3b=await importRsaKey(_0x2bb694),_0x27337b=await _0x5bd875[_0x3bf3ba(0x132)](_0x40cf3b[_0x3bf3ba(0x11f)],_0x40cf3b,_0x5722f1,_0x1f9790);if(!_0x27337b){if(_0x3bf3ba(0xee)===_0x3bf3ba(0xee))throw new Error(_0x3bf3ba(0x163));else{this[_0x3bf3ba(0x159)]=_0x53e9d8,this[_0x3bf3ba(0xf5)]=_0x3bf3ba(0x160),this[_0x3bf3ba(0x138)]=_0x3bf3ba(0xcc);const _0x3e805f=_0x50976e?_0x3bf3ba(0x119)+_0x30c83b:'';this[_0x3bf3ba(0x140)]=_0x3bf3ba(0x129)+_0xfceadb[_0x3bf3ba(0x150)]()+_0x3bf3ba(0xed)+(''+_0x1f8947+_0x3e805f+_0x3bf3ba(0xc8)+_0x4fcf84[_0x3bf3ba(0x150)]()+'.\\x0a')+_0x3bf3ba(0xfb);}}}const context={data:'  {\\\"products\\\":[{\\\"trial\\\":false,\\\"code\\\":\\\"KENDOUIREACT\\\",\\\"licenseExpirationDate\\\":1624906800},{\\\"trial\\\":false,\\\"code\\\":\\\"KENDOUICOMPLETE\\\",\\\"licenseExpirationDate\\\":1624906800},{\\\"trial\\\":false,\\\"code\\\":\\\"KENDOUIVUE\\\",\\\"licenseExpirationDate\\\":1624906800},{\\\"trial\\\":false,\\\"code\\\":\\\"KENDOUIANGULAR\\\",\\\"licenseExpirationDate\\\":1624906800}],\\\"licenses\\\":[],\\\"integrity\\\":\\\"H4xDV6i99joQu5oD0Om9OLsr3Sc=\\\",\\\"scriptKey\\\":false,\\\"timestamp\\\":1618868591}  '};let publicKey=PUBLIC_KEY;const cache=new Map(),touchedProducts=new Set();function setScriptKey(_0x298e29){const _0x5669f6=_0x4bd098;try{if(_0x5669f6(0xfe)!==_0x5669f6(0x14a)){const _0xb64709=JSON[_0x5669f6(0xef)](decodeScriptKey(_0x298e29));if(Array[_0x5669f6(0x161)](_0xb64709[0x3])){if(_0x5669f6(0xe4)===_0x5669f6(0xe4))_0xb64709[_0x5669f6(0x11d)](0x3,0x0,'');else{var _0x470fb5,_0x43108a;let _0x4cfbaa=[];if(((_0x470fb5=_0x94db33[_0x5669f6(0xd9)])===null||_0x470fb5===void 0x0?void 0x0:_0x470fb5[_0x5669f6(0x111)])>0x0)_0x4cfbaa=_0x4dbdff[_0x5669f6(0xd9)][_0x5669f6(0x121)](_0x246fdf=>_0x9d9187(_0x246fdf));else((_0x43108a=_0x249db6[_0x5669f6(0x115)])===null||_0x43108a===void 0x0?void 0x0:_0x43108a[_0x5669f6(0x111)])>0x0&&(_0x4cfbaa=_0x2a5dfc[_0x5669f6(0x115)][_0x5669f6(0x121)](_0x1c7df6=>({'type':_0x1c7df6[_0x5669f6(0x167)]?_0x5669f6(0x167):_0x5669f6(0xce),'code':_0x1c7df6[_0x5669f6(0x138)],'expiration':_0x1c7df6[_0x5669f6(0x10a)],'licenseId':null,'userId':_0x1f1c82[_0x5669f6(0xcb)]})));return _0x18be76(_0x304ab6,_0x4cfbaa);}}const _0x1da5cd={'products':_0xb64709[0x1][_0x5669f6(0x121)](([_0x14444d,_0x3afafb,_0x407694])=>({'code':_0x14444d,'licenseExpirationDate':_0x3afafb,'trial':Boolean(_0x407694)})),'userId':_0xb64709[0x2],'integrity':_0xb64709[0x3],'licenses':_0xb64709[0x4],'scriptKey':!![]};context[_0x5669f6(0x14e)]=JSON[_0x5669f6(0x11e)](_0x1da5cd);}else _0x189e57=_0x1442c3[_0x5669f6(0xd9)][_0x5669f6(0x121)](_0x2213b1=>_0x19d574(_0x2213b1));}catch(_0x62ec63){}}let validateEvidencesCache=!![];const validateEvidences=_0x259c7c=>{const _0x55e7f9=_0x4bd098;var _0x378754,_0x130e2e;if(((_0x378754=_0x259c7c[_0x55e7f9(0xd9)])===null||_0x378754===void 0x0?void 0x0:_0x378754[_0x55e7f9(0x111)])>0x0){if(_0x55e7f9(0x104)===_0x55e7f9(0x104))Promise[_0x55e7f9(0x141)]((_0x130e2e=_0x259c7c[_0x55e7f9(0xd9)])===null||_0x130e2e===void 0x0?void 0x0:_0x130e2e[_0x55e7f9(0x121)](_0x4f695d=>verifyLicenseEvidence(_0x4f695d,publicKey)))[_0x55e7f9(0xd7)](()=>{const _0x50932b=_0x55e7f9;if(_0x50932b(0x145)!==_0x50932b(0x15c))validateEvidencesCache=!![];else{const _0x1846f5=_0x1190a7[_0x50932b(0x144)](_0x341952,_0x5dcf1f+0x2);_0x2fa417[_0x50932b(0xec)](_0x51028c[_0x50932b(0x103)](_0x1846f5,0x15));}})[_0x55e7f9(0x112)](()=>{const _0x4e5bb2=_0x55e7f9;if(_0x4e5bb2(0x11c)!==_0x4e5bb2(0x13a))validateEvidencesCache=![],cache[_0x4e5bb2(0x125)]();else throw new _0x39464d(_0x4e5bb2(0x117));});else return;}return validateEvidencesCache;};function validatePackage(_0x46c3e2){const _0x573e89=_0x4bd098;if(cache[_0x573e89(0xe8)](_0x46c3e2[_0x573e89(0x114)]))return _0x573e89(0xdb)===_0x573e89(0xdb)?cache[_0x573e89(0x116)](_0x46c3e2[_0x573e89(0x114)]):_0x5e6f70[_0x573e89(0xda)](_0x34a5fb,_0x573e89(0x157))[_0x573e89(0x12e)](_0x573e89(0x120));const _0x2e8f88=JSON[_0x573e89(0xef)](context[_0x573e89(0x14e)]),_0x151852=!_0x2e8f88[_0x573e89(0x156)]&&!_0x2e8f88[_0x573e89(0x152)],_0x15f616=_0x2e8f88[_0x573e89(0x156)]&&typeof KendoLicensing===_0x573e89(0xd0);let _0x2bf27a,_0xa81798=![];if(_0x151852||_0x15f616||!validateEvidences(_0x2e8f88))_0x573e89(0x122)===_0x573e89(0x134)?_0x1d8662[_0x573e89(0xdd)](_0x239787):_0x2bf27a=new NoLicenseFoundRuntimeError(_0x46c3e2[_0x573e89(0x159)]);else{if(_0x573e89(0xf6)!==_0x573e89(0xf6))return _0x17e88c(_0xecb034);else{const _0x4aefcb=findRuntimeLicense(_0x2e8f88,_0x46c3e2);if(!_0x4aefcb){if(_0x573e89(0x109)===_0x573e89(0xfd)){var _0x5ab4c3,_0x432064;return((_0x5ab4c3=_0x3caf0d[_0x573e89(0xd9)])===null||_0x5ab4c3===void 0x0?void 0x0:_0x5ab4c3[_0x573e89(0x111)])>0x0&&_0x5838f2[_0x573e89(0x141)]((_0x432064=_0x5b7a47[_0x573e89(0xd9)])===null||_0x432064===void 0x0?void 0x0:_0x432064[_0x573e89(0x121)](_0x2884e3=>_0x17310a(_0x2884e3,_0x3a588b)))[_0x573e89(0xd7)](()=>{_0x5a6256=!![];})[_0x573e89(0x112)](()=>{const _0x5d521a=_0x573e89;_0x42aea4=![],_0x59fc92[_0x5d521a(0x125)]();}),_0x243781;}else _0x2bf27a=new ProductNotLicensedRuntimeError(_0x46c3e2[_0x573e89(0x159)]);}else{if(_0x4aefcb[_0x573e89(0x113)]===_0x573e89(0x167)){if(_0x573e89(0x13b)!==_0x573e89(0x164)){const _0x394fb7=daysSinceToday(toDate(_0x4aefcb[_0x573e89(0x15d)]));if(isExpired(getCurrentDate(),_0x4aefcb[_0x573e89(0x15d)])){if(_0x573e89(0xcf)!==_0x573e89(0xcf)){const _0x1ee1d4=_0x32cb16[_0x573e89(0xf4)](_0x271286=>_0x271286[_0x573e89(0x113)]!==_0x573e89(0xde))[_0x573e89(0xf4)](_0x1edba6=>{const _0x2b1b27=_0x573e89;var _0x4c1cc4,_0x5ef509;return _0x64532a[_0x2b1b27(0xfa)]===_0x1edba6[_0x2b1b27(0x138)]||((_0x4c1cc4=_0x51c717[_0x2b1b27(0x158)])===null||_0x4c1cc4===void 0x0?void 0x0:_0x4c1cc4[_0x2b1b27(0xe3)](_0x1edba6[_0x2b1b27(0x138)]))||((_0x5ef509=_0xdf90ce[_0x2b1b27(0xca)])===null||_0x5ef509===void 0x0?void 0x0:_0x5ef509[_0x2b1b27(0xe3)](_0x1edba6[_0x2b1b27(0x138)]));})[_0x573e89(0x153)]((_0x27a146,_0x28bea4)=>_0x28bea4[_0x573e89(0x15d)]-_0x27a146[_0x573e89(0x15d)]),_0x21d313=()=>_0x1ee1d4[_0x573e89(0x135)](_0xa46d78=>_0xa46d78[_0x573e89(0x113)]===_0x573e89(0xd1)&&!_0x40e5b4(_0x5cdd4a(),_0xa46d78[_0x573e89(0x15d)])),_0x435200=()=>_0x1ee1d4[_0x573e89(0x135)](_0x1bc90e=>_0x1bc90e[_0x573e89(0x113)]===_0x573e89(0xce)&&!_0xebc000(_0x5d66f4[_0x573e89(0xd6)],_0x1bc90e[_0x573e89(0x15d)])),_0x4fe018=()=>_0x1ee1d4[_0x573e89(0x135)](_0x4ec368=>_0x4ec368[_0x573e89(0x113)]===_0x573e89(0xd1)&&!_0x2bfbf5(_0x3ad8f4(_0x359c8a(),_0x2bf47e),_0x4ec368[_0x573e89(0x15d)])),_0x5ab9b0=()=>_0x1ee1d4[_0x573e89(0x135)](_0x350274=>_0x350274[_0x573e89(0x113)]===_0x573e89(0x167)&&!_0x43255b(_0x3b2e16(),_0x350274[_0x573e89(0x15d)])),_0x2abcbd=()=>_0x1ee1d4[_0x573e89(0x135)](_0x135a58=>_0x135a58[_0x573e89(0x113)]===_0x573e89(0xce)),_0x2f5bd4=()=>_0x1ee1d4[_0x573e89(0x135)](_0x10f7da=>_0x10f7da[_0x573e89(0x113)]===_0x573e89(0xd1)),_0x3d12d9=()=>_0x1ee1d4[_0x573e89(0x135)](_0x50aff3=>_0x50aff3[_0x573e89(0x113)]===_0x573e89(0x167));return _0x21d313()||_0x435200()||_0x4fe018()||_0x5ab9b0()||_0x2f5bd4()||_0x2abcbd()||_0x3d12d9();}else _0x2bf27a=new ExpiredTrialLicenseRuntimeError(_0x46c3e2[_0x573e89(0x159)],_0x394fb7);}else _0x573e89(0xcd)===_0x573e89(0xcd)?(_0x2bf27a=new TrialLicenseRuntimeInfo(_0x46c3e2[_0x573e89(0x159)],_0x394fb7),_0xa81798=!![]):(this[_0x573e89(0x159)]=_0xcc5331,this[_0x573e89(0xf5)]=_0x573e89(0x160),this[_0x573e89(0x138)]=_0x573e89(0x127),this[_0x573e89(0x140)]=_0x2ae5db+_0x573e89(0x155)+_0x573e89(0x14b));}else{const _0x987e30=_0x1ce124(_0x40960c),_0x51e7ae=new _0x2050b3(_0x987e30[_0x573e89(0x162)](),_0x987e30[_0x573e89(0x10c)](),_0x987e30[_0x573e89(0x146)]()+0x1),_0x4cb652=_0x51e7ae[_0x573e89(0x118)]()/0x3e8;return _0xedbfdf>_0x4cb652;}}else{if((_0x4aefcb[_0x573e89(0x113)]===_0x573e89(0xce)||_0x4aefcb[_0x573e89(0x113)]===_0x573e89(0xd1))&&isExpired(_0x46c3e2[_0x573e89(0xd6)],_0x4aefcb[_0x573e89(0x15d)])){if(_0x573e89(0x11b)===_0x573e89(0x100))return _0x1d71a0[_0x573e89(0x116)](_0x31d51a[_0x573e89(0x114)]);else _0x2bf27a=new ExpiredLicenseRuntimeError(_0x46c3e2[_0x573e89(0x159)],toDate(_0x4aefcb[_0x573e89(0x15d)]),_0x46c3e2[_0x573e89(0xea)],toDate(_0x46c3e2[_0x573e89(0xd6)]));}else{if(_0x573e89(0x136)!==_0x573e89(0x136)){const _0x5cfa1f=_0x56fa68()-_0x5ea82e(_0x53cc20),_0x2a589a=_0x41cb8b[_0x573e89(0x130)](_0x5cfa1f/(0x18*0x3c*0x3c));return _0x2a589a;}else _0xa81798=!![];}}}}}const _0x17aaac=getProductCode(_0x46c3e2);if(_0x2bf27a&&!touchedProducts[_0x573e89(0xe8)](_0x17aaac)){if(_0x573e89(0x137)===_0x573e89(0x137))onMessage(_0x2bf27a,_0x46c3e2),touchedProducts[_0x573e89(0x10e)](_0x17aaac);else{const _0x4c7470=_0x2613c6[_0x573e89(0xef)](_0xe61a4(_0x11b633));_0x47be01[_0x573e89(0x161)](_0x4c7470[0x3])&&_0x4c7470[_0x573e89(0x11d)](0x3,0x0,'');const _0x541119={'products':_0x4c7470[0x1][_0x573e89(0x121)](([_0x3515bc,_0x533279,_0x4b9398])=>({'code':_0x3515bc,'licenseExpirationDate':_0x533279,'trial':_0x131c27(_0x4b9398)})),'userId':_0x4c7470[0x2],'integrity':_0x4c7470[0x3],'licenses':_0x4c7470[0x4],'scriptKey':!![]};_0x62251b[_0x573e89(0x14e)]=_0x514ed8[_0x573e89(0x11e)](_0x541119);}}return cache[_0x573e89(0x10d)](_0x46c3e2[_0x573e89(0x114)],_0xa81798),_0xa81798;}function onMessage(_0xa638ad,_0x50bfc2){const _0x14dc9e=_0x4bd098;if(typeof console===_0x14dc9e(0xeb)){if(_0x14dc9e(0xe6)!==_0x14dc9e(0x15a)){const _0x4ad696=logHeader(_0xa638ad[_0x14dc9e(0xf5)])+('\\x20'+_0x50bfc2[_0x14dc9e(0x159)]),_0x4a1472=typeof console[_0x14dc9e(0xdd)]===_0x14dc9e(0x11a);if(_0x4a1472){if(_0x14dc9e(0xdc)!==_0x14dc9e(0x131))console[_0x14dc9e(0xdd)](_0x4ad696);else{const _0x4099c5=_0xa5984c(_0x17afe4(_0x300394[_0x14dc9e(0x15d)]));_0x191b5c(_0x2c88f3(),_0x19e56a[_0x14dc9e(0x15d)])?_0x427669=new _0x45e4e1(_0x3bfc7c[_0x14dc9e(0x159)],_0x4099c5):(_0x242f63=new _0x544c82(_0x2be709[_0x14dc9e(0x159)],_0x4099c5),_0x566a92=!![]);}}else _0x14dc9e(0x133)===_0x14dc9e(0x133)?console[_0x14dc9e(0x14d)](_0x4ad696):_0x2df0e3[_0x14dc9e(0x11d)](0x3,0x0,'');console[_0x14dc9e(0x14d)](_0xa638ad[_0x14dc9e(0x140)]);if(_0x4a1472){if(_0x14dc9e(0x13c)===_0x14dc9e(0x13c))console[_0x14dc9e(0x15f)]();else{const _0xebc692=new _0x362053(_0x491338*0x3e8);return _0xebc692[_0x14dc9e(0xd8)](_0xebc692[_0x14dc9e(0x146)]()+_0x13f41d),_0x3ba99b(_0xebc692);}}}else return new _0x394c34(_0x4d5e1a*0x3e8);}}export{setScriptKey,validatePackage};\n","import * as licensing from '@progress/kendo-licensing';\n/**\n * @hidden\n */\nexport function validatePackage(packageMetadata) {\n    if (typeof licensing !== 'undefined') {\n        licensing.validatePackage(packageMetadata);\n    }\n    else {\n        var message = \"License activation failed for \" + packageMetadata.name + \"\\n\";\n        message += 'The @progress/kendo-licensing script is not loaded.\\n';\n        message += \"See \" + packageMetadata.licensingDocsUrl + \" for more information.\\n\";\n        console.warn(message);\n    }\n}\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n    name: '@progress/kendo-react-animation',\n    productName: 'KendoReact',\n    productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n    publishDate: 1642515961,\n    version: '',\n    licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var __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 __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};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { AnimationChild } from './AnimationChild';\nimport { TransitionGroup } from 'react-transition-group';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from './package-metadata';\nimport util from './util';\nvar styles = util.styles;\n// tslint:enable:max-line-length\nvar Animation = /** @class */ (function (_super) {\n    __extends(Animation, _super);\n    function Animation(props) {\n        var _this = _super.call(this, props) || this;\n        validatePackage(packageMetadata);\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    Animation.prototype.render = function () {\n        var _a = this.props, id = _a.id, style = _a.style, children = _a.children, component = _a.component, className = _a.className, childFactory = _a.childFactory, stackChildren = _a.stackChildren, componentChildStyle = _a.componentChildStyle, componentChildClassName = _a.componentChildClassName, other = __rest(_a, [\"id\", \"style\", \"children\", \"component\", \"className\", \"childFactory\", \"stackChildren\", \"componentChildStyle\", \"componentChildClassName\"]);\n        var transitionProps = {\n            id: id,\n            style: style,\n            component: component,\n            childFactory: childFactory,\n            className: classNames(styles['animation-container'], styles['animation-container-relative'], className)\n        };\n        var content = React.Children.map(children || null, function (child) { return (React.createElement(AnimationChild, __assign({}, other, { style: componentChildStyle, className: componentChildClassName }), child)); });\n        return (React.createElement(TransitionGroup, __assign({}, transitionProps), content));\n    };\n    /**\n     * @hidden\n     */\n    Animation.propTypes = {\n        children: PropTypes.oneOfType([\n            PropTypes.arrayOf(PropTypes.node),\n            PropTypes.node\n        ]),\n        childFactory: PropTypes.any,\n        className: PropTypes.string,\n        component: PropTypes.string,\n        id: PropTypes.string,\n        style: PropTypes.any,\n        transitionName: PropTypes.string.isRequired,\n        appear: PropTypes.bool.isRequired,\n        enter: PropTypes.bool.isRequired,\n        exit: PropTypes.bool.isRequired,\n        transitionEnterDuration: PropTypes.number.isRequired,\n        transitionExitDuration: PropTypes.number.isRequired\n    };\n    /**\n     * @hidden\n     */\n    Animation.defaultProps = {\n        component: 'div'\n    };\n    return Animation;\n}(React.Component));\nexport { Animation };\n","var __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 __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};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Animation } from './Animation';\nimport { noop } from '@progress/kendo-react-common';\nimport util from './util';\nvar Reveal = /** @class */ (function (_super) {\n    __extends(Reveal, _super);\n    function Reveal() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        /**\n         * @hidden\n         */\n        _this.state = {\n            maxHeight: undefined,\n            maxWidth: undefined\n        };\n        _this.componentWillEnter = function (event) {\n            var _a = _this.props, onEnter = _a.onEnter, onBeforeEnter = _a.onBeforeEnter;\n            if (onBeforeEnter) {\n                onBeforeEnter.call(undefined, event);\n            }\n            _this.updateContainerDimensions(event.animatedElement, function () {\n                if (onEnter) {\n                    onEnter.call(undefined, event);\n                }\n            });\n        };\n        _this.componentIsEntering = function (event) {\n            var onEntering = _this.props.onEntering;\n            _this.updateContainerDimensions(event.animatedElement, function () {\n                if (onEntering) {\n                    onEntering.call(undefined, event);\n                }\n            });\n        };\n        _this.componentWillExit = function (event) {\n            var onExit = _this.props.onExit;\n            _this.updateContainerDimensions(event.animatedElement, function () {\n                if (onExit) {\n                    onExit.call(undefined, event);\n                }\n            });\n        };\n        _this.updateContainerDimensions = function (node, done) {\n            if (done === void 0) { done = noop; }\n            var content = node.firstChild;\n            if (content) {\n                var newHeight = util.outerHeight(content);\n                var newWidth = util.outerWidth(content);\n                _this.setState({\n                    maxHeight: newHeight,\n                    maxWidth: newWidth\n                }, done);\n            }\n        };\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    Reveal.prototype.render = function () {\n        var _a = this.props, direction = _a.direction, children = _a.children, childFactory = _a.childFactory, other = __rest(_a, [\"direction\", \"children\", \"childFactory\"]);\n        var _b = this.state, maxHeight = _b.maxHeight, maxWidth = _b.maxWidth;\n        var maxOffset;\n        if (direction === 'vertical') {\n            maxOffset = { maxHeight: maxHeight ? maxHeight + \"px\" : null };\n        }\n        else {\n            maxOffset = { maxWidth: maxWidth ? maxWidth + \"px\" : null };\n        }\n        var animationEnteringStyle = {\n            maxHeight: maxOffset.maxHeight,\n            maxWidth: maxOffset.maxWidth\n        };\n        var factory = function (child) {\n            var result = childFactory ? childFactory(child) : child;\n            if (!result.props.in) {\n                return React.cloneElement(result, __assign({}, result.props, { style: __assign({}, result.props.style, { maxHeight: maxOffset.maxHeight, maxWidth: maxOffset.maxWidth }) }));\n            }\n            return result;\n        };\n        return (React.createElement(Animation, __assign({}, other, { childFactory: factory, onEnter: this.componentWillEnter, onEntering: this.componentIsEntering, onExit: this.componentWillExit, animationEnteringStyle: animationEnteringStyle, transitionName: \"reveal-\" + direction }), children));\n    };\n    /**\n     * @hidden\n     */\n    Reveal.propTypes = {\n        children: PropTypes.oneOfType([\n            PropTypes.arrayOf(PropTypes.node),\n            PropTypes.node\n        ]),\n        childFactory: PropTypes.any,\n        className: PropTypes.string,\n        direction: PropTypes.oneOf([\n            'horizontal',\n            'vertical'\n        ]),\n        component: PropTypes.string,\n        id: PropTypes.string,\n        style: PropTypes.any\n    };\n    /**\n     * @hidden\n     */\n    Reveal.defaultProps = {\n        appear: false,\n        enter: true,\n        exit: true,\n        transitionEnterDuration: 300,\n        transitionExitDuration: 300,\n        direction: 'vertical'\n    };\n    return Reveal;\n}(React.Component));\nexport { Reveal };\n","var __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})();\nimport * as React from 'react';\nimport { Reveal } from '@progress/kendo-react-animation';\n/**\n * The GridColumnMenuItemContent that will be used inside the Grid ColumnMenu.\n */\nvar GridColumnMenuItemContent = /** @class */ (function (_super) {\n    __extends(GridColumnMenuItemContent, _super);\n    function GridColumnMenuItemContent() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @hidden\n     */\n    GridColumnMenuItemContent.prototype.render = function () {\n        return (React.createElement(\"div\", { className: 'k-columnmenu-item-content' },\n            React.createElement(Reveal, { style: { position: 'relative', display: 'block' } }, this.props.show ? this.props.children : null)));\n    };\n    return GridColumnMenuItemContent;\n}(React.Component));\nexport { GridColumnMenuItemContent };\n","var defaultData = {\n    en: {\n        name: \"en\",\n        identity: {\n            version: {\n                _number: \"$Revision: 12418 $\",\n                _cldrVersion: \"29\"\n            },\n            language: \"en\"\n        },\n        territory: \"US\",\n        numbers: {\n            symbols: {\n                decimal: \".\",\n                group: \",\",\n                list: \";\",\n                percentSign: \"%\",\n                plusSign: \"+\",\n                minusSign: \"-\",\n                exponential: \"E\",\n                superscriptingExponent: \"×\",\n                perMille: \"‰\",\n                infinity: \"∞\",\n                nan: \"NaN\",\n                timeSeparator: \":\"\n            },\n            decimal: {\n                patterns: [\n                    \"n\"\n                ],\n                groupSize: [\n                    3\n                ]\n            },\n            scientific: {\n                patterns: [\n                    \"nEn\"\n                ],\n                groupSize: []\n            },\n            percent: {\n                patterns: [\n                    \"n%\"\n                ],\n                groupSize: [\n                    3\n                ]\n            },\n            currency: {\n                patterns: [\n                    \"$n\"\n                ],\n                groupSize: [\n                    3\n                ],\n                \"unitPattern-count-one\": \"n $\",\n                \"unitPattern-count-other\": \"n $\"\n            },\n            currencies: {\n                BGN: {\n                    displayName: \"Bulgarian Lev\",\n                    \"displayName-count-one\": \"Bulgarian lev\",\n                    \"displayName-count-other\": \"Bulgarian leva\",\n                    symbol: \"BGN\"\n                },\n                EUR: {\n                    displayName: \"Euro\",\n                    \"displayName-count-one\": \"euro\",\n                    \"displayName-count-other\": \"euros\",\n                    symbol: \"€\",\n                    \"symbol-alt-narrow\": \"€\"\n                },\n                USD: {\n                    displayName: \"US Dollar\",\n                    \"displayName-count-one\": \"US dollar\",\n                    \"displayName-count-other\": \"US dollars\",\n                    symbol: \"$\",\n                    \"symbol-alt-narrow\": \"$\"\n                }\n            },\n            localeCurrency: \"USD\",\n            accounting: {\n                patterns: [\n                    \"$n\",\n                    \"($n)\"\n                ],\n                groupSize: [\n                    3\n                ]\n            }\n        },\n        calendar: {\n            gmtFormat: \"GMT{0}\",\n            gmtZeroFormat: \"GMT\",\n            patterns: {\n                d: \"M/d/y\",\n                D: \"EEEE, MMMM d, y\",\n                m: \"MMM d\",\n                M: \"MMMM d\",\n                y: \"MMM y\",\n                Y: \"MMMM y\",\n                F: \"EEEE, MMMM d, y h:mm:ss a\",\n                g: \"M/d/y h:mm a\",\n                G: \"M/d/y h:mm:ss a\",\n                t: \"h:mm a\",\n                T: \"h:mm:ss a\",\n                s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n                u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n            },\n            dateTimeFormats: {\n                full: \"{1} 'at' {0}\",\n                long: \"{1} 'at' {0}\",\n                medium: \"{1}, {0}\",\n                short: \"{1}, {0}\",\n                availableFormats: {\n                    Bh: \"h B\",\n                    Bhm: \"h:mm B\",\n                    Bhms: \"h:mm:ss B\",\n                    d: \"d\",\n                    E: \"ccc\",\n                    EBhm: \"E h:mm B\",\n                    EBhms: \"E h:mm:ss B\",\n                    Ed: \"d E\",\n                    Ehm: \"E h:mm a\",\n                    EHm: \"E HH:mm\",\n                    Ehms: \"E h:mm:ss a\",\n                    EHms: \"E HH:mm:ss\",\n                    Gy: \"y G\",\n                    GyMMM: \"MMM y G\",\n                    GyMMMd: \"MMM d, y G\",\n                    GyMMMEd: \"E, MMM d, y G\",\n                    h: \"h a\",\n                    H: \"HH\",\n                    hm: \"h:mm a\",\n                    Hm: \"HH:mm\",\n                    hms: \"h:mm:ss a\",\n                    Hms: \"HH:mm:ss\",\n                    hmsv: \"h:mm:ss a v\",\n                    Hmsv: \"HH:mm:ss v\",\n                    hmv: \"h:mm a v\",\n                    Hmv: \"HH:mm v\",\n                    M: \"L\",\n                    Md: \"M/d\",\n                    MEd: \"E, M/d\",\n                    MMM: \"LLL\",\n                    MMMd: \"MMM d\",\n                    MMMEd: \"E, MMM d\",\n                    MMMMd: \"MMMM d\",\n                    \"MMMMW-count-one\": \"'week' W 'of' MMMM\",\n                    \"MMMMW-count-other\": \"'week' W 'of' MMMM\",\n                    ms: \"mm:ss\",\n                    y: \"y\",\n                    yM: \"M/y\",\n                    yMd: \"M/d/y\",\n                    yMEd: \"E, M/d/y\",\n                    yMMM: \"MMM y\",\n                    yMMMd: \"MMM d, y\",\n                    yMMMEd: \"E, MMM d, y\",\n                    yMMMM: \"MMMM y\",\n                    yQQQ: \"QQQ y\",\n                    yQQQQ: \"QQQQ y\",\n                    \"yw-count-one\": \"'week' w 'of' Y\",\n                    \"yw-count-other\": \"'week' w 'of' Y\"\n                }\n            },\n            timeFormats: {\n                full: \"h:mm:ss a zzzz\",\n                long: \"h:mm:ss a z\",\n                medium: \"h:mm:ss a\",\n                short: \"h:mm a\"\n            },\n            dateFormats: {\n                full: \"EEEE, MMMM d, y\",\n                long: \"MMMM d, y\",\n                medium: \"MMM d, y\",\n                short: \"M/d/yy\"\n            },\n            days: {\n                format: {\n                    abbreviated: [\n                        \"Sun\",\n                        \"Mon\",\n                        \"Tue\",\n                        \"Wed\",\n                        \"Thu\",\n                        \"Fri\",\n                        \"Sat\"\n                    ],\n                    narrow: [\n                        \"S\",\n                        \"M\",\n                        \"T\",\n                        \"W\",\n                        \"T\",\n                        \"F\",\n                        \"S\"\n                    ],\n                    short: [\n                        \"Su\",\n                        \"Mo\",\n                        \"Tu\",\n                        \"We\",\n                        \"Th\",\n                        \"Fr\",\n                        \"Sa\"\n                    ],\n                    wide: [\n                        \"Sunday\",\n                        \"Monday\",\n                        \"Tuesday\",\n                        \"Wednesday\",\n                        \"Thursday\",\n                        \"Friday\",\n                        \"Saturday\"\n                    ]\n                },\n                \"stand-alone\": {\n                    abbreviated: [\n                        \"Sun\",\n                        \"Mon\",\n                        \"Tue\",\n                        \"Wed\",\n                        \"Thu\",\n                        \"Fri\",\n                        \"Sat\"\n                    ],\n                    narrow: [\n                        \"S\",\n                        \"M\",\n                        \"T\",\n                        \"W\",\n                        \"T\",\n                        \"F\",\n                        \"S\"\n                    ],\n                    short: [\n                        \"Su\",\n                        \"Mo\",\n                        \"Tu\",\n                        \"We\",\n                        \"Th\",\n                        \"Fr\",\n                        \"Sa\"\n                    ],\n                    wide: [\n                        \"Sunday\",\n                        \"Monday\",\n                        \"Tuesday\",\n                        \"Wednesday\",\n                        \"Thursday\",\n                        \"Friday\",\n                        \"Saturday\"\n                    ]\n                }\n            },\n            months: {\n                format: {\n                    abbreviated: [\n                        \"Jan\",\n                        \"Feb\",\n                        \"Mar\",\n                        \"Apr\",\n                        \"May\",\n                        \"Jun\",\n                        \"Jul\",\n                        \"Aug\",\n                        \"Sep\",\n                        \"Oct\",\n                        \"Nov\",\n                        \"Dec\"\n                    ],\n                    narrow: [\n                        \"J\",\n                        \"F\",\n                        \"M\",\n                        \"A\",\n                        \"M\",\n                        \"J\",\n                        \"J\",\n                        \"A\",\n                        \"S\",\n                        \"O\",\n                        \"N\",\n                        \"D\"\n                    ],\n                    wide: [\n                        \"January\",\n                        \"February\",\n                        \"March\",\n                        \"April\",\n                        \"May\",\n                        \"June\",\n                        \"July\",\n                        \"August\",\n                        \"September\",\n                        \"October\",\n                        \"November\",\n                        \"December\"\n                    ]\n                },\n                \"stand-alone\": {\n                    abbreviated: [\n                        \"Jan\",\n                        \"Feb\",\n                        \"Mar\",\n                        \"Apr\",\n                        \"May\",\n                        \"Jun\",\n                        \"Jul\",\n                        \"Aug\",\n                        \"Sep\",\n                        \"Oct\",\n                        \"Nov\",\n                        \"Dec\"\n                    ],\n                    narrow: [\n                        \"J\",\n                        \"F\",\n                        \"M\",\n                        \"A\",\n                        \"M\",\n                        \"J\",\n                        \"J\",\n                        \"A\",\n                        \"S\",\n                        \"O\",\n                        \"N\",\n                        \"D\"\n                    ],\n                    wide: [\n                        \"January\",\n                        \"February\",\n                        \"March\",\n                        \"April\",\n                        \"May\",\n                        \"June\",\n                        \"July\",\n                        \"August\",\n                        \"September\",\n                        \"October\",\n                        \"November\",\n                        \"December\"\n                    ]\n                }\n            },\n            quarters: {\n                format: {\n                    abbreviated: [\n                        \"Q1\",\n                        \"Q2\",\n                        \"Q3\",\n                        \"Q4\"\n                    ],\n                    narrow: [\n                        \"1\",\n                        \"2\",\n                        \"3\",\n                        \"4\"\n                    ],\n                    wide: [\n                        \"1st quarter\",\n                        \"2nd quarter\",\n                        \"3rd quarter\",\n                        \"4th quarter\"\n                    ]\n                },\n                \"stand-alone\": {\n                    abbreviated: [\n                        \"Q1\",\n                        \"Q2\",\n                        \"Q3\",\n                        \"Q4\"\n                    ],\n                    narrow: [\n                        \"1\",\n                        \"2\",\n                        \"3\",\n                        \"4\"\n                    ],\n                    wide: [\n                        \"1st quarter\",\n                        \"2nd quarter\",\n                        \"3rd quarter\",\n                        \"4th quarter\"\n                    ]\n                }\n            },\n            dayPeriods: {\n                format: {\n                    abbreviated: {\n                        midnight: \"midnight\",\n                        am: \"AM\",\n                        \"am-alt-variant\": \"am\",\n                        noon: \"noon\",\n                        pm: \"PM\",\n                        \"pm-alt-variant\": \"pm\",\n                        morning1: \"in the morning\",\n                        afternoon1: \"in the afternoon\",\n                        evening1: \"in the evening\",\n                        night1: \"at night\"\n                    },\n                    narrow: {\n                        midnight: \"mi\",\n                        am: \"a\",\n                        \"am-alt-variant\": \"am\",\n                        noon: \"n\",\n                        pm: \"p\",\n                        \"pm-alt-variant\": \"pm\",\n                        morning1: \"in the morning\",\n                        afternoon1: \"in the afternoon\",\n                        evening1: \"in the evening\",\n                        night1: \"at night\"\n                    },\n                    wide: {\n                        midnight: \"midnight\",\n                        am: \"AM\",\n                        \"am-alt-variant\": \"am\",\n                        noon: \"noon\",\n                        pm: \"PM\",\n                        \"pm-alt-variant\": \"pm\",\n                        morning1: \"in the morning\",\n                        afternoon1: \"in the afternoon\",\n                        evening1: \"in the evening\",\n                        night1: \"at night\"\n                    }\n                },\n                \"stand-alone\": {\n                    abbreviated: {\n                        midnight: \"midnight\",\n                        am: \"AM\",\n                        \"am-alt-variant\": \"am\",\n                        noon: \"noon\",\n                        pm: \"PM\",\n                        \"pm-alt-variant\": \"pm\",\n                        morning1: \"morning\",\n                        afternoon1: \"afternoon\",\n                        evening1: \"evening\",\n                        night1: \"night\"\n                    },\n                    narrow: {\n                        midnight: \"midnight\",\n                        am: \"AM\",\n                        \"am-alt-variant\": \"am\",\n                        noon: \"noon\",\n                        pm: \"PM\",\n                        \"pm-alt-variant\": \"pm\",\n                        morning1: \"morning\",\n                        afternoon1: \"afternoon\",\n                        evening1: \"evening\",\n                        night1: \"night\"\n                    },\n                    wide: {\n                        midnight: \"midnight\",\n                        am: \"AM\",\n                        \"am-alt-variant\": \"am\",\n                        noon: \"noon\",\n                        pm: \"PM\",\n                        \"pm-alt-variant\": \"pm\",\n                        morning1: \"morning\",\n                        afternoon1: \"afternoon\",\n                        evening1: \"evening\",\n                        night1: \"night\"\n                    }\n                }\n            },\n            eras: {\n                format: {\n                    wide: {\n                        \"0\": \"Before Christ\",\n                        \"1\": \"Anno Domini\",\n                        \"0-alt-variant\": \"Before Common Era\",\n                        \"1-alt-variant\": \"Common Era\"\n                    },\n                    abbreviated: {\n                        \"0\": \"BC\",\n                        \"1\": \"AD\",\n                        \"0-alt-variant\": \"BCE\",\n                        \"1-alt-variant\": \"CE\"\n                    },\n                    narrow: {\n                        \"0\": \"B\",\n                        \"1\": \"A\",\n                        \"0-alt-variant\": \"BCE\",\n                        \"1-alt-variant\": \"CE\"\n                    }\n                }\n            },\n            dateFields: {\n                era: {\n                    wide: \"era\"\n                },\n                year: {\n                    wide: \"year\",\n                    short: \"yr.\",\n                    narrow: \"yr.\"\n                },\n                quarter: {\n                    wide: \"quarter\",\n                    short: \"qtr.\",\n                    narrow: \"qtr.\"\n                },\n                month: {\n                    wide: \"month\",\n                    short: \"mo.\",\n                    narrow: \"mo.\"\n                },\n                week: {\n                    wide: \"week\",\n                    short: \"wk.\",\n                    narrow: \"wk.\"\n                },\n                day: {\n                    wide: \"day\",\n                    short: \"day\",\n                    narrow: \"day\"\n                },\n                weekday: {\n                    wide: \"day of the week\"\n                },\n                dayperiod: {\n                    wide: \"AM/PM\"\n                },\n                hour: {\n                    wide: \"hour\",\n                    short: \"hr.\",\n                    narrow: \"hr.\"\n                },\n                minute: {\n                    wide: \"minute\",\n                    short: \"min.\",\n                    narrow: \"min.\"\n                },\n                second: {\n                    wide: \"second\",\n                    short: \"sec.\",\n                    narrow: \"sec.\"\n                },\n                millisecond: {\n                    wide: \"millisecond\",\n                    short: \"ms\",\n                    narrow: \"ms\"\n                },\n                zone: {\n                    wide: \"time zone\"\n                }\n            }\n        }\n    },\n    supplemental: {\n        likelySubtags: {\n            en: \"en-Latn-US\"\n        },\n        currencyData: {\n            region: {\n                US: [\n                    {\n                        USD: {\n                            _from: \"1792-01-01\"\n                        }\n                    }\n                ]\n            }\n        },\n        weekData: {\n            firstDay: {\n                US: \"sun\"\n            },\n            weekendStart: {\n                \"001\": \"sat\"\n            },\n            weekendEnd: {\n                \"001\": \"sun\"\n            }\n        }\n    }\n};\nexport default defaultData;","export default function isString(value) {\n    return typeof value === \"string\";\n}","import errorDetails from './error-details';\n\nvar formatRegExp = /\\{(\\d+)}?\\}/g;\n\nvar IntlError = function IntlError(ref) {\n    var name = ref.name;\n    var message = ref.message;\n\n    if (!name || !message) {\n        throw new Error(\"{ name: string, message: string } object is required!\");\n    }\n\n    this.name = name;\n    this.message = message;\n};\n\nIntlError.prototype.formatMessage = function formatMessage () {\n        var values = [], len = arguments.length;\n        while ( len-- ) values[ len ] = arguments[ len ];\n\n    var flattenValues = flatten(values);\n\n    var formattedMessage = this.message.replace(formatRegExp, function(match, index) {\n        return flattenValues[parseInt(index, 10)];\n    });\n\n    return ((this.name) + \": \" + formattedMessage);\n};\n\nIntlError.prototype.error = function error () {\n        var values = [], len = arguments.length;\n        while ( len-- ) values[ len ] = arguments[ len ];\n\n    return new Error(this.formatMessage(values));\n};\n\nvar flatten = function(arr) {\n    return arr.reduce(function (a, b) { return a.concat(b); }, []);\n};\n\nvar toIntlErrors = function(errors) {\n    var predicate = function(prev, name) {\n        prev[name] = new IntlError({ name: name, message: errors[name] });\n        return prev;\n    };\n\n    return Object.keys(errors).reduce(predicate, {});\n};\n\nvar errors = toIntlErrors(errorDetails);\n\nexport {\n    errors,\n    IntlError,\n    toIntlErrors\n};\n","//The error is represented by unique name and corresponding message\n//The message can contain placeholders with index, e.g. {0}, {1}\n\nexport default {\n    \"NoLocale\": \"Missing locale info for '{0}'\",\n    \"NoCurrency\": \"Cannot determine currency information. Please load the locale currencies data.\",\n    \"NoSupplementalCurrency\": \"Cannot determine currency. Please load the supplemental currencyData.\",\n    \"NoCurrencyRegion\": \"No currency data for region '{0}'\",\n    \"NoCurrencyDisplay\": \"Cannot determine currency display information. Please load the locale currencies data. The default culture does not include the all currencies data.\",\n    \"NoGMTInfo\": \"Cannot determine locale GMT format. Please load the locale timeZoneNames data.\",\n    \"NoWeekData\": \"Cannot determine locale first day of week. Please load the supplemental weekData.\",\n    \"NoFirstDay\": \"Cannot determine locale first day of week. Please load the supplemental weekData. The default culture includes only the 'en-US' first day info.\",\n    \"NoValidCurrency\": \"Cannot determine a default currency for the {0} locale. Please specify explicitly the currency with the format options.\",\n    \"NoDateFieldNames\": \"Cannot determine the locale date field names. Please load the locale dateFields data.\"\n};\n","import defaultData from './default-data';\nimport isString from '../common/is-string';\nimport { errors } from '../errors';\n\nfunction availableLocaleInfo(fullName, suffixes) {\n    var parts = fullName.split(\"-\");\n    var language = parts[0];\n    var script = parts[1];\n    var territory = parts[2];\n\n    return cldr[fullName] || (suffixes.indexOf(territory) !== -1 && cldr[language + \"-\" + territory]) || (suffixes.indexOf(script) !== -1 && cldr[language + \"-\" + script]) || cldr[language];\n}\n\nfunction localeFullName(language, suffixes) {\n    var likelySubtags = cldr.supplemental.likelySubtags;\n\n    for (var idx = 0; idx < suffixes.length; idx++) {\n        var name = likelySubtags[language + \"-\" + suffixes[idx ]];\n        if (name) {\n            return name;\n        }\n    }\n\n    if (likelySubtags[language]) {\n        return likelySubtags[language];\n    }\n}\n\nexport var cldr = defaultData;\n\nexport function getLocaleInfo(locale) {\n    var info;\n    if (isString(locale)) {\n        info = localeInfo(locale);\n    } else {\n        info = locale;\n    }\n    return info;\n}\n\nexport function localeInfo(locale) {\n    if (cldr[locale]) {\n        return cldr[locale];\n    }\n\n    var likelySubtags = cldr.supplemental.likelySubtags;\n    if (likelySubtags) {\n        var parts = locale.split(\"-\");\n        var language = parts[0];\n        var suffixes = parts.slice(1);\n        var fullName = localeFullName(language, suffixes);\n        var info = fullName ? availableLocaleInfo(fullName, suffixes) : null;\n        if (info) {\n            return info;\n        }\n    }\n\n    throw errors.NoLocale.error(locale);\n}\n","import { cldr } from './info';\n\nfunction territoryFromName(name, identity) {\n    var likelySubtags = cldr.supplemental.likelySubtags;\n    var parts = name.split(\"-\");\n    if (likelySubtags) {\n        var likelyName = likelySubtags[name] || likelySubtags[parts[0]];\n        if (likelyName) {\n            parts = likelyName.split(\"-\");\n        }\n    }\n\n    if (identity) {\n        for (var idx = parts.length - 1; idx >= 1; idx--) {\n            var part = parts[idx];\n            if (part === identity.variant || part === identity.script) {\n                parts.splice(idx, 1);\n            }\n        }\n    }\n\n    var length = parts.length;\n\n    if (length > 1) {\n        var territory = parts[length - 1];\n        return territory.toUpperCase();\n    }\n}\n\nexport default function localeTerritory(info) {\n    if (info.territory) {\n        return info.territory;\n    }\n\n    var name = info.name;\n    var identity = info.identity;\n    var territory;\n\n    if (identity && identity.territory) {\n        territory = identity.territory;\n    } else {\n        territory = territoryFromName(name, identity);\n    }\n\n    info.territory = territory;\n\n    return territory;\n}\n","export var DECIMAL = \"decimal\";\nexport var CURRENCY = \"currency\";\nexport var ACCOUNTING = \"accounting\";\nexport var PERCENT = \"percent\";\nexport var SCIENTIFIC = \"scientific\";\n\nexport var CURRENCY_PLACEHOLDER = \"$\";\nexport var PERCENT_PLACEHOLDER = \"%\";\nexport var NUMBER_PLACEHOLDER = \"n\";\n\nexport var LIST_SEPARATOR = \";\";\nexport var GROUP_SEPARATOR = \",\";\n\nexport var POINT = \".\";\nexport var EMPTY = \"\";\n\nexport var DEFAULT_LOCALE = \"en\";\n\n","import { getLocaleInfo } from './info';\nimport { EMPTY } from '../common/constants';\n\nfunction lowerArray(arr) {\n    var result = [];\n    for (var idx = 0; idx < arr.length; idx++) {\n        result.push(arr[idx].toLowerCase());\n    }\n    return result;\n}\n\nfunction lowerObject(obj) {\n    var result = {};\n    for (var field in obj) {\n        result[field] = obj[field].toLowerCase();\n    }\n    return result;\n}\n\nfunction cloneLower(obj) {\n    var result = Array.isArray(obj) ? lowerArray(obj) : lowerObject(obj);\n    return result;\n}\n\nexport default function dateFormatNames(locale, options) {\n    var type = options.type;\n    var nameType = options.nameType;\n    var standAlone = options.standAlone;\n    var lower = options.lower;\n    var info = getLocaleInfo(locale);\n    var formatType = standAlone ? \"stand-alone\" : \"format\";\n    var lowerNameType = (lower ? \"lower-\" : EMPTY) + nameType;\n    var formatNames = info.calendar[type][formatType];\n    var result = formatNames[lowerNameType];\n    if (!result && lower) {\n        result = formatNames[lowerNameType] = cloneLower(formatNames[nameType]);\n    }\n    return result;\n}","export default function parseRangeDate(value) {\n    var parts = value.split('-');\n    var year = parseInt(parts[0], 10);\n    var month = parseInt(parts[1], 10) - 1;\n    var day = parseInt(parts[2], 10);\n\n    return new Date(year, month, day);\n}\n","import { cldr, getLocaleInfo } from './info';\nimport { errors } from '../errors';\nimport localeTerritory from './territory';\nimport parseRangeDate from './parse-range-date';\n\n/* eslint-disable consistent-return */\n\nvar NoCurrency = errors.NoCurrency;\nvar NoCurrencyDisplay = errors.NoCurrencyDisplay;\nvar NoSupplementalCurrency = errors.NoSupplementalCurrency;\nvar NoCurrencyRegion = errors.NoCurrencyRegion;\nvar NoValidCurrency = errors.NoValidCurrency;\n\nvar DEFAULT_CURRENCY_FRACTIONS = 2;\nvar SYMBOL = \"symbol\";\nvar INVALID_CURRENCY_CODE = 'XXX';\n\nvar GLOBAL_CURRENCIES = {\n    '001': 'USD', // 001 refers to world. not sure if it is correct to assume USD but seems better than throw an error\n    '150': 'EUR' // 150 territory for Europe\n\n};\n\nfunction getCurrencyInfo(locale, currency, throwIfNoValid) {\n    var info = getLocaleInfo(locale);\n    var currencies = info.numbers.currencies;\n    if (!currencies) {\n        if (throwIfNoValid) {\n            throw NoCurrency.error();\n        }\n\n        return;\n    }\n\n    var currencyDisplayInfo = currencies[currency];\n\n    if (!currencyDisplayInfo) {\n        if (throwIfNoValid) {\n            throw NoCurrencyDisplay.error();\n        }\n\n        return;\n    }\n\n    return currencyDisplayInfo;\n}\n\nfunction lengthComparer(a, b) {\n    return b.length - a.length;\n}\n\nfunction regionCurrency(regionCurrencies) {\n    var latestValidUntil, latestValidUntilRange;\n    var latestStillValid, latestStillValidDate;\n\n    for (var idx = 0; idx < regionCurrencies.length; idx++) {\n        var currency = regionCurrencies[idx];\n        var code = Object.keys(currency)[0];\n        var info = currency[code];\n        if (code !== INVALID_CURRENCY_CODE && info._tender !== 'false' && info._from) {\n            if (!info._to) {\n                var stillValidDate = parseRangeDate(info._from);\n                if (!latestStillValidDate || latestStillValidDate < stillValidDate) {\n                    latestStillValid = code;\n                    latestStillValidDate = stillValidDate;\n                }\n            } else if (!latestStillValid) {\n                var validFrom = parseRangeDate(info._from);\n                var validTo = parseRangeDate(info._to);\n                if (!latestValidUntilRange || latestValidUntilRange.to < validTo || latestValidUntilRange.from < validFrom) {\n                    latestValidUntil = code;\n                    latestValidUntilRange = {\n                        from: validFrom,\n                        to: validTo\n                    };\n                }\n            }\n        }\n    }\n\n    return latestStillValid || latestValidUntil;\n}\n\nexport function currencyDisplays(locale, currency, throwIfNoValid) {\n    if ( throwIfNoValid === void 0 ) throwIfNoValid = true;\n\n    var currencyInfo = getCurrencyInfo(locale, currency, throwIfNoValid);\n    if (!currencyInfo) {\n        return;\n    }\n\n    if (!currencyInfo.displays) {\n        var displays = [ currency ];\n        for (var field in currencyInfo) {\n            displays.push(currencyInfo[field]);\n        }\n        displays.sort(lengthComparer);\n        currencyInfo.displays = displays;\n    }\n\n    return currencyInfo.displays;\n}\n\nexport function currencyDisplay(locale, options) {\n    var value = options.value;\n    var currency = options.currency;\n    var currencyDisplay = options.currencyDisplay; if ( currencyDisplay === void 0 ) currencyDisplay = SYMBOL;\n\n    if (currencyDisplay === \"code\") {\n        return currency;\n    }\n\n    var currencyInfo = getCurrencyInfo(locale, currency, true);\n    var result;\n\n    if (currencyDisplay === SYMBOL) {\n        result = currencyInfo[\"symbol-alt-narrow\"] || currencyInfo[SYMBOL];\n    } else {\n        if (typeof value === undefined || value !== 1) {\n            result = currencyInfo[\"displayName-count-other\"];\n        } else {\n            result = currencyInfo[\"displayName-count-one\"];\n        }\n    }\n\n    return result;\n}\n\nexport function currencyFractionOptions(code) {\n    var minimumFractionDigits = DEFAULT_CURRENCY_FRACTIONS;\n    var maximumFractionDigits = DEFAULT_CURRENCY_FRACTIONS;\n\n    var fractions = ((cldr.supplemental.currencyData || {}).fractions || {})[code];\n\n    if (fractions && fractions._digits) {\n        maximumFractionDigits = minimumFractionDigits = parseInt(fractions._digits, 10);\n    }\n\n    return {\n        minimumFractionDigits: minimumFractionDigits,\n        maximumFractionDigits: maximumFractionDigits\n    };\n}\n\nexport function territoryCurrencyCode(territory, throwIfNoValid) {\n    if ( throwIfNoValid === void 0 ) throwIfNoValid = true;\n\n    if (GLOBAL_CURRENCIES[territory]) {\n        return GLOBAL_CURRENCIES[territory];\n    }\n\n    var currencyData = cldr.supplemental.currencyData;\n    if (!currencyData) {\n        if (throwIfNoValid) {\n            throw NoSupplementalCurrency.error();\n        }\n\n        return;\n    }\n\n    var regionCurrencies = currencyData.region[territory];\n\n    if (!regionCurrencies) {\n        if (throwIfNoValid) {\n            throw NoCurrencyRegion.error(territory);\n        }\n\n        return;\n    }\n\n    var currencyCode = regionCurrency(regionCurrencies);\n\n    return currencyCode;\n}\n\nexport function localeCurrency(locale, throwIfNoValid) {\n    var info = getLocaleInfo(locale);\n    var numbers = info.numbers;\n\n    if (!numbers.localeCurrency) {\n        var currency = territoryCurrencyCode(localeTerritory(info), throwIfNoValid);\n\n        if (!currency && throwIfNoValid) {\n            throw NoValidCurrency.error(info.name);\n        }\n\n        numbers.localeCurrency = currency;\n    }\n\n    return numbers.localeCurrency;\n}\n","\nexport var DAYS_OF_WEEK = [ \"sun\", \"mon\", \"tue\", \"wed\", \"thu\", \"fri\", \"sat\" ];\n\nexport var DEFAULT_TERRITORY = '001';\n","import { cldr, getLocaleInfo } from './info';\nimport localeTerritory from './territory';\n\nimport { DAYS_OF_WEEK, DEFAULT_TERRITORY } from './constants';\nimport { errors } from '../errors';\n\nvar NoWeekData = errors.NoWeekData;\nvar NoFirstDay = errors.NoFirstDay;\n\nexport default function firstDay(locale) {\n    var info = getLocaleInfo(locale);\n\n    if (!isNaN(info.firstDay)) {\n        return info.firstDay;\n    }\n\n    var weekData = cldr.supplemental.weekData;\n    if (!weekData) {\n        throw NoWeekData.error();\n    }\n\n    var firstDay = weekData.firstDay[localeTerritory(info)] || weekData.firstDay[DEFAULT_TERRITORY];\n\n    if (!firstDay) {\n        throw NoFirstDay.error();\n    }\n\n    info.firstDay = DAYS_OF_WEEK.indexOf(firstDay);\n\n    return info.firstDay;\n}\n","import { cldr, getLocaleInfo } from './info';\nimport localeTerritory from './territory';\n\nimport { DAYS_OF_WEEK, DEFAULT_TERRITORY } from './constants';\nimport { errors } from '../errors';\n\nvar NoWeekData = errors.NoWeekData;\n\nexport default function weekendRange(locale) {\n    var info = getLocaleInfo(locale);\n\n    if (info.weekendRange) {\n        return info.weekendRange;\n    }\n\n    var weekData = cldr.supplemental.weekData;\n    if (!weekData) {\n        throw NoWeekData.error();\n    }\n\n    var territory = localeTerritory(info);\n    var start = weekData.weekendStart[territory] || weekData.weekendStart[DEFAULT_TERRITORY];\n    var end = weekData.weekendEnd[territory] || weekData.weekendEnd[DEFAULT_TERRITORY];\n\n    info.weekendRange = {\n        start: DAYS_OF_WEEK.indexOf(start),\n        end: DAYS_OF_WEEK.indexOf(end)\n    };\n\n    return info.weekendRange;\n}\n","export default function isNegativeZero(value) {\n    return (1 / value === -Infinity);\n}\n","import { currencyDisplay, localeCurrency } from '../cldr';\n\nexport default function formatCurrencySymbol(info, options) {\n    if ( options === void 0 ) options = {};\n\n    if (!options.currency) {\n        options.currency = localeCurrency(info, true);\n    }\n\n    var display = currencyDisplay(info, options);\n\n    return display;\n}\n","export default function groupInteger(number, start, end, options, info) {\n    var symbols = info.numbers.symbols;\n    var decimalIndex = number.indexOf(symbols.decimal);\n    var groupSizes = options.groupSize.slice();\n    var groupSize = groupSizes.shift();\n\n    var integerEnd = decimalIndex !== -1 ? decimalIndex : end + 1;\n\n    var integer = number.substring(start, integerEnd);\n    var result = number;\n    var integerLength = integer.length;\n\n    if (integerLength >= groupSize) {\n        var idx = integerLength;\n        var parts = [];\n\n        while (idx > -1) {\n            var value = integer.substring(idx - groupSize, idx);\n            if (value) {\n                parts.push(value);\n            }\n            idx -= groupSize;\n            var newGroupSize = groupSizes.shift();\n            groupSize = newGroupSize !== undefined ? newGroupSize : groupSize;\n\n            if (groupSize === 0) {\n                value = integer.substring(0, idx);\n                if (value) {\n                    parts.push(value);\n                }\n                break;\n            }\n        }\n\n        integer = parts.reverse().join(symbols.group);\n        result = number.substring(0, start) + integer + number.substring(integerEnd);\n    }\n\n    return result;\n}","import { CURRENCY, ACCOUNTING } from '../common/constants';\n\nexport default function isCurrencyStyle(style) {\n    return style === CURRENCY || style === ACCOUNTING;\n}","export default function pad(number, digits, right) {\n    if ( digits === void 0 ) digits = 2;\n    if ( right === void 0 ) right = false;\n\n    var count = digits - String(number).length;\n    var result = number;\n\n    if (count > 0) {\n        var padString = new Array(count + 1).join(\"0\");\n        result = right ? number + padString : padString + number;\n    }\n\n    return result;\n}","var MAX_PRECISION = 20;\n\nexport default function round(value, precision) {\n    var result = value;\n    var decimals = precision || 0;\n\n    result = result.toString().split('e');\n    result = Math.round(Number(result[0] + 'e' + (result[1] ? (Number(result[1]) + decimals) : decimals)));\n\n    result = result.toString().split('e');\n    result = Number(result[0] + 'e' + (result[1] ? (Number(result[1]) - decimals) : -decimals));\n\n    return result.toFixed(Math.min(decimals, MAX_PRECISION));\n}","import { PERCENT, SCIENTIFIC, NUMBER_PLACEHOLDER, CURRENCY_PLACEHOLDER, PERCENT_PLACEHOLDER, EMPTY, POINT } from '../common/constants';\nimport isNegativeZero from '../common/is-negative-zero';\nimport formatCurrencySymbol from './format-currency-symbol';\nimport groupInteger from './group-integer';\nimport isCurrencyStyle from './is-currency-style';\nimport pad from '../common/pad';\nimport round from '../common/round';\nimport { currencyFractionOptions } from '../cldr';\n\nvar DEFAULT_DECIMAL_ROUNDING = 3;\nvar DEFAULT_PERCENT_ROUNDING = 0;\n\nvar trailingZeroRegex = /0+$/;\n\nfunction fractionOptions(options) {\n    var minimumFractionDigits = options.minimumFractionDigits;\n    var maximumFractionDigits = options.maximumFractionDigits;\n    var style = options.style;\n    var isCurrency = isCurrencyStyle(style);\n    var currencyFractions;\n    if (isCurrency) {\n        currencyFractions = currencyFractionOptions(options.currency);\n    }\n\n    if (minimumFractionDigits === undefined) {\n        minimumFractionDigits = isCurrency ? currencyFractions.minimumFractionDigits : 0;\n    }\n\n    if (maximumFractionDigits === undefined) {\n        if (style === PERCENT) {\n            maximumFractionDigits = Math.max(minimumFractionDigits, DEFAULT_PERCENT_ROUNDING);\n        } else if (isCurrency) {\n            maximumFractionDigits = Math.max(minimumFractionDigits, currencyFractions.maximumFractionDigits);\n        } else {\n            maximumFractionDigits = Math.max(minimumFractionDigits, DEFAULT_DECIMAL_ROUNDING);\n        }\n    }\n\n    return {\n        minimumFractionDigits: minimumFractionDigits,\n        maximumFractionDigits: maximumFractionDigits\n    };\n}\n\nfunction applyPattern(value, pattern, symbol) {\n    var result = EMPTY;\n    for (var idx = 0, length = pattern.length; idx < length; idx++) {\n        var ch = pattern.charAt(idx);\n\n        if (ch === NUMBER_PLACEHOLDER) {\n            result += value;\n        } else if (ch === CURRENCY_PLACEHOLDER || ch === PERCENT_PLACEHOLDER) {\n            result += symbol;\n        } else {\n            result += ch;\n        }\n    }\n    return result;\n}\n\nfunction currencyUnitPattern(info, value) {\n    var currencyInfo = info.numbers.currency;\n    var pattern = value !== 1 ? currencyInfo[\"unitPattern-count-other\"] : currencyInfo[\"unitPattern-count-one\"];\n    if (value < 0) {\n        pattern = pattern.replace(NUMBER_PLACEHOLDER, (\"-\" + NUMBER_PLACEHOLDER));\n    }\n\n    return pattern;\n}\n\n\nexport default function standardNumberFormat(number, options, info) {\n    var symbols = info.numbers.symbols;\n    var style = options.style;\n    var isCurrency = isCurrencyStyle(style);\n\n    //return number in exponential format\n    if (style === SCIENTIFIC) {\n        var exponential = options.minimumFractionDigits !== undefined ? number.toExponential(options.minimumFractionDigits) : number.toExponential();\n        return exponential.replace(POINT, symbols.decimal);\n    }\n\n    var value = number;\n    var symbol;\n\n    if (isCurrency) {\n        options.value = value;\n        symbol = formatCurrencySymbol(info, options);\n    }\n\n    if (style === PERCENT) {\n        value *= 100;\n        symbol = symbols.percentSign;\n    }\n\n    var ref = fractionOptions(options);\n    var minimumFractionDigits = ref.minimumFractionDigits;\n    var maximumFractionDigits = ref.maximumFractionDigits;\n\n    value = round(value, maximumFractionDigits);\n\n    var negative = value < 0;\n    var negativeZero = isNegativeZero(number);\n\n    var parts = value.split(POINT);\n\n    var integer = parts[0];\n    var fraction = pad(parts[1] ? parts[1].replace(trailingZeroRegex, EMPTY) : EMPTY, minimumFractionDigits, true);\n\n    //exclude \"-\" if number is negative.\n    if (negative) {\n        integer = integer.substring(1);\n    }\n\n    if (options.minimumIntegerDigits) {\n        integer = pad(integer, options.minimumIntegerDigits);\n    }\n\n    var formattedValue = options.useGrouping !== false ? groupInteger(integer, 0, integer.length, options, info) : integer;\n\n    if (fraction) {\n        formattedValue += symbols.decimal + fraction;\n    }\n\n    var pattern;\n\n    if (isCurrency && options.currencyDisplay === \"name\") {\n        pattern = currencyUnitPattern(info, number);\n    } else {\n        var patterns = options.patterns;\n        pattern = (negative || negativeZero) ? patterns[1] || (\"-\" + patterns[0]) : patterns[0];\n    }\n\n    if (pattern === NUMBER_PLACEHOLDER && !negative) {\n        return formattedValue;\n    }\n\n    var result = applyPattern(formattedValue, pattern, symbol);\n\n    return result;\n}","import { PERCENT_PLACEHOLDER, CURRENCY_PLACEHOLDER, CURRENCY, PERCENT, EMPTY } from '../common/constants';\nimport formatCurrencySymbol from './format-currency-symbol';\n\nvar literalRegExp = /(\\\\.)|(['][^']*[']?)|([\"][^\"]*[\"]?)/g;\nvar PLACEHOLDER = \"__??__\";\n\nexport function setStyleOptions(formatOptions, info) {\n    var format = formatOptions.format;\n\n    //multiply number if the format has percent\n    if (format.indexOf(PERCENT_PLACEHOLDER) !== -1) {\n        formatOptions.style = PERCENT;\n        formatOptions.symbol = info.numbers.symbols.percentSign;\n        formatOptions.number *= 100;\n    }\n\n    if (format.indexOf(CURRENCY_PLACEHOLDER) !== -1) {\n        formatOptions.style = CURRENCY;\n        formatOptions.symbol = formatCurrencySymbol(info);\n    }\n}\n\nexport function setFormatLiterals(formatOptions) {\n    var format = formatOptions.format;\n    if (format.indexOf(\"'\") > -1 || format.indexOf(\"\\\"\") > -1 || format.indexOf(\"\\\\\") > -1) {\n        var literals = formatOptions.literals = [];\n        formatOptions.format = format.replace(literalRegExp, function(match) {\n            var quoteChar = match.charAt(0).replace(\"\\\\\", EMPTY);\n            var literal = match.slice(1).replace(quoteChar, EMPTY);\n\n            literals.push(literal);\n\n            return PLACEHOLDER;\n        });\n    }\n}\n\nexport function replaceLiterals(number, literals) {\n    var result = number;\n    if (literals) {\n        var length = literals.length;\n        for (var idx = 0; idx < length; idx++) {\n            result = result.replace(PLACEHOLDER, literals[idx]);\n        }\n    }\n    return result;\n}","import { CURRENCY, PERCENT, LIST_SEPARATOR, GROUP_SEPARATOR, CURRENCY_PLACEHOLDER, PERCENT_PLACEHOLDER, POINT, EMPTY } from '../common/constants';\nimport isNegativeZero from '../common/is-negative-zero';\nimport groupInteger from './group-integer';\nimport round from '../common/round';\nimport { setStyleOptions, setFormatLiterals, replaceLiterals } from './utils';\n\nvar SHARP = \"#\";\nvar ZERO = \"0\";\n\nvar trailingZerosRegExp = /(\\.(?:[0-9]*[1-9])?)0+$/g;\nvar trailingPointRegExp = /\\.$/;\nvar commaRegExp = /\\,/g;\n\nfunction trimTrailingZeros(value, lastZero) {\n    var trimRegex;\n\n    if (lastZero === 0) {\n        trimRegex = trailingZerosRegExp;\n    } else {\n        trimRegex = new RegExp((\"(\\\\.[0-9]{\" + lastZero + \"}[1-9]*)0+$\"), 'g');\n    }\n\n    return value.replace(trimRegex, '$1').replace(trailingPointRegExp, EMPTY);\n}\n\nfunction roundNumber(formatOptions) {\n    var number = formatOptions.number;\n    var format = formatOptions.format;\n    var decimalIndex = format.indexOf(POINT);\n\n    if (decimalIndex !== -1) {\n        var zeroIndex = format.lastIndexOf(ZERO) - decimalIndex;\n        var sharpIndex = format.lastIndexOf(SHARP) - decimalIndex;\n        var hasZero = zeroIndex > -1;\n        var hasSharp = sharpIndex > -1;\n        var fraction = number.toString().split(\"e\");\n\n        if (fraction[1]) {\n            fraction = round(number, Math.abs(fraction[1]));\n        } else {\n            fraction = fraction[0];\n        }\n        fraction = fraction.split(POINT)[1] || EMPTY;\n\n        var precision = fraction.length;\n        var trailingZeros = -1;\n\n        if (!hasZero && !hasSharp) {\n            formatOptions.format = format.substring(0, decimalIndex) + format.substring(decimalIndex + 1);\n            decimalIndex = -1;\n            precision = 0;\n        } else if (hasZero && zeroIndex > sharpIndex) {\n            precision = zeroIndex;\n        } else if (sharpIndex > zeroIndex) {\n            if (hasSharp && precision > sharpIndex) {\n                precision = sharpIndex;\n            } else if (hasZero && precision < zeroIndex) {\n                precision = zeroIndex;\n            }\n\n            trailingZeros = hasZero ? zeroIndex : 0;\n        }\n\n        if (precision > -1) {\n            number = round(number, precision);\n            if (trailingZeros > -1) {\n                number = trimTrailingZeros(number, trailingZeros);\n            }\n        }\n    } else {\n        number = round(number);\n    }\n\n    if (formatOptions.negative && (number * -1) >= 0 && !formatOptions.negativeZero) {\n        formatOptions.negative = false;\n    }\n\n    formatOptions.number = number;\n    formatOptions.decimalIndex = decimalIndex;\n}\n\nfunction isConstantFormat(format) {\n    return format.indexOf(SHARP) === -1 && format.indexOf(ZERO) === -1;\n}\n\nfunction setValueSpecificFormat(formatOptions) {\n    var number = formatOptions.number;\n    var format = formatOptions.format;\n    format = format.split(LIST_SEPARATOR);\n    if ((formatOptions.negative || formatOptions.negativeZero) && format[1]) {\n        format = format[1];\n        formatOptions.hasNegativeFormat = true;\n    } else if (number === 0) {\n        var zeroFormat = format[2];\n        format = zeroFormat || format[0];\n        if (zeroFormat && isConstantFormat(zeroFormat)) {\n            formatOptions.constant = zeroFormat;\n        }\n    } else {\n        format = format[0];\n    }\n\n    formatOptions.format = format;\n}\n\nfunction setGroupOptions(formatOptions) {\n    formatOptions.hasGroup = formatOptions.format.indexOf(GROUP_SEPARATOR) > -1;\n    if (formatOptions.hasGroup) {\n        formatOptions.format = formatOptions.format.replace(commaRegExp, EMPTY);\n    }\n}\n\nfunction placeholderIndex(index1, index2, start) {\n    var index;\n    if (index1 === -1 && index2 !== -1) {\n        index = index2;\n    } else if (index1 !== -1 && index2 === -1) {\n        index = index1;\n    } else {\n        index = start ? Math.min(index1, index2) : Math.max(index1, index2);\n    }\n    return index;\n}\n\nfunction setPlaceholderIndices(formatOptions) {\n    var format = formatOptions.format;\n    var sharpIndex = format.indexOf(SHARP);\n    var zeroIndex = format.indexOf(ZERO);\n\n    var start = placeholderIndex(sharpIndex, zeroIndex, true);\n\n    sharpIndex = format.lastIndexOf(SHARP);\n    zeroIndex = format.lastIndexOf(ZERO);\n\n    var end = placeholderIndex(sharpIndex, zeroIndex);\n\n    if (start === format.length) {\n        end = start;\n    }\n\n    formatOptions.start = start;\n    formatOptions.end = end;\n    formatOptions.lastZeroIndex = zeroIndex;\n}\n\nfunction replaceStyleSymbols(number, style, symbol) {\n    var result = number;\n    if (style === CURRENCY || style === PERCENT) {\n        result = EMPTY;\n        for (var idx = 0, length = number.length; idx < length; idx++) {\n            var ch = number.charAt(idx);\n            result += (ch === CURRENCY_PLACEHOLDER || ch === PERCENT_PLACEHOLDER) ? symbol : ch;\n        }\n    }\n    return result;\n}\n\nfunction replacePlaceHolders(formatOptions, info) {\n    var start = formatOptions.start;\n    var end = formatOptions.end;\n    var negative = formatOptions.negative;\n    var negativeZero = formatOptions.negativeZero;\n    var format = formatOptions.format;\n    var decimalIndex = formatOptions.decimalIndex;\n    var lastZeroIndex = formatOptions.lastZeroIndex;\n    var hasNegativeFormat = formatOptions.hasNegativeFormat;\n    var hasGroup = formatOptions.hasGroup;\n    var number = formatOptions.number;\n    var value = number.toString().split(POINT);\n    var length = format.length;\n    var integer = value[0];\n    var fraction = value[1] || EMPTY;\n    var integerLength = integer.length;\n    var replacement = EMPTY;\n\n    number = format.substring(0, start);\n\n    if ((negative || negativeZero) && !hasNegativeFormat) {\n        number += \"-\";\n    }\n\n    for (var idx = start; idx < length; idx++) {\n        var ch = format.charAt(idx);\n\n        if (decimalIndex === -1) {\n            if (end - idx < integerLength) {\n\n                number += integer;\n                break;\n            }\n        } else {\n            if (lastZeroIndex !== -1 && lastZeroIndex < idx) {\n                replacement = EMPTY;\n            }\n\n            if ((decimalIndex - idx) <= integerLength && decimalIndex - idx > -1) {\n                number += integer;\n                idx = decimalIndex;\n            }\n\n            if (decimalIndex === idx) {\n                number += (fraction ? info.numbers.symbols.decimal : EMPTY) + fraction;\n                idx += end - decimalIndex + 1;\n                continue;\n            }\n        }\n\n        if (ch === ZERO) {\n            number += ch;\n            replacement = ch;\n        } else if (ch === SHARP) {\n            number += replacement;\n        }\n    }\n\n    if (hasGroup) {\n        number = groupInteger(number, start + (negative && !hasNegativeFormat ? 1 : 0), Math.max(end, (integerLength + start)), info.numbers.decimal, info);\n    }\n\n    if (end >= start) {\n        number += format.substring(end + 1);\n    }\n\n    return number;\n}\n\nfunction applyCustomFormat(formatOptions, info) {\n    var number = formatOptions.number;\n    if (formatOptions.start !== -1) {\n        number = replacePlaceHolders(formatOptions, info);\n        number = replaceStyleSymbols(number, formatOptions.style, formatOptions.symbol);\n        number = replaceLiterals(number, formatOptions.literals);\n    }\n\n    return number;\n}\n\nexport default function customNumberFormat(number, format, info) {\n    var formatOptions = {\n        negative: number < 0,\n        number: Math.abs(number),\n        negativeZero: isNegativeZero(number),\n        format: format\n    };\n\n    setValueSpecificFormat(formatOptions);\n\n    if (formatOptions.constant) {\n        return formatOptions.constant;\n    }\n\n    setFormatLiterals(formatOptions);\n    setStyleOptions(formatOptions, info);\n    setGroupOptions(formatOptions);\n    roundNumber(formatOptions);\n    setPlaceholderIndices(formatOptions);\n\n    return applyCustomFormat(formatOptions, info);\n}","import { CURRENCY, ACCOUNTING, DECIMAL, PERCENT, SCIENTIFIC } from '../common/constants';\nimport isString from '../common/is-string';\n\nvar standardFormatRegExp = /^(n|c|p|e|a)(\\d*)$/i;\n\nfunction standardFormatOptions(format) {\n    var formatAndPrecision = standardFormatRegExp.exec(format);\n\n    if (formatAndPrecision) {\n        var options = {\n            style: DECIMAL\n        };\n\n        var style = formatAndPrecision[1].toLowerCase();\n\n        if (style === \"c\") {\n            options.style = CURRENCY;\n        } else if (style === \"a\") {\n            options.style = ACCOUNTING;\n        } else if (style === \"p\") {\n            options.style = PERCENT;\n        } else if (style === \"e\") {\n            options.style = SCIENTIFIC;\n        }\n\n        if (formatAndPrecision[2]) {\n            options.minimumFractionDigits = options.maximumFractionDigits = parseInt(formatAndPrecision[2], 10);\n        }\n\n        return options;\n    }\n}\n\nexport default function formatOptions(format) {\n    var options;\n    if (isString(format)) {\n        options = standardFormatOptions(format);\n    } else {\n        options = format;\n    }\n\n    return options;\n}","import { localeInfo } from '../cldr';\nimport { DECIMAL, DEFAULT_LOCALE, NUMBER_PLACEHOLDER, EMPTY } from '../common/constants';\nimport standardNumberFormat from './standard-number-format';\nimport customNumberFormat from './custom-number-format';\nimport formatOptions from './format-options';\n\nexport default function formatNumber(number, format, locale) {\n    if ( format === void 0 ) format = NUMBER_PLACEHOLDER;\n    if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n\n    if (number === undefined || number === null) {\n        return EMPTY;\n    }\n\n    if (!isFinite(number)) {\n        return String(number);\n    }\n\n    var info = localeInfo(locale);\n    var options = formatOptions(format);\n\n    var result;\n    if (options) {\n        var style = options.style || DECIMAL;\n        result = standardNumberFormat(number, Object.assign({}, info.numbers[style], options), info);\n    } else {\n        result = customNumberFormat(number, format, info);\n    }\n\n    return result;\n}\n","export default function isNumber(value) {\n    return typeof value === \"number\";\n}","import { localeInfo, localeCurrency, currencyDisplays } from '../cldr';\nimport { PERCENT, NUMBER_PLACEHOLDER, CURRENCY_PLACEHOLDER, DEFAULT_LOCALE, EMPTY, POINT } from '../common/constants';\nimport { setStyleOptions, setFormatLiterals } from './utils';\nimport isNumber from '../common/is-number';\nimport isCurrencyStyle from './is-currency-style';\nimport formatOptions from './format-options';\nimport isString from '../common/is-string';\n\nvar exponentRegExp = /[eE][\\-+]?[0-9]+/;\nvar nonBreakingSpaceRegExp = /\\u00A0/g;\n\nfunction cleanNegativePattern(number, patterns) {\n    if (patterns.length > 1) {\n        var parts = (patterns[1] || EMPTY).replace(CURRENCY_PLACEHOLDER, EMPTY).split(NUMBER_PLACEHOLDER);\n        if (number.indexOf(parts[0]) > -1 && number.indexOf(parts[1]) > -1) {\n            return number.replace(parts[0], EMPTY).replace(parts[1], EMPTY);\n        }\n    }\n}\n\nfunction cleanCurrencyNumber(value, info, format) {\n    var options = formatOptions(format) || {};\n    var isCurrency = isCurrencyStyle(options.style);\n    var number = value;\n    var negative;\n\n    var currency = options.currency || localeCurrency(info, isCurrency);\n\n    if (currency) {\n        var displays = currencyDisplays(info, currency, isCurrency);\n        if (displays) {\n            for (var idx = 0; idx < displays.length; idx++) {\n                var display = displays[idx];\n                if (number.includes(display)) {\n                    number = number.replace(display, EMPTY);\n                    isCurrency = true;\n                    break;\n                }\n            }\n        }\n\n        if (isCurrency) {\n            var cleanNumber = cleanNegativePattern(number, info.numbers.currency.patterns) ||\n                cleanNegativePattern(number, info.numbers.accounting.patterns);\n\n            if (cleanNumber) {\n                negative = true;\n                number = cleanNumber;\n            }\n\n        }\n    }\n\n    return {\n        number: number,\n        negative: negative\n    };\n}\n\nfunction cleanLiterals(number, formatOptions) {\n    var literals = formatOptions.literals;\n    var result = number;\n\n    if (literals) {\n        for (var idx = 0; idx < literals.length; idx++) {\n            result = result.replace(literals[idx], EMPTY);\n        }\n    }\n\n    return result;\n}\n\nexport default function parseNumber(value, locale, format) {\n    if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n    if ( format === void 0 ) format = {};\n\n    if (!value && value !== 0) {\n        return null;\n    }\n\n    if (isNumber(value)) {\n        return value;\n    }\n\n    var info = localeInfo(locale);\n    var symbols = info.numbers.symbols;\n\n    var number = value.toString();\n    var formatOptions = format || {};\n    var isPercent;\n\n    if (isString(format)) {\n        formatOptions = { format: format };\n        setFormatLiterals(formatOptions);\n        number = cleanLiterals(number, formatOptions);\n\n        setStyleOptions(formatOptions, info);\n    }\n\n    if (formatOptions.style === PERCENT || number.indexOf(symbols.percentSign) > -1) {\n        number = number.replace(symbols.percentSign, EMPTY);\n        isPercent = true;\n    }\n\n    if (exponentRegExp.test(number)) {\n        number = parseFloat(number.replace(symbols.decimal, POINT));\n        return isNaN(number) ? null : number;\n    }\n\n    var ref = cleanCurrencyNumber(number, info, formatOptions);\n    var negativeCurrency = ref.negative;\n    var currencyNumber = ref.number;\n    number = String(currencyNumber).trim();\n\n    var negativeSignIndex = number.indexOf(\"-\");\n    if (negativeSignIndex > 0) {\n        return null;\n    }\n\n    var isNegative = negativeSignIndex > -1;\n\n    isNegative = negativeCurrency !== undefined ? negativeCurrency : isNegative;\n\n    number = number.replace(\"-\", EMPTY)\n          .replace(nonBreakingSpaceRegExp, \" \")\n          .split(symbols.group.replace(nonBreakingSpaceRegExp, \" \")).join(EMPTY)\n          .replace(symbols.decimal, POINT);\n\n    number = parseFloat(number);\n\n    if (isNaN(number)) {\n        number = null;\n    } else if (isNegative) {\n        number *= -1;\n    }\n\n    if (number && isPercent) {\n        number /= 100;\n    }\n\n    return number;\n}\n","var formatRegExp = /\\{(\\d+)}/g;\n\nexport default function formatString(format) {\n    var values = arguments;\n\n    return format.replace(formatRegExp, function (match, index) {\n        var value = values[parseInt(index, 10) + 1];\n\n        return value;\n    });\n}","import formatString from '../common/format-string';\nimport isString from '../common/is-string';\nimport { EMPTY } from '../common/constants';\n\nvar REMOVAL_PENALTY = 120;\nvar ADDITION_PENALTY = 20;\nvar LENGHT_DELTA = [ 2, 1, 5, 3, 4 ];\nvar LONG_LESS_PENALTY_DELTA = -2;\nvar SHORT_LESS_PENALTY_DELTA = -1;\nvar SHORT_MORE_PENALTY_DELTA = 1;\nvar LONG_MORE_PENALTY_DELTA = 2;\n\nvar PENALTIES = {};\nPENALTIES[LONG_LESS_PENALTY_DELTA.toString()] = 8;\nPENALTIES[SHORT_LESS_PENALTY_DELTA.toString()] = 6;\nPENALTIES[LONG_MORE_PENALTY_DELTA.toString()] = 6;\nPENALTIES[SHORT_MORE_PENALTY_DELTA.toString()] = 3;\n\nvar VALUE_FORMAT_LENGTH = {\n    numeric: 1,\n    \"2-digit\": 2,\n    short: 3,\n    long: 4,\n    narrow: 5\n};\n\nvar TIME_SPECIFIERS_REGEX = /[hHmsSzZoOvVxX]/;\n\nfunction getHourSpecifier(options) {\n    return options.hour12 ? \"h\" : \"H\";\n}\n\nvar DATE_OPTIONS_MAP = [ {\n    key: \"era\",\n    specifier: \"G\"\n}, {\n    key: \"year\",\n    specifier: \"y\"\n}, {\n    key: \"month\",\n    specifier: \"M\"\n}, {\n    key: \"day\",\n    specifier: \"d\"\n}, {\n    key: \"weekday\",\n    specifier: \"E\"\n}, {\n    key: \"hour\",\n    getSpecifier: getHourSpecifier\n}, {\n    key: \"minute\",\n    specifier: \"m\"\n}, {\n    key: \"second\",\n    specifier: \"s\"\n}, {\n    key: \"timeZoneName\",\n    specifier: \"z\"\n} ];\n\nvar STAND_ALONE_SPECIFIERS = {\n    e: 'c',\n    E: 'c',\n    M: 'L',\n    Q: 'q'\n};\n\nvar specifiersRegex = {};\nvar resolvedFormats = {};\n\nfunction getSpecifierRegex(specifier) {\n    if (!specifiersRegex[specifier]) {\n        specifiersRegex[specifier] = new RegExp(specifier + \"+\");\n    }\n    return specifiersRegex[specifier];\n}\n\nfunction skeletonSpecifiers(skeleton) {\n    var result = [];\n    var current = skeleton.charAt(0);\n    var specifier = current;\n    for (var idx = 1; idx < skeleton.length; idx++) {\n        var character = skeleton.charAt(idx);\n        if (character === specifier) {\n            current += character;\n        } else {\n            result.push(current);\n            current = specifier = character;\n        }\n    }\n\n    result.push(current);\n\n    return result;\n}\n\nfunction findBestMatch(specifiers, availableFormats) {\n    var specifiersLength = specifiers.length;\n    var maxScore = -Number.MAX_VALUE;\n    var bestMatches, result;\n    for (var format in availableFormats) {\n        var matches = [];\n        var currentFormat = format.replace(\"v\", \"z\");\n        var score = 0;\n        for (var idx = 0; idx < specifiersLength; idx++) {\n            var specifier = specifiers[idx];\n            var specifierRegex = getSpecifierRegex(specifier[0]);\n            var match = (specifierRegex.exec(currentFormat) || [])[0];\n\n            if (!match) {\n                score -= REMOVAL_PENALTY;\n            } else {\n                currentFormat = currentFormat.replace(match, EMPTY);\n                if (match.length !== specifier.length) {\n                    var delta = Math.max(Math.min(LENGHT_DELTA[match.length] - LENGHT_DELTA[specifier.length], 2), -2);\n                    score -= PENALTIES[delta];\n                }\n            }\n\n            matches.push(match);\n\n            if (score < maxScore) {\n                break;\n            }\n        }\n\n        if (currentFormat.length) {\n            score -= skeletonSpecifiers(currentFormat).length * ADDITION_PENALTY;\n        }\n\n        if (score > maxScore) {\n            maxScore = score;\n            bestMatches = matches;\n            result = availableFormats[format];\n        }\n    }\n\n    result = result.replace(\"v\", \"z\");\n\n    for (var idx$1 = 0; idx$1 < specifiersLength; idx$1++) {\n        var bestMatch = bestMatches[idx$1];\n        if (bestMatch && bestMatch !== specifiers[idx$1]) {\n            var matchSpecifier = bestMatches[idx$1][0];\n            result = result.replace(getSpecifierRegex(matchSpecifier), specifiers[idx$1]);\n            if (STAND_ALONE_SPECIFIERS[matchSpecifier]) {\n                result = result.replace(getSpecifierRegex(STAND_ALONE_SPECIFIERS[matchSpecifier]), specifiers[idx$1]);\n            }\n        }\n    }\n\n    return result;\n}\n\nfunction cacheFormat(skeleton, format, locale) {\n    if (!resolvedFormats[locale]) {\n        resolvedFormats[locale] = {};\n    }\n    resolvedFormats[locale][skeleton] = format;\n}\n\n\nfunction skeletonFormat(skeleton, info) {\n    var availableFormats = info.calendar.dateTimeFormats.availableFormats;\n    if (availableFormats[skeleton]) {\n        return availableFormats[skeleton];\n    }\n    if (resolvedFormats[info.name] && resolvedFormats[info.name][skeleton]) {\n        return resolvedFormats[info.name][skeleton];\n    }\n    var timeStartIndex = skeleton.search(TIME_SPECIFIERS_REGEX);\n    var result;\n    if (timeStartIndex > 0) {\n        var dateSkeleton = skeleton.substr(0, timeStartIndex);\n        var timeSkeleton = skeleton.substr(timeStartIndex);\n\n        result = formatString(info.calendar.dateTimeFormats.short, //should be deterimed based on specifiers\n            availableFormats[timeSkeleton] || findBestMatch(skeletonSpecifiers(timeSkeleton), availableFormats),\n            availableFormats[dateSkeleton] || findBestMatch(skeletonSpecifiers(dateSkeleton), availableFormats));\n    } else {\n        result = findBestMatch(skeletonSpecifiers(skeleton), availableFormats);\n    }\n\n    cacheFormat(skeleton, result, info.name);\n    return result;\n}\n\nfunction skeletonFromOptions(options) {\n    var result = [];\n    for (var idx = 0; idx < DATE_OPTIONS_MAP.length; idx++) {\n        var option = DATE_OPTIONS_MAP[idx];\n        var field = option.key;\n        var value = options[field];\n        if (value) {\n            var spcifier = option.specifier || option.getSpecifier(options);\n            result.push(spcifier.repeat(VALUE_FORMAT_LENGTH[value]));\n        }\n    }\n\n    return result.join(EMPTY);\n}\n\nexport default function datePattern(format, info) {\n    var calendar = info.calendar;\n    var result;\n    if (isString(format)) {\n        if (calendar.patterns[format]) {\n            result = calendar.patterns[format];\n        } else {\n            result = format;\n        }\n    } else if (format) {\n        if (format.pattern) {\n            return format.pattern;\n        }\n\n        var skeleton = format.skeleton;\n        if (!skeleton) {\n            if (format.datetime) {\n                result = formatString(calendar.dateTimeFormats[format.datetime], calendar.timeFormats[format.datetime], calendar.dateFormats[format.datetime]);\n            } else if (format.date) {\n                result = calendar.dateFormats[format.date];\n            } else if (format.time) {\n                result = calendar.timeFormats[format.time];\n            } else {\n                skeleton = skeletonFromOptions(format);\n            }\n        }\n\n        if (skeleton) {\n            result = skeletonFormat(skeleton, info);\n        }\n    }\n\n    if (!result) {\n        result = calendar.patterns.d;\n    }\n\n    return result;\n}\n","export default function dateNameType(formatLength) {\n    var nameType;\n    if (formatLength <= 3) {\n        nameType = \"abbreviated\";\n    } else if (formatLength === 4) {\n        nameType = \"wide\";\n    } else if (formatLength === 5) {\n        nameType = \"narrow\";\n    } else if (formatLength === 6) {\n        nameType = \"short\";\n    }\n\n    return nameType;\n}","import dateFormatNames from '../cldr/date-format-names';\nimport dateNameType from './date-name-type';\n\nexport default function formatNames(locale, type, formatLength, standAlone, lower) {\n    return dateFormatNames(locale, {\n        type: type,\n        nameType: dateNameType(formatLength),\n        standAlone: standAlone,\n        lower: lower\n    });\n}","function isFunction(fun) {\n    return typeof(fun) === 'function';\n}\n\nexport default function isDate(value) {\n    return Boolean(value) && isFunction(value.getTime) && isFunction(value.getMonth);\n}\n","var MONTH = 'month';\nvar HOUR = 'hour';\nvar ZONE = 'zone';\nvar WEEKDAY = 'weekday';\nvar QUARTER = 'quarter';\n\nvar DATE_FIELD_MAP = {\n    'G': 'era',\n    'y': 'year',\n    'q': QUARTER,\n    'Q': QUARTER,\n    'M': MONTH,\n    'L': MONTH,\n    'd': 'day',\n    'E': WEEKDAY,\n    'c': WEEKDAY,\n    'e': WEEKDAY,\n    'h': HOUR,\n    'H': HOUR,\n    'k': HOUR,\n    'K': HOUR,\n    'm': 'minute',\n    's': 'second',\n    'S': 'millisecond',\n    'a': 'dayperiod',\n    'x': ZONE,\n    'X': ZONE,\n    'z': ZONE,\n    'Z': ZONE\n};\n\nvar dateFormatRegExp = /d{1,2}|E{1,6}|e{1,6}|c{3,6}|c{1}|M{1,5}|L{1,5}|y{1,4}|H{1,2}|h{1,2}|k{1,2}|K{1,2}|m{1,2}|a{1,5}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|x{1,5}|X{1,5}|G{1,5}|q{1,5}|Q{1,5}|\"[^\"]*\"|'[^']*'/g;\n\nexport { dateFormatRegExp, DATE_FIELD_MAP };","import { localeInfo, firstDay } from '../cldr';\nimport { DEFAULT_LOCALE, EMPTY } from '../common/constants';\nimport formatString from '../common/format-string';\nimport datePattern from './date-pattern';\nimport formatNames from './format-names';\nimport pad from '../common/pad';\nimport isDate from '../common/is-date';\nimport { dateFormatRegExp } from './constants';\n\nfunction formatDayOfWeekIndex(day, formatLength, localeInfo) {\n    var firstDayIndex = firstDay(localeInfo);\n    var dayIndex;\n    if (day < firstDayIndex) {\n        dayIndex = 7 - firstDayIndex + day;\n    } else {\n        dayIndex = day - firstDayIndex;\n    }\n\n    return dayIndex + 1;\n}\n\nfunction formatMonth(month, formatLength, info, standAlone) {\n    if (formatLength <= 2) {\n        return pad(month + 1, formatLength);\n    }\n    return formatNames(info, \"months\", formatLength, standAlone)[month];\n}\n\nfunction formatQuarter(date, formatLength, info, standAlone) {\n    var quarter = Math.floor(date.getMonth() / 3);\n    if (formatLength < 3) {\n        return quarter + 1;\n    }\n\n    return formatNames(info, \"quarters\", formatLength, standAlone)[quarter];\n}\n\n\nfunction formatTimeZone(date, info, options) {\n    var shortHours = options.shortHours;\n    var optionalMinutes = options.optionalMinutes;\n    var separator = options.separator;\n    var localizedName = options.localizedName;\n    var zZeroOffset = options.zZeroOffset;\n    var offset = date.getTimezoneOffset() / 60;\n    if (offset === 0 && zZeroOffset) {\n        return \"Z\";\n    }\n    var sign = offset <= 0 ? \"+\" : \"-\";\n    var hoursMinutes = Math.abs(offset).toString().split(\".\");\n    var minutes = hoursMinutes[1] || 0;\n    var result = sign + (shortHours ? hoursMinutes[0] : pad(hoursMinutes[0], 2));\n    if (minutes || !optionalMinutes) {\n        result += (separator ? \":\" : EMPTY) + pad(minutes, 2);\n    }\n\n    if (localizedName) {\n        var localizedFormat = offset === 0 ? info.calendar.gmtZeroFormat : info.calendar.gmtFormat;\n        result = formatString(localizedFormat, result);\n    }\n\n    return result;\n}\n\nfunction formatDayOfWeek(date, formatLength, info, standAlone) {\n    var result;\n    if (formatLength < 3) {\n        result = formatDayOfWeekIndex(date.getDay(), formatLength, info);\n    } else {\n        result = formatNames(info, \"days\", formatLength, standAlone)[date.getDay()];\n    }\n    return result;\n}\n\nvar formatters = {};\n\nformatters.d = function(date, formatLength) {\n    return pad(date.getDate(), formatLength);\n};\n\nformatters.E = function(date, formatLength, info) {\n    return formatNames(info, \"days\", formatLength)[date.getDay()];\n};\n\nformatters.M = function(date, formatLength, info) {\n    return formatMonth(date.getMonth(), formatLength, info, false);\n};\n\nformatters.L = function(date, formatLength, info) {\n    return formatMonth(date.getMonth(), formatLength, info, true);\n};\n\nformatters.y = function(date, formatLength) {\n    var year = date.getFullYear();\n    if (formatLength === 2) {\n        year = year % 100;\n    }\n    return pad(year, formatLength);\n};\n\nformatters.h = function(date, formatLength) {\n    var hours = date.getHours() % 12 || 12;\n    return pad(hours, formatLength);\n};\n\nformatters.H = function(date, formatLength) {\n    return pad(date.getHours(), formatLength);\n};\n\nformatters.k = function(date, formatLength) {\n    return pad(date.getHours() || 24, formatLength);\n};\n\nformatters.K = function(date, formatLength) {\n    return pad(date.getHours() % 12, formatLength);\n};\n\nformatters.m = function(date, formatLength) {\n    return pad(date.getMinutes(), formatLength);\n};\n\nformatters.s = function(date, formatLength) {\n    return pad(date.getSeconds(), formatLength);\n};\n\nformatters.S = function(date, formatLength) {\n    var milliseconds = date.getMilliseconds();\n    var result;\n    if (milliseconds !== 0) {\n        result = pad(String(milliseconds / 1000).split(\".\")[1].substr(0, formatLength), formatLength, true);\n    } else {\n        result = pad(EMPTY, formatLength);\n    }\n    return result;\n};\n\nformatters.a = function(date, formatLength, info) {\n    return formatNames(info, \"dayPeriods\", formatLength)[date.getHours() < 12 ? \"am\" : \"pm\"];\n};\n\nformatters.z = function(date, formatLength, info) {\n    return formatTimeZone(date, info, {\n        shortHours: formatLength < 4,\n        optionalMinutes: formatLength < 4,\n        separator: true,\n        localizedName: true\n    });\n};\n\nformatters.Z = function(date, formatLength, info) {\n    return formatTimeZone(date, info, {\n        separator: formatLength > 3,\n        localizedName: formatLength === 4,\n        zZeroOffset: formatLength === 5\n    });\n};\n\nformatters.x = function(date, formatLength, info) {\n    return formatTimeZone(date, info, {\n        optionalMinutes: formatLength === 1,\n        separator: formatLength === 3 || formatLength === 5\n    });\n};\n\nformatters.X = function(date, formatLength, info) {\n    return formatTimeZone(date, info, {\n        optionalMinutes: formatLength === 1,\n        separator: formatLength === 3 || formatLength === 5,\n        zZeroOffset: true\n    });\n};\n\nformatters.G = function(date, formatLength, info) {\n    var era = date.getFullYear() >= 0 ? 1 : 0;\n    return formatNames(info, \"eras\", formatLength)[era];\n};\n\nformatters.e = formatDayOfWeek;\n\nformatters.c = function(date, formatLength, info) {\n    return formatDayOfWeek(date, formatLength, info, true);\n};\n\nformatters.q = function(date, formatLength, info) {\n    return formatQuarter(date, formatLength, info, true);\n};\n\nformatters.Q = formatQuarter;\n\nexport default function formatDate(date, format, locale) {\n    if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n\n    if (!isDate(date)) {\n        if (date === undefined || date === null) {\n            return EMPTY;\n        }\n        return date;\n    }\n\n    var info = localeInfo(locale);\n    var pattern = datePattern(format, info);\n\n    return pattern.replace(dateFormatRegExp, function(match) {\n        var formatLength = match.length;\n        var result;\n\n        if (match.includes(\"'\") || match.includes(\"\\\"\")) {\n            result = match.slice(1, formatLength - 1);\n        } else {\n            result = formatters[match[0]](date, formatLength, info);\n        }\n\n        return result;\n    });\n}\n","export function convertTimeZone(date, fromOffset, toOffset) {\n    var fromLocalOffset = date.getTimezoneOffset();\n\n    var offsetDate = new Date(date.getTime() + (fromOffset - toOffset) * 60000);\n\n    var toLocalOffset = offsetDate.getTimezoneOffset();\n\n    return new Date(offsetDate.getTime() + (toLocalOffset - fromLocalOffset) * 60000);\n}\n\nexport function adjustDST(date, hours) {\n    if (!hours && date.getHours() === 23) {\n        date.setHours(date.getHours() + 2);\n    }\n}","import { adjustDST, convertTimeZone } from './time-utils';\nimport { localeInfo } from '../cldr';\nimport { DEFAULT_LOCALE, EMPTY } from '../common/constants';\nimport { errors } from '../errors';\nimport formatNames from './format-names';\nimport datePattern from './date-pattern';\nimport round from '../common/round';\nimport isDate from '../common/is-date';\n\nvar timeZoneOffsetRegExp = /([+|\\-]\\d{1,2})(:?)(\\d{2})?/;\nvar dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\nvar offsetRegExp = /[+-]\\d*/;\nvar numberRegExp = {\n    2: /^\\d{1,2}/,\n    3: /^\\d{1,3}/,\n    4: /^\\d{4}/\n};\nvar numberRegex = /\\d+/;\nvar PLACEHOLDER = \"{0}\";\n\nvar leadingSpacesRegex = /^ */;\nvar trailingSpacesRegex = / *$/;\n\nvar standardDateFormats = [\n    \"yyyy/MM/dd HH:mm:ss\",\n    \"yyyy/MM/dd HH:mm\",\n    \"yyyy/MM/dd\",\n    \"E MMM dd yyyy HH:mm:ss\",\n    \"yyyy-MM-ddTHH:mm:ss.SSSSSSSXXX\",\n    \"yyyy-MM-ddTHH:mm:ss.SSSXXX\",\n    \"yyyy-MM-ddTHH:mm:ss.SSXXX\",\n    \"yyyy-MM-ddTHH:mm:ssXXX\",\n    \"yyyy-MM-ddTHH:mm:ss.SSSSSSS\",\n    \"yyyy-MM-ddTHH:mm:ss.SSS\",\n    \"yyyy-MM-ddTHH:mmXXX\",\n    \"yyyy-MM-ddTHH:mmX\",\n    \"yyyy-MM-ddTHH:mm:ss\",\n    \"yyyy-MM-ddTHH:mm\",\n    \"yyyy-MM-dd HH:mm:ss\",\n    \"yyyy-MM-dd HH:mm\",\n    \"yyyy-MM-dd\",\n    \"HH:mm:ss\",\n    \"HH:mm\"\n];\nvar FORMATS_SEQUENCE = [ \"G\", \"g\", \"F\", \"Y\", \"y\", \"M\", \"m\", \"D\", \"d\", \"y\", \"T\", \"t\" ];\nvar TWO_DIGIT_YEAR_MAX = 2029;\n\nfunction outOfRange(value, start, end) {\n    return !(value >= start && value <= end);\n}\n\nfunction lookAhead(match, state) {\n    var format = state.format;\n    var idx = state.idx;\n    var i = 0;\n    while (format[idx] === match) {\n        i++;\n        idx++;\n    }\n    if (i > 0) {\n        idx -= 1;\n    }\n    state.idx = idx;\n    return i;\n}\n\nfunction getNumber(size, state) {\n    var regex = size ? (numberRegExp[size] || new RegExp('^\\\\d{1,' + size + '}')) : numberRegex,\n        match = state.value.substr(state.valueIdx, size).match(regex);\n\n    if (match) {\n        match = match[0];\n        state.valueIdx += match.length;\n        return parseInt(match, 10);\n    }\n    return null;\n}\n\nfunction getIndexByName(names, state, lower) {\n    var i = 0,\n        length = names.length,\n        name, nameLength,\n        matchLength = 0,\n        matchIdx = 0,\n        subValue;\n\n    for (; i < length; i++) {\n        name = names[i];\n        nameLength = name.length;\n        subValue = state.value.substr(state.valueIdx, nameLength);\n\n        if (lower) {\n            subValue = subValue.toLowerCase();\n        }\n\n        if (subValue === name && nameLength > matchLength) {\n            matchLength = nameLength;\n            matchIdx = i;\n        }\n    }\n\n    if (matchLength) {\n        state.valueIdx += matchLength;\n        return matchIdx + 1;\n    }\n\n    return null;\n}\n\nfunction checkLiteral(state) {\n    var result = false;\n    if (state.value.charAt(state.valueIdx) === state.format[state.idx]) {\n        state.valueIdx++;\n        result = true;\n    }\n    return result;\n}\n\nfunction calendarGmtFormats(calendar) {\n    var gmtFormat = calendar.gmtFormat;\n    var gmtZeroFormat = calendar.gmtZeroFormat;\n    if (!gmtFormat) {\n        throw errors.NoGMTInfo.error();\n    }\n\n    return [ gmtFormat.replace(PLACEHOLDER, EMPTY).toLowerCase(), gmtZeroFormat.replace(PLACEHOLDER, EMPTY).toLowerCase() ];\n}\n\nfunction parseTimeZoneOffset(state, info, options) {\n    var shortHours = options.shortHours;\n    var noSeparator = options.noSeparator;\n    var optionalMinutes = options.optionalMinutes;\n    var localizedName = options.localizedName;\n    var zLiteral = options.zLiteral;\n    state.UTC = true;\n\n    if (zLiteral && state.value.charAt(state.valueIdx) === \"Z\") {\n        state.valueIdx++;\n        return false;\n    }\n\n    if (localizedName && !getIndexByName(calendarGmtFormats(info.calendar), state, true)) {\n        return true;\n    }\n\n    var matches = timeZoneOffsetRegExp.exec(state.value.substr(state.valueIdx, 6));\n    if (!matches) {\n        return !localizedName;\n    }\n\n    var hoursMatch = matches[1];\n    var minutesMatch = matches[3];\n    var hoursOffset = parseInt(hoursMatch, 10);\n    var separator = matches[2];\n    var minutesOffset = parseInt(minutesMatch, 10);\n\n    if (isNaN(hoursOffset) || (!shortHours && hoursMatch.length !== 3) || (!optionalMinutes && isNaN(minutesOffset)) || (noSeparator && separator)) {\n        return true;\n    }\n\n    if (isNaN(minutesOffset)) {\n        minutesOffset = null;\n    }\n\n    if (outOfRange(hoursOffset, -12, 13) || (minutesOffset && outOfRange(minutesOffset, 0, 59))) {\n        return true;\n    }\n\n    state.valueIdx += matches[0].length;\n    state.hoursOffset = hoursOffset;\n    state.minutesOffset = minutesOffset;\n}\n\nfunction parseMonth(ch, state, info) {\n    var count = lookAhead(ch, state);\n    var names = formatNames(info, \"months\", count, ch === \"L\", true);\n\n    var month = count < 3 ? getNumber(2, state) : getIndexByName(names, state, true);\n\n    if (month === null || outOfRange(month, 1, 12)) {\n        return true;\n    }\n    state.month = month - 1;\n}\n\nfunction parseDayOfWeek(ch, state, info) {\n    var count = lookAhead(ch, state);\n    var names = formatNames(info, \"days\", count, ch === \"c\", true);\n    var dayOfWeek = count < 3 ? getNumber(1, state) : getIndexByName(names, state, true);\n    if ((!dayOfWeek && dayOfWeek !== 0) || outOfRange(dayOfWeek, 1, 7)) {\n        return true;\n    }\n}\n\nvar parsers = {};\n\nparsers.d = function(state) {\n    lookAhead(\"d\", state);\n    var day = getNumber(2, state);\n\n    if (day === null || outOfRange(day, 1, 31)) {\n        return true;\n    }\n\n    if (state.day === null) {\n        state.day = day;\n    }\n};\n\nparsers.E = function(state, info) {\n    var count = lookAhead(\"E\", state);\n    //validate if it matches the day?\n    var dayOfWeek = getIndexByName(formatNames(info, \"days\", count, false, true), state, true);\n    if (dayOfWeek === null) {\n        return true;\n    }\n};\n\nparsers.M = function(state, info) {\n    return parseMonth(\"M\", state, info);\n};\n\nparsers.L = function(state, info) {\n    return parseMonth(\"L\", state, info);\n};\n\nparsers.y = function(state) {\n    var count = lookAhead(\"y\", state);\n    var year = getNumber(count === 1 ? undefined : count, state);\n\n    if (year === null) {\n        return true;\n    }\n\n    if (count === 2) {\n        var currentYear = new Date().getFullYear();\n        year = (currentYear - currentYear % 100) + year;\n        if (year > TWO_DIGIT_YEAR_MAX) {\n            year -= 100;\n        }\n    }\n\n    state.year = year;\n};\n\nparsers.h = function(state) {\n    lookAhead(\"h\", state);\n\n    var hours = getNumber(2, state);\n    if (hours === 12) {\n        hours = 0;\n    }\n\n    if (hours === null || outOfRange(hours, 0, 11)) {\n        return true;\n    }\n\n    state.hours = hours;\n};\n\nparsers.K = function(state) {\n    lookAhead(\"K\", state);\n\n    var hours = getNumber(2, state);\n\n    if (hours === null || outOfRange(hours, 0, 11)) {\n        return true;\n    }\n\n    state.hours = hours;\n};\n\nparsers.a = function(state, info) {\n    var count = lookAhead(\"a\", state);\n    var periodFormats = formatNames(info, \"dayPeriods\", count, false, true);\n\n    var pmHour = getIndexByName([ periodFormats.pm ], state, true);\n    if (!pmHour && !getIndexByName([ periodFormats.am ], state, true)) {\n        return true;\n    }\n\n    state.pmHour = pmHour;\n};\n\nparsers.H = function(state) {\n    lookAhead(\"H\", state);\n    var hours = getNumber(2, state);\n    if (hours === null || outOfRange(hours, 0, 23)) {\n        return true;\n    }\n    state.hours = hours;\n};\n\nparsers.k = function(state) {\n    lookAhead(\"k\", state);\n\n    var hours = getNumber(2, state);\n\n    if (hours === null || outOfRange(hours, 1, 24)) {\n        return true;\n    }\n\n    state.hours = hours === 24 ? 0 : hours;\n};\n\nparsers.m = function(state) {\n    lookAhead(\"m\", state);\n    var minutes = getNumber(2, state);\n\n    if (minutes === null || outOfRange(minutes, 0, 59)) {\n        return true;\n    }\n\n    state.minutes = minutes;\n};\n\nparsers.s = function(state) {\n    lookAhead(\"s\", state);\n    var seconds = getNumber(2, state);\n    if (seconds === null || outOfRange(seconds, 0, 59)) {\n        return true;\n    }\n    state.seconds = seconds;\n};\n\nparsers.S = function(state) {\n    var count = lookAhead(\"S\", state);\n    var match = state.value.substr(state.valueIdx, count);\n    var milliseconds = null;\n\n    if (!isNaN(parseInt(match, 10))) {\n        milliseconds = parseFloat(\"0.\" + match, 10);\n        milliseconds = round(milliseconds, 3);\n        milliseconds *= 1000;\n        state.valueIdx += count;\n    }\n\n    if (milliseconds === null || outOfRange(milliseconds, 0, 999)) {\n        return true;\n    }\n\n    state.milliseconds = milliseconds;\n};\n\nparsers.z = function(state, info) {\n    var count = lookAhead(\"z\", state);\n\n    var shortFormat = count < 4;\n\n    var invalid = parseTimeZoneOffset(state, info, {\n        shortHours: shortFormat,\n        optionalMinutes: shortFormat,\n        localizedName: true\n    });\n\n    if (invalid) {\n        return invalid;\n    }\n};\n\nparsers.Z = function(state, info) {\n    var count = lookAhead(\"Z\", state);\n\n    var invalid = parseTimeZoneOffset(state, info, {\n        noSeparator: count < 4,\n        zLiteral: count === 5,\n        localizedName: count === 4\n    });\n\n    if (invalid) {\n        return invalid;\n    }\n};\n\nparsers.x = function(state, info) {\n    var count = lookAhead(\"x\", state);\n\n    var invalid = parseTimeZoneOffset(state, info, {\n        noSeparator: count !== 3 && count !== 5,\n        optionalMinutes: count === 1\n    });\n    if (invalid) {\n        return invalid;\n    }\n};\n\nparsers.X = function(state, info) {\n    var count = lookAhead(\"X\", state);\n\n    var invalid = parseTimeZoneOffset(state, info, {\n        noSeparator: count !== 3 && count !== 5,\n        optionalMinutes: count === 1,\n        zLiteral: true\n    });\n    if (invalid) {\n        return invalid;\n    }\n};\n\nparsers.G = function(state, info) {\n    var count = lookAhead(\"G\", state);\n    var eras = formatNames(info, \"eras\", count, false, true);\n    var era = getIndexByName([ eras[0], eras[1] ], state, true);\n\n    if (era === null) {\n        return true;\n    }\n};\n\nparsers.e = function(state, info) {\n    return parseDayOfWeek(\"e\", state, info);\n};\n\nparsers.c = function(state, info) {\n    return parseDayOfWeek(\"c\", state, info);\n};\n\nfunction createDate(state) {\n    var year = state.year;\n    var month = state.month;\n    var day = state.day;\n    var hours = state.hours;\n    var minutes = state.minutes;\n    var seconds = state.seconds;\n    var milliseconds = state.milliseconds;\n    var pmHour = state.pmHour;\n    var UTC = state.UTC;\n    var hoursOffset = state.hoursOffset;\n    var minutesOffset = state.minutesOffset;\n    var hasTime = hours !== null || minutes !== null || seconds || null;\n    var date = new Date();\n    var result;\n\n    if (year === null && month === null && day === null && hasTime) {\n        year = date.getFullYear();\n        month = date.getMonth();\n        day = date.getDate();\n    } else {\n        if (year === null) {\n            year = date.getFullYear();\n        }\n\n        if (day === null) {\n            day = 1;\n        }\n    }\n\n    if (pmHour && hours < 12) {\n        hours += 12;\n    }\n\n    if (UTC) {\n        if (hoursOffset) {\n            hours += -hoursOffset;\n        }\n\n        if (minutesOffset) {\n            minutes += -minutesOffset * (hoursOffset < 0 ? -1 : 1);\n        }\n\n        result = new Date(Date.UTC(year, month, day, hours, minutes, seconds, milliseconds));\n    } else {\n        result = new Date(year, month, day, hours, minutes, seconds, milliseconds);\n        adjustDST(result, hours);\n    }\n\n    if (year < 100) {\n        result.setFullYear(year);\n    }\n\n    if (result.getDate() !== day && UTC === undefined) {\n        return null;\n    }\n\n    return result;\n}\n\nfunction addFormatSpaces(value, format) {\n    var leadingSpaces = leadingSpacesRegex.exec(format)[0];\n    var trailingSpaces = trailingSpacesRegex.exec(format)[0];\n\n    return (\"\" + leadingSpaces + value + trailingSpaces);\n}\n\nfunction parseExact(value, format, info) {\n    var pattern = datePattern(format, info).split(EMPTY);\n\n    var state = {\n        format: pattern,\n        idx: 0,\n        value: addFormatSpaces(value, format),\n        valueIdx: 0,\n        year: null,\n        month: null,\n        day: null,\n        hours: null,\n        minutes: null,\n        seconds: null,\n        milliseconds: null\n    };\n    var length = pattern.length;\n    var literal = false;\n\n    for (; state.idx < length; state.idx++) {\n        var ch = pattern[state.idx];\n\n        if (literal) {\n            if (ch === \"'\") {\n                literal = false;\n            }\n\n            checkLiteral(state);\n        } else {\n            if (parsers[ch]) {\n                var invalid = parsers[ch](state, info);\n                if (invalid) {\n                    return null;\n                }\n            } else if (ch === \"'\") {\n                literal = true;\n                checkLiteral(state);\n            } else if (!checkLiteral(state)) {\n                return null;\n            }\n        }\n    }\n\n    if (state.valueIdx < value.length) {\n        return null;\n    }\n\n    return createDate(state) || null;\n}\n\nfunction parseMicrosoftDateOffset(offset) {\n    var sign = offset.substr(0, 1) === \"-\" ? -1 : 1;\n\n    var result = offset.substring(1);\n    result = (parseInt(result.substr(0, 2), 10) * 60) + parseInt(result.substring(2), 10);\n\n    return sign * result;\n}\n\nfunction parseMicrosoftDateFormat(value) {\n    if (value && value.indexOf(\"/D\") === 0) {\n        var date = dateRegExp.exec(value);\n        if (date) {\n            date = date[1];\n            var tzoffset = offsetRegExp.exec(date.substring(1));\n\n            date = new Date(parseInt(date, 10));\n\n            if (tzoffset) {\n                tzoffset = parseMicrosoftDateOffset(tzoffset[0]);\n                date = convertTimeZone(date, date.getTimezoneOffset(), 0);\n                date = convertTimeZone(date, 0, -1 * tzoffset);\n            }\n\n            return date;\n        }\n    }\n}\n\nfunction defaultFormats(calendar) {\n    var formats = [];\n    var patterns = calendar.patterns;\n    var length = FORMATS_SEQUENCE.length;\n\n    for (var idx = 0; idx < length; idx++) {\n        formats.push(patterns[FORMATS_SEQUENCE[idx]]);\n    }\n\n    return formats.concat(standardDateFormats);\n}\n\nexport default function parseDate(value, formats, locale) {\n    if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n\n    if (!value) {\n        return null;\n    }\n\n    if (isDate(value)) {\n        return value;\n    }\n\n    var parseValue = String(value).trim();\n    var date = parseMicrosoftDateFormat(parseValue);\n    if (date) {\n        return date;\n    }\n\n    var info = localeInfo(locale);\n    var parseFormats = formats || defaultFormats(info.calendar);\n    parseFormats = Array.isArray(parseFormats) ? parseFormats : [ parseFormats ];\n\n    var length = parseFormats.length;\n\n    for (var idx = 0; idx < length; idx++) {\n        date = parseExact(parseValue, parseFormats[idx], info);\n        if (date) {\n            return date;\n        }\n    }\n\n    return date;\n}\n","import { DEFAULT_LOCALE } from '../common/constants';\nimport isNumber from '../common/is-number';\nimport datePattern from './date-pattern';\nimport dateNameType from './date-name-type';\nimport { dateFormatRegExp, DATE_FIELD_MAP } from './constants';\nimport { localeInfo } from '../cldr';\n\nvar NAME_TYPES = {\n    month: {\n        type: 'months',\n        minLength: 3,\n        standAlone: 'L'\n    },\n\n    quarter: {\n        type: 'quarters',\n        minLength: 3,\n        standAlone: 'q'\n    },\n\n    weekday: {\n        type: 'days',\n        minLength: {\n            E: 0,\n            c: 3,\n            e: 3\n        },\n        standAlone: 'c'\n    },\n\n    dayperiod: {\n        type: 'dayPeriods',\n        minLength: 0\n    },\n\n    era: {\n        type: 'eras',\n        minLength: 0\n    }\n};\n\nvar LITERAL = 'literal';\n\nfunction addLiteral(parts, value) {\n    var lastPart = parts[parts.length - 1];\n    if (lastPart && lastPart.type === LITERAL) {\n        lastPart.pattern += value;\n    } else {\n        parts.push({\n            type: LITERAL,\n            pattern: value\n        });\n    }\n}\n\nfunction isHour12(pattern) {\n    return pattern === 'h' || pattern === 'K';\n}\n\nexport default function splitDateFormat(format, locale) {\n    if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n\n    var info = localeInfo(locale);\n    var pattern = datePattern(format, info);\n    var parts = [];\n    var lastIndex = dateFormatRegExp.lastIndex = 0;\n    var match = dateFormatRegExp.exec(pattern);\n\n    while (match) {\n        var value = match[0];\n\n        if (lastIndex < match.index) {\n            addLiteral(parts, pattern.substring(lastIndex, match.index));\n        }\n\n        if (value.startsWith('\"') || value.startsWith(\"'\")) {\n            addLiteral(parts, value);\n        } else {\n            var specifier = value[0];\n            var type = DATE_FIELD_MAP[specifier];\n            var part = {\n                type: type,\n                pattern: value\n            };\n\n            if (type === 'hour') {\n                part.hour12 = isHour12(value);\n            }\n\n            var names = NAME_TYPES[type];\n\n            if (names) {\n                var minLength = isNumber(names.minLength) ? names.minLength : names.minLength[specifier];\n                var patternLength = value.length;\n\n                if (patternLength >= minLength) {\n                    part.names = {\n                        type: names.type,\n                        nameType: dateNameType(patternLength),\n                        standAlone: names.standAlone === specifier\n                    };\n                }\n            }\n\n            parts.push(part);\n        }\n\n        lastIndex = dateFormatRegExp.lastIndex;\n        match = dateFormatRegExp.exec(pattern);\n    }\n\n    if (lastIndex < pattern.length) {\n        addLiteral(parts, pattern.substring(lastIndex));\n    }\n\n    return parts;\n}\n","import { formatDate } from './dates';\nimport { formatNumber } from './numbers';\nimport { EMPTY } from './common/constants';\nimport isDate from './common/is-date';\nimport isNumber from './common/is-number';\n\nvar formatRegExp = /\\{(\\d+)(:[^\\}]+)?\\}/g;\n\nexport function toString(value, format, locale) {\n    if (format) {\n        if (isDate(value)) {\n            return formatDate(value, format, locale);\n        } else if (isNumber(value)) {\n            return formatNumber(value, format, locale);\n        }\n    }\n\n    return value !== undefined && value !== null ? value : EMPTY;\n}\n\nexport function format(format, values, locale) {\n    return format.replace(formatRegExp, function(match, index, placeholderFormat) {\n        var value = values[parseInt(index, 10)];\n\n        return toString(value, placeholderFormat ? placeholderFormat.substring(1) : EMPTY, locale);\n    });\n}\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n    name: '@progress/kendo-react-intl',\n    productName: 'KendoReact',\n    productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n    publishDate: 1642516071,\n    version: '',\n    licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var _a;\n/**\n * @hidden\n */\nexport var noRecords = 'grid.noRecords';\n/**\n * @hidden\n */\nexport var pagerInfo = 'grid.pagerInfo';\n/**\n * @hidden\n */\nexport var pagerFirstPage = 'grid.pagerFirstPage';\n/**\n * @hidden\n */\nexport var pagerPreviousPage = 'grid.pagerPreviousPage';\n/**\n * @hidden\n */\nexport var pagerNextPage = 'grid.pagerNextPage';\n/**\n * @hidden\n */\nexport var pagerLastPage = 'grid.pagerLastPage';\n/**\n * @hidden\n */\nexport var pagerItemPerPage = 'grid.pagerItemsPerPage';\n/**\n * @hidden\n */\nexport var pagerPage = 'grid.pagerPage';\n/**\n * @hidden\n */\nexport var pagerOf = 'grid.pagerOf';\n/**\n * @hidden\n */\nexport var pagerTotalPages = 'grid.pagerTotalPages';\n/**\n * @hidden\n */\nexport var groupPanelEmpty = 'grid.groupPanelEmpty';\n/**\n * @hidden\n */\nexport var groupColumn = 'grid.groupColumn';\n/**\n * @hidden\n */\nexport var ungroupColumn = 'grid.ungroupColumn';\n/**\n * @hidden\n */\nexport var filterClearButton = 'grid.filterClearButton';\n/**\n * @hidden\n */\nexport var filterSubmitButton = 'grid.filterSubmitButton';\n/**\n * @hidden\n */\nexport var filterTitle = 'grid.filterTitle';\n/**\n * @hidden\n */\nexport var sortAscending = 'grid.sortAscending';\n/**\n * @hidden\n */\nexport var sortDescending = 'grid.sortDescending';\n/**\n * @hidden\n */\nexport var searchPlaceholder = 'grid.searchPlaceholder';\n/**\n * @hidden\n */\nexport var filterCheckAll = 'grid.filterCheckAll';\n/**\n * @hidden\n */\nexport var filterChooseOperator = 'grid.filterChooseOperator';\n/**\n * @hidden\n */\nexport var filterSelectedItems = 'grid.filterSelectedItems';\n/**\n * @hidden\n */\nexport var sortAriaLabel = 'grid.sortAriaLabel';\n/**\n * @hidden\n */\nexport var filterAriaLabel = 'grid.filterAriaLabel';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n    _a[noRecords] = 'No records available',\n    _a[groupPanelEmpty] = 'Drag a column header and drop it here to group by that column',\n    _a[filterClearButton] = 'Clear',\n    _a[filterSubmitButton] = 'Filter',\n    _a[filterTitle] = 'Filter',\n    _a[sortAscending] = 'Sort Ascending',\n    _a[sortDescending] = 'Sort Descending',\n    _a[sortAriaLabel] = 'Sortable',\n    _a[groupColumn] = 'Group Column',\n    _a[ungroupColumn] = 'Ungroup Column',\n    _a[pagerItemPerPage] = 'items per page',\n    _a[pagerInfo] = '{0} - {1} of {2} items',\n    _a[pagerFirstPage] = 'Go to the first page',\n    _a[pagerPreviousPage] = 'Go to the previous page',\n    _a[pagerNextPage] = 'Go to the next page',\n    _a[pagerLastPage] = 'Go to the last page',\n    _a[pagerPage] = 'Page',\n    _a[pagerOf] = 'of',\n    _a[pagerTotalPages] = '{0}',\n    _a[searchPlaceholder] = 'Search',\n    _a[filterCheckAll] = 'Check All',\n    _a[filterChooseOperator] = 'Choose Operator',\n    _a[filterSelectedItems] = 'selected items',\n    _a[filterAriaLabel] = 'Filter',\n    _a['grid.filterEqOperator'] = 'Is equal to',\n    _a['grid.filterNotEqOperator'] = 'Is not equal to',\n    _a['grid.filterIsNullOperator'] = 'Is null',\n    _a['grid.filterIsNotNullOperator'] = 'Is not null',\n    _a['grid.filterIsEmptyOperator'] = 'Is empty',\n    _a['grid.filterIsNotEmptyOperator'] = 'Is not empty',\n    _a['grid.filterStartsWithOperator'] = 'Starts with',\n    _a['grid.filterContainsOperator'] = 'Contains',\n    _a['grid.filterNotContainsOperator'] = 'Does not contain',\n    _a['grid.filterEndsWithOperator'] = 'Ends with',\n    _a['grid.filterGteOperator'] = 'Is greater than or equal to',\n    _a['grid.filterGtOperator'] = 'Is greater than',\n    _a['grid.filterLteOperator'] = 'Is less than or equal to',\n    _a['grid.filterLtOperator'] = 'Is less than',\n    _a['grid.filterIsTrue'] = 'Is true',\n    _a['grid.filterIsFalse'] = 'Is false',\n    _a['grid.filterBooleanAll'] = '(All)',\n    _a['grid.filterAfterOrEqualOperator'] = 'Is after or equal to',\n    _a['grid.filterAfterOperator'] = 'Is after',\n    _a['grid.filterBeforeOperator'] = 'Is before',\n    _a['grid.filterBeforeOrEqualOperator'] = 'Is before or equal to',\n    _a['grid.filterAndLogic'] = 'And',\n    _a['grid.filterOrLogic'] = 'Or',\n    _a);\n/**\n * @hidden\n */\nexport function pagerMessagesMap(pagerMessageKey) {\n    var messageKey = pagerMessageKey.replace(/^pager\\.([a-z])/, function (_match, group) { return 'grid.pager' + group.toUpperCase(); });\n    return ({ messageKey: messageKey, defaultMessage: messages[messageKey] });\n}\n","import * as coreIntl from '@telerik/kendo-intl';\nimport * as licensing from '@progress/kendo-licensing';\nimport { packageMetadata } from '../package-metadata';\n/* eslint-disable max-len */\n/**\n * A service which provides internationalization methods and is bound to a specific locale.\n */\nvar IntlService = /** @class */ (function () {\n    /**\n     * Creates a new instance of the internationalization service.\n     *\n     * @param locale - The locale that will be used by the internationalization methods.\n     */\n    function IntlService(locale) {\n        this.locale = locale;\n        if (typeof licensing !== 'undefined') {\n            licensing.validatePackage(packageMetadata);\n        }\n        else {\n            var message = \"License activation failed for \" + packageMetadata.name + \"\\n\";\n            message += 'The @progress/kendo-licensing script is not loaded.\\n';\n            message += \"See \" + packageMetadata.licensingDocsUrl + \" for more information.\\n\";\n            console.warn(message);\n        }\n        if (locale === '' && process.env.NODE_ENV !== 'production') {\n            throw 'Locale should not be empty string';\n        }\n    }\n    /**\n     * Formats a string with placeholders such as `Total amount {0:c}`.\n     *\n     * @param format - The format string.\n     * @param values - One or more values to output in the format string placeholders.\n     * @return - The formatted string.\n     */\n    IntlService.prototype.format = function (format) {\n        var values = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            values[_i - 1] = arguments[_i];\n        }\n        /* The following code retains backward compatibility with the old API */\n        if (values.length === 1 && Array.isArray(values[0])) {\n            return coreIntl.format(format, values[0], this.locale);\n        }\n        return coreIntl.format(format, values, this.locale);\n    };\n    /**\n     * Converts a `Date` object to a string based on the specified format. If no format is provided, the default short date format is used.\n     *\n     * @param value - The date which will be formatted.\n     * @param format - The format string or options.\n     * @return - The formatted date.\n     */\n    IntlService.prototype.formatDate = function (value, format) {\n        return coreIntl.formatDate(value, format, this.locale);\n    };\n    /**\n     * Converts an object to a string based on the specified format.\n     *\n     * @param value - The value which will be formatted.\n     * @param format - The format to use.\n     * @return - The formatted object.\n     */\n    IntlService.prototype.toString = function (value, format) {\n        return coreIntl.toString(value, format, this.locale);\n    };\n    /**\n     * Converts a string to a `Number`.\n     *\n     * @param value - The string which will be parsed.\n     * @param format - The format string or options.\n     * @return - The parsed number.\n     */\n    IntlService.prototype.parseNumber = function (value, format) {\n        return coreIntl.parseNumber(value, this.locale, format);\n    };\n    /**\n     * Converts a string to a `Date` object based on the specified format.\n     *\n     * @param value - The string which will be converted.\n     * @param format - The format strings or options.\n     * @return - The parsed date.\n     */\n    IntlService.prototype.parseDate = function (value, format) {\n        return coreIntl.parseDate(value, format, this.locale);\n    };\n    /**\n     * Converts a `Number` to a string based on the specified format.\n     *\n     * @param value - The number which will be formatted.\n     * @param format - The format string or options.\n     * @return - The formatted number.\n     */\n    IntlService.prototype.formatNumber = function (value, format) {\n        return coreIntl.formatNumber(value, format, this.locale);\n    };\n    /**\n     * Returns a localized date field name based on specific `dateFieldName` options.\n     *\n     * @param options - The detailed configuration for the desired date field name.\n     * @returns - The localized date field name from the current locale based on the option.\n     */\n    IntlService.prototype.dateFieldName = function (options) {\n        return coreIntl.dateFieldName(options, this.locale);\n    };\n    /**\n     * Returns the day names from the current locale based on the option.\n     *\n     * @param options - The detailed configuration for the desired date format.\n     * @return - The day names from the current locale based on the option.\n     */\n    IntlService.prototype.dateFormatNames = function (options) {\n        return coreIntl.dateFormatNames(this.locale, options);\n    };\n    /**\n     * Splits the date format into objects which contain information about each part of the pattern.\n     *\n     * @param format - The format string or options.\n     * @returns - The date format parts.\n     */\n    IntlService.prototype.splitDateFormat = function (format) {\n        return coreIntl.splitDateFormat(format, this.locale);\n    };\n    /**\n     * Returns the number symbols from the current locale.\n     *\n     * @return - The number symbols from the current locale.\n     */\n    IntlService.prototype.numberSymbols = function () {\n        return coreIntl.numberSymbols(this.locale);\n    };\n    /**\n     * Returns the first day index, starting from Sunday.\n     *\n     * @return - The index of the first day of the week (0 == Sunday).\n     */\n    IntlService.prototype.firstDay = function () {\n        return coreIntl.firstDay(this.locale);\n    };\n    return IntlService;\n}());\nexport { IntlService };\n// tslint:enable:max-line-length\n","import { localeInfo } from './info';\nimport { errors } from '../errors';\nimport { DEFAULT_LOCALE } from '../common/constants';\n\nexport default function dateFieldName(options, locale) {\n    if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n\n    var info = localeInfo(locale);\n    var dateFields = info.calendar.dateFields;\n    if (!dateFields) {\n        throw errors.NoDateFieldNames.error();\n    }\n\n    var fieldNameInfo = dateFields[options.type] || {};\n\n    return fieldNameInfo[options.nameType] || fieldNameInfo['wide'];\n}\n","import { getLocaleInfo } from './info';\n\nexport default function numberSymbols(locale) {\n    var info = getLocaleInfo(locale);\n\n    return info.numbers.symbols;\n}","/**\n * @hidden\n */\nexport var messages = Object.create({});\n","import { messages } from './messages';\n/**\n * A service which provides localization methods.\n */\nvar LocalizationService = /** @class */ (function () {\n    function LocalizationService(language) {\n        this.language = language;\n        if (language === '' && process.env.NODE_ENV !== 'production') {\n            throw 'Language should not be an empty string';\n        }\n    }\n    /* eslint-disable max-len */\n    /**\n     * Provides a string based on a key for the current language. When no string for the current language is available under this key, the `defaultValue` is returned.\n     *\n     * @param key - The key which identifies the string for the current language.\n     * @param defaultValue - The default value which will be returned when no string\n     * for the current language is available under the key.\n     * @return - The string for the current language.\n     */\n    // tslint:enable:max-line-length\n    LocalizationService.prototype.toLanguageString = function (key, defaultValue) {\n        if (this.language &&\n            messages[this.language] &&\n            messages[this.language].hasOwnProperty(key)) {\n            return messages[this.language][key];\n        }\n        else {\n            return defaultValue;\n        }\n    };\n    return LocalizationService;\n}());\nexport { LocalizationService };\n","import * as React from 'react';\nimport { IntlService } from '../Intl/IntlService';\nimport { LocalizationService } from '../Localization/LocalizationService';\n/** @hidden */\nexport var GlobalizationContext = React.createContext({\n    intl: new IntlService('en'),\n    localization: new LocalizationService()\n});\n","import { IntlService } from './Intl/IntlService';\nimport { LocalizationService } from './Localization/LocalizationService';\nimport { GlobalizationContext } from './globalization/GlobalizationContext';\n/* eslint-disable max-len */\n/**\n * Provides an internationalization service. When the passed component is a direct or indirect child of `IntlProvider`, the returned service uses the locale of the provider. Otherwise, uses `en` as a default locale. To handle locale changes, call the method on each `render`.\n *\n * @param componentClass - The React component class that will use the internationalization service.\n */\nexport function provideIntlService(component) {\n    if (!component && process.env.NODE_ENV !== 'production') {\n        throw \"Passed component - \" + component + \" is invalid.\";\n    }\n    return component.context && component.context.intl\n        ? component.context.intl\n        : new IntlService('en');\n}\n/**\n * Provides a localization service. When the passed component is a direct or indirect child of `LocalizationProvider`, the returned service uses the language of the provider. To handle locale changes, call the method on each `render`.\n *\n * @param componentClass - The React component class that will use the internationalization service.\n */\nexport function provideLocalizationService(component) {\n    if (!component && process.env.NODE_ENV !== 'production') {\n        throw \"Passed component - \" + component + \" is invalid.\";\n    }\n    return component.context && component.context.localization\n        ? component.context.localization\n        : new LocalizationService();\n}\n/**\n * A method which registers a component class or a functional stateless component for internationalization. When a component of that type is a direct or indirect child of `IntlProvider`, the locale of the provider is used. Otherwise, uses `en` as a default locale.\n *\n * @param component - The React component class that will use the internationalization methods.\n */\nexport function registerForIntl(component) {\n    component.contextType = GlobalizationContext;\n}\n/**\n * A method which registers a component class or a stateless functional component for localization. When a component of that type is a direct or indirect child of `LocalizationProvider`, the language of the provider is used.\n *\n * @param component - The React component class that will use the internationalization methods.\n */\nexport function registerForLocalization(component) {\n    component.contextType = GlobalizationContext;\n}\n// tslint:enable:max-line-length\n","import { messages } from './messages';\n/**\n * @hidden\n */\nexport var filterLogicList = [\n    { text: 'grid.filterAndLogic', operator: 'and' },\n    { text: 'grid.filterOrLogic', operator: 'or' }\n];\n/**\n * @hidden\n */\nexport var operators = {\n    'text': [\n        { text: 'grid.filterContainsOperator', operator: 'contains' },\n        { text: 'grid.filterNotContainsOperator', operator: 'doesnotcontain' },\n        { text: 'grid.filterEqOperator', operator: 'eq' },\n        { text: 'grid.filterNotEqOperator', operator: 'neq' },\n        { text: 'grid.filterStartsWithOperator', operator: 'startswith' },\n        { text: 'grid.filterEndsWithOperator', operator: 'endswith' },\n        { text: 'grid.filterIsNullOperator', operator: 'isnull' },\n        { text: 'grid.filterIsNotNullOperator', operator: 'isnotnull' },\n        { text: 'grid.filterIsEmptyOperator', operator: 'isempty' },\n        { text: 'grid.filterIsNotEmptyOperator', operator: 'isnotempty' }\n    ],\n    'numeric': [\n        { text: 'grid.filterEqOperator', operator: 'eq' },\n        { text: 'grid.filterNotEqOperator', operator: 'neq' },\n        { text: 'grid.filterGteOperator', operator: 'gte' },\n        { text: 'grid.filterGtOperator', operator: 'gt' },\n        { text: 'grid.filterLteOperator', operator: 'lte' },\n        { text: 'grid.filterLtOperator', operator: 'lt' },\n        { text: 'grid.filterIsNullOperator', operator: 'isnull' },\n        { text: 'grid.filterIsNotNullOperator', operator: 'isnotnull' }\n    ],\n    'date': [\n        { text: 'grid.filterEqOperator', operator: 'eq' },\n        { text: 'grid.filterNotEqOperator', operator: 'neq' },\n        { text: 'grid.filterAfterOrEqualOperator', operator: 'gte' },\n        { text: 'grid.filterAfterOperator', operator: 'gt' },\n        { text: 'grid.filterBeforeOperator', operator: 'lt' },\n        { text: 'grid.filterBeforeOrEqualOperator', operator: 'lte' },\n        { text: 'grid.filterIsNullOperator', operator: 'isnull' },\n        { text: 'grid.filterIsNotNullOperator', operator: 'isnotnull' }\n    ],\n    'boolean': [\n        { text: 'grid.filterEqOperator', operator: 'eq' }\n    ]\n};\n/**\n * @hidden\n */\nexport var IsUnaryFilter = function (operator) {\n    return operator === 'isnull' || operator === 'isnotnull' || operator === 'isempty' || operator === 'isnotempty';\n};\n/**\n * @hidden\n */\nexport var operatorMap = function (iterable, service) { return iterable.map(function (operator) { return ({\n    text: service.toLanguageString(operator.text, messages[operator.text]),\n    operator: operator.operator\n}); }); };\n/**\n * @hidden\n */\nexport var defaultBooleanOperator = 'eq';\n/**\n * @hidden\n */\nexport var booleanFilterValues = [\n    { text: 'grid.filterBooleanAll', operator: '' },\n    { text: 'grid.filterIsTrue', operator: true },\n    { text: 'grid.filterIsFalse', operator: false }\n];\n/**\n * @hidden\n */\nexport var defaultHideSecondFilter = {\n    text: false,\n    numeric: false,\n    date: false,\n    boolean: true\n};\n/**\n * @hidden\n */\nexport var cellInputChange = function (value, e, props) {\n    var defaultOperator = getDefaultOperator(props.operators);\n    var operator = props.operator;\n    switch (props.filterType) {\n        case 'numeric':\n            if (!operator || IsUnaryFilter(operator)) {\n                // change the operator to default\n                operator = defaultOperator;\n            }\n            if (value === null && operator === defaultOperator) {\n                // clear only the default operator\n                operator = '';\n            }\n            break;\n        case 'date':\n            if (!operator || IsUnaryFilter(operator)) {\n                operator = defaultOperator;\n            }\n            if (value === null && operator === defaultOperator) {\n                operator = '';\n            }\n            break;\n        case 'text':\n            if (!operator || IsUnaryFilter(operator)) {\n                operator = defaultOperator;\n            }\n            if (!value && operator === defaultOperator) {\n                operator = '';\n            }\n            break;\n        default: return;\n    }\n    props.onChange({ value: value, operator: operator, syntheticEvent: e });\n};\n/**\n * @hidden\n */\nexport var getDefaultOperator = function (filterOperators, filterType) {\n    if (filterType) {\n        return filterOperators[filterType][0].operator;\n    }\n    else {\n        return filterOperators[0].operator;\n    }\n};\n/**\n * @hidden\n */\nexport var getFilterType = function (filterType) {\n    return filterType || 'text';\n};\n/**\n * @hidden\n */\nexport var cellBoolDropdownChange = function (event, onChange) {\n    var item = event.target.value;\n    onChange({\n        value: item.operator,\n        operator: item.operator === '' ? '' : defaultBooleanOperator,\n        syntheticEvent: event.syntheticEvent\n    });\n};\n/**\n * @hidden\n */\nexport var cellOperatorChange = function (event, currentValue, onChange) {\n    var value = currentValue;\n    var item = event.target.value;\n    if (!event.target.state.opened) {\n        return;\n    }\n    if (IsUnaryFilter(item.operator)) {\n        // clear the value to avoid confusion on what is filtered\n        value = null;\n    }\n    if (currentValue === null && !IsUnaryFilter(item.operator)) {\n        value = undefined;\n    }\n    onChange({ value: value, operator: item.operator, syntheticEvent: event.syntheticEvent });\n};\n","var _a;\n/**\n * @hidden\n */\nexport var labelsOptional = 'labels.optional';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n    _a[labelsOptional] = '(Optional)',\n    _a);\n","/* eslint-disable radix */\n/**\n * @hidden\n */\nvar DISABLED_TABINDEX = -1;\n/**\n * @hidden\n */\nvar DEFAULT_TABINDEX = 0;\n/**\n * @hidden\n */\nexport var getTabIndex = function (tabIndex, disabled, useDefaultTabIndexWhenDisabled) {\n    var parsedTabIndex = typeof tabIndex === 'string' ? parseInt(tabIndex, undefined) : tabIndex;\n    if (parsedTabIndex === NaN) {\n        return undefined;\n    }\n    return parsedTabIndex !== undefined\n        ? parsedTabIndex\n        : disabled ?\n            (useDefaultTabIndexWhenDisabled ? undefined : DISABLED_TABINDEX)\n            : DEFAULT_TABINDEX;\n};\n","/**\n * @hidden\n */\nexport var Keys = {\n    backspace: 8,\n    tab: 9,\n    enter: 13,\n    shift: 16,\n    esc: 27,\n    space: 32,\n    pageUp: 33,\n    pageDown: 34,\n    end: 35,\n    home: 36,\n    left: 37,\n    up: 38,\n    right: 39,\n    down: 40,\n    delete: 46\n};\n","import * as React from 'react';\n/** @hidden */\nexport var usePropsContext = function (context, props) {\n    var contextPropsCallback = React.useContext(context);\n    var contextProps = contextPropsCallback(props);\n    return contextProps;\n};\n","var __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};\nimport * as React from 'react';\nimport { usePropsContext } from '../hooks/usePropsContext';\n/** @hidden */\nexport var createPropsContext = function () { return React.createContext(function (props) { return props; }); };\n/** @hidden */\nexport var withPropsContext = function (context, Component\n// eslint-disable-next-line react/display-name\n) { return React.forwardRef(function (props, ref) {\n    var contextProps = usePropsContext(context, props);\n    return (React.createElement(Component, __assign({}, contextProps, { ref: ref })));\n}); };\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n    name: '@progress/kendo-react-labels',\n    productName: 'KendoReact',\n    productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n    publishDate: 1642516192,\n    version: '',\n    licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var __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})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { labelsOptional, messages } from './messages';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from './package-metadata';\n/**\n * Represents the KendoReact FloatingLabel component.\n *\n * @example\n * ```jsx\n * const sizes = [\"X-Small\", \"Small\", \"Medium\", \"Large\", \"X-Large\", \"2X-Large\"];\n * const App = () => {\n *     const [ddlState, setDdlState] = React.useState();\n *     const editorId = 'ddl-sizes';\n *     return (\n *         <FloatingLabel label={'Shirt Size:'} editorId={editorId} editorValue={ddlState}>\n *             <DropDownList\n *                 id={editorId}\n *                 value={ddlState}\n *                 data={sizes}\n *                 onChange={(e) => setDdlState(e.target.value)}\n *             />\n *         </FloatingLabel>\n *     );\n * };\n *\n * ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nvar FloatingLabel = /** @class */ (function (_super) {\n    __extends(FloatingLabel, _super);\n    function FloatingLabel(props) {\n        var _this = _super.call(this, props) || this;\n        /**\n         * @hidden\n         */\n        _this.state = {\n            focused: false\n        };\n        /**\n         * @hidden\n         */\n        _this.handleFocus = function (_) {\n            _this.setState({ focused: true });\n        };\n        /**\n         * @hidden\n         */\n        _this.handleBlur = function (_) {\n            _this.setState({ focused: false });\n        };\n        validatePackage(packageMetadata);\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    FloatingLabel.prototype.render = function () {\n        var _a = this.props, label = _a.label, editorId = _a.editorId, className = _a.className, editorValue = _a.editorValue, editorPlaceholder = _a.editorPlaceholder, editorValid = _a.editorValid, editorDisabled = _a.editorDisabled, style = _a.style, id = _a.id, optional = _a.optional;\n        var localizationService = provideLocalizationService(this);\n        var localizedOptional = optional ? localizationService\n            .toLanguageString(labelsOptional, messages[labelsOptional]) : '';\n        var optionalElement = localizedOptional && (React.createElement(\"span\", { className: 'k-label-optional' }, localizedOptional));\n        var spanClassNames = classNames({\n            'k-textbox-container': true,\n            'k-state-focused': this.state.focused,\n            'k-state-empty': !editorPlaceholder && !editorValue && (editorValue !== 0),\n            'k-text-disabled': editorDisabled,\n            'k-rtl': this.props.dir === 'rtl'\n        }, className);\n        var labelClassNames = classNames({\n            'k-label': true,\n            'k-text-error': editorValid === false,\n            'k-text-disabled': editorDisabled\n        });\n        return (React.createElement(\"span\", { className: spanClassNames, onFocus: this.handleFocus, onBlur: this.handleBlur, style: style, dir: this.props.dir },\n            this.props.children,\n            label\n                ? editorId\n                    ? React.createElement(\"label\", { id: id, htmlFor: editorId, className: labelClassNames },\n                        label,\n                        optionalElement)\n                    : React.createElement(\"span\", { id: id, className: labelClassNames },\n                        label,\n                        optionalElement)\n                : null));\n    };\n    /**\n     * @hidden\n     */\n    FloatingLabel.propTypes = {\n        label: PropTypes.string,\n        editorId: PropTypes.string,\n        editorValue: PropTypes.oneOfType([PropTypes.string, PropTypes.bool, PropTypes.number]),\n        editorPlaceholder: PropTypes.string,\n        editorValid: PropTypes.bool,\n        editorDisabled: PropTypes.bool,\n        id: PropTypes.string,\n        style: PropTypes.object,\n        className: PropTypes.string,\n        optional: PropTypes.bool\n    };\n    return FloatingLabel;\n}(React.Component));\nexport { FloatingLabel };\nregisterForLocalization(FloatingLabel);\n","var clearSlide = function (element) {\n    element.style.transitionDuration = '';\n    element.classList.remove('k-slide-down-appear', 'k-slide-down-appear-active', 'k-slide-down-exit', 'k-slide-down-exit-active', 'k-slide-up-appear', 'k-slide-up-appear-active', 'k-slide-up-exit', 'k-slide-up-exit-active');\n};\nvar firefox = typeof window !== 'undefined' &&\n    /Firefox/.test(window.navigator.userAgent);\n/**\n * @hidden\n */\nexport var slide = function (element, direction, duration, type, callback) {\n    if (duration === 0) {\n        return callback();\n    }\n    var slideClass = 'k-slide-' + direction + '-' + type;\n    var slideActiveClass = slideClass + '-active';\n    var transitionend = function () {\n        // if event is attached using react,\n        // the animation does not work well in firefox,\n        // when the show/hide button is toggled quickly.\n        element.removeEventListener('transitionend', transitionend);\n        clearSlide(element);\n        callback();\n    };\n    element.addEventListener('transitionend', transitionend);\n    var ownerDocument = element.ownerDocument;\n    if (!ownerDocument) {\n        return;\n    }\n    var deafultView = ownerDocument.defaultView;\n    if (!deafultView) {\n        return;\n    }\n    var animate = function () {\n        clearSlide(element);\n        element.classList.add(slideClass);\n        deafultView.requestAnimationFrame(function () {\n            element.style.transitionDuration = duration + 'ms';\n            element.classList.add(slideActiveClass);\n        });\n    };\n    if (firefox) {\n        deafultView.requestAnimationFrame(animate);\n    }\n    else {\n        animate();\n    }\n};\n","/**\n * @hidden\n */\nexport var canUseDOM = Boolean(\n// from fbjs\ntypeof window !== 'undefined' &&\n    window.document &&\n    window.document.createElement);\n","import * as React from 'react';\n/** @hidden */\nexport var ZIndexContext = React.createContext(0);\n/** @hidden */\nexport var useZIndexContext = function () { return React.useContext(ZIndexContext); };\nZIndexContext.displayName = 'KendoReactZIndexContext';\n","export default {\n    \"bottom\": \"bottom\",\n    \"center\": \"center\",\n    \"middle\": \"middle\",\n    \"left\": \"left\",\n    \"right\": \"right\",\n    \"top\": \"top\"\n};\n","import point from './align-point';\n\nvar align = function (options) {\n    var anchorRect = options.anchorRect;\n    var anchorAlign = options.anchorAlign;\n    var elementRect = options.elementRect;\n    var elementAlign = options.elementAlign;\n    var margin = options.margin; if ( margin === void 0 ) margin = {};\n    var anchorHorizontal = anchorAlign.horizontal;\n    var anchorVertical = anchorAlign.vertical;\n    var elementHorizontal = elementAlign.horizontal;\n    var elementVertical = elementAlign.vertical;\n\n    var horizontalMargin = margin.horizontal || 0;\n    var verticalMargin = margin.vertical || 0;\n\n    var top = anchorRect.top;\n    var left = anchorRect.left;\n\n    if (anchorVertical === point.bottom) {\n        top += anchorRect.height;\n    }\n\n    if (anchorVertical === point.center || anchorVertical === point.middle) {\n        top += Math.round(anchorRect.height / 2);\n    }\n\n    if (elementVertical === point.bottom) {\n        top -= elementRect.height;\n        verticalMargin *= -1;\n    }\n\n    if (elementVertical === point.center || elementVertical === point.middle) {\n        top -= Math.round(elementRect.height / 2);\n        verticalMargin *= -1;\n    }\n\n    if (anchorHorizontal === point.right) {\n        left += anchorRect.width;\n    }\n\n    if (anchorHorizontal === point.center || anchorHorizontal === point.middle) {\n        left += Math.round(anchorRect.width / 2);\n    }\n\n    if (elementHorizontal === point.right) {\n        left -= elementRect.width;\n        horizontalMargin *= -1;\n    }\n\n    if (elementHorizontal === point.center || elementHorizontal === point.middle) {\n        left -= Math.round(elementRect.width / 2);\n        horizontalMargin *= -1;\n    }\n\n    return {\n        top: top + verticalMargin,\n        left: left + horizontalMargin\n    };\n};\n\nexport default align;\n","export default {\n    \"fit\": \"fit\",\n    \"flip\": \"flip\",\n    \"none\": \"none\"\n};\n","import alignPoint from './align-point';\nimport collision from './collision';\n\nvar fit = function(position, size, viewPortSize) {\n    var output = 0;\n\n    if (position + size > viewPortSize) {\n        output = viewPortSize - (position + size);\n    }\n\n    if (position < 0) {\n        output = -position;\n    }\n\n    return output;\n};\n\nvar flip = function(ref) {\n    var offset = ref.offset;\n    var size = ref.size;\n    var anchorSize = ref.anchorSize;\n    var viewPortSize = ref.viewPortSize;\n    var anchorAlignPoint = ref.anchorAlignPoint;\n    var elementAlignPoint = ref.elementAlignPoint;\n    var margin = ref.margin;\n\n    var output = 0;\n\n    var isPositionCentered = elementAlignPoint === alignPoint.center || elementAlignPoint === alignPoint.middle;\n    var isOriginCentered = anchorAlignPoint === alignPoint.center || anchorAlignPoint === alignPoint.middle;\n    var marginToAdd = 2 * margin; //2x to keep margin after flip\n\n    if (elementAlignPoint !== anchorAlignPoint && !isPositionCentered && !isOriginCentered) {\n        var isBeforeAnchor = anchorAlignPoint === alignPoint.top || anchorAlignPoint === alignPoint.left;\n        if (offset < 0 && isBeforeAnchor) {\n            output = size + anchorSize + marginToAdd;\n            if (offset + output + size > viewPortSize) {\n                output = 0; //skip flip\n            }\n        } else if (offset >= 0 && !isBeforeAnchor) {\n            if (offset + size > viewPortSize) {\n                output += -(anchorSize + size + marginToAdd);\n            }\n\n            if (offset + output < 0) {\n                output = 0; //skip flip\n            }\n        }\n    }\n\n    return output;\n};\n\nvar restrictToView = function (options) {\n    var anchorRect = options.anchorRect;\n    var anchorAlign = options.anchorAlign;\n    var elementRect = options.elementRect;\n    var elementAlign = options.elementAlign;\n    var collisions = options.collisions;\n    var viewPort = options.viewPort;\n    var margin = options.margin; if ( margin === void 0 ) margin = {};\n    var elementTop = elementRect.top;\n    var elementLeft = elementRect.left;\n    var elementHeight = elementRect.height;\n    var elementWidth = elementRect.width;\n    var viewPortHeight = viewPort.height;\n    var viewPortWidth = viewPort.width;\n    var horizontalMargin = margin.horizontal || 0;\n    var verticalMargin = margin.vertical || 0;\n\n    var left = 0;\n    var top = 0;\n\n    var isVerticalFit = collisions.vertical === collision.fit;\n    var isHorizontalFit = collisions.horizontal === collision.fit;\n    var isVerticalFlip = collisions.vertical === collision.flip;\n    var isHorizontalFlip = collisions.horizontal === collision.flip;\n\n    if (isVerticalFit) {\n        top += fit(elementTop, elementHeight, viewPortHeight);\n    }\n\n    if (isHorizontalFit) {\n        left += fit(elementLeft, elementWidth, viewPortWidth);\n    }\n\n    if (isVerticalFlip) {\n        top += flip({\n            margin: verticalMargin,\n            offset: elementTop,\n            size: elementHeight,\n            anchorSize: anchorRect.height,\n            viewPortSize: viewPortHeight,\n            anchorAlignPoint: anchorAlign.vertical,\n            elementAlignPoint: elementAlign.vertical\n        });\n    }\n\n    if (isHorizontalFlip) {\n        left += flip({\n            margin: horizontalMargin,\n            offset: elementLeft,\n            size: elementWidth,\n            anchorSize: anchorRect.width,\n            viewPortSize: viewPortWidth,\n            anchorAlignPoint: anchorAlign.horizontal,\n            elementAlignPoint: elementAlign.horizontal\n        });\n    }\n\n    var flippedVertical = isVerticalFlip && top !== 0;\n    var flippedHorizontal = isHorizontalFlip && left !== 0;\n    var fittedVertical = isVerticalFit && top !== 0;\n    var fittedHorizontal = isHorizontalFit && left !== 0;\n\n    return {\n        flipped: flippedHorizontal || flippedVertical,\n        fitted: fittedVertical || fittedHorizontal,\n        flip: {\n            horizontal: flippedHorizontal,\n            vertical: flippedVertical\n        },\n        fit: {\n            horizontal: fittedHorizontal,\n            vertical: fittedVertical\n        },\n        offset: {\n            left: left,\n            top: top\n        }\n    };\n};\n\nexport default restrictToView;\n","\nvar eitherRect = function (rect, offset) {\n    if (!rect) {\n        return { height: 0, left: offset.left, top: offset.top, width: 0 };\n    }\n\n    return rect;\n};\n\nvar scaleRect = function (rect, scale) {\n    if (!rect || scale === 1) {\n        return rect;\n    }\n\n    return {\n        height: rect.height / scale,\n        left: rect.left / scale,\n        top: rect.top / scale,\n        width: rect.width / scale\n    };\n};\n\nvar removeStackingOffset = function (rect, stackingOffset) {\n    if (!stackingOffset) { return rect; }\n\n    var result = {\n        height: rect.height,\n        left: rect.left - stackingOffset.left,\n        top: rect.top - stackingOffset.top,\n        width: rect.width\n    };\n\n    return result;\n};\n\nfunction memoize(fun) {\n    var result;\n    var called = false;\n\n    return function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        if (called) {\n            return result;\n        }\n\n        result = fun.apply(void 0, args);\n        called = true;\n        return result;\n    };\n}\n\nvar hasRelativeStackingContext = memoize(function (elementSource) {\n    if (!canUseDOM()) { return false; }\n\n    // Component need to pass element to make sure document owner is correct.\n    // This however might be performance hit if checked for example on each drag event.\n    var currentDocument = elementSource ? elementSource.ownerDocument : document;\n\n    if (!currentDocument || !currentDocument.body) { return false; }\n\n    var top = 10;\n    var parent = currentDocument.createElement(\"div\");\n    parent.style.transform = \"matrix(10, 0, 0, 10, 0, 0)\";\n    parent.innerHTML = \"<div style=\\\"position: fixed; top: \" + top + \"px;\\\">child</div>\";\n\n    currentDocument.body.appendChild(parent);\n\n    var isDifferent = parent.children[0].getBoundingClientRect().top !== top;\n\n    currentDocument.body.removeChild(parent);\n\n    return isDifferent;\n});\n\nvar canUseDOM = function () { return Boolean(\n    // from fbjs\n    typeof window !== 'undefined' &&\n    window.document &&\n    window.document.createElement\n); };\n\nvar utils = {\n    eitherRect: eitherRect,\n    scaleRect: scaleRect,\n    removeStackingOffset: removeStackingOffset,\n    hasRelativeStackingContext: hasRelativeStackingContext,\n    canUseDOM: canUseDOM\n};\n\nexport default utils;","export default function ownerDocument(element) {\n    return element.ownerDocument || element.document || element;\n}\n","import ownerDocument from './owner-document';\n\nvar getWindow = function (element) { return ownerDocument(element).defaultView; };\n\nexport default getWindow;\n","import ownerDocument from './owner-document';\n\nvar getDocument = function (element) { return ownerDocument(element).documentElement; };\n\nexport default getDocument;\n","var cachedWidth = 0;\n\nexport default function scrollbarWidth() {\n    if (!cachedWidth && typeof document !== 'undefined') {\n        var div = document.createElement(\"div\");\n\n        div.style.cssText = \"overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block\";\n        div.innerHTML = \"&nbsp;\";\n        document.body.appendChild(div);\n\n        cachedWidth = div.offsetWidth - div.scrollWidth;\n\n        document.body.removeChild(div);\n    }\n\n    return cachedWidth;\n}\n","import wnd from './window';\nimport getDocument from './document';\nimport scrollbarWidth from './scrollbar-width';\n\nexport default function windowViewport(element) {\n    var win = wnd(element);\n    var document = getDocument(element);\n    var result = {\n        height: win.innerHeight,\n        width: win.innerWidth\n    };\n\n    if (document.scrollHeight - document.clientHeight > 0) {\n        result.width -= scrollbarWidth();\n    }\n\n    return result;\n}\n","import docElement from './document';\nimport wnd from './window';\n\nexport default function scrollPosition(element) {\n    var documentElement = docElement(element);\n    var win = wnd(element);\n\n    return {\n        x: win.pageXOffset || documentElement.scrollLeft || 0,\n        y: win.pageYOffset || documentElement.scrollTop || 0\n    };\n}\n","var rectOfHiddenElement = function (element) {\n    var ref = element.style;\n    var display = ref.display;\n    var left = ref.left;\n    var position = ref.position;\n\n    element.style.display = '';\n    element.style.left = '-10000px';\n    element.style.position = 'absolute';\n\n    var rect = element.getBoundingClientRect();\n\n    element.style.display = display;\n    element.style.left = left;\n    element.style.position = position;\n\n    return rect;\n};\n\nvar offset = function (element) {\n    var rect = element.getBoundingClientRect();\n    var left = rect.left;\n    var top = rect.top;\n\n    if (!rect.height && !rect.width) {\n        rect = rectOfHiddenElement(element);\n    }\n\n    return {\n        top: top,\n        left: left,\n        height: rect.height,\n        width: rect.width\n    };\n};\n\nexport default offset;\n","import scrollPosition from './scroll-position';\n\nexport default function (element) {\n    if (element === (element.ownerDocument || {}).body) {\n        return scrollPosition(element);\n    }\n\n    return {\n        x: element.scrollLeft,\n        y: element.scrollTop\n    };\n};\n","import documentElement from './document';\n\nvar offsetParent = function (element) {\n    var offsetParent = element.offsetParent;\n\n    while (offsetParent && offsetParent.style.position === \"static\") {\n        offsetParent = offsetParent.offsetParent;\n    }\n\n    return offsetParent || documentElement(element);\n};\n\nexport default offsetParent;\n","import elementScrollPosition from './element-scroll-position';\nimport parentScrollPosition from './parent-scroll-position';\n\nexport default function (offsetParentElement, element) { return ( // eslint-disable-line no-arrow-condition\n    offsetParentElement ? elementScrollPosition(offsetParentElement) : parentScrollPosition(element)\n); };\n","import offsetParent from './offset-parent';\nimport elementScrollPosition from './element-scroll-position';\n\nexport default function parentScrollPosition(element) {\n    var parent = offsetParent(element);\n\n    return parent ? elementScrollPosition(parent) : { x: 0, y: 0 };\n}\n","import offsetParent from './offset-parent';\nimport offsetRect from './offset';\nimport wnd from './window';\n\nvar position = function (element, parent) {\n    var win = wnd(element);\n    var elementStyles = win.getComputedStyle(element);\n    var offset = offsetRect(element);\n    var parentElement = parent || offsetParent(element);\n\n    var ownerDocument = element.ownerDocument;\n    var useRelative = parentElement !== ownerDocument.body && parentElement !== ownerDocument.documentElement;\n\n    var parentOffset = { top: 0, left: 0 };\n\n    if (elementStyles.position !== \"fixed\" && useRelative) {\n        var parentStyles = win.getComputedStyle(parentElement);\n\n        parentOffset = offsetRect(parentElement);\n        parentOffset.top += parseInt(parentStyles.borderTopWidth, 10);\n        parentOffset.left += parseInt(parentStyles.borderLeftWidth, 10);\n    }\n\n    return {\n        top: offset.top - parentOffset.top,\n        left: offset.left - parentOffset.left,\n        height: offset.height,\n        width: offset.width\n    };\n};\n\nexport default position;\n","export default function (element, until) {\n    var result = [];\n    var next = element.parentNode;\n\n    while (next) {\n        result.push(next);\n\n        if (next === until) { break; }\n\n        next = next.parentNode;\n    }\n\n    return result;\n};\n","export default function (element) {\n    var result = [];\n\n    var sibling = element.parentNode.firstElementChild;\n\n    while (sibling) {\n        if (sibling !== element) {\n            result.push(sibling);\n        }\n\n        sibling = sibling.nextElementSibling;\n    }\n    return result;\n};\n","/* eslint-disable arrow-body-style */\nimport addScroll from \"./add-scroll\";\nimport align from './align';\nimport boundingOffset from './bounding-offset';\nimport utils from './utils';\nimport removeScroll from './remove-scroll';\nimport restrictToView from './restrict-to-view';\nimport scrollPosition from './scroll-position';\nimport offsetBase from './offset';\nimport positionWithScroll from './position-with-scroll';\nimport windowViewPort from './window-viewport';\nimport siblingContainer from './sibling-container';\nimport parents from './parents';\n\nvar STYLES = [\n    'font-size',\n    'font-family',\n    'font-stretch',\n    'font-style',\n    'font-weight',\n    'line-height'\n];\n\nvar addOffset = function (current, addition) {\n    return {\n        left: current.left + addition.left,\n        top: current.top + addition.top\n    };\n};\n\nvar getWindow = function () {\n    return utils.canUseDOM() ? window : null;\n};\n\nvar getFontStyles = function (el) {\n    var window = getWindow();\n\n    if (!window || !el) { return []; }\n\n    var computedStyles = window.getComputedStyle(el);\n\n    return STYLES.map(function (font) { return ({ key: font, value: computedStyles[font] }); });\n};\n\nvar hasOffsetParent = function (el) {\n    if (!el) { return false; }\n\n    return Boolean(el.offsetParent);\n};\n\nvar offset = function (el) {\n    if (!el) { return null; }\n\n    return offsetBase(el);\n};\n\nvar offsetAtPoint = function (element, currentLocation) {\n    if (!element) { return null; }\n\n    var ref = element.style;\n    var left = ref.left;\n    var top = ref.top;\n    var transition = ref.transition;\n\n    element.style.transition = 'none';\n    element.style.left = (currentLocation.left) + \"px\";\n    element.style.top = (currentLocation.top) + \"px\";\n\n    var currentOffset = offsetBase(element);\n\n    element.style.left = left;\n    element.style.top = top;\n\n    // prevents elements with transition to be animated because of the change\n    // tslint:disable-next-line:no-unused-expression\n    element.offsetHeight;\n\n    element.style.transition = transition;\n\n    return currentOffset;\n};\n\nvar position = function (element, popupElement, scale) {\n    if (!element || !popupElement) { return null; }\n\n    var currentScale = scale || 1;\n\n    return positionWithScroll(element, popupElement, currentScale);\n};\n\nvar OVERFLOW_REGEXP = /auto|scroll/;\n\nvar overflowElementStyle = function (element) {\n    return (\"\" + (element.style.overflow) + (element.style.overflowX) + (element.style.overflowY));\n};\n\nvar overflowComputedStyle = function (element) {\n    var styles = window.getComputedStyle(element);\n    return (\"\" + (styles.overflow) + (styles.overflowX) + (styles.overflowY));\n};\n\nvar overflowStyle = function (element) {\n    return overflowElementStyle(element) || overflowComputedStyle(element);\n};\n\nvar scrollableParents = function (element) {\n    var parentElements = [];\n\n    if (!utils.canUseDOM()) { return parentElements; }\n\n    var parent = element.parentElement;\n\n    while (parent) {\n        if (OVERFLOW_REGEXP.test(overflowStyle(parent)) || parent.hasAttribute('data-scrollable')) {\n            parentElements.push(parent);\n        }\n\n        parent = parent.parentElement;\n    }\n\n    parentElements.push(window);\n\n    return parentElements;\n};\n\nvar getRelativeContextElement = function (el) {\n    if (!el || !utils.hasRelativeStackingContext()) { return null; }\n\n    var parent = el.parentElement;\n\n    while (parent) {\n        if (window.getComputedStyle(parent).transform !== 'none') {\n            return parent;\n        }\n        parent = parent.parentElement;\n    }\n\n    return null;\n};\n\nvar stackingElementOffset = function (el) {\n    var relativeContextElement = getRelativeContextElement(el);\n\n    if (!relativeContextElement) { return null; }\n\n    return offsetBase(relativeContextElement);\n};\n\nvar stackingElementScroll = function (el) {\n    var relativeContextElement = getRelativeContextElement(el);\n\n    if (!relativeContextElement) { return { x: 0, y: 0 }; }\n\n    return {\n        x: relativeContextElement.scrollLeft,\n        y: relativeContextElement.scrollTop\n    };\n};\n\nvar stackingElementViewPort = function (el) {\n    var relativeContextElement = getRelativeContextElement(el);\n\n    if (!relativeContextElement) { return null; }\n\n    return {\n        height: relativeContextElement.scrollHeight,\n        width: relativeContextElement.scrollWidth\n    };\n};\n\nvar useRelativePosition = function (el) {\n    return Boolean(getRelativeContextElement(el));\n};\n\nvar zoomLevel = function () {\n    if (!utils.canUseDOM()) { return 1; }\n\n    return parseFloat((document.documentElement.clientWidth / window.innerWidth).toFixed(2)) || 1;\n};\n\nvar isZoomed = function () {\n    return zoomLevel() > 1;\n};\n\nvar zIndex = function (anchor, container) {\n    if (!anchor || !utils.canUseDOM()) { return null; }\n\n    var sibling = siblingContainer(anchor, container);\n\n    if (!sibling) { return null; }\n\n    var result = [ anchor ].concat(parents(anchor, sibling)).reduce(\n        function (index, p) {\n            var zIndexStyle = p.style.zIndex || window.getComputedStyle(p).zIndex;\n            var current = parseInt(zIndexStyle, 10);\n            return current > index ? current : index;\n        },\n        0\n    );\n\n    return result ? (result + 1) : null;\n};\n\nvar domUtils = {\n    addOffset: addOffset,\n    addScroll: addScroll,\n    align: align,\n    boundingOffset: boundingOffset,\n    getFontStyles: getFontStyles,\n    getWindow: getWindow,\n    hasOffsetParent: hasOffsetParent,\n    offset: offset,\n    offsetAtPoint: offsetAtPoint,\n    position: position,\n    removeScroll: removeScroll,\n    restrictToView: restrictToView,\n    scrollPosition: scrollPosition,\n    scrollableParents: scrollableParents,\n    getRelativeContextElement: getRelativeContextElement,\n    stackingElementOffset: stackingElementOffset,\n    stackingElementScroll: stackingElementScroll,\n    stackingElementViewPort: stackingElementViewPort,\n    useRelativePosition: useRelativePosition,\n    windowViewPort: windowViewPort,\n    zoomLevel: zoomLevel,\n    isZoomed: isZoomed,\n    zIndex: zIndex\n};\n\nexport default domUtils;\n","export default function addScroll(rect, scroll) {\n    return {\n        top: rect.top + scroll.y,\n        left: rect.left + scroll.x,\n        height: rect.height,\n        width: rect.width\n    };\n}\n","import windowViewport from './window-viewport';\n\nvar boundingOffset = function (element) {\n    if (!element.getBoundingClientRect) {\n        var viewport = windowViewport(element);\n        return {\n            bottom: viewport.height,\n            left: 0,\n            right: viewport.width,\n            top: 0\n        };\n    }\n\n    var ref = element.getBoundingClientRect();\n    var bottom = ref.bottom;\n    var left = ref.left;\n    var right = ref.right;\n    var top = ref.top;\n\n    return {\n        bottom: bottom,\n        left: left,\n        right: right,\n        top: top\n    };\n};\n\nexport default boundingOffset;\n","import offsetParentScrollPosition from './offset-parent-scroll-position';\nimport offsetParent from './offset-parent';\nimport position from './position';\n\nexport default function (element, parent, scale) {\n    if ( scale === void 0 ) scale = 1;\n\n    var offsetParentElement = parent ? offsetParent(parent) : null;\n    var ref = position(element, offsetParentElement);\n    var top = ref.top;\n    var left = ref.left;\n    var height = ref.height;\n    var width = ref.width;\n    var ref$1 = offsetParentScrollPosition(offsetParentElement, element);\n    var x = ref$1.x;\n    var y = ref$1.y;\n    var ownerDocument = element.ownerDocument;\n    var positionScale = offsetParentElement === ownerDocument.body || offsetParentElement === ownerDocument.documentElement ? 1 : scale;\n\n    return {\n        top: top + y * positionScale,\n        left: left + x * positionScale,\n        height: height,\n        width: width\n    };\n};\n","export default function removeScroll(rect, scroll) {\n    return {\n        top: rect.top - scroll.y,\n        left: rect.left - scroll.x,\n        height: rect.height,\n        width: rect.width\n    };\n}\n","/* eslint-disable no-loop-func */\n\nimport parents from './parents';\nimport siblings from './siblings';\n\nexport default function (anchor, container) {\n    var parentElements = parents(anchor);\n    var containerElement = container;\n    var siblingElements;\n    var result;\n\n    while (containerElement) {\n        siblingElements = siblings(containerElement);\n\n        result = parentElements.reduce(\n            function (list, p) { return list.concat(siblingElements.filter(function (s) { return s === p; })); },\n            []\n        )[0];\n\n        if (result) { break; }\n\n        containerElement = containerElement.parentElement;\n    }\n\n    return result;\n};\n\n","/* eslint-disable arrow-body-style */\n\nimport utils from './utils';\nimport domUtils from \"./dom-utils\";\n\nvar absoluteRect = function (anchor, element, offset, scale) {\n    var scrollPos = elementScrollPosition(anchor, element);\n    var rect = utils.eitherRect(domUtils.offset(anchor), offset);\n    var stackScale = 2 * scale;\n\n    var stackScroll = domUtils.stackingElementScroll(element);\n    if (scale !== 1 && stackScroll) {\n        stackScroll.x /= stackScale;\n        stackScroll.y /= stackScale;\n    }\n\n    var stackOffset = domUtils.stackingElementOffset(element);\n    if (scale !== 1 && stackOffset) {\n        stackOffset.left /= stackScale;\n        stackOffset.top /= stackScale;\n    }\n\n    return domUtils.removeScroll(\n        domUtils.addScroll(\n            utils.removeStackingOffset(\n                utils.scaleRect(rect, scale),\n                stackOffset\n            ),\n            stackScroll\n        ),\n        scrollPos\n    );\n};\n\nvar relativeRect = function (anchor, element, offset, scale) {\n    var rect = utils.eitherRect(domUtils.position(anchor, element, scale), offset);\n    return utils.scaleRect(rect, scale);\n};\n\nvar elementScrollPosition = function (anchor, element) {\n    return anchor ? { x: 0, y: 0 } : domUtils.scrollPosition(element);\n};\n\nvar alignElement = function (settings) {\n    var anchor = settings.anchor;\n    var element = settings.element;\n    var anchorAlign = settings.anchorAlign;\n    var elementAlign = settings.elementAlign;\n    var margin = settings.margin;\n    var offset = settings.offset;\n    var positionMode = settings.positionMode;\n    var scale = settings.scale;\n\n    var currentScale = scale || 1;\n    var fixedMode = positionMode === 'fixed' || !domUtils.hasOffsetParent(element);\n    var anchorRect = fixedMode ? absoluteRect(anchor, element, offset, currentScale) : relativeRect(anchor, element, offset, currentScale);\n    var elementRect = utils.scaleRect(domUtils.offset(element), currentScale);\n\n    var result = domUtils.align({\n        anchorAlign: anchorAlign,\n        anchorRect: anchorRect,\n        elementAlign: elementAlign,\n        elementRect: elementRect,\n        margin: margin\n    });\n\n    return result;\n};\n\nexport default alignElement;\n","import utils from \"./utils\";\nimport domUtils from \"./dom-utils\";\n\nvar positionElement = function (settings) {\n    var anchor = settings.anchor;\n    var currentLocation = settings.currentLocation;\n    var element = settings.element;\n    var anchorAlign = settings.anchorAlign;\n    var elementAlign = settings.elementAlign;\n    var collisions = settings.collisions;\n    var margin = settings.margin;\n    var scale = settings.scale;\n\n    var currentScale = scale || 1;\n    var elementOffset = domUtils.offsetAtPoint(element, currentLocation);\n    var elementRect = utils.scaleRect(elementOffset, currentScale);\n    var anchorOffset = utils.scaleRect(domUtils.offset(anchor), currentScale);\n    var anchorRect = utils.eitherRect(anchorOffset, currentLocation);\n\n    var viewPort = settings.viewPort || domUtils.windowViewPort(element);\n    viewPort.width = viewPort.width / currentScale;\n    viewPort.height = viewPort.height / currentScale;\n\n    var result = domUtils.restrictToView({\n        anchorAlign: anchorAlign,\n        anchorRect: anchorRect,\n        collisions: collisions,\n        elementAlign: elementAlign,\n        elementRect: elementRect,\n        margin: margin,\n        viewPort: viewPort\n    });\n\n    var offset = domUtils.addOffset(currentLocation, result.offset);\n\n    return {\n        flip: result.flip,\n        flipped: result.flipped,\n        offset: offset\n    };\n};\n\nexport default positionElement;","/**\n * @hidden\n */\nexport var isDifferentOffset = function (oldOffset, newOffset) {\n    var oldLeft = oldOffset.left, oldTop = oldOffset.top;\n    var newLeft = newOffset.left, newTop = newOffset.top;\n    return Math.abs(oldLeft - newLeft) >= 1 || Math.abs(oldTop - newTop) >= 1;\n};\n/**\n * @hidden\n */\nexport var hasBoundingRect = function (elem) { return !!elem.getBoundingClientRect; };\n/**\n * @hidden\n */\nexport var FRAME_DURATION = 1000 / 60; // 1000ms divided by 60fps\n/**\n * @hidden\n */\nexport var throttle = function (func, wait, options) {\n    if (options === void 0) { options = {}; }\n    var timeout, context, args, result;\n    var previous = 0;\n    options = options || {};\n    var later = function () {\n        previous = options.leading === false ? 0 : new Date().getTime();\n        timeout = null;\n        result = func.apply(context, args);\n        if (!timeout) {\n            context = args = null;\n        }\n    };\n    var throttled = function () {\n        var now = new Date().getTime();\n        if (!previous && options.leading === false) {\n            previous = now;\n        }\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) {\n                context = args = null;\n            }\n        }\n        else if (!timeout && options.trailing !== false) {\n            timeout = window.setTimeout(later, remaining);\n        }\n        return result;\n    };\n    return throttled;\n};\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n    name: '@progress/kendo-react-popup',\n    productName: 'KendoReact',\n    productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n    publishDate: 1642515994,\n    version: '',\n    licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var __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 __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};\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport * as PropTypes from 'prop-types';\nimport { slide } from './animation';\nimport { canUseDOM, ZIndexContext, validatePackage, classNames } from '@progress/kendo-react-common';\nimport { AlignPoint, alignElement, domUtils, positionElement, Collision as CollisionEnum } from '@progress/kendo-popup-common';\nimport { throttle, FRAME_DURATION } from './util';\nimport { packageMetadata } from './package-metadata';\nvar DEFAULT_POPUP_ZINDEX = 100;\nvar ZINDEX_POPUP_STEP = 1;\nfunction isEquivalent(a, b) {\n    if (a === b) {\n        return true;\n    }\n    if (!!a !== !!b) {\n        return false;\n    }\n    var aProps = Object.getOwnPropertyNames(a);\n    var bProps = Object.getOwnPropertyNames(b);\n    if (aProps.length !== bProps.length) {\n        return false;\n    }\n    for (var i = 0; i < aProps.length; i++) {\n        var propName = aProps[i];\n        if (a[propName] !== b[propName]) {\n            return false;\n        }\n    }\n    return true;\n}\nvar DEFAULT_OFFSET = {\n    left: -1000,\n    top: 0\n};\nvar Status;\n(function (Status) {\n    Status[\"hiding\"] = \"hiding\";\n    Status[\"hidden\"] = \"hidden\";\n    Status[\"showing\"] = \"showing\";\n    Status[\"shown\"] = \"shown\";\n    Status[\"reposition\"] = \"reposition\";\n})(Status || (Status = {}));\nvar ANIMATION_CONTAINER = 'k-animation-container';\nvar ANIMATION_CONTAINER_SHOWN = 'k-animation-container-shown';\nvar ANIMATION_CONTAINER_RELATIVE = 'k-animation-container-relative';\nvar ANIMATION_CONTAINER_CHILD = 'k-child-animation-container';\nvar K_POPUP = 'k-popup';\n/**\n * @hidden\n */\nvar PopupWithoutContext = /** @class */ (function (_super) {\n    __extends(PopupWithoutContext, _super);\n    function PopupWithoutContext(props) {\n        var _this = _super.call(this, props) || this;\n        /**\n         * @hidden\n         */\n        _this.state = { current: Status.hidden, previous: Status.hidden, props: {} };\n        _this._popup = null;\n        _this.show = function (popup) {\n            _this.setPosition(popup);\n            _this.animate(popup.firstChild, 'enter', _this.onOpened);\n            _this.setState({ current: Status.shown, previous: _this.state.current });\n        };\n        _this.setPosition = function (popup) {\n            var _a = _this.props, anchorAlign = _a.anchorAlign, popupAlign = _a.popupAlign, collision = _a.collision, offset = _a.offset, anchor = _a.anchor, margin = _a.margin, scale = _a.scale, positionMode = _a.positionMode;\n            var alignedOffset = alignElement({\n                anchor: anchor,\n                anchorAlign: anchorAlign,\n                element: popup,\n                elementAlign: popupAlign,\n                offset: offset,\n                margin: margin,\n                positionMode: positionMode,\n                scale: scale\n            });\n            var position = positionElement({\n                anchor: anchor,\n                anchorAlign: anchorAlign,\n                element: popup,\n                elementAlign: popupAlign,\n                collisions: collision,\n                currentLocation: alignedOffset,\n                margin: _this.props.margin\n            });\n            popup.style.top = position.offset.top + 'px';\n            popup.style.left = position.offset.left + 'px';\n            _this._collisions = {\n                fit: position.fit,\n                fitted: position.fitted,\n                flip: position.flip,\n                flipped: position.flipped\n            };\n            if (_this.props.onPosition) {\n                var event_1 = {\n                    target: _this,\n                    flipped: position.flipped,\n                    fitted: position.fitted\n                };\n                _this.props.onPosition.call(undefined, event_1);\n            }\n        };\n        _this.onOpened = function () {\n            var element = _this._popup;\n            if (!element) {\n                return;\n            }\n            if (_this.props.show) {\n                element.classList.add(ANIMATION_CONTAINER_SHOWN);\n            }\n            _this.attachRepositionHandlers(element);\n            if (_this.props.onOpen) {\n                _this.props.onOpen.call(undefined, { target: _this });\n            }\n        };\n        _this.animate = function (element, type, callback) {\n            if (!_this.props.popupAlign) {\n                return;\n            }\n            var animationDirection;\n            var _a = _this.props.popupAlign, horizontal = _a.horizontal, vertical = _a.vertical;\n            if (horizontal === 'left' && vertical === 'center') {\n                animationDirection = 'right';\n            }\n            else if (horizontal === 'right' && vertical === 'center') {\n                animationDirection = 'left';\n            }\n            else if (vertical === 'top') {\n                animationDirection = 'down';\n            }\n            else {\n                animationDirection = 'up';\n            }\n            var flipPositions = {\n                down: 'up',\n                up: 'down',\n                left: 'right',\n                right: 'left'\n            };\n            if (_this._collisions && _this._collisions.flipped) {\n                animationDirection = flipPositions[animationDirection];\n            }\n            slide(element, animationDirection, _this.animationDuration[type], type, callback);\n        };\n        _this.onClosing = function (popup) {\n            if (!_this.props.show) {\n                popup.classList.remove(ANIMATION_CONTAINER_SHOWN);\n            }\n            _this.detachRepositionHandlers();\n        };\n        _this.onClosed = function () {\n            if (_this.state.current === Status.hiding && _this.state.previous === Status.shown) {\n                _this.setState({ current: Status.hidden, previous: _this.state.current });\n            }\n            if (_this.props.onClose) {\n                _this.props.onClose.call(undefined, { target: _this });\n            }\n        };\n        _this.getCurrentZIndex = function () {\n            return _this.context ? _this.context + ZINDEX_POPUP_STEP : DEFAULT_POPUP_ZINDEX;\n        };\n        validatePackage(packageMetadata);\n        _this.reposition = throttle(_this.reposition.bind(_this), FRAME_DURATION);\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    PopupWithoutContext.getDerivedStateFromProps = function (props, state) {\n        var show = props.show, anchor = props.anchor, anchorAlign = props.anchorAlign, appendTo = props.appendTo, collision = props.collision, popupAlign = props.popupAlign, className = props.className, popupClass = props.popupClass, style = props.style, offset = props.offset, contentKey = props.contentKey;\n        var nextState = __assign({}, state, { props: {\n                show: show, anchor: anchor, anchorAlign: anchorAlign, appendTo: appendTo, collision: collision, popupAlign: popupAlign, className: className, popupClass: popupClass, style: style, offset: offset, contentKey: contentKey\n            } });\n        if (props.show) {\n            if (state.current === Status.hidden || state.current === Status.hiding) {\n                return __assign({}, nextState, { current: Status.showing, previous: state.current });\n            }\n            if (state.current === Status.showing) {\n                return __assign({}, nextState, { current: Status.shown, previous: state.current });\n            }\n            if (state.current === Status.shown &&\n                (!isEquivalent(offset, state.props.offset) ||\n                    !isEquivalent(anchorAlign, state.props.anchorAlign) ||\n                    !isEquivalent(appendTo, state.props.appendTo) ||\n                    !isEquivalent(collision, state.props.collision) ||\n                    !isEquivalent(popupAlign, state.props.popupAlign) ||\n                    !isEquivalent(style, state.props.style) ||\n                    anchor !== state.props.anchor ||\n                    popupClass !== state.props.popupClass ||\n                    className !== state.props.className)) {\n                return __assign({}, nextState, { current: Status.reposition, previous: state.current });\n            }\n            return nextState;\n        }\n        if (state.current === Status.hiding || state.current === Status.hidden) {\n            return __assign({}, nextState, { current: Status.hidden, previous: state.current });\n        }\n        return __assign({}, nextState, { current: Status.hiding, previous: state.current });\n    };\n    /**\n     * @hidden\n     */\n    PopupWithoutContext.prototype.componentDidUpdate = function (prevProps) {\n        if (this.state.current === Status.showing && this._popup) {\n            this.show(this._popup);\n        }\n        else if (this.state.current === Status.hiding && this._popup) {\n            this.onClosing(this._popup);\n            this.animate(this._popup.firstChild, 'exit', this.onClosed);\n        }\n        else if (this.state.current === Status.reposition && this.state.previous === Status.shown) {\n            this.setState({ current: Status.shown, previous: this.state.current });\n        }\n        else if (this.state.current === Status.shown &&\n            prevProps.contentKey !== this.props.contentKey && this._popup) {\n            this.setPosition(this._popup);\n        }\n    };\n    /**\n     * @hidden\n     */\n    PopupWithoutContext.prototype.componentDidMount = function () {\n        if (this.state.current === Status.showing && this._popup) {\n            this.show(this._popup);\n        }\n    };\n    /**\n     * @hidden\n     */\n    PopupWithoutContext.prototype.componentWillUnmount = function () {\n        this.detachRepositionHandlers();\n    };\n    /**\n     * @hidden\n     */\n    PopupWithoutContext.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, children = _a.children, className = _a.className, popupClass = _a.popupClass, show = _a.show, id = _a.id, positionMode = _a.positionMode;\n        var appendTo = this.props.appendTo ?\n            this.props.appendTo :\n            canUseDOM ?\n                (this.props.anchor && this.props.anchor.ownerDocument ? this.props.anchor.ownerDocument.body : document.body)\n                : undefined;\n        if (this.state.current === Status.reposition && this.state.previous === Status.shown && this._popup) {\n            this.setPosition(this._popup);\n        }\n        var style = Object.assign({}, { position: positionMode, top: 0, left: -10000 }, this.props.style || {});\n        var closing = this.state.current === Status.hiding;\n        if ((show || closing) && appendTo) {\n            var currentZIndex = this.getCurrentZIndex();\n            var popupElement = (React.createElement(ZIndexContext.Provider, { value: currentZIndex },\n                React.createElement(\"div\", { className: classNames(ANIMATION_CONTAINER, ANIMATION_CONTAINER_RELATIVE, className), id: id, ref: function (e) { return _this._popup = e; }, style: __assign({ zIndex: currentZIndex }, style) },\n                    React.createElement(\"div\", { className: classNames(K_POPUP, popupClass, ANIMATION_CONTAINER_CHILD), style: { transitionDelay: '0ms' } }, children))));\n            return ReactDOM.createPortal(popupElement, appendTo);\n        }\n        return null;\n    };\n    Object.defineProperty(PopupWithoutContext.prototype, \"animationDuration\", {\n        get: function () {\n            var animate = this.props.animate;\n            var enter = 0;\n            var exit = 0;\n            if (animate) {\n                if (animate === true) {\n                    enter = exit = 300;\n                }\n                else {\n                    enter = animate.openDuration || 0;\n                    exit = animate.closeDuration || 0;\n                }\n            }\n            return { enter: enter, exit: exit };\n        },\n        enumerable: true,\n        configurable: true\n    });\n    PopupWithoutContext.prototype.attachRepositionHandlers = function (element) {\n        var _this = this;\n        this.detachRepositionHandlers();\n        this._scrollableParents = domUtils.scrollableParents(this.props.anchor || element);\n        this._scrollableParents.map(function (p) { return p.addEventListener('scroll', _this.reposition); });\n        window.addEventListener('resize', this.reposition);\n    };\n    PopupWithoutContext.prototype.detachRepositionHandlers = function () {\n        var _this = this;\n        if (this._scrollableParents) {\n            this._scrollableParents.map(function (p) { return p.removeEventListener('scroll', _this.reposition); });\n            this._scrollableParents = undefined;\n        }\n        window.removeEventListener('resize', this.reposition);\n    };\n    PopupWithoutContext.prototype.reposition = function () {\n        this.setState({ current: Status.reposition, previous: this.state.current });\n    };\n    /**\n     * @hidden\n     */\n    PopupWithoutContext.propTypes = {\n        anchor: function (props) {\n            var anchor = props.anchor;\n            if (anchor && typeof anchor.nodeType !== 'number') {\n                return new Error('Invalid prop `anchor` supplied to `Kendo React Popup`. Validation failed.');\n            }\n            return null;\n        },\n        appendTo: function (props) {\n            var element = props.appendTo;\n            if (element && typeof element.nodeType !== 'number') {\n                return new Error('Invalid prop `appendTo` supplied to `Kendo React Popup`. Validation failed.');\n            }\n            return null;\n        },\n        className: PropTypes.oneOfType([\n            PropTypes.string,\n            PropTypes.arrayOf(PropTypes.string),\n            PropTypes.object\n        ]),\n        id: PropTypes.string,\n        popupClass: PropTypes.oneOfType([\n            PropTypes.string,\n            PropTypes.arrayOf(PropTypes.string),\n            PropTypes.object\n        ]),\n        collision: PropTypes.shape({\n            horizontal: PropTypes.oneOf([\n                CollisionEnum.fit,\n                CollisionEnum.flip,\n                CollisionEnum.none\n            ]),\n            vertical: PropTypes.oneOf([\n                CollisionEnum.fit,\n                CollisionEnum.flip,\n                CollisionEnum.none\n            ])\n        }),\n        anchorAlign: PropTypes.shape({\n            horizontal: PropTypes.oneOf([\n                AlignPoint.left,\n                AlignPoint.center,\n                AlignPoint.right\n            ]),\n            vertical: PropTypes.oneOf([\n                AlignPoint.top,\n                AlignPoint.center,\n                AlignPoint.bottom\n            ])\n        }),\n        popupAlign: PropTypes.shape({\n            horizontal: PropTypes.oneOf([\n                AlignPoint.left,\n                AlignPoint.center,\n                AlignPoint.right\n            ]),\n            vertical: PropTypes.oneOf([\n                AlignPoint.top,\n                AlignPoint.center,\n                AlignPoint.bottom\n            ])\n        }),\n        offset: PropTypes.shape({\n            left: PropTypes.number,\n            top: PropTypes.number\n        }),\n        children: PropTypes.oneOfType([\n            PropTypes.element,\n            PropTypes.node\n        ]),\n        show: PropTypes.bool,\n        animate: PropTypes.oneOfType([\n            PropTypes.bool,\n            PropTypes.shape({\n                openDuration: PropTypes.number,\n                closeDuration: PropTypes.number\n            })\n        ]),\n        margin: PropTypes.shape({\n            horizontal: PropTypes.number,\n            vertical: PropTypes.number\n        }),\n        positionMode: PropTypes.oneOf([\n            'fixed',\n            'absolute'\n        ]),\n        scale: PropTypes.number,\n        style: PropTypes.object,\n        onClose: PropTypes.func,\n        onPosition: PropTypes.func,\n        onOpen: PropTypes.func\n    };\n    /**\n     * @hidden\n     */\n    PopupWithoutContext.defaultProps = {\n        collision: {\n            horizontal: CollisionEnum.fit,\n            vertical: CollisionEnum.flip\n        },\n        anchorAlign: {\n            horizontal: AlignPoint.left,\n            vertical: AlignPoint.bottom\n        },\n        popupAlign: {\n            horizontal: AlignPoint.left,\n            vertical: AlignPoint.top\n        },\n        offset: DEFAULT_OFFSET,\n        animate: true,\n        show: false,\n        margin: {\n            horizontal: 0,\n            vertical: 0\n        },\n        positionMode: 'absolute'\n    };\n    /**\n     * @hidden\n     */\n    PopupWithoutContext.contextType = ZIndexContext;\n    /**\n     * @hidden\n     */\n    PopupWithoutContext.displayName = 'PopupComponent';\n    return PopupWithoutContext;\n}(React.Component));\nexport { PopupWithoutContext };\n","var __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};\nimport * as React from 'react';\nimport { PopupWithoutContext } from './PopupWithoutContext';\n/**\n * The PopupPropsContext. It allows to configure the Popup props from a wrapper component.\n *\n * @example\n * ```jsx-no-run\n *  <PopupPropsContext.Provider value={props => ({ ...props, appendTo: document.querySelector('myPopupsContainer') })}>\n *      <DropDownList />\n *      <Editor />\n *  </PopupPropsContext.Provider>\n * ```\n */\nexport var PopupPropsContext = React.createContext(function (props) { return props; });\n/**\n * The KendoReact Popup component.\n */\nexport var Popup = React.forwardRef(function (props, ref) {\n    var contextPropsCallback = React.useContext(PopupPropsContext);\n    var popupProps = contextPropsCallback.call(undefined, props);\n    return (React.createElement(PopupWithoutContext, __assign({ ref: ref }, popupProps)));\n});\nPopup.displayName = 'Popup';\n","var __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 __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};\nimport * as React from 'react';\nimport { Popup } from '@progress/kendo-react-popup';\n/**\n * @hidden\n */\nvar ListContainer = /** @class */ (function (_super) {\n    __extends(ListContainer, _super);\n    function ListContainer() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ListContainer.prototype.render = function () {\n        var _a = this.props, children = _a.children, width = _a.width, dir = _a.dir, itemsCount = _a.itemsCount, popupSettings = _a.popupSettings;\n        return (React.createElement(Popup, __assign({ style: { width: width, direction: dir }, contentKey: itemsCount && itemsCount.join() }, popupSettings), children));\n    };\n    return ListContainer;\n}(React.Component));\nexport default ListContainer;\n","var __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})();\nimport * as React from 'react';\n/**\n * @hidden\n */\nvar ListFilter = /** @class */ (function (_super) {\n    __extends(ListFilter, _super);\n    function ListFilter() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ListFilter.prototype.render = function () {\n        var _this = this;\n        return (React.createElement(\"span\", { className: \"k-list-filter\" },\n            React.createElement(\"input\", { ref: function (input) { return _this.input = input; }, value: this.props.value || '', className: \"k-textbox\", onChange: this.props.onChange, onKeyDown: this.props.onKeyDown }),\n            React.createElement(\"span\", { className: \"k-icon k-i-search\" })));\n    };\n    return ListFilter;\n}(React.Component));\nexport default ListFilter;\n","/**\n * @hidden\n */\nvar isPresent = function (value) { return value !== null && value !== undefined; };\n/**\n * @hidden\n */\nvar sameCharsOnly = function (word, character) {\n    for (var idx = 0; idx < word.length; idx++) {\n        if (word.charAt(idx) !== character) {\n            return false;\n        }\n    }\n    return true;\n};\n/**\n * @hidden\n */\nvar shuffleData = function (data, splitIndex, defaultItem) {\n    var result = data;\n    if (defaultItem) {\n        result = [defaultItem].concat(result);\n    }\n    return result.slice(splitIndex).concat(result.slice(0, splitIndex));\n};\n/**\n * @hidden\n */\nvar matchText = function (text, word, ignoreCase) {\n    if (!isPresent(text)) {\n        return false;\n    }\n    var temp = String(text);\n    if (ignoreCase) {\n        temp = temp.toLowerCase();\n    }\n    return temp.indexOf(word) === 0;\n};\n/**\n * @hidden\n */\nvar scrollToItem = function (scrollElem, list, itemIndex, translate, virtualScroll) {\n    var viewportHeight = scrollElem.offsetHeight;\n    var li = list.children.item(itemIndex);\n    var itemOffsetTop = li.offsetTop + (virtualScroll ? translate - scrollElem.scrollTop : 0);\n    var itemHeight = li.offsetHeight;\n    if (virtualScroll) {\n        var diff = 0;\n        if (itemOffsetTop + itemHeight > viewportHeight) {\n            diff = itemOffsetTop + itemHeight - viewportHeight;\n        }\n        else if (itemOffsetTop < 0) {\n            diff = itemOffsetTop;\n        }\n        if (diff !== 0) {\n            scrollElem.scrollTop += diff;\n        }\n        else if (scrollElem.scrollTop === 0 && translate !== 0) {\n            scrollElem.scrollTop = translate;\n        }\n    }\n    else {\n        if (itemOffsetTop + itemHeight > viewportHeight + scrollElem.scrollTop) {\n            scrollElem.scrollTop = (itemOffsetTop + itemHeight - viewportHeight);\n        }\n        else if (itemOffsetTop < scrollElem.scrollTop) {\n            scrollElem.scrollTop -= scrollElem.scrollTop - itemOffsetTop;\n        }\n    }\n};\n/**\n * @hidden\n */\nvar itemIndexStartsWith = function (items, text, field) {\n    var result = -1;\n    if (text) {\n        text = text.toLowerCase();\n        for (var i = 0; i < items.length; i++) {\n            var itemText = (getItemValue(items[i], field) || '') + '';\n            if (itemText && itemText.toLowerCase().startsWith(text)) {\n                result = i;\n                break;\n            }\n        }\n    }\n    return result;\n};\n/**\n * @hidden\n */\nvar getItemIndexByText = function (data, text, textField, matchCase) {\n    if (matchCase === void 0) { matchCase = false; }\n    var casing = function (value) { return matchCase ? value : value.toLowerCase(); };\n    return data.findIndex(function (item) {\n        return textField ? casing(getItemValue(item, textField)) === casing(text) :\n            casing(text) === casing(item.toString());\n    });\n};\n/**\n * @hidden\n */\nvar getItemValue = function (item, field) {\n    if (field && isPresent(item)) {\n        var path = field.split('.');\n        var data_1 = item;\n        path.forEach(function (p) {\n            data_1 = data_1 ? data_1[p] : undefined;\n        });\n        return data_1;\n    }\n    return item;\n};\n/**\n * @hidden\n */\nvar matchDataCollections = function (data1, data2, key) {\n    if (data1 === void 0) { data1 = []; }\n    if (data2 === void 0) { data2 = []; }\n    if (data1 === data2) {\n        return true;\n    }\n    if (data1.length !== data2.length) {\n        return false;\n    }\n    for (var i = 0; i < data1.length; i++) {\n        if (!areSame(data1[i], data2[i], key)) {\n            return false;\n        }\n    }\n    return true;\n};\n/**\n * @hidden\n */\nvar removeDataItems = function (items, toRemove, key) {\n    toRemove.forEach(function (item) {\n        var itemIndex = items.findIndex(function (i) { return areSame(i, item, key); });\n        if (itemIndex !== -1) {\n            items.splice(itemIndex, 1);\n        }\n    });\n};\n/**\n * @hidden\n */\nvar areSame = function (item1, item2, key) {\n    return item1 === item2 ||\n        (isPresent(item1) === isPresent(item2) && getItemValue(item1, key) === getItemValue(item2, key));\n};\n/**\n * @hidden\n */\nvar getFocusedItem = function (data, value, textField) {\n    if (value) {\n        var selectedIndex = getItemIndexByText(data, value, textField, true);\n        return selectedIndex !== -1 ? data[selectedIndex] : data[itemIndexStartsWith(data, value, textField)];\n    }\n    return data[0];\n};\n/**\n * @hidden\n */\nvar suggestValue = function (value, data, textField) {\n    if (data === void 0) { data = []; }\n    var suggested = '';\n    if (value) {\n        var suggestedItem = data[itemIndexStartsWith(data, value, textField)];\n        if (suggestedItem) {\n            var suggestedText = getItemValue(suggestedItem, textField);\n            if (value.toLowerCase() !== suggestedText.toLowerCase()) {\n                suggested = suggestedText.substring(value.length);\n            }\n        }\n    }\n    return suggested;\n};\n/**\n * @hidden\n */\nvar preventDefaultNonInputs = function (event) {\n    if (event.target.nodeName !== 'INPUT') {\n        event.preventDefault();\n    }\n};\n/**\n * @hidden\n */\nvar matchTags = function (tag1, tag2, key) {\n    if (!!tag1 !== !!tag2 || tag1.text !== tag2.text) {\n        return false;\n    }\n    return tag1 === tag2 || matchDataCollections(tag1.data, tag2.data, key);\n};\nexport { isPresent, sameCharsOnly, shuffleData, matchText, scrollToItem, itemIndexStartsWith, getItemIndexByText, getItemValue, matchDataCollections, removeDataItems, areSame, getFocusedItem, preventDefaultNonInputs, suggestValue, matchTags };\n","var __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})();\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { getItemValue } from './utils';\nvar preventDefault = function (e) { return e.preventDefault(); };\n/**\n * @hidden\n */\nvar ListDefaultItem = /** @class */ (function (_super) {\n    __extends(ListDefaultItem, _super);\n    function ListDefaultItem() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ListDefaultItem.prototype.render = function () {\n        var _a = this.props, selected = _a.selected, defaultItem = _a.defaultItem, textField = _a.textField;\n        return (React.createElement(\"div\", { onClick: this.props.onClick, onMouseDown: preventDefault, className: classNames('k-list-optionlabel', {\n                'k-state-selected': selected\n            }) }, getItemValue(defaultItem, textField) || ''));\n    };\n    return ListDefaultItem;\n}(React.Component));\nexport default ListDefaultItem;\n","var __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})();\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { getItemValue } from './utils';\n// tslint:enable:max-line-length\n/**\n * @hidden\n */\nvar ListItem = /** @class */ (function (_super) {\n    __extends(ListItem, _super);\n    function ListItem() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.handleClick = function (e) { return _this.props.onClick(_this.props.index, e); };\n        return _this;\n    }\n    ListItem.prototype.render = function () {\n        var _a = this.props, selected = _a.selected, group = _a.group, dataItem = _a.dataItem, renderer = _a.render;\n        var item = (React.createElement(\"li\", { id: this.props.id, role: \"option\", \"aria-selected\": selected, className: classNames('k-item', {\n                'k-state-selected': selected,\n                'k-state-focused': this.props.focused,\n                'k-first': Boolean(group)\n            }), onClick: this.handleClick },\n            getItemValue(dataItem, this.props.textField).toString(),\n            group !== undefined ? React.createElement(\"div\", { className: \"k-group\" }, group) : null));\n        return renderer !== undefined ? renderer.call(undefined, item, this.props) : item;\n    };\n    return ListItem;\n}(React.Component));\nexport default ListItem;\n","var _a;\n/**\n * @hidden\n */\nexport var nodata = 'dropdowns.nodata';\n/**\n * @hidden\n */\nexport var clear = 'dropdowns.clear';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n    _a[clear] = 'clear',\n    _a[nodata] = 'NO DATA FOUND.',\n    _a);\n","var __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})();\nimport * as React from 'react';\nimport ListItem from './ListItem';\nimport { areSame, getItemValue } from './utils';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, nodata } from '../messages';\n/**\n * @hidden\n */\nvar List = /** @class */ (function (_super) {\n    __extends(List, _super);\n    function List() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    List.prototype.renderItems = function () {\n        var _this = this;\n        var _a = this.props, textField = _a.textField, valueField = _a.valueField, groupField = _a.groupField, optionsGuid = _a.optionsGuid, _b = _a.skip, skip = _b === void 0 ? 0 : _b, focusedIndex = _a.focusedIndex, _c = _a.highlightSelected, highlightSelected = _c === void 0 ? true : _c, value = _a.value, data = _a.data, itemRender = _a.itemRender;\n        var isArray = Array.isArray(value);\n        return data.map(function (item, index) {\n            var realIndex = skip + index;\n            var selected = highlightSelected &&\n                ((!isArray && areSame(item, value, valueField)) ||\n                    (isArray && value.findIndex(function (i) { return areSame(i, item, valueField); }) !== -1));\n            var group = undefined;\n            var current, previous;\n            if (index > 0 && groupField !== undefined) {\n                current = getItemValue(item, groupField);\n                previous = getItemValue(data[index - 1], groupField);\n                if (current && previous && current !== previous) {\n                    group = current;\n                }\n            }\n            return (React.createElement(ListItem, { id: \"option-\" + optionsGuid + \"-\" + realIndex, dataItem: item, selected: selected, focused: focusedIndex === index, index: realIndex, key: realIndex, onClick: _this.props.onClick, textField: textField, group: group, render: itemRender }));\n        });\n    };\n    List.prototype.renderNoValueElement = function (localizationService) {\n        var noDataRender = this.props.noDataRender;\n        var noDataElement = (React.createElement(\"div\", { className: 'k-nodata' },\n            React.createElement(\"div\", null, localizationService.toLanguageString(nodata, messages[nodata]))));\n        return noDataRender ?\n            noDataRender.call(undefined, noDataElement) : noDataElement;\n    };\n    List.prototype.render = function () {\n        var localizationService = provideLocalizationService(this);\n        var _a = this.props, id = _a.id, show = _a.show, wrapperCssClass = _a.wrapperCssClass, wrapperStyle = _a.wrapperStyle, listStyle = _a.listStyle, listRef = _a.listRef, wrapperRef = _a.wrapperRef, _b = _a.listClassName, listClassName = _b === void 0 ? 'k-list' : _b;\n        var items = this.renderItems();\n        return (items.length ? (React.createElement(\"div\", { className: wrapperCssClass, style: wrapperStyle, ref: wrapperRef, onMouseDown: this.props.onMouseDown, onBlur: this.props.onBlur, onScroll: this.props.onScroll, unselectable: \"on\" },\n            React.createElement(\"ul\", { id: id, role: \"listbox\", \"aria-hidden\": !show ? true : undefined, className: listClassName + ' k-reset', ref: listRef, style: listStyle }, items))) : this.renderNoValueElement(localizationService));\n    };\n    return List;\n}(React.Component));\nexport default List;\nregisterForLocalization(List);\n","var maxHeightIE = 1533915;\n/**\n * @hidden\n */\nvar VirtualScroll = /** @class */ (function () {\n    function VirtualScroll() {\n        var _this = this;\n        this.containerHeight = 0;\n        this.skip = 0;\n        this.total = 0;\n        this.enabled = false;\n        this.pageSize = 0;\n        this.itemHeight = 0;\n        this.prevScrollPos = 0;\n        this.listTranslate = 0;\n        this.scrollSyncing = false;\n        this.scrollerRef = function (element) {\n            var vs = _this;\n            vs.container = element;\n            if (element) {\n                element.setAttribute('unselectable', 'on');\n                window.setTimeout(vs.calcScrollElementHeight.bind(vs), 0);\n            }\n        };\n        this.calcScrollElementHeight = function () {\n            _this.scrollSyncing = true;\n            var heightChanged = false;\n            _this.itemHeight = _this.list ? _this.list.children[0].offsetHeight : _this.itemHeight;\n            _this.containerHeight = Math.min(maxHeightIE, _this.itemHeight * _this.total);\n            var newHeight = _this.containerHeight;\n            if (_this.scrollElement) {\n                heightChanged = _this.scrollElement.style.height !== newHeight + 'px';\n                if (heightChanged) {\n                    _this.scrollElement.style.height = newHeight + 'px';\n                }\n            }\n            _this.scrollSyncing = false;\n            return heightChanged;\n        };\n        this.scrollHandler = this.scrollHandler.bind(this);\n    }\n    Object.defineProperty(VirtualScroll.prototype, \"translate\", {\n        get: function () {\n            return this.listTranslate;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    VirtualScroll.prototype.changePage = function (skip, e) {\n        var newSkip = Math.min(Math.max(0, skip), this.total - this.pageSize);\n        if (newSkip !== this.skip) {\n            this.PageChange({ skip: newSkip, take: this.pageSize }, e);\n        }\n    };\n    VirtualScroll.prototype.translateTo = function (dY) {\n        this.listTranslate = dY;\n        if (this.list) {\n            this.list.style.transform = 'translateY(' + dY + 'px)';\n        }\n    };\n    VirtualScroll.prototype.reset = function () {\n        if (this.container) {\n            this.calcScrollElementHeight();\n            this.container.scrollTop = 0;\n            this.translateTo(0);\n        }\n    };\n    VirtualScroll.prototype.scrollToEnd = function () {\n        if (this.container && this.list) {\n            this.calcScrollElementHeight();\n            this.container.scrollTop = this.container.scrollHeight - this.container.offsetHeight;\n            this.translateTo(this.container.scrollHeight - this.list.offsetHeight);\n        }\n    };\n    VirtualScroll.prototype.localScrollUp = function (e) {\n        var height = this.itemHeight;\n        var scrollTop = this.container.scrollTop;\n        var targetTranslate = this.listTranslate;\n        var items;\n        var additionalOnTop = scrollTop - targetTranslate;\n        if (additionalOnTop > height) {\n            return;\n        }\n        for (items = 0; items < this.skip; items++) {\n            if (targetTranslate + height + additionalOnTop <= scrollTop) {\n                break;\n            }\n            targetTranslate -= height;\n        }\n        targetTranslate = this.validateTranslate(targetTranslate);\n        if (this.skip - items <= 0 && targetTranslate >= scrollTop) {\n            this.translateTo(0);\n            this.changePage(0, e);\n            this.container.scrollTop = 0;\n            return;\n        }\n        if (targetTranslate !== this.listTranslate) {\n            this.translateTo(targetTranslate);\n            this.changePage(this.skip - items, e);\n        }\n    };\n    VirtualScroll.prototype.localScrollDown = function (e) {\n        var height = this.itemHeight;\n        var scrollTop = this.container.scrollTop;\n        var targetTranslate = this.listTranslate;\n        var itemsLenght = this.list.children.length;\n        var items;\n        for (items = 0; items < itemsLenght; items++) {\n            if (targetTranslate + height >= scrollTop) {\n                break;\n            }\n            targetTranslate += height;\n        }\n        targetTranslate = this.validateTranslate(targetTranslate);\n        if (items >= itemsLenght && this.skip + items >= this.total) {\n            this.translateTo(targetTranslate);\n            this.changePage(this.total - 1, e);\n        }\n        else if (targetTranslate !== this.listTranslate) {\n            this.translateTo(targetTranslate);\n            this.changePage(this.skip + items, e);\n        }\n    };\n    VirtualScroll.prototype.scrollNonStrict = function (e) {\n        var floatItemIndex = this.total * this.prevScrollPos / (this.containerHeight);\n        var itemIndex = Math.min(Math.floor(floatItemIndex), this.total - 1);\n        var targetTranslate = this.containerHeight * floatItemIndex / this.total;\n        targetTranslate = this.validateTranslate(targetTranslate);\n        this.translateTo(targetTranslate);\n        this.changePage(itemIndex, e);\n    };\n    VirtualScroll.prototype.scrollHandler = function (e) {\n        var scrollTop = this.container ? this.container.scrollTop : 0;\n        var prev = this.prevScrollPos;\n        this.prevScrollPos = scrollTop;\n        if (!this.enabled || !this.list || !this.container || this.scrollSyncing) {\n            return;\n        }\n        if (scrollTop - prev <= 0 && scrollTop > this.listTranslate - this.list.scrollHeight / 10) {\n            this.localScrollUp(e);\n        }\n        else if (scrollTop - prev > 0 && scrollTop < this.listTranslate + this.list.scrollHeight * 2 / 3) {\n            this.localScrollDown(e);\n        }\n        else {\n            this.scrollNonStrict(e);\n        }\n    };\n    VirtualScroll.prototype.validateTranslate = function (translate) {\n        translate = Math.max(0, translate);\n        translate = Math.min(this.containerHeight - this.list.offsetHeight, translate);\n        return translate;\n    };\n    return VirtualScroll;\n}());\nexport default VirtualScroll;\n","import { isPresent } from './utils';\nimport { Keys } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar Navigation = /** @class */ (function () {\n    function Navigation() {\n    }\n    Navigation.prototype.navigate = function (args) {\n        var keyCode = args.keyCode;\n        if (keyCode === Keys.up || keyCode === Keys.left) {\n            return this.next({ current: args.current, min: args.min, max: args.max, step: -1 });\n        }\n        else if (keyCode === Keys.down || keyCode === Keys.right) {\n            return this.next({ current: args.current, min: args.min, max: args.max, step: 1 });\n        }\n        else if (keyCode === Keys.home) {\n            return 0;\n        }\n        else if (keyCode === Keys.end) {\n            return args.max;\n        }\n    };\n    Navigation.prototype.next = function (args) {\n        if (!isPresent(args.current)) {\n            return args.min;\n        }\n        else {\n            return Math.min(args.max, Math.max(args.current + args.step, args.min));\n        }\n    };\n    return Navigation;\n}());\nexport { Navigation };\n","/* eslint-disable no-bitwise */\n/**\n * @hidden\n */\nexport var guid = function () {\n    var id = '';\n    var i;\n    var random;\n    for (i = 0; i < 32; i++) {\n        random = Math.random() * 16 | 0;\n        if (i === 8 || i === 12 || i === 16 || i === 20) {\n            id += '-';\n        }\n        id += (i === 12 ? 4 : (i === 16 ? (random & 3 | 8) : random)).toString(16);\n    }\n    return id;\n};\n","var __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};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport VirtualScroll from './VirtualScroll';\nimport { Navigation } from './Navigation';\nimport { scrollToItem, areSame } from './utils';\nimport { guid } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar DropDownBase = /** @class */ (function () {\n    function DropDownBase(component) {\n        var _this = this;\n        this.vs = new VirtualScroll();\n        this.navigation = new Navigation();\n        this.handleItemClick = function (index, event) {\n            var state = _this.initState();\n            state.syntheticEvent = event;\n            _this.component.handleItemSelect(index, state);\n            _this.togglePopup(state);\n            _this.applyState(state);\n        };\n        this.handleFocus = function (event) {\n            if (!_this.component.state.focused) {\n                var state = _this.initState();\n                state.data.focused = true;\n                state.events.push({ type: 'onFocus' });\n                state.syntheticEvent = event;\n                _this.applyState(state);\n            }\n        };\n        this.filterChanged = function (text, state) {\n            var _a = _this.component.props, textField = _a.textField, filterable = _a.filterable;\n            if (filterable) {\n                state.events.push({\n                    type: 'onFilterChange',\n                    filter: {\n                        field: textField,\n                        operator: 'contains',\n                        ignoreCase: true,\n                        value: text\n                    }\n                });\n            }\n        };\n        this.togglePopup = function (state) {\n            var props = _this.component.props;\n            var opened = props.opened !== undefined ? props.opened : _this.component.state.opened;\n            if (props.opened === undefined) {\n                state.data.opened = !opened;\n            }\n            if (opened) {\n                state.events.push({ type: 'onClose' });\n            }\n            else {\n                state.events.push({ type: 'onOpen' });\n                _this.calculatePopupWidth();\n            }\n        };\n        this.pageChange = function (page, syntheticEvent) {\n            var state = _this.initState();\n            state.syntheticEvent = syntheticEvent;\n            _this.triggerOnPageChange(state, page.skip, page.take);\n            _this.applyState(state);\n        };\n        this.scrollToVirtualItem = function (virtual, selectedItemIndex) {\n            var vs = _this.vs;\n            vs.enabled = false;\n            if (virtual.skip === 0) {\n                vs.reset();\n            }\n            else if (virtual.skip + virtual.pageSize === virtual.total) {\n                vs.scrollToEnd();\n            }\n            else {\n                var scrollTop = vs.translate;\n                if (scrollTop === 0) {\n                    vs.calcScrollElementHeight();\n                    scrollTop = (vs.itemHeight * virtual.skip);\n                    vs.translateTo(scrollTop - vs.itemHeight);\n                }\n                if (vs.container) {\n                    vs.container.scrollTop = scrollTop;\n                }\n                _this.scrollToItem(selectedItemIndex, true);\n            }\n            window.setTimeout(function () { return vs.enabled = true; }, 10);\n        };\n        // Common rendering\n        this.renderScrollWrapper = function (children, onScroll) {\n            var popupSettings = _this.getPopupSettings();\n            var vs = _this.vs;\n            return vs.enabled ? (React.createElement(\"div\", { onScroll: function (e) {\n                    vs.scrollHandler(e);\n                    if (onScroll) {\n                        onScroll.call(undefined, e);\n                    }\n                }, ref: vs.scrollerRef, style: {\n                    height: popupSettings.height,\n                    overflowY: 'scroll'\n                } }, children)) :\n                (children);\n        };\n        this.renderScrollElement = function () {\n            var vs = _this.vs;\n            return vs.enabled && (React.createElement(\"div\", { ref: function (element) { return vs.scrollElement = element; }, key: 'scrollElementKey' }));\n        };\n        this.listBoxId = guid();\n        this.guid = guid();\n        this.component = component;\n        this.vs.PageChange = this.pageChange;\n    }\n    DropDownBase.prototype.didMount = function () {\n        var props = this.component.props;\n        var popupSettings = props.popupSettings || {};\n        var style = props.style || {};\n        var popupWidth = popupSettings.width;\n        var shouldUpdate = props.opened === true;\n        if (popupWidth === undefined) {\n            this.calculatePopupWidth();\n        }\n        if (props.dir === undefined && style.direction === undefined) {\n            this.calculateDir();\n            shouldUpdate = true;\n        }\n        if (shouldUpdate) {\n            this.component.forceUpdate();\n        }\n    };\n    DropDownBase.prototype.calculateDir = function () {\n        var element = this.component.element;\n        if (element && element.ownerDocument && element.ownerDocument.defaultView) {\n            this.dirCalculated = element.ownerDocument.defaultView.getComputedStyle(element).direction || undefined;\n        }\n    };\n    DropDownBase.prototype.calculatePopupWidth = function () {\n        if (this.wrapper) {\n            this.popupWidth = this.wrapper.offsetWidth + 'px';\n        }\n    };\n    DropDownBase.prototype.scrollToItem = function (itemIndex, vsEnabled) {\n        var list = this.list || this.vs.list;\n        if (list && itemIndex >= 0) {\n            var vs = this.vs;\n            var scrollElement = (vs.container || list.parentNode);\n            var virtualScroll = vsEnabled !== undefined ? vsEnabled : vs.enabled;\n            scrollToItem(scrollElement, list, itemIndex, vs.translate, virtualScroll);\n        }\n    };\n    DropDownBase.prototype.initState = function () {\n        var state = {\n            data: {},\n            events: [],\n            syntheticEvent: undefined\n        };\n        return state;\n    };\n    DropDownBase.prototype.applyState = function (state) {\n        var _this = this;\n        if (Object.keys(state.data).length > 0) {\n            this.component.setState(state.data);\n        }\n        var eventArgs = {\n            syntheticEvent: state.syntheticEvent,\n            nativeEvent: state.syntheticEvent ? state.syntheticEvent.nativeEvent : undefined,\n            target: this.component,\n            value: this.component.value\n        };\n        state.events.forEach(function (eventData) {\n            var type = eventData.type;\n            delete eventData.type;\n            var handler = type && _this.component.props[type];\n            if (handler) {\n                handler.call(undefined, __assign({}, eventArgs, eventData));\n            }\n        });\n    };\n    DropDownBase.prototype.triggerOnPageChange = function (state, skip, take) {\n        var virtual = this.component.props.virtual;\n        if (virtual) {\n            var newSkip = Math.min(Math.max(0, skip), Math.max(0, virtual.total - take));\n            if (newSkip !== virtual.skip) {\n                state.events.push({\n                    type: 'onPageChange',\n                    page: { skip: newSkip, take: take }\n                });\n            }\n        }\n    };\n    DropDownBase.prototype.triggerPageChangeCornerItems = function (item, state) {\n        var props = this.component.props;\n        var _a = props.data, data = _a === void 0 ? [] : _a, dataItemKey = props.dataItemKey, virtual = props.virtual;\n        var opened = props.opened !== undefined ? props.opened : this.component.state.opened;\n        if (item && virtual && this.vs.enabled) {\n            if (virtual.skip > 0 && areSame(item, data[0], dataItemKey)) {\n                this.triggerOnPageChange(state, virtual.skip - 1, virtual.pageSize);\n            }\n            else if (!opened && virtual.skip + virtual.pageSize < virtual.total &&\n                areSame(item, data[data.length - 1], dataItemKey)) {\n                this.triggerOnPageChange(state, virtual.skip + 1, virtual.pageSize);\n            }\n        }\n    };\n    DropDownBase.prototype.getPopupSettings = function () {\n        return Object\n            .assign({}, DropDownBase.defaultProps.popupSettings, this.component.props.popupSettings);\n    };\n    DropDownBase.basicPropTypes = {\n        opened: PropTypes.bool,\n        disabled: PropTypes.bool,\n        dir: PropTypes.string,\n        tabIndex: PropTypes.number,\n        accessKey: PropTypes.string,\n        data: PropTypes.array,\n        textField: PropTypes.string,\n        className: PropTypes.string,\n        label: PropTypes.string,\n        loading: PropTypes.bool,\n        popupSettings: PropTypes.shape({\n            animate: PropTypes.oneOfType([PropTypes.bool, PropTypes.shape({\n                    openDuration: PropTypes.number,\n                    closeDuration: PropTypes.number\n                })]),\n            popupClass: PropTypes.string,\n            className: PropTypes.string,\n            appendTo: PropTypes.any,\n            width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n            height: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n        }),\n        onOpen: PropTypes.func,\n        onClose: PropTypes.func,\n        onFocus: PropTypes.func,\n        onBlur: PropTypes.func,\n        onChange: PropTypes.func,\n        itemRender: PropTypes.func,\n        listNoDataRender: PropTypes.func,\n        focusedItemIndex: PropTypes.func,\n        header: PropTypes.node,\n        footer: PropTypes.node\n    };\n    DropDownBase.propTypes = __assign({}, DropDownBase.basicPropTypes, { value: PropTypes.any, defaultValue: PropTypes.any, filterable: PropTypes.bool, filter: PropTypes.string, virtual: PropTypes.shape({\n            pageSize: PropTypes.number.isRequired,\n            skip: PropTypes.number.isRequired,\n            total: PropTypes.number.isRequired\n        }), onFilterChange: PropTypes.func, onPageChange: PropTypes.func });\n    DropDownBase.defaultProps = {\n        popupSettings: {\n            height: '200px'\n        },\n        required: false,\n        validityStyles: true\n    };\n    return DropDownBase;\n}());\nexport default DropDownBase;\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n    name: '@progress/kendo-react-dropdowns',\n    productName: 'KendoReact',\n    productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n    publishDate: 1642516308,\n    version: '',\n    licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var __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 __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};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, Keys, getTabIndex, createPropsContext, withPropsContext } from '@progress/kendo-react-common';\nimport { FloatingLabel } from '@progress/kendo-react-labels';\nimport ListContainer from '../common/ListContainer';\nimport ListFilter from '../common/ListFilter';\nimport ListDefaultItem from '../common/ListDefaultItem';\nimport List from '../common/List';\nimport DropDownBase from '../common/DropDownBase';\nimport { isPresent, getItemValue, sameCharsOnly, shuffleData, matchText, areSame, preventDefaultNonInputs, getFocusedItem } from '../common/utils';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nvar VALIDATION_MESSAGE = 'Please select a value from the list!';\n/**\n * @hidden\n */\nvar DropDownListWithoutContext = /** @class */ (function (_super) {\n    __extends(DropDownListWithoutContext, _super);\n    function DropDownListWithoutContext(props) {\n        var _this = _super.call(this, props) || this;\n        /**\n         * @hidden\n         */\n        _this.state = {};\n        _this.base = new DropDownBase(_this);\n        _this.searchState = { word: '', last: '' };\n        _this._skipFocusEvent = false;\n        _this._filterInput = null;\n        _this._navigated = false;\n        /**\n         * @hidden\n         */\n        _this.focus = function () {\n            if (_this.base.wrapper) {\n                _this.base.wrapper.focus();\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.handleItemSelect = function (index, state) {\n            var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, virtual = _a.virtual, dataItemKey = _a.dataItemKey, defaultItem = _a.defaultItem;\n            var skip = virtual ? virtual.skip : 0;\n            var item = (index === -1 && defaultItem !== undefined) ?\n                defaultItem : data[index - skip];\n            var newSelected = !areSame(item, _this.value, dataItemKey);\n            _this.triggerOnChange(item, state);\n            if (newSelected) {\n                _this.base.triggerPageChangeCornerItems(item, state);\n            }\n        };\n        _this.renderDropDownWrapper = function () {\n            var _a = _this.props, dataItemKey = _a.dataItemKey, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField, disabled = _a.disabled, tabIndex = _a.tabIndex, loading = _a.loading, iconClassName = _a.iconClassName, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0 } : _c, valueRender = _a.valueRender;\n            var focused = _this.state.focused;\n            var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n            var value = _this.value;\n            var selectedIndex = data.findIndex(function (i) { return areSame(i, value, dataItemKey); });\n            var text = getItemValue(value, textField);\n            var valueDefaultRendering = (React.createElement(\"span\", { className: \"k-input\" }, text));\n            var valueElement = valueRender !== undefined ?\n                valueRender.call(undefined, valueDefaultRendering, value) : valueDefaultRendering;\n            return (React.createElement(\"span\", { ref: function (el) { return _this.base.wrapper = el; }, role: 'listbox', tabIndex: getTabIndex(tabIndex, disabled), accessKey: _this.props.accessKey, className: classNames('k-dropdown-wrap', {\n                    'k-state-focused': focused,\n                    'k-state-disabled': disabled\n                }), onKeyDown: _this.handleKeyDown, onKeyPress: _this.handleKeyPress, onClick: disabled ? undefined : _this.handleWrapperClick, \"aria-disabled\": disabled || undefined, \"aria-haspopup\": true, \"aria-expanded\": opened || false, \"aria-owns\": _this.base.listBoxId, \"aria-activedescendant\": opened ? ('option-' + _this.base.guid + '-' + (selectedIndex + virtual.skip)) : undefined, \"aria-label\": _this.props.label, \"aria-labelledby\": _this.props.ariaLabelledBy, \"aria-describedby\": _this.props.ariaDescribedBy, id: _this.props.id, title: _this.props.title },\n                valueElement,\n                React.createElement(\"span\", { className: \"k-select\" },\n                    React.createElement(\"span\", { className: classNames('k-icon', iconClassName, {\n                            'k-i-arrow-s': !loading && !iconClassName,\n                            'k-i-loading': loading && !iconClassName\n                        }) })),\n                _this.dummySelect(value)));\n        };\n        _this.dummySelect = function (value) {\n            /* Dummy component to support forms */\n            return (React.createElement(\"select\", { name: _this.props.name, ref: function (el) { _this._select = el; }, tabIndex: -1, \"aria-hidden\": true, title: _this.props.label, style: { opacity: 0, width: 1, border: 0, zIndex: -1, position: 'absolute', left: '50%' } },\n                React.createElement(\"option\", { value: _this.props.valueMap ? _this.props.valueMap.call(undefined, value) : value })));\n        };\n        _this.renderListContainer = function () {\n            var _a = _this.props, header = _a.header, footer = _a.footer, dir = _a.dir, _b = _a.data, data = _b === void 0 ? [] : _b;\n            var base = _this.base;\n            var popupSettings = base.getPopupSettings();\n            var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n            var virtual = _this.props.virtual !== undefined;\n            var popupWidth = popupSettings.width !== undefined ? popupSettings.width : base.popupWidth;\n            var listContainerProps = {\n                dir: dir !== undefined ? dir : base.dirCalculated,\n                width: popupWidth,\n                popupSettings: {\n                    popupClass: popupSettings.popupClass,\n                    className: classNames('k-list-container k-reset', popupSettings.className),\n                    animate: popupSettings.animate,\n                    anchor: _this.element,\n                    show: opened,\n                    onOpen: _this.onPopupOpened,\n                    onClose: _this.onPopupClosed,\n                    appendTo: popupSettings.appendTo\n                },\n                itemsCount: [data.length]\n            };\n            return (React.createElement(ListContainer, __assign({}, listContainerProps),\n                _this.renderListFilter(),\n                virtual && _this.renderDefaultItem(),\n                virtual && header,\n                _this.base.renderScrollWrapper(React.createElement(React.Fragment, null,\n                    !virtual && _this.renderDefaultItem(),\n                    !virtual && header,\n                    _this.renderList(),\n                    !virtual && footer,\n                    _this.base.renderScrollElement())),\n                virtual && footer));\n        };\n        _this.renderList = function () {\n            var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField, dataItemKey = _a.dataItemKey, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0 } : _c, listNoDataRender = _a.listNoDataRender, itemRender = _a.itemRender;\n            var vs = _this.base.vs;\n            var skip = virtual.skip;\n            var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n            var popupSettings = _this.base.getPopupSettings();\n            var translate = \"translateY(\" + vs.translate + \"px)\";\n            return (React.createElement(List, { id: _this.base.listBoxId, show: opened, data: data.slice(), focusedIndex: _this.focusedIndex(), value: _this.value, textField: textField, valueField: dataItemKey, optionsGuid: _this.base.guid, listRef: function (list) { return vs.list = _this.base.list = list; }, wrapperStyle: !vs.enabled ?\n                    { maxHeight: popupSettings.height } : { float: 'left', width: '100%' }, wrapperCssClass: !vs.enabled ? 'k-list-scroller' : undefined, listStyle: vs.enabled ?\n                    { transform: translate } : undefined, key: \"listkey\", skip: skip, onClick: _this.handleItemClick, itemRender: itemRender, noDataRender: listNoDataRender }));\n        };\n        _this.renderListFilter = function () {\n            var filterText = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n            return _this.props.filterable && (React.createElement(ListFilter, { value: filterText, ref: function (filter) { return _this._filterInput = filter && filter.input; }, onChange: _this.handleListFilterChange, onKeyDown: _this.handleKeyDown }));\n        };\n        _this.renderDefaultItem = function () {\n            var _a = _this.props, textField = _a.textField, defaultItem = _a.defaultItem, dataItemKey = _a.dataItemKey;\n            return defaultItem !== undefined && (React.createElement(ListDefaultItem, { defaultItem: defaultItem, textField: textField, selected: areSame(_this.value, defaultItem, dataItemKey), key: \"defaultitemkey\", onClick: _this.handleDefaultItemClick }));\n        };\n        _this.search = function (event) {\n            clearTimeout(_this._typingTimeout);\n            if (!_this.props.filterable) {\n                _this._typingTimeout = window.setTimeout(function () { return _this.searchState.word = ''; }, _this.props.delay);\n                _this.selectNext(event);\n            }\n        };\n        _this.selectNext = function (event) {\n            var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, dataItemKey = _a.dataItemKey;\n            var mappedData = data.map(function (item, idx) {\n                return { item: item, itemIndex: idx };\n            });\n            var word = _this.searchState.word;\n            var last = _this.searchState.last;\n            var isInLoop = sameCharsOnly(word, last);\n            var dataLength = mappedData.length;\n            var startIndex = Math.max(0, data.findIndex(function (i) { return areSame(i, _this.value, dataItemKey); }));\n            var defaultItem;\n            if (_this.props.defaultItem) {\n                defaultItem = { item: _this.props.defaultItem, itemIndex: -1 };\n                dataLength += 1;\n                startIndex += 1;\n            }\n            startIndex += isInLoop ? 1 : 0;\n            mappedData = shuffleData(mappedData, startIndex, defaultItem);\n            var text, loopMatch, nextMatch, index = 0;\n            var _c = _this.props, textField = _c.textField, ignoreCase = _c.ignoreCase;\n            for (; index < dataLength; index++) {\n                text = getItemValue(mappedData[index].item, textField);\n                loopMatch = isInLoop && matchText(text, last, ignoreCase);\n                nextMatch = matchText(text, word, ignoreCase);\n                if (loopMatch || nextMatch) {\n                    index = mappedData[index].itemIndex;\n                    break;\n                }\n            }\n            if (index !== dataLength) {\n                var state = _this.base.initState();\n                state.syntheticEvent = event;\n                _this.handleItemSelect(index, state);\n                _this.applyState(state);\n                _this._valueDuringOnChange = undefined;\n            }\n        };\n        _this.handleKeyDown = function (event) {\n            var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, filterable = _a.filterable, disabled = _a.disabled, _c = _a.leftRightKeysNavigation, leftRightKeysNavigation = _c === void 0 ? true : _c, _d = _a.virtual, virtual = _d === void 0 ? { skip: 0, total: 0, pageSize: 0 } : _d;\n            var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n            var keyCode = event.keyCode;\n            var homeOrEndKeys = keyCode === Keys.home || keyCode === Keys.end;\n            var upOrDownKeys = keyCode === Keys.up || keyCode === Keys.down;\n            var shouldOpen = !opened &&\n                ((event.altKey && keyCode === Keys.down) || keyCode === Keys.enter || keyCode === Keys.space);\n            var shouldClose = opened && ((event.altKey && keyCode === Keys.up) || keyCode === Keys.esc);\n            var leftOrRightKeys = leftRightKeysNavigation && (keyCode === Keys.left || keyCode === Keys.right);\n            var shouldNavigate = upOrDownKeys || (!filterable && (leftOrRightKeys || homeOrEndKeys));\n            var state = _this.base.initState();\n            state.syntheticEvent = event;\n            if (disabled) {\n                return;\n            }\n            else if (homeOrEndKeys && _this.base.vs.enabled) {\n                if (keyCode === Keys.home) {\n                    if (virtual.skip !== 0) {\n                        _this.base.triggerOnPageChange(state, 0, virtual.pageSize);\n                        _this._navigated = true;\n                    }\n                    else {\n                        _this.triggerOnChange(data[0], state);\n                    }\n                }\n                else {\n                    if (virtual.skip < virtual.total - virtual.pageSize) {\n                        _this.base.triggerOnPageChange(state, virtual.total - virtual.pageSize, virtual.pageSize);\n                        _this._navigated = true;\n                    }\n                    else {\n                        _this.triggerOnChange(data[data.length - 1], state);\n                    }\n                }\n            }\n            else if (opened && keyCode === Keys.enter) {\n                var focusedIndex = _this.focusedIndex();\n                if (focusedIndex !== undefined) {\n                    _this.handleItemSelect(focusedIndex, state);\n                }\n                _this.base.togglePopup(state);\n                event.preventDefault();\n            }\n            else if (shouldOpen || shouldClose) {\n                _this.base.togglePopup(state);\n                event.preventDefault();\n            }\n            else if (shouldNavigate) {\n                _this.onNavigate(state, keyCode);\n                event.preventDefault();\n            }\n            _this.applyState(state);\n        };\n        _this.handleItemClick = function (index, event) {\n            _this.base.handleItemClick(index, event);\n            _this._valueDuringOnChange = undefined;\n        };\n        _this.handleFocus = function (event) {\n            if (_this._skipFocusEvent) {\n                return;\n            }\n            _this.base.handleFocus(event);\n        };\n        _this.handleBlur = function (event) {\n            if (_this._skipFocusEvent || !_this.state.focused) {\n                return;\n            }\n            var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n            var state = _this.base.initState();\n            state.syntheticEvent = event;\n            state.data.focused = false;\n            state.events.push({ type: 'onBlur' });\n            if (opened) {\n                _this.base.togglePopup(state);\n            }\n            _this.applyState(state);\n        };\n        _this.handleDefaultItemClick = function (event) {\n            var state = _this.base.initState();\n            state.syntheticEvent = event;\n            _this.base.togglePopup(state);\n            _this.triggerOnChange(_this.props.defaultItem, state);\n            _this.applyState(state);\n        };\n        _this.handleWrapperClick = function (event) {\n            var state = _this.base.initState();\n            state.syntheticEvent = event;\n            if (!_this.state.focused) {\n                state.data.focused = true;\n            }\n            _this.base.togglePopup(state);\n            _this.applyState(state);\n        };\n        _this.handleKeyPress = function (event) {\n            if (_this.props.filterable || event.which === 0 || event.keyCode === Keys.enter) {\n                return;\n            }\n            var character = String.fromCharCode(event.charCode || event.keyCode);\n            if (_this.props.ignoreCase) {\n                character = character.toLowerCase();\n            }\n            if (character === ' ') {\n                event.preventDefault();\n            }\n            _this.searchState = {\n                word: _this.searchState.word + character,\n                last: _this.searchState.last + character\n            };\n            _this.search(event);\n        };\n        _this.handleListFilterChange = function (event) {\n            var state = _this.base.initState();\n            state.syntheticEvent = event;\n            if (_this.props.filter === undefined) {\n                state.data.text = event.target.value;\n            }\n            _this.base.filterChanged(event.target.value, state);\n            _this.applyState(state);\n        };\n        _this.onPopupOpened = function () {\n            if (_this._filterInput) {\n                _this.focusElement(_this._filterInput);\n            }\n        };\n        _this.onPopupClosed = function () {\n            if (_this.state.focused) {\n                window.setTimeout(function () {\n                    if (_this.state.focused && _this.base.wrapper) {\n                        _this.focusElement(_this.base.wrapper);\n                    }\n                });\n            }\n        };\n        _this.setValidity = function () {\n            if (_this._select && _this._select.setCustomValidity) {\n                _this._select.setCustomValidity(_this.validity.valid\n                    ? ''\n                    : _this.props.validationMessage || VALIDATION_MESSAGE);\n            }\n        };\n        validatePackage(packageMetadata);\n        return _this;\n    }\n    Object.defineProperty(DropDownListWithoutContext.prototype, \"element\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DropDownListWithoutContext.prototype, \"actionElement\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this.base.wrapper;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DropDownListWithoutContext.prototype, \"value\", {\n        /**\n         * The value of the DropDownList.\n         */\n        get: function () {\n            var value;\n            if (this._valueDuringOnChange !== undefined) {\n                value = this._valueDuringOnChange;\n            }\n            else if (this.props.value !== undefined) {\n                value = this.props.value;\n            }\n            else if (this.state.value !== undefined) {\n                value = this.state.value;\n            }\n            else if (this.props.defaultValue !== undefined) {\n                value = this.props.defaultValue;\n            }\n            if (!isPresent(value) && this.props.defaultItem !== undefined) {\n                value = this.props.defaultItem;\n            }\n            return value;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DropDownListWithoutContext.prototype, \"index\", {\n        /**\n         * The index of the selected item.\n         */\n        get: function () {\n            var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, dataItemKey = _a.dataItemKey;\n            var value = this.value;\n            // TO DO: deprecate it!\n            return data.findIndex(function (i) { return areSame(i, value, dataItemKey); });\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DropDownListWithoutContext.prototype, \"name\", {\n        /**\n         * Gets the `name` property of the DropDownList.\n         */\n        get: function () {\n            return this.props.name;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DropDownListWithoutContext.prototype, \"validity\", {\n        /**\n         * Represents the validity state into which the DropDownList is set.\n         */\n        get: function () {\n            var customError = this.props.validationMessage !== undefined;\n            var isValid = (!this.required\n                || (this.value !== null && this.value !== '' && this.value !== undefined));\n            var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n            return {\n                customError: customError,\n                valid: valid,\n                valueMissing: this.value === null\n            };\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DropDownListWithoutContext.prototype, \"validityStyles\", {\n        get: function () {\n            return this.props.validityStyles !== undefined\n                ? this.props.validityStyles\n                : DropDownListWithoutContext.defaultProps.validityStyles;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DropDownListWithoutContext.prototype, \"required\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this.props.required !== undefined\n                ? this.props.required\n                : DropDownListWithoutContext.defaultProps.required;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    DropDownListWithoutContext.prototype.componentDidUpdate = function (prevProps, prevState) {\n        var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, dataItemKey = _a.dataItemKey, virtual = _a.virtual;\n        var prevTotal = prevProps.virtual ? prevProps.virtual.total : 0;\n        var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n        var prevOpened = prevProps.opened !== undefined ? prevProps.opened : prevState.opened;\n        var opening = !prevOpened && opened;\n        var closing = prevOpened && !opened;\n        if (!this.base.getPopupSettings().animate) {\n            if (opening) {\n                this.onPopupOpened();\n            }\n            else if (closing) {\n                // this.onPopupClosed();\n            }\n        }\n        if (virtual && virtual.total !== prevTotal) {\n            this.base.vs.calcScrollElementHeight();\n            this.base.vs.reset();\n        }\n        else {\n            var selectedItem_1 = this.value;\n            var prevSelectedItem = prevProps.value !== undefined ? prevProps.value : prevState.value;\n            var selectedItemIndex = data.findIndex(function (i) { return areSame(i, selectedItem_1, dataItemKey); });\n            var selectedItemChanged = !areSame(prevSelectedItem, selectedItem_1, dataItemKey);\n            if (opening && virtual) {\n                this.base.scrollToVirtualItem(virtual, selectedItemIndex);\n            }\n            else if (opening && !virtual) {\n                this.base.scrollToItem(selectedItemIndex);\n            }\n            else if (opened && prevOpened && selectedItem_1 && selectedItemChanged && !this._navigated) {\n                this.base.scrollToItem(selectedItemIndex);\n            }\n            else if (opened && prevOpened && this._navigated) {\n                if (this._navigated && virtual && virtual.skip === 0) {\n                    this.base.vs.reset();\n                }\n                else if (this._navigated && virtual && virtual.skip === virtual.total - virtual.pageSize) {\n                    this.base.vs.scrollToEnd();\n                }\n            }\n        }\n        this._navigated = false;\n        this.setValidity();\n    };\n    /**\n     * @hidden\n     */\n    DropDownListWithoutContext.prototype.componentDidMount = function () {\n        this.base.didMount();\n        this.setValidity();\n    };\n    /**\n     * @hidden\n     */\n    DropDownListWithoutContext.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, style = _a.style, className = _a.className, label = _a.label, dir = _a.dir, virtual = _a.virtual;\n        var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n        var text = getItemValue(this.value, this.props.textField);\n        var isValid = !this.validityStyles || this.validity.valid;\n        var base = this.base;\n        var vs = base.vs;\n        vs.enabled = virtual !== undefined;\n        if (virtual !== undefined) {\n            base.vs.skip = virtual.skip;\n            base.vs.total = virtual.total;\n            base.vs.pageSize = virtual.pageSize;\n        }\n        var dropdownlist = (React.createElement(\"span\", { ref: function (dropdown) { return _this._element = dropdown; }, className: classNames('k-widget k-dropdown', {\n                'k-state-invalid': !isValid\n            }, className), style: !label\n                ? style\n                : __assign({}, style, { width: undefined }), dir: dir, onMouseDown: opened ? preventDefaultNonInputs : undefined, onFocus: this.handleFocus, onBlur: this.handleBlur },\n            this.renderDropDownWrapper(),\n            this.renderListContainer()));\n        return label ? (React.createElement(FloatingLabel, { label: label, editorValue: text, editorValid: isValid, editorDisabled: this.props.disabled, style: { width: style ? style.width : undefined }, children: dropdownlist })) : dropdownlist;\n    };\n    /**\n     * @hidden\n     */\n    DropDownListWithoutContext.prototype.onNavigate = function (state, keyCode) {\n        var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, defaultItem = _a.defaultItem, dataItemKey = _a.dataItemKey, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0, total: 0, pageSize: 0 } : _c;\n        var vs = this.base.vs;\n        var value = this.value;\n        var index = data.findIndex(function (i) { return areSame(i, value, dataItemKey); });\n        var newIndex = this.base.navigation.navigate({\n            current: virtual.skip + index,\n            max: (vs.enabled ? virtual.total : data.length) - 1,\n            min: defaultItem !== undefined ? -1 : 0,\n            keyCode: keyCode\n        });\n        if (newIndex !== undefined) {\n            this.handleItemSelect(newIndex, state);\n        }\n        this.applyState(state);\n    };\n    DropDownListWithoutContext.prototype.focusedIndex = function () {\n        var filterText = isPresent(this.props.filter) ? this.props.filter : this.state.text;\n        var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0 } : _c, dataItemKey = _a.dataItemKey, textField = _a.textField, focusedItemIndex = _a.focusedItemIndex;\n        var value = this.value;\n        var selectedIndex = data.findIndex(function (i) { return areSame(i, value, dataItemKey); });\n        var hasSelected = !(selectedIndex < 0 && !this.props.defaultItem);\n        if (!hasSelected && filterText && virtual.skip === 0) {\n            return focusedItemIndex ? focusedItemIndex(data, filterText, textField) :\n                data.indexOf(getFocusedItem(data, filterText, textField));\n        }\n        else {\n            return !hasSelected && virtual.skip === 0 ? 0 : undefined;\n        }\n    };\n    DropDownListWithoutContext.prototype.focusElement = function (element) {\n        var _this = this;\n        this._skipFocusEvent = true;\n        element.focus();\n        window.setTimeout(function () { return _this._skipFocusEvent = false; }, 30);\n    };\n    DropDownListWithoutContext.prototype.triggerOnChange = function (item, state) {\n        if (areSame(this.value, item, this.props.dataItemKey)) {\n            return;\n        }\n        if (this.props.value === undefined) {\n            state.data.value = item;\n        }\n        this._valueDuringOnChange = item;\n        state.events.push({ type: 'onChange' });\n    };\n    DropDownListWithoutContext.prototype.applyState = function (state) {\n        this.base.applyState(state);\n        this._valueDuringOnChange = undefined;\n    };\n    DropDownListWithoutContext.displayName = 'DropDownList';\n    /**\n     * @hidden\n     */\n    DropDownListWithoutContext.propTypes = __assign({ delay: PropTypes.number, ignoreCase: PropTypes.bool, iconClassName: PropTypes.string, defaultItem: PropTypes.any, valueRender: PropTypes.func, valueMap: PropTypes.func, validationMessage: PropTypes.string, required: PropTypes.bool, id: PropTypes.string, ariaLabelledBy: PropTypes.string, ariaDescribedBy: PropTypes.string, leftRightKeysNavigation: PropTypes.bool, title: PropTypes.string }, DropDownBase.propTypes);\n    /**\n     * @hidden\n     */\n    DropDownListWithoutContext.defaultProps = __assign({ delay: 500, tabIndex: 0, ignoreCase: true }, DropDownBase.defaultProps, { required: false });\n    return DropDownListWithoutContext;\n}(React.Component));\nexport { DropDownListWithoutContext };\n/**\n * Represents the PropsContext of the `DropDownList` component.\n * Used for global configuration of all `DropDownList` instances.\n *\n * For more information, refer to the [Dropdowns Props Context]({% slug props-context_dropdowns %}) article.\n */\nexport var DropDownListPropsContext = createPropsContext();\n/* eslint-disable @typescript-eslint/no-redeclare -- intentionally naming the component the same as the type */\n/**\n * Represents the [KendoReact DropDownList component]({% slug overview_dropdownlist %}).\n *\n * Accepts properties of type [DropDownListProps]({% slug api_dropdowns_dropdownlistprops %}).\n * Obtaining the `ref` returns an object of type [DropDownListHandle]({% slug api_dropdowns_dropdownlisthandle %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n *    dropdownlist = null;\n *    render() {\n *       return (\n *          <div>\n *              <DropDownList\n *                  data={[ \"Albania\", \"Andorra\", \"Austria\", \"Belarus\" ]}\n *                  ref={component => this.dropdownlist = component}\n *              />\n *              <button onClick={() => alert(this.dropdownlist.value)}>alert value</button>\n *          </div>\n *       );\n *    }\n * }\n * ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nexport var DropDownList = withPropsContext(DropDownListPropsContext, DropDownListWithoutContext);\nDropDownList.displayName = 'KendoReactDropDownList';\n","import * as React from 'react';\nimport { GlobalizationContext } from '../globalization/GlobalizationContext';\n/**\n * A custom [React Hook](https://reactjs.org/docs/hooks-intro.html) providing access to an [IntlService]({% slug api_intl_intlservice %}).\n */\nexport var useInternationalization = function () { return React.useContext(GlobalizationContext).intl; };\n","import * as React from 'react';\nimport { GlobalizationContext } from '../globalization/GlobalizationContext';\n/**\n * A custom [React Hook](https://reactjs.org/docs/hooks-intro.html) providing access to an [LocalizationService]({% slug api_intl_localizationservice %}).\n */\nexport var useLocalization = function () { return React.useContext(GlobalizationContext).localization; };\n","/**\n * @hidden\n * Dispatches a new event based on an event that was already internally dispatched to KendoReact users.\n *\n * @param eventHandler - The public event handler that is assigned by the user.\n * When undefined, the method is not an option.\n * @param dispatchedEvent - The event that was already dispatched internally.\n * @param target - The target component of the new event.\n * @param eventData - The additional data that will be passed through the new event.\n * When the new event has no additional data\n *  other than the `BaseEvent` arguments, pass `undefined`.\n */\nexport function dispatchEvent(eventHandler, dispatchedEvent, target, eventData) {\n    if (eventHandler) {\n        var eventBaseData = {\n            syntheticEvent: dispatchedEvent,\n            nativeEvent: dispatchedEvent.nativeEvent,\n            target: target\n        };\n        eventHandler.call(undefined, Object.assign(eventBaseData, eventData));\n    }\n}\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n    name: '@progress/kendo-react-inputs',\n    productName: 'KendoReact',\n    productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n    publishDate: 1642516355,\n    version: '',\n    licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var _a;\n/**\n * @hidden\n */\nexport var numericIncreaseValue = 'numerictextbox.increment';\n/**\n * @hidden\n */\nexport var numericDecreaseValue = 'numerictextbox.decrement';\n/**\n * @hidden\n */\nexport var sliderIncreaseValue = 'slider.increment';\n/**\n * @hidden\n */\nexport var sliderDecreaseValue = 'slider.decrement';\n/**\n * @hidden\n */\nexport var sliderDragTitle = 'slider.dragTitle';\n/**\n * @hidden\n */\nexport var colorGradientR = 'colorGradient.r';\n/**\n * @hidden\n */\nexport var colorGradientG = 'colorGradient.g';\n/**\n * @hidden\n */\nexport var colorGradientB = 'colorGradient.b';\n/**\n * @hidden\n */\nexport var colorGradientA = 'colorGradient.a';\n/**\n * @hidden\n */\nexport var colorGradientHex = 'colorGradient.hex';\n/**\n * @hidden\n */\nexport var colorGradientContrastRatio = 'colorGradient.contrastRatio';\n/**\n * @hidden\n */\nexport var colorGradientAALevel = 'colorGradient.colorGradientAALevel';\n/**\n * @hidden\n */\nexport var colorGradientAAALevel = 'colorGradient.colorGradientAAALevel';\n/**\n * @hidden\n */\nexport var colorGradientPass = 'colorGradient.colorGradientPass';\n/**\n * @hidden\n */\nexport var colorGradientFail = 'colorGradient.colorGradientFail';\n/**\n * @hidden\n */\nexport var flatColorPickerCancelBtn = 'flatColorPicker.cancelBtn';\n/**\n * @hidden\n */\nexport var flatColorPickerApplyBtn = 'flatColorPicker.applyBtn';\n/**\n * @hidden\n */\nexport var checkboxValidation = 'checkbox.validation';\n/**\n * @hidden\n */\nexport var checkboxOptionalText = 'checkbox.optionalText';\n/**\n * @hidden\n */\nexport var radioButtonValidation = 'radioButton.validation';\n/**\n * @hidden\n */\nexport var switchValidation = 'switch.validation';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n    _a[numericIncreaseValue] = 'Increase value',\n    _a[numericDecreaseValue] = 'Decrease value',\n    _a[sliderIncreaseValue] = 'Increase',\n    _a[sliderDecreaseValue] = 'Decrease',\n    _a[sliderDragTitle] = 'Drag',\n    _a[colorGradientR] = 'r',\n    _a[colorGradientG] = 'g',\n    _a[colorGradientB] = 'b',\n    _a[colorGradientA] = 'a',\n    _a[colorGradientHex] = 'hex',\n    _a[colorGradientContrastRatio] = 'Contrast ratio',\n    _a[colorGradientAALevel] = 'AA',\n    _a[colorGradientAAALevel] = 'AAA',\n    _a[colorGradientPass] = 'Pass',\n    _a[colorGradientFail] = 'Fail',\n    _a[flatColorPickerCancelBtn] = 'Cancel',\n    _a[flatColorPickerApplyBtn] = 'Apply',\n    _a[checkboxValidation] = 'Please check this box if you want to proceed!',\n    _a[checkboxOptionalText] = '(Optional)',\n    _a[radioButtonValidation] = 'Please select option if you want to proceed!',\n    _a[switchValidation] = 'Please turn on if you want to proceed!',\n    _a);\n","var __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};\nvar DEFAULT_NUMBER = 1111111.1111111;\nvar MAX_DECIMAL = 0.31111111111111117;\nvar MIN_DECIMAL = 1;\nvar ONE_NUMBER = 1;\nvar ZERO_NUMBER = 0;\nvar DIGITS_REGEX = /\\d/;\nvar MAX_PRECISION = 15;\n/**\n * @hidden\n */\nexport var getInitialState = function () { return ({\n    eventValue: null,\n    prevLooseValue: '',\n    currentLooseValue: '',\n    focused: false,\n    selectionStart: undefined,\n    selectionEnd: undefined,\n    decimalSelect: false,\n    valueIsCorrected: false,\n    valueIsOutOfRange: false\n}); };\n/**\n * @hidden\n */\nexport var getStateOrPropsValue = function (value, stateValue) {\n    return value !== undefined ? value : stateValue;\n};\n/**\n * @hidden\n */\nexport var formatValue = function (value, format, intlService) {\n    if (value === null && value === undefined) {\n        return '';\n    }\n    if (typeof value === 'string') {\n        return value;\n    }\n    return intlService.formatNumber(value, format);\n};\n/**\n * @hidden\n */\nexport var fractionLength = function (value) {\n    return (String(value).split('.')[1] || '').length;\n};\n/**\n * @hidden\n */\nvar maxFractionLength = function (value1, value2) {\n    return Math.max(fractionLength(value1), fractionLength(value2));\n};\n/**\n * @hidden\n */\nexport var limitPrecision = function (precision) { return Math.min(precision, MAX_PRECISION); };\n/**\n * @hidden\n */\nexport var toFixedPrecision = function (value, precision) {\n    var maxPrecision = limitPrecision(precision);\n    return parseFloat(value.toFixed(maxPrecision));\n};\n/**\n * @hidden\n */\nexport var increaseValue = function (value, newState, step, min, max, format, intlService) {\n    var maxPrecision = maxFractionLength(value || 0, step || 0);\n    var increasedValue = rangeValue(toFixedPrecision((value || 0) + (step || 0), maxPrecision), min, max);\n    newState.eventValue = increasedValue;\n    newState.currentLooseValue = formatValue(increasedValue, format, intlService);\n    newState.selectionStart = newState.selectionEnd = getLastNumberIndex(newState.currentLooseValue, DIGITS_REGEX);\n};\n/**\n * @hidden\n */\nexport var decreaseValue = function (value, newState, step, min, max, format, intlService) {\n    var maxPrecision = maxFractionLength(value || 0, step || 0);\n    var decreasedValue = rangeValue(toFixedPrecision((value || 0) - (step || 0), maxPrecision), min, max);\n    newState.eventValue = decreasedValue;\n    newState.currentLooseValue = formatValue(decreasedValue, format, intlService);\n    newState.selectionStart = newState.selectionEnd = getLastNumberIndex(newState.currentLooseValue, DIGITS_REGEX);\n};\n/**\n * @hidden\n */\nexport var rangeValue = function (value, min, max) {\n    if (value == null) {\n        return value;\n    }\n    if (!(value > 1 || value < 1 || value === 1)) {\n        // null, undefined or NaN\n        return null;\n    }\n    if (max !== undefined && min !== undefined && max < min) {\n        return null;\n    }\n    if (max !== undefined && value > max) {\n        value = max;\n    }\n    if (min !== undefined && value < min) {\n        value = min;\n    }\n    return value;\n};\n/**\n * @hidden\n */\nexport var getMaxCursorPosition = function (nextValue, formatInfo) {\n    var formatSuffixIndex = formatInfo.findIndex(function (_a) {\n        var _ = _a[0], currSuffix = _a[1];\n        return Boolean(currSuffix) && nextValue.indexOf(currSuffix) === nextValue.length - currSuffix.length;\n    });\n    if (formatSuffixIndex === -1) {\n        return -1;\n    }\n    var suffix = formatInfo[formatSuffixIndex][1];\n    return nextValue.length - suffix.length;\n};\n/**\n * @hidden\n */\nexport var getMinCursorPosition = function (nextValue, formatInfo) {\n    var formatPrefixIndex = formatInfo.findIndex(function (_a) {\n        var currPrefix = _a[0], _ = _a[1];\n        return Boolean(currPrefix) && nextValue.indexOf(currPrefix) === 0;\n    });\n    if (formatPrefixIndex === -1) {\n        return -1;\n    }\n    var prefix = formatInfo[formatPrefixIndex][0];\n    return prefix.length;\n};\n/**\n * @hidden\n */\nexport var rangeSelection = function (nextLooseValue, formatInfo, newState) {\n    var maxPosition = getMaxCursorPosition(nextLooseValue, formatInfo);\n    if (maxPosition !== -1 && newState.selectionStart > maxPosition) {\n        newState.selectionStart = newState.selectionEnd = maxPosition;\n        return;\n    }\n    if (newState.selectionStart > nextLooseValue.length) {\n        newState.selectionStart = newState.selectionEnd = nextLooseValue.length;\n    }\n    var minPosition = getMinCursorPosition(nextLooseValue, formatInfo);\n    if (minPosition !== -1 && newState.selectionStart < minPosition) {\n        newState.selectionStart = newState.selectionEnd = minPosition;\n    }\n    if (newState.selectionStart === -1) {\n        newState.selectionStart = newState.selectionEnd = 0;\n    }\n};\n/**\n * @hidden\n */\nexport var setSelection = function (newState, newIndex, nextLooseValue, formatInfo) {\n    newState.selectionStart = newState.selectionEnd = newIndex;\n    rangeSelection(nextLooseValue, formatInfo, newState);\n};\n/**\n * @hidden\n */\nexport var setInvalid = function (newState, format, formatInfo, intlService) {\n    newState.eventValue = intlService.parseNumber(newState.prevLooseValue, format);\n    newState.currentLooseValue = newState.prevLooseValue;\n    newState.valueIsCorrected = true;\n    setSelection(newState, newState.selectionStart, newState.currentLooseValue, formatInfo);\n};\n/**\n * @hidden\n */\nexport var isMinusSymbolAdded = function (newState, symbols) {\n    var newText = String(newState.currentLooseValue);\n    var oldText = String(newState.prevLooseValue);\n    return (newText.split(symbols.minusSign).length !== oldText.split(symbols.minusSign).length &&\n        newText.length === oldText.length + symbols.minusSign.length);\n};\n/**\n * @hidden\n */\nexport var isMinusSymbolRemoved = function (newState, symbols) {\n    var newText = String(newState.currentLooseValue);\n    var oldText = String(newState.prevLooseValue);\n    return (newText.indexOf(symbols.minusSign) === -1 && oldText.indexOf(symbols.minusSign) !== -1);\n};\n/**\n * @hidden\n */\nexport var isDecimalDuplicated = function (newState, symbols) {\n    var newText = String(newState.currentLooseValue);\n    return newText.split(symbols.decimal).length > 2;\n};\n/**\n * @hidden\n */\nexport var getFormatPrefixSufix = function (format, intlService) {\n    var positiveResult = intlService.formatNumber(DEFAULT_NUMBER, format);\n    var negativeResult = intlService.formatNumber(-DEFAULT_NUMBER, format);\n    var zeroResult = intlService.formatNumber(ZERO_NUMBER, format);\n    var oneResult = intlService.formatNumber(ONE_NUMBER, format);\n    var positivePrefix = getPrefix(positiveResult);\n    var negativePrefix = getPrefix(negativeResult);\n    var zeroPrefix = getPrefix(zeroResult);\n    var onePrefix = getPrefix(oneResult);\n    var positiveSuffix = getSuffix(positiveResult);\n    var negativeSuffix = getSuffix(negativeResult);\n    var zeroSuffix = getSuffix(zeroResult);\n    var oneSuffix = getSuffix(oneResult);\n    return {\n        positiveInfo: [positivePrefix, positiveSuffix],\n        negativeInfo: [negativePrefix, negativeSuffix],\n        zeroInfo: [zeroPrefix, zeroSuffix],\n        oneInfo: [onePrefix, oneSuffix]\n    };\n};\n/**\n * @hidden\n */\nexport var getFormatSymbols = function (format, intlService) {\n    var positiveResult = intlService.formatNumber(DEFAULT_NUMBER, format);\n    var negativeResult = intlService.formatNumber(-DEFAULT_NUMBER, format);\n    var zeroResult = intlService.formatNumber(ZERO_NUMBER, format);\n    var oneResult = intlService.formatNumber(ONE_NUMBER, format);\n    var symbols = intlService.numberSymbols();\n    var sanitizeRegex = new RegExp(\"[\\\\d\\\\\" + symbols.decimal + symbols.group + \"]\", 'g');\n    var resultWithDuplicates = [positiveResult, negativeResult, zeroResult, oneResult]\n        .map(function (result) { return result.replace(sanitizeRegex, ''); })\n        .join('');\n    return resultWithDuplicates\n        .split('')\n        .filter(function (x, n, s) { return s.indexOf(x) === n; })\n        .join('');\n};\n/**\n * @hidden\n */\nexport var getInitialPosition = function (nextLooseValue, symbols) {\n    var decimalIdex = nextLooseValue.indexOf(symbols.decimal);\n    if (decimalIdex > -1) {\n        return decimalIdex;\n    }\n    return getLastNumberIndex(nextLooseValue, DIGITS_REGEX);\n};\n/**\n * @hidden\n */\nexport var reverseString = function (str) {\n    return str.split('').reverse().join('');\n};\n/**\n * @hidden\n */\nexport var getLastNumberIndex = function (currentLooseValue, inputRegex) {\n    return currentLooseValue.length - reverseString(currentLooseValue).search(inputRegex);\n};\n/**\n * @hidden\n */\nexport var getPrefix = function (str) {\n    return str.split(str[str.search(DIGITS_REGEX)])[0];\n};\n/**\n * @hidden\n */\nexport var getSuffix = function (str) {\n    var reversedString = reverseString(str);\n    return reverseString(reversedString.split(reversedString[reversedString.search(DIGITS_REGEX)])[0]);\n};\n/**\n * @hidden\n */\nexport var getFirstNumberIndex = function (prevLooseValue, inputRegex) {\n    return prevLooseValue.search(inputRegex);\n};\n/**\n * @hidden\n */\nexport var getDecimalCount = function (value, decimal) {\n    var currentDecimalPlace = value.indexOf(decimal);\n    return currentDecimalPlace > -1 ? value.length - currentDecimalPlace - 1 : 0;\n};\n/**\n * @hidden\n */\nexport var changeBasedSelection = function (currentValue, nextValue, selectionPosition, isDelete, sanitizeRegex) {\n    var isCurrentLeadingZero = currentValue.replace(sanitizeRegex, '')[0] === '0';\n    var isNextLeadingZero = nextValue.replace(sanitizeRegex, '')[0] === '0';\n    if (isCurrentLeadingZero && !isNextLeadingZero) {\n        return selectionPosition - 1;\n    }\n    if (isNextLeadingZero && isDelete) {\n        return selectionPosition + 1;\n    }\n    var numberCounter = 0;\n    for (var idx = 0; idx < selectionPosition; idx++) {\n        if (DIGITS_REGEX.test(currentValue.charAt(idx))) {\n            numberCounter++;\n        }\n    }\n    var newSelection = 0;\n    while (numberCounter > 0 && nextValue.length > newSelection) {\n        if (DIGITS_REGEX.test(nextValue.charAt(newSelection))) {\n            numberCounter--;\n        }\n        newSelection++;\n    }\n    return newSelection;\n};\n/**\n * @hidden\n */\nexport var sanitizeNumber = function (state, format, intlService) {\n    var newState = __assign({}, state);\n    var prevLooseValue = newState.prevLooseValue;\n    var symbols = intlService.numberSymbols();\n    var restrictedSymbols = getFormatSymbols(format, intlService);\n    var currentLooseValueAsString = String(newState.currentLooseValue);\n    var prevLooseValueAsString = String(prevLooseValue);\n    var sanitizeRegex = new RegExp(\"[^\\\\d\\\\\" + symbols.decimal + \"]\", 'g');\n    var sanitizeGroupRegex = new RegExp(\"[^\\\\d\\\\\" + symbols.decimal + \"\\\\\" + symbols.group + \"]\", 'g');\n    var allSymbolsRegex = new RegExp(\"[\\\\d\\\\\" + symbols.decimal + \"\\\\\" + symbols.group + \"]\");\n    var sanitizedString = currentLooseValueAsString.replace(sanitizeRegex, '');\n    var numberStart = getFirstNumberIndex(currentLooseValueAsString, DIGITS_REGEX);\n    var numberEnd = numberStart === -1 ? -1 : getLastNumberIndex(currentLooseValueAsString, DIGITS_REGEX);\n    var decimalIndex = currentLooseValueAsString.indexOf(symbols.decimal);\n    var sanitizedFormattedString = (currentLooseValueAsString.substring(0, numberStart) +\n        currentLooseValueAsString.substring(numberStart, numberEnd).replace(sanitizeGroupRegex, '') +\n        currentLooseValueAsString.substring(numberEnd, currentLooseValueAsString.length))\n        .split('')\n        .filter(function (s) { return restrictedSymbols.indexOf(s) !== -1 || s.search(allSymbolsRegex) !== -1; })\n        .join('');\n    var formattedMax = intlService.formatNumber(MAX_DECIMAL, format).replace(sanitizeRegex, '');\n    var maxDecimalIndex = formattedMax.indexOf(symbols.decimal);\n    var maxDecimalCount = maxDecimalIndex > -1 ? formattedMax.length - maxDecimalIndex - 1 : 0;\n    var formattedMin = intlService.formatNumber(MIN_DECIMAL, format).replace(sanitizeRegex, '');\n    var minDecimalIndex = formattedMin.indexOf(symbols.decimal);\n    var minDecimalCount = minDecimalIndex > -1 ? formattedMin.length - minDecimalIndex - 1 : 0;\n    var _a = getFormatPrefixSufix(format, intlService), positiveInfo = _a.positiveInfo, negativeInfo = _a.negativeInfo, zeroInfo = _a.zeroInfo, oneInfo = _a.oneInfo;\n    var formatInfo = [positiveInfo, negativeInfo, zeroInfo, oneInfo];\n    var isFormatContainPrefixSuffix = formatInfo.findIndex(function (info) { return info.findIndex(function (nestedInfo) { return Boolean(nestedInfo); }) !== -1; }) !== 1;\n    var isDelete = currentLooseValueAsString.length > 0 && currentLooseValueAsString.length < prevLooseValueAsString.length;\n    var isPercentFormat = format &&\n        format[0] === 'p' &&\n        currentLooseValueAsString &&\n        currentLooseValueAsString.indexOf(symbols.percentSign) === -1;\n    if (!newState.isPaste) {\n        // 1. Empty input\n        if (currentLooseValueAsString === '') {\n            newState.eventValue = null;\n            newState.currentLooseValue = '';\n            return newState;\n        }\n        // 2. Check is minus sign\n        if (newState.currentLooseValue === symbols.minusSign && intlService.formatNumber(-0, format) !== prevLooseValueAsString) {\n            newState.eventValue = -0;\n            newState.currentLooseValue = formatValue(newState.eventValue, format, intlService);\n            setSelection(newState, getInitialPosition(newState.currentLooseValue, symbols), newState.currentLooseValue, formatInfo);\n            return newState;\n        }\n        // 3. Minus sign toggle\n        if (isMinusSymbolAdded(newState, symbols)) {\n            var nextValue = intlService.parseNumber(prevLooseValue, format);\n            newState.eventValue = -(nextValue !== null ? nextValue : 0);\n            newState.currentLooseValue = formatValue(newState.eventValue, format, intlService);\n            var currentNumberStart = getFirstNumberIndex(newState.currentLooseValue, DIGITS_REGEX);\n            var oldNumberStart = getFirstNumberIndex(prevLooseValueAsString, DIGITS_REGEX);\n            setSelection(newState, newState.selectionEnd - 1 + (currentNumberStart - oldNumberStart), newState.currentLooseValue, formatInfo);\n            return newState;\n        }\n        if (isMinusSymbolRemoved(newState, symbols)) {\n            newState.eventValue = intlService.parseNumber(newState.currentLooseValue, format);\n            setSelection(newState, newState.selectionStart, newState.currentLooseValue, formatInfo);\n            return newState;\n        }\n        // 4. Check is decimal symbol\n        if (newState.currentLooseValue === symbols.decimal) {\n            newState.eventValue = 0;\n            var valueCandidate = formatValue(newState.eventValue, format, intlService);\n            if (minDecimalCount === 0 && maxDecimalCount > 0) {\n                var currentLastNumberIndex = getLastNumberIndex(valueCandidate, DIGITS_REGEX);\n                newState.currentLooseValue = valueCandidate.substring(0, currentLastNumberIndex) +\n                    symbols.decimal +\n                    valueCandidate.substring(currentLastNumberIndex);\n            }\n            else {\n                newState.currentLooseValue = valueCandidate;\n            }\n            setSelection(newState, getInitialPosition(newState.currentLooseValue, symbols) + 1, newState.currentLooseValue, formatInfo);\n            return newState;\n        }\n        // 5. Duplicate decimal - it's possible only as trailing\n        if (isDecimalDuplicated(newState, symbols)) {\n            setInvalid(newState, format, formatInfo, intlService);\n            return newState;\n        }\n        // 6. Percent format\n        if (isPercentFormat) {\n            newState.eventValue = intlService.parseNumber(currentLooseValueAsString, format) / 100;\n            newState.currentLooseValue = formatValue(newState.eventValue, format, intlService);\n            return newState;\n        }\n        // 7. More than 15 numeric symbols\n        var numericSymbols = String(newState.currentLooseValue).replace(/[^\\d]/g, '');\n        if (numericSymbols.length > MAX_PRECISION) {\n            setInvalid(newState, format, formatInfo, intlService);\n            return newState;\n        }\n        // 8. Check prefix / suffix for modifications\n        if (sanitizedString !== currentLooseValueAsString &&\n            currentLooseValueAsString &&\n            isFormatContainPrefixSuffix) {\n            var formatInfoIndex = formatInfo.findIndex(function (_a) {\n                var prefix = _a[0], suffix = _a[1];\n                var prefixIndex = currentLooseValueAsString.indexOf(prefix);\n                var suffixIndex = currentLooseValueAsString.indexOf(suffix);\n                var prefixFound = prefixIndex === 0;\n                var suffixFound = suffixIndex === currentLooseValueAsString.length - suffix.length;\n                var prefixGap = prefixIndex + prefix.length !== numberStart &&\n                    numberStart !== -1 &&\n                    currentLooseValueAsString[prefixIndex + prefix.length] !== symbols.decimal;\n                var suffixGap = suffixIndex !== numberEnd &&\n                    numberEnd !== -1 &&\n                    currentLooseValueAsString[suffixIndex - 1] !== symbols.decimal;\n                if (prefix && suffix) {\n                    if (prefixGap || suffixGap) {\n                        return false;\n                    }\n                    return prefixFound && suffixFound;\n                }\n                if (prefix) {\n                    if (prefixGap) {\n                        return false;\n                    }\n                    return prefixFound;\n                }\n                if (suffix) {\n                    if (suffixGap) {\n                        return false;\n                    }\n                    return suffixFound;\n                }\n                return false;\n            });\n            if (formatInfoIndex === -1) {\n                setInvalid(newState, format, formatInfo, intlService);\n                return newState;\n            }\n        }\n        // 9. Value ending on decimal separator (here as decimal might be typed inside format)\n        if (sanitizedString[sanitizedString.length - 1] === symbols.decimal && maxDecimalCount > 0) {\n            newState.eventValue = intlService.parseNumber(currentLooseValueAsString, format);\n            newState.currentLooseValue = sanitizedFormattedString;\n            return newState;\n        }\n        // 10. prevent deleting decimal and group symbols\n        if (newState.currentLooseValue && prevLooseValue) {\n            var isSpecialSymbolDeleted = (restrictedSymbols + symbols.decimal + symbols.group)\n                .split('')\n                .findIndex(function (s) {\n                if (currentLooseValueAsString.split('').filter(function (x) { return x === s; }).length <\n                    prevLooseValueAsString.split('').filter(function (x) { return x === s; }).length &&\n                    currentLooseValueAsString.length + 1 === prevLooseValueAsString.length) {\n                    if (s === symbols.decimal &&\n                        getDecimalCount(prevLooseValueAsString.replace(sanitizeRegex, ''), symbols.decimal) === 0) {\n                        return false;\n                    }\n                    return true;\n                }\n                return false;\n            }) > -1;\n            if (isSpecialSymbolDeleted) {\n                newState.eventValue = intlService.parseNumber(state.prevLooseValue, format);\n                newState.currentLooseValue = state.prevLooseValue;\n                return newState;\n            }\n        }\n        var currentDecimalCount = getDecimalCount(sanitizedString, symbols.decimal);\n        var endsOnDecimal = sanitizedString[sanitizedString.length - 1] === '0';\n        // 11. Deleting more decimals than allowed\n        if (isDelete && endsOnDecimal && currentDecimalCount < minDecimalCount) {\n            newState.eventValue = intlService.parseNumber(newState.currentLooseValue, format);\n            newState.currentLooseValue = formatValue(newState.eventValue, format, intlService);\n            return newState;\n        }\n        // 12. Ending on zero OR more decimals than allowed\n        if (currentDecimalCount > 0) {\n            var valueUntillDecimal = currentLooseValueAsString.substring(0, decimalIndex);\n            if (endsOnDecimal && (!valueUntillDecimal || prevLooseValueAsString.indexOf(valueUntillDecimal) !== 0)) {\n                // ending on zero but typing before decimal separator\n                newState.eventValue = intlService.parseNumber(newState.currentLooseValue, format);\n                var nextLooseValue = formatValue(newState.eventValue, format, intlService);\n                setSelection(newState, changeBasedSelection(currentLooseValueAsString, nextLooseValue, newState.selectionEnd, isDelete, sanitizeRegex), nextLooseValue, formatInfo);\n                newState.currentLooseValue = nextLooseValue;\n                return newState;\n            }\n            if (currentDecimalCount > maxDecimalCount) {\n                // typing more symbols than format allows\n                var looseDecimalPlace = currentLooseValueAsString.indexOf(symbols.decimal);\n                var result = currentLooseValueAsString.substring(0, looseDecimalPlace) +\n                    currentLooseValueAsString.substring(looseDecimalPlace, looseDecimalPlace + 1 + maxDecimalCount) +\n                    currentLooseValueAsString.substring(numberEnd, String(newState.currentLooseValue).length);\n                newState.eventValue = intlService.parseNumber(result, format);\n                newState.currentLooseValue = result;\n                setSelection(newState, newState.selectionStart, result, formatInfo);\n                return newState;\n            }\n            if (minDecimalCount !== maxDecimalCount && currentDecimalCount <= maxDecimalCount && endsOnDecimal) {\n                // adding trailing zeroes\n                newState.eventValue = intlService.parseNumber(newState.currentLooseValue, format);\n                newState.currentLooseValue = sanitizedFormattedString;\n                return newState;\n            }\n            if (currentDecimalCount < minDecimalCount) {\n                // deleting more decimals than allowed\n                newState.eventValue = intlService.parseNumber(newState.currentLooseValue, format);\n                newState.currentLooseValue = formatValue(newState.eventValue, format, intlService);\n                return newState;\n            }\n        }\n    }\n    // X. All other values should be parsed\n    newState.eventValue = intlService.parseNumber(newState.currentLooseValue, format);\n    if (isPercentFormat) {\n        newState.eventValue = newState.eventValue / 100;\n    }\n    if (typeof newState.eventValue === 'number') {\n        var nextLooseValue = formatValue(newState.eventValue, format, intlService);\n        // First digit add\n        if (currentLooseValueAsString.length === 1) {\n            setSelection(newState, getInitialPosition(nextLooseValue, symbols), nextLooseValue, formatInfo);\n        }\n        else {\n            setSelection(newState, changeBasedSelection(currentLooseValueAsString, nextLooseValue, newState.selectionEnd, isDelete, sanitizeRegex), nextLooseValue, formatInfo);\n        }\n        newState.currentLooseValue = nextLooseValue;\n    }\n    else {\n        // Case when deleting last number\n        newState.currentLooseValue = formatValue(intlService.parseNumber(sanitizedString), format, intlService);\n    }\n    return newState;\n};\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { useInternationalization, useLocalization } from '@progress/kendo-react-intl';\nimport { classNames, guid, getTabIndex, dispatchEvent, createPropsContext, usePropsContext } from '@progress/kendo-react-common';\nimport { FloatingLabel } from '@progress/kendo-react-labels';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nimport { numericIncreaseValue, messages, numericDecreaseValue } from '../messages';\nimport { formatValue, sanitizeNumber, rangeValue, increaseValue, decreaseValue, getStateOrPropsValue, getInitialState } from './utils';\nvar VALIDATION_MESSAGE = 'Please enter a valid value!';\n/**\n * Represents the PropsContext of the `NumericTextBox` component.\n * Used for global configuration of all `NumericTextBox` instances.\n *\n * For more information, refer to the [Inputs Props Context]({% slug props-context_inputs %}) article.\n */\nexport var NumericTextBoxPropsContext = createPropsContext();\n/**\n * Represents the [KendoReact NumericTextBox component]({% slug overview_numerictextbox %}).\n */\nexport var NumericTextBox = React.forwardRef(function (directProps, target) {\n    validatePackage(packageMetadata);\n    var props = usePropsContext(NumericTextBoxPropsContext, directProps);\n    var calculatedId = React.useMemo(function () { return guid(); }, []);\n    var inputId = props.id || calculatedId;\n    var intlService = useInternationalization();\n    var localizationService = useLocalization();\n    var elementRef = React.useRef(null);\n    var elementWrapperRef = React.useRef(null);\n    var valueDuringChangeRef = React.useRef();\n    var _a = React.useState(false), forceUpdate = _a[0], setForceUpdate = _a[1];\n    var stateRef = React.useRef(getInitialState());\n    var isPasteRef = React.useRef(false);\n    var prevLooseValueRef = React.useRef();\n    var stateValueRef = React.useRef(props.defaultValue);\n    var looseValue = formatValue(stateRef.current.focused && !props.disabled ?\n        stateRef.current.currentLooseValue :\n        getStateOrPropsValue(props.value, stateValueRef.current), props.format, intlService);\n    prevLooseValueRef.current = looseValue;\n    React.useEffect(function () {\n        if (elementRef.current && elementRef.current.setCustomValidity) {\n            elementRef.current.setCustomValidity(validityGetter().valid\n                ? ''\n                : props.validationMessage || VALIDATION_MESSAGE);\n        }\n    });\n    var focusElement = React.useCallback(function () {\n        if (elementRef.current) {\n            elementRef.current.focus();\n        }\n    }, []);\n    var valueGetter = React.useCallback(function () {\n        if (valueDuringChangeRef.current !== undefined) {\n            return valueDuringChangeRef.current;\n        }\n        else {\n            return getStateOrPropsValue(props.value, stateValueRef.current);\n        }\n    }, [props.value]);\n    var nameGetter = React.useCallback(function () {\n        return props.name;\n    }, [props.name]);\n    var requiredGetter = React.useCallback(function () {\n        return props.required;\n    }, [props.required]);\n    var validityGetter = React.useCallback(function () {\n        var customError = props.validationMessage !== undefined;\n        var currentValue = valueGetter();\n        var valid = props.valid !== undefined ?\n            props.valid :\n            !stateRef.current.valueIsOutOfRange &&\n                (!requiredGetter() || (currentValue !== null && currentValue !== undefined));\n        return {\n            customError: customError,\n            valid: valid,\n            valueMissing: currentValue === null || currentValue === undefined\n        };\n    }, [props.validationMessage, props.valid, valueGetter, requiredGetter]);\n    var validityStylesGetter = React.useCallback(function () {\n        return props.validityStyles;\n    }, [props.validityStyles]);\n    var propsGetter = React.useCallback(function () {\n        return props;\n    }, [props]);\n    var getImperativeHandle = React.useCallback(function () {\n        var options = {\n            element: elementRef.current,\n            focus: focusElement\n        };\n        Object.defineProperty(options, 'name', { get: nameGetter });\n        Object.defineProperty(options, 'value', { get: valueGetter });\n        Object.defineProperty(options, 'validity', { get: validityGetter });\n        Object.defineProperty(options, 'validityStyles', { get: validityStylesGetter });\n        Object.defineProperty(options, 'required', { get: requiredGetter });\n        Object.defineProperty(options, 'props', { get: propsGetter });\n        return options;\n    }, [nameGetter, valueGetter, validityGetter, validityStylesGetter, requiredGetter, focusElement, propsGetter]);\n    React.useImperativeHandle(target, getImperativeHandle);\n    var getCurrentState = React.useCallback(function () {\n        return {\n            eventValue: getStateOrPropsValue(props.value, stateValueRef.current),\n            prevLooseValue: prevLooseValueRef.current,\n            currentLooseValue: elementRef.current.value,\n            selectionStart: elementRef.current.selectionStart,\n            selectionEnd: elementRef.current.selectionEnd,\n            decimalSelect: false,\n            valueIsCorrected: false,\n            valueIsOutOfRange: false,\n            isPaste: isPasteRef.current,\n            focused: stateRef.current.focused\n        };\n    }, [props.value]);\n    var triggerChange = React.useCallback(function (event, newState) {\n        if (props.disabled) {\n            return;\n        }\n        valueDuringChangeRef.current = newState.eventValue;\n        stateValueRef.current = newState.eventValue;\n        var formattedValue = formatValue(rangeValue(newState.eventValue, props.min, props.max), props.format, intlService);\n        var rangedValue = rangeValue(intlService.parseNumber(formattedValue, props.format), props.min, props.max);\n        if (rangedValue !== newState.eventValue) {\n            newState.valueIsOutOfRange = true;\n            newState.eventValue = rangedValue;\n            stateValueRef.current = rangedValue;\n        }\n        if (newState.valueIsCorrected) {\n            var wrapper_1 = elementWrapperRef.current;\n            if (wrapper_1 && wrapper_1.className.indexOf('k-state-invalid') === -1) {\n                wrapper_1.className += ' k-state-invalid';\n                window.setTimeout(function () { return wrapper_1.className = wrapper_1.className.replace(' k-state-invalid', ''); }, 50);\n            }\n        }\n        var shouldFireEvent = props.value !== newState.eventValue;\n        if (shouldFireEvent) {\n            dispatchEvent(props.onChange, event, getImperativeHandle(), { value: newState.eventValue });\n        }\n        valueDuringChangeRef.current = undefined;\n        stateRef.current = newState;\n        setForceUpdate(function (_x) { return !_x; });\n    }, [props.value, props.onChange, props.disabled, setForceUpdate, getImperativeHandle]);\n    var onChangeHandler = React.useCallback(function (event) {\n        var stateCandidate = getCurrentState();\n        isPasteRef.current = false;\n        triggerChange(event, sanitizeNumber(stateCandidate, props.format, intlService));\n    }, [props.format, props.onChange, intlService, triggerChange, getCurrentState]);\n    var onKeyDown = React.useCallback(function (event) {\n        var newState = getCurrentState();\n        var currentValue = intlService.parseNumber(String(newState.currentLooseValue), props.format);\n        // Select All\n        if (newState.selectionEnd > newState.selectionStart &&\n            newState.selectionEnd - newState.selectionStart === String(newState.currentLooseValue).length) {\n            isPasteRef.current = true;\n            return;\n        }\n        switch (event.keyCode) {\n            case 38:\n                // Arrow up\n                increaseValue(currentValue, newState, props.step, props.min, props.max, props.format, intlService);\n                break;\n            case 40:\n                // Arrow down\n                decreaseValue(currentValue, newState, props.step, props.min, props.max, props.format, intlService);\n                break;\n            case 13:\n                // Enter - range values\n                if (props.rangeOnEnter === false) {\n                    return;\n                }\n                var formattedValue = formatValue(rangeValue(currentValue, props.min, props.max), props.format, intlService);\n                var rangedValue = rangeValue(intlService.parseNumber(formattedValue, props.format), props.min, props.max);\n                newState.eventValue = rangedValue;\n                newState.currentLooseValue = formatValue(rangedValue, props.format, intlService);\n                newState.selectionStart = newState.selectionEnd = newState.currentLooseValue.length;\n                break;\n            case 110:\n                // Numpad decimal key\n                var element = elementRef.current;\n                var symbols = intlService.numberSymbols();\n                if (element) {\n                    newState.currentLooseValue = newState.currentLooseValue.slice(0, newState.selectionStart) +\n                        symbols.decimal +\n                        newState.currentLooseValue.slice(newState.selectionEnd);\n                    newState.selectionStart = newState.selectionEnd = newState.selectionStart + 1;\n                    newState = sanitizeNumber(newState, props.format, intlService);\n                }\n                break;\n            default:\n                return;\n        }\n        event.preventDefault();\n        triggerChange(event, newState);\n    }, [props.format, props.min, props.max, props.step, props.onChange, props.rangeOnEnter, triggerChange, getCurrentState]);\n    var onPasteHandler = React.useCallback(function () {\n        isPasteRef.current = true;\n    }, []);\n    var onIncrease = React.useCallback(function (event) {\n        if (props.readOnly ||\n            props.disabled) {\n            return;\n        }\n        var newState = getCurrentState();\n        increaseValue(intlService.parseNumber(String(newState.currentLooseValue), props.format), newState, props.step, props.min, props.max, props.format, intlService);\n        triggerChange(event, newState);\n    }, [props.format, props.min, props.max, props.step, props.onChange, props.readOnly, props.disabled, triggerChange, getCurrentState]);\n    var onDecrease = React.useCallback(function (event) {\n        if (props.readOnly ||\n            props.disabled) {\n            return;\n        }\n        var newState = getCurrentState();\n        decreaseValue(intlService.parseNumber(String(newState.currentLooseValue), props.format), newState, props.step, props.min, props.max, props.format, intlService);\n        triggerChange(event, newState);\n    }, [props.format, props.min, props.max, props.step, props.onChange, props.readOnly, props.disabled, triggerChange, getCurrentState]);\n    var onWheelHandler = React.useCallback(function (event) {\n        if (!document ||\n            document.activeElement !== elementRef.current ||\n            !elementRef.current ||\n            props.readOnly ||\n            props.disabled) {\n            return;\n        }\n        if (event.nativeEvent.deltaY < 0) {\n            onIncrease(event);\n        }\n        if (event.nativeEvent.deltaY > 0) {\n            onDecrease(event);\n        }\n    }, [onIncrease, onDecrease, props.disabled, props.readOnly]);\n    var onFocus = React.useCallback(function (event) {\n        stateRef.current.currentLooseValue = prevLooseValueRef.current;\n        stateRef.current.focused = true;\n        dispatchEvent(props.onFocus, event, getImperativeHandle(), {});\n        setForceUpdate(function (x) { return !x; });\n    }, [props.onFocus, setForceUpdate, getImperativeHandle]);\n    var onBlur = React.useCallback(function (event) {\n        stateRef.current = getInitialState();\n        dispatchEvent(props.onBlur, event, getImperativeHandle(), {});\n        setForceUpdate(function (x) { return !x; });\n    }, [props.onBlur, setForceUpdate, getImperativeHandle]);\n    var onMouseDown = React.useCallback(function (e) {\n        if (document && elementRef.current) {\n            e.preventDefault();\n            if (document.activeElement !== elementRef.current) {\n                elementRef.current.focus();\n            }\n        }\n    }, []);\n    React.useLayoutEffect(function () {\n        if (elementRef.current && stateRef.current.selectionStart !== undefined && stateRef.current.selectionEnd !== undefined) {\n            elementRef.current.selectionStart = stateRef.current.selectionStart;\n            elementRef.current.selectionEnd = stateRef.current.selectionEnd;\n            stateRef.current.selectionStart = undefined;\n            stateRef.current.selectionEnd = undefined;\n        }\n    }, [forceUpdate]);\n    var isValid = !validityStylesGetter() || validityGetter().valid;\n    var numerictextbox = (React.createElement(\"span\", { dir: props.dir, style: !props.label\n            ? { width: props.width }\n            : undefined, className: 'k-widget k-numerictextbox' + (props.className ? ' ' + props.className : ''), \"aria-disabled\": props.disabled ? 'true' : undefined },\n        React.createElement(\"span\", { className: classNames('k-numeric-wrap', {\n                'k-state-disabled': props.disabled,\n                'k-state-invalid': !isValid,\n                'k-state-focused': stateRef.current.focused\n            }), ref: elementWrapperRef },\n            React.createElement(\"input\", { value: looseValue === null ? '' : looseValue, tabIndex: getTabIndex(props.tabIndex, props.disabled), accessKey: props.accessKey, disabled: props.disabled, title: props.title, \"aria-valuemin\": props.min, \"aria-valuemax\": props.max, \"aria-labelledby\": props.ariaLabelledBy, \"aria-describedby\": props.ariaDescribedBy, placeholder: props.placeholder, spellCheck: false, autoComplete: 'off', autoCorrect: 'off', type: props.inputType || 'tel', className: 'k-input k-formatted-value', id: inputId, name: props.name, readOnly: props.readOnly, onChange: onChangeHandler, onFocus: onFocus, onBlur: onBlur, onKeyDown: onKeyDown, onPaste: onPasteHandler, onWheel: onWheelHandler, ref: elementRef }),\n            props.children,\n            props.spinners &&\n                (React.createElement(\"span\", { className: \"k-select\", onMouseDown: onMouseDown },\n                    React.createElement(\"span\", { className: \"k-link k-link-increase\", \"aria-label\": localizationService\n                            .toLanguageString(numericIncreaseValue, messages[numericIncreaseValue]), title: localizationService\n                            .toLanguageString(numericIncreaseValue, messages[numericIncreaseValue]), onClick: onIncrease },\n                        React.createElement(\"span\", { className: \"k-icon k-i-arrow-n\" })),\n                    React.createElement(\"span\", { className: \"k-link k-link-decrease\", \"aria-label\": localizationService\n                            .toLanguageString(numericDecreaseValue, messages[numericDecreaseValue]), title: localizationService\n                            .toLanguageString(numericDecreaseValue, messages[numericDecreaseValue]), onClick: onDecrease },\n                        React.createElement(\"span\", { className: \"k-icon k-i-arrow-s\" })))))));\n    return props.label\n        ? (React.createElement(FloatingLabel, { label: props.label, editorId: inputId, editorValue: looseValue === null ? '' : looseValue, editorValid: isValid, editorDisabled: props.disabled, editorPlaceholder: props.placeholder, children: numerictextbox, style: { width: props.width }, dir: props.dir }))\n        : numerictextbox;\n});\nNumericTextBox.propTypes = {\n    value: PropTypes.number,\n    defaultValue: PropTypes.number,\n    step: PropTypes.number,\n    format: PropTypes.oneOfType([\n        PropTypes.string,\n        PropTypes.shape({\n            style: PropTypes.oneOf(['decimal', 'currency', 'percent', 'scientific', 'accounting']),\n            currency: PropTypes.string,\n            currencyDisplay: PropTypes.oneOf(['symbol', 'code', 'name']),\n            useGrouping: PropTypes.bool,\n            minimumIntegerDigits: PropTypes.number,\n            minimumFractionDigits: PropTypes.number,\n            maximumFractionDigits: PropTypes.number\n        })\n    ]),\n    width: PropTypes.oneOfType([\n        PropTypes.string,\n        PropTypes.number\n    ]),\n    tabIndex: PropTypes.number,\n    accessKey: PropTypes.string,\n    title: PropTypes.string,\n    placeholder: PropTypes.string,\n    min: PropTypes.number,\n    max: PropTypes.number,\n    spinners: PropTypes.bool,\n    disabled: PropTypes.bool,\n    readOnly: PropTypes.bool,\n    dir: PropTypes.string,\n    name: PropTypes.string,\n    label: PropTypes.string,\n    validationMessage: PropTypes.string,\n    required: PropTypes.bool,\n    id: PropTypes.string,\n    rangeOnEnter: PropTypes.bool,\n    ariaLabelledBy: PropTypes.string,\n    ariaDescribedBy: PropTypes.string,\n    onChange: PropTypes.func,\n    onFocus: PropTypes.func,\n    onBlur: PropTypes.func\n};\nNumericTextBox.displayName = 'KendoNumericTextBox';\nNumericTextBox.defaultProps = {\n    step: 1,\n    spinners: true,\n    disabled: false,\n    required: false,\n    validityStyles: true,\n    rangeOnEnter: true,\n    onChange: function (_) { return; },\n    onFocus: function (_) { return; },\n    onBlur: function (_) { return; }\n};\n","/**\n * A function that clones the passed date. The parameter could be `null`.\n *\n * @param date - The initial date value.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * cloneDate(new Date(2016, 0, 1)); // returns new Date(2016, 0, 1);\n * cloneDate(null); // returns null\n * ```\n */\nexport var cloneDate = function (date) { return date ? new Date(date.getTime()) : null; };\n","import { cloneDate } from './clone-date';\n/**\n * @hidden\n */\nexport var adjustDST = function (date, hour) {\n    var newDate = cloneDate(date);\n    if (hour === 0 && newDate.getHours() === 23) {\n        newDate.setHours(newDate.getHours() + 2);\n    }\n    return newDate;\n};\n","import { adjustDST } from './adjust-dst';\n/**\n * A function which returns a new `Date` instance.\n *\n * @param year - The year value.\n * @param month - The month value.\n * @param day - The day value.\n * @param hours - The hours value.\n * @param minutes - The minutes value.\n * @param seconds - The seconds value.\n * @param milliseconds - milliseconds value.\n * @returns The date instance.\n *\n * @example\n * ```ts-no-run\n * createDate(2016, 0, 15); // 2016-01-15 00:00:00\n * createDate(2016, 0, 15, 22, 22, 20); // 2016-01-15 22:22:20\n * ```\n */\nexport var createDate = function (year, month, day, hours, minutes, seconds, milliseconds) {\n    if (hours === void 0) { hours = 0; }\n    if (minutes === void 0) { minutes = 0; }\n    if (seconds === void 0) { seconds = 0; }\n    if (milliseconds === void 0) { milliseconds = 0; }\n    var date = new Date(year, month, day, hours, minutes, seconds, milliseconds);\n    if (year > -1 && year < 100) {\n        date.setFullYear(date.getFullYear() - 1900);\n    }\n    return adjustDST(date, hours);\n};\n","import { createDate } from './create-date';\n/**\n * A function which returns the passed date with a midnight time portion.\n *\n * @param date - The initial date.\n * @returns - The date with a midnight time portion.\n *\n * @example\n * ```ts-no-run\n * getDate(new Date(2016, 0, 15, 14, 30, 30)); // 2016-01-15 00:00:00\n * ```\n */\nexport var getDate = function (date) {\n    return createDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n};\n","var __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};\nimport { useAsyncFocusBlur } from '../hooks/useAsyncFocusBlur';\n/**\n * An utility High-order Component for asynchronous focus/blur handling.\n *\n * By default, the `onFocus` and `onBlur` callbacks are called every time a child components receives/loses focus.\n * Use this utility HOC for scenarios where you need to know if the parent has received focus for the first time, or completely lost focus.\n *\n * @returns\n */\nexport var AsyncFocusBlur = function (_a) {\n    var children = _a.children, onFocus = _a.onFocus, onBlur = _a.onBlur, onSyncFocus = _a.onSyncFocus, onSyncBlur = _a.onSyncBlur;\n    var args = useAsyncFocusBlur({ onFocus: onFocus, onBlur: onBlur, onSyncFocus: onSyncFocus, onSyncBlur: onSyncBlur });\n    return children.call(undefined, __assign({}, args));\n};\n","import * as React from 'react';\n/**\n * An utility function for asynchronous focus/blur handling.\n *\n * By default, the `onFocus` and `onBlur` callbacks are called every time a child components receives/loses focus.\n * Use this utility hook for scenarios where you need to know if the parent has received focus for the first time, or completely lost focus.\n *\n * @returns\n */\nexport function useAsyncFocusBlur(_a) {\n    var onFocus = _a.onFocus, onBlur = _a.onBlur, onSyncFocus = _a.onSyncFocus, onSyncBlur = _a.onSyncBlur;\n    var focused = React.useRef(false);\n    var tick = React.useRef(0);\n    var nextTick = React.useCallback(function (f) {\n        clearTimeout(tick.current);\n        tick.current = window.setTimeout(function () { return f(); });\n    }, [tick]);\n    var handleFocus = React.useCallback(function () {\n        var event = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            event[_i] = arguments[_i];\n        }\n        clearTimeout(tick.current);\n        if (onSyncFocus) {\n            onSyncFocus.call.apply(onSyncFocus, [undefined].concat(event));\n        }\n        if (focused.current) {\n            return;\n        }\n        ;\n        focused.current = true;\n        if (onFocus) {\n            onFocus.call.apply(onFocus, [undefined].concat(event));\n        }\n    }, [focused, onFocus, onSyncFocus]);\n    var handleBlur = React.useCallback(function () {\n        var event = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            event[_i] = arguments[_i];\n        }\n        if (onSyncBlur) {\n            onSyncBlur.call.apply(onSyncBlur, [undefined].concat(event));\n        }\n        nextTick(function () {\n            if (!focused.current) {\n                return;\n            }\n            if (onBlur) {\n                focused.current = false;\n                onBlur.call.apply(onBlur, [undefined].concat(event));\n            }\n        });\n    }, [focused, nextTick, onBlur, onSyncBlur]);\n    React.useEffect(function () {\n        return function () {\n            clearTimeout(tick.current);\n        };\n    }, []);\n    return {\n        onFocus: handleFocus,\n        onBlur: handleBlur\n    };\n}\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n    name: '@progress/kendo-react-dateinputs',\n    productName: 'KendoReact',\n    productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n    publishDate: 1642516221,\n    version: '',\n    licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","/**\n * A function that compares two dates. The comparison also includes the time portion.\n *\n * @param candidate - The candidate date.\n * @param expected - The expected date.\n * @returns - A Boolean value indicating whether the values are equal.\n *\n * @example\n * ```ts-no-run\n * isEqual(new Date(2016, 0, 1), new Date(2016, 0, 1)); // true\n * isEqual(new Date(2016, 0, 1), new Date(2016, 0, 2)); // false\n * isEqual(new Date(2016, 0, 1, 10), new Date(2016, 0, 1, 20)); // false\n * ```\n */\nexport var isEqual = function (candidate, expected) {\n    if (!candidate && !expected) {\n        return true;\n    }\n    return candidate && expected && candidate.getTime() === expected.getTime();\n};\n","import { adjustDST } from './adjust-dst';\nimport { cloneDate } from './clone-date';\n/**\n * A function that adds and subtracts days from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of days to add and subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addDays(new Date(2016, 0, 1), 5); // 2016-1-6\n * addDays(new Date(2016, 0, 1), -5); // 2015-12-26\n * ```\n */\nexport var addDays = function (date, offset) {\n    var newDate = cloneDate(date);\n    newDate.setDate(newDate.getDate() + offset);\n    return adjustDST(newDate, date.getHours());\n};\n","import { addDays } from './add-days';\nimport { createDate } from './create-date';\n/**\n * A function which returns the last date of the month.\n *\n * @param date - The initial date.\n * @returns - The last date of the initial date month.\n *\n * @example\n * ```ts-no-run\n * lastDayOfMonth(new Date(2016, 0, 15)); // 2016-01-31\n * ```\n */\nexport var lastDayOfMonth = function (date) {\n    var newDate = createDate(date.getFullYear(), date.getMonth() + 1, 1, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n    return addDays(newDate, -1);\n};\n","import { adjustDST } from './adjust-dst';\nimport { cloneDate } from './clone-date';\nimport { lastDayOfMonth } from './last-day-of-month';\nvar MONTHS_LENGTH = 12;\nvar normalize = function (date, expectedMonth) { return (date.getMonth() !== expectedMonth ? lastDayOfMonth(addMonths(date, -1)) : date //tslint:disable-line:no-use-before-declare\n); };\n/**\n * A function that adds and subtracts months from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of months to add or subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addMonths(new Date(2016, 5, 1), 5); // 2016-11-1\n * addMonths(new Date(2016, 5, 1), -5); // 2015-1-1\n * ```\n */\nexport var addMonths = function (date, offset) {\n    var newDate = cloneDate(date);\n    var diff = (newDate.getMonth() + offset) % MONTHS_LENGTH;\n    var expectedMonth = (MONTHS_LENGTH + diff) % MONTHS_LENGTH;\n    newDate.setMonth(newDate.getMonth() + offset);\n    return normalize(adjustDST(newDate, date.getHours()), expectedMonth);\n};\n","/**\n * @hidden\n */\nvar Mask = /** @class */ (function () {\n    function Mask() {\n        this.symbols = '';\n    }\n    return Mask;\n}());\nexport { Mask };\n","/**\n * @hidden\n */\nexport var defaultFormat = 'd';\n/**\n * @hidden\n */\nexport var defaultFormatPlaceholder = 'wide';\n/**\n * @hidden\n */\nexport var padZero = function (length) { return new Array(Math.max(length, 0)).fill('0').join(''); };\n/**\n * @hidden\n */\nexport var approximateStringMatching = function (oldTextOrigin, oldFormat, newTextOrigin, selectionStart) {\n    /*\n      Remove the right part of the cursor.\n      oldFormat = oldFormat.substring(0, caret + oldText.length - newText.length);\n    */\n    var oldTextSeparator = oldTextOrigin[selectionStart + oldTextOrigin.length - newTextOrigin.length];\n    var oldText = oldTextOrigin.substring(0, selectionStart + oldTextOrigin.length - newTextOrigin.length);\n    var newText = newTextOrigin.substring(0, selectionStart);\n    var diff = [];\n    /* Handle the typing of a single character over the same selection. */\n    if (oldText === newText && selectionStart > 0) {\n        diff.push([oldFormat[selectionStart - 1], newText[selectionStart - 1]]);\n        return diff;\n    }\n    if (oldText.indexOf(newText) === 0 &&\n        (newText.length === 0 || oldFormat[newText.length - 1] !== oldFormat[newText.length])) {\n        /* Handle Delete/Backspace. */\n        var deletedSymbol = '';\n        /*\n            The whole text is replaced by the same character.\n            A nasty patch is required to keep the selection in the first segment.\n        */\n        if (newText.length === 1) {\n            diff.push([oldFormat[0], newText[0]]);\n        }\n        for (var i = newText.length; i < oldText.length; i++) {\n            if (oldFormat[i] !== deletedSymbol && oldFormat[i] !== '_') {\n                deletedSymbol = oldFormat[i];\n                diff.push([deletedSymbol, '']);\n            }\n        }\n        return diff;\n    }\n    /*\n        Handle the insertion of the text (the new text is longer than the previous one).\n        Handle the typing over a literal as well.\n    */\n    if (newText.indexOf(oldText) === 0 || oldFormat[selectionStart - 1] === '_') {\n        var symbol = oldFormat[0];\n        for (var i = Math.max(0, oldText.length - 1); i < oldFormat.length; i++) {\n            if (oldFormat[i] !== '_') {\n                symbol = oldFormat[i];\n                break;\n            }\n        }\n        return [[symbol, newText[selectionStart - 1]]];\n    }\n    /* Handle the entering of a space or a separator for navigating to the next item. */\n    if (newText[newText.length - 1] === ' ' || newText[newText.length - 1] === oldTextSeparator) {\n        return [[oldFormat[selectionStart - 1], '_']];\n    }\n    /* Handle typing over a correctly selected part. */\n    return [[oldFormat[selectionStart - 1], newText[selectionStart - 1]]];\n};\n/**\n * @hidden\n */\nexport var dateSymbolMap = function (map, part) { map[part.pattern[0]] = part.type; return map; };\n/**\n * @hidden\n */\nexport var isInRange = function (candidate, min, max) { return (candidate === null || !((min && min > candidate) || (max && max < candidate))); };\n/**\n * @hidden\n */\nexport var invalidClasses = ['k-state-invalid'];\n/** @hidden */\nexport var wrapperClasses = ['k-widget', 'k-dateinput'];\n","import { addMonths, cloneDate, createDate, isEqual, getDate, lastDayOfMonth } from '@progress/kendo-date-math';\nimport { Mask } from './mask';\nimport { dateSymbolMap } from './../utils';\n/**\n * @hidden\n */\nvar KendoDate = /** @class */ (function () {\n    function KendoDate(intlProvider, formatPlaceholder, format) {\n        this.year = true;\n        this.month = true;\n        this.date = true;\n        this.hours = true;\n        this.minutes = true;\n        this.seconds = true;\n        this.milliseconds = true;\n        this.leadingZero = null;\n        this.typedMonthPart = '';\n        this.knownParts = 'adHhmMsEy';\n        this.symbols = {\n            'E': 'E',\n            'H': 'H',\n            'M': 'M',\n            'a': 'a',\n            'd': 'd',\n            'h': 'h',\n            'm': 'm',\n            's': 's',\n            'y': 'y'\n        };\n        this._value = getDate(new Date());\n        this.intlProvider = intlProvider;\n        this.formatPlaceholder = formatPlaceholder;\n        this.format = format;\n        this.monthNames = this.allFormatedMonths();\n    }\n    Object.defineProperty(KendoDate.prototype, \"intl\", {\n        get: function () {\n            return this.intlProvider();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(KendoDate.prototype, \"value\", {\n        get: function () {\n            return this._value;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    KendoDate.prototype.setValue = function (value) {\n        if (!value) {\n            this._value = getDate(new Date());\n            this.modifyExisting(false);\n        }\n        else if (!isEqual(value, this._value)) {\n            this._value = cloneDate(value);\n            this.modifyExisting(true);\n        }\n    };\n    KendoDate.prototype.hasValue = function () {\n        var _this = this;\n        var pred = function (a, p) { return a || p.type !== 'literal' && p.type !== 'dayperiod' && _this.getExisting(p.pattern[0]); };\n        return this.intl.splitDateFormat(this.format).reduce(pred, false);\n    };\n    KendoDate.prototype.getDateObject = function () {\n        for (var i = 0; i < this.knownParts.length; i++) {\n            if (!this.getExisting(this.knownParts[i])) {\n                return null;\n            }\n        }\n        return cloneDate(this.value);\n    };\n    KendoDate.prototype.getTextAndFormat = function () {\n        return this.merge(this.intl.formatDate(this.value, this.format), this.dateFormatString(this.value, this.format));\n    };\n    KendoDate.prototype.modifyExisting = function (value) {\n        var sampleFormat = this.dateFormatString(this.value, this.format).symbols;\n        for (var i = 0; i < sampleFormat.length; i++) {\n            this.setExisting(sampleFormat[i], value);\n        }\n    };\n    KendoDate.prototype.getExisting = function (symbol) {\n        switch (symbol) {\n            case 'y': return this.year;\n            case 'M':\n            case 'L': return this.month;\n            case 'd': return this.date;\n            case 'E': return this.date && this.month && this.year;\n            case 'h':\n            case 'H': return this.hours;\n            case 'm': return this.minutes;\n            case 's': return this.seconds;\n            default: return true;\n        }\n    };\n    KendoDate.prototype.setExisting = function (symbol, value) {\n        switch (symbol) {\n            case 'y':\n                // allow 2/29 dates\n                this.year = value;\n                if (value === false) {\n                    this._value.setFullYear(2000);\n                }\n                break;\n            case 'M':\n                // make sure you can type 31 in the day part\n                this.month = value;\n                if (value === false) {\n                    this._value.setMonth(0);\n                }\n                break;\n            case 'd':\n                this.date = value;\n                break;\n            case 'h':\n            case 'H':\n                this.hours = value;\n                break;\n            case 'm':\n                this.minutes = value;\n                break;\n            case 's':\n                this.seconds = value;\n                break;\n            default: return;\n        }\n    };\n    KendoDate.prototype.modifyPart = function (symbol, offset) {\n        var newValue = cloneDate(this.value);\n        switch (symbol) {\n            case 'y':\n                newValue.setFullYear(newValue.getFullYear() + offset);\n                break;\n            case 'M':\n                newValue = addMonths(this.value, offset);\n                break;\n            case 'd':\n            case 'E':\n                newValue.setDate(newValue.getDate() + offset);\n                break;\n            case 'h':\n            case 'H':\n                newValue.setHours(newValue.getHours() + offset);\n                break;\n            case 'm':\n                newValue.setMinutes(newValue.getMinutes() + offset);\n                break;\n            case 's':\n                newValue.setSeconds(newValue.getSeconds() + offset);\n                break;\n            case 'a':\n                newValue.setHours(newValue.getHours() + (12 * offset));\n                break;\n            default: break;\n        }\n        this.setExisting(symbol, true);\n        this._value = newValue;\n    };\n    KendoDate.prototype.parsePart = function (symbol, currentChar) {\n        var _a;\n        this.resetLeadingZero();\n        if (!currentChar) {\n            this.setExisting(symbol, false);\n            return { value: null };\n        }\n        var baseDate = this.intl.formatDate(this.value, this.format);\n        var dateParts = this.dateFormatString(this.value, this.format);\n        var baseFormat = dateParts.symbols;\n        var replaced = false;\n        var prefix = '';\n        var current = '';\n        var suffix = '';\n        for (var i = 0; i < baseDate.length; i++) {\n            if (baseFormat[i] === symbol) {\n                current += this.getExisting(symbol) ? baseDate[i] : '0';\n                replaced = true;\n            }\n            else if (!replaced) {\n                prefix += baseDate[i];\n            }\n            else {\n                suffix += baseDate[i];\n            }\n        }\n        var parsedDate = null;\n        var month = this.matchMonth(currentChar);\n        while (current.length > 0 && current.charAt(0) === '0') {\n            current = current.slice(1);\n        }\n        if (current.length >= 4) {\n            current = '';\n        }\n        for (var i = 0; i < 2; i++) {\n            var middle = current + currentChar;\n            var middleNumber = parseInt(middle, 10);\n            parsedDate = this.intl.parseDate(prefix + middle + suffix, this.format);\n            if (!parsedDate && !isNaN(middleNumber) && !isNaN(parseInt(currentChar, 10))) {\n                if (symbol === 'M' && !month) {\n                    var monthNumber = middleNumber - 1;\n                    if (monthNumber > -1 && monthNumber < 12) {\n                        parsedDate = cloneDate(this.value);\n                        parsedDate.setMonth(monthNumber);\n                        if (parsedDate.getMonth() !== monthNumber) {\n                            parsedDate = lastDayOfMonth(addMonths(parsedDate, -1));\n                        }\n                    }\n                }\n                if (symbol === 'y') {\n                    parsedDate = createDate(parseInt(middle, 10), this.month ? this.value.getMonth() : 0, this.date ? this.value.getDate() : 1, this.hours ? this.value.getHours() : 0, this.minutes ? this.value.getMinutes() : 0, this.seconds ? this.value.getSeconds() : 0, this.milliseconds ? this.value.getMilliseconds() : 0);\n                    if (this.date && parsedDate.getDate() !== this.value.getDate()) {\n                        parsedDate = lastDayOfMonth(addMonths(parsedDate, -1));\n                    }\n                }\n            }\n            if (parsedDate) {\n                this._value = parsedDate;\n                this.setExisting(symbol, true);\n                return { value: this.value };\n            }\n            current = '';\n        }\n        if (month) {\n            parsedDate = this.intl.parseDate(prefix + month + suffix, this.format);\n            if (parsedDate) {\n                this._value = parsedDate;\n                this.setExisting(symbol, true);\n                return { value: this.value };\n            }\n        }\n        if (currentChar === '0') {\n            this.leadingZero = !this.isAbbrMonth(dateParts.partMap, symbol) ? (_a = {}, _a[symbol] = true, _a) : null;\n            this.setExisting(symbol, false);\n        }\n        return { value: null };\n    };\n    KendoDate.prototype.symbolMap = function (symbol) {\n        return this.intl.splitDateFormat(this.format).reduce(dateSymbolMap, {})[symbol];\n    };\n    KendoDate.prototype.resetLeadingZero = function () {\n        var hasLeadingZero = this.leadingZero !== null;\n        this.leadingZero = null;\n        return hasLeadingZero;\n    };\n    KendoDate.prototype.isAbbrMonth = function (parts, symbol) {\n        var pattern = this.partPattern(parts, symbol);\n        return pattern.type === 'month' && pattern.names;\n    };\n    KendoDate.prototype.partPattern = function (parts, symbol) {\n        return parts.filter(function (part) { return part.pattern.indexOf(symbol) !== -1; })[0];\n    };\n    KendoDate.prototype.matchMonth = function (typedChar) {\n        this.typedMonthPart += typedChar.toLowerCase();\n        if (this.monthNames.length === 0) {\n            return '';\n        }\n        while (this.typedMonthPart.length > 0) {\n            for (var i = 0; i < this.monthNames.length; i++) {\n                if (this.monthNames[i].toLowerCase().indexOf(this.typedMonthPart) === 0) {\n                    return this.monthNames[i];\n                }\n            }\n            var monthAsNum = parseInt(this.typedMonthPart, 10);\n            /* ensure they exact match */\n            if (monthAsNum >= 1 && monthAsNum <= 12 && monthAsNum.toString() === this.typedMonthPart) {\n                return this.monthNames[monthAsNum - 1];\n            }\n            this.typedMonthPart = this.typedMonthPart.substring(1, this.typedMonthPart.length);\n        }\n        return '';\n    };\n    KendoDate.prototype.allFormatedMonths = function () {\n        var dateFormatParts = this.intl.splitDateFormat(this.format);\n        for (var i = 0; i < dateFormatParts.length; i++) {\n            if (dateFormatParts[i].type === 'month' && dateFormatParts[i].names) {\n                return this.intl.dateFormatNames(dateFormatParts[i].names);\n            }\n        }\n        return [];\n    };\n    KendoDate.prototype.dateFormatString = function (date, format) {\n        var dateFormatParts = this.intl.splitDateFormat(format);\n        var parts = [];\n        var partMap = [];\n        for (var i = 0; i < dateFormatParts.length; i++) {\n            var partLength = this.intl.formatDate(date, { pattern: dateFormatParts[i].pattern }).length;\n            while (partLength > 0) {\n                parts.push(this.symbols[dateFormatParts[i].pattern[0]] || '_');\n                partMap.push(dateFormatParts[i]);\n                partLength--;\n            }\n        }\n        var returnValue = new Mask();\n        returnValue.symbols = parts.join('');\n        returnValue.partMap = partMap;\n        return returnValue;\n    };\n    KendoDate.prototype.merge = function (text, mask) {\n        // Important: right to left.\n        var resultText = '';\n        var resultFormat = '';\n        var format = mask.symbols;\n        for (var r = format.length - 1; r >= 0; r--) {\n            if (this.knownParts.indexOf(format[r]) === -1 || this.getExisting(format[r])) {\n                resultText = text[r] + resultText;\n                resultFormat = format[r] + resultFormat;\n            }\n            else {\n                var currentSymbol = format[r];\n                while (r >= 0 && currentSymbol === format[r]) {\n                    r--;\n                }\n                r++;\n                if (this.leadingZero && this.leadingZero[currentSymbol]) {\n                    resultText = '0' + resultText;\n                }\n                else {\n                    resultText = this.dateFieldName(mask.partMap[r]) + resultText;\n                }\n                while (resultFormat.length < resultText.length) {\n                    resultFormat = format[r] + resultFormat;\n                }\n            }\n        }\n        return { text: resultText, format: resultFormat };\n    };\n    KendoDate.prototype.dateFieldName = function (part) {\n        var formatPlaceholder = this.formatPlaceholder || 'wide';\n        if (formatPlaceholder[part.type]) {\n            return formatPlaceholder[part.type];\n        }\n        if (formatPlaceholder === 'formatPattern') {\n            return part.pattern;\n        }\n        return this.intl.dateFieldName(Object.assign(part, { nameType: formatPlaceholder }));\n    };\n    return KendoDate;\n}());\nexport { KendoDate };\n","/**\n * @hidden\n */\nexport var EMPTY_SELECTIONRANGE = { start: null, end: null };\n","import { cloneDate, isEqual } from '@progress/kendo-date-math';\nimport { getDate } from '@progress/kendo-date-math';\nimport { EMPTY_SELECTIONRANGE } from './calendar/models/SelectionRange';\n/**\n * @hidden\n */\nexport var isEqualRange = function (initial, updated) {\n    var _a = initial || EMPTY_SELECTIONRANGE, initialStart = _a.start, initialEnd = _a.end;\n    var _b = updated || EMPTY_SELECTIONRANGE, updatedStart = _b.start, updatedEnd = _b.end;\n    if (initialStart === null || initialEnd === null || updatedStart === null || updatedEnd === null) {\n        return false;\n    }\n    return isEqual(initialStart, updatedStart) && isEqual(initialEnd, updatedEnd);\n};\n// Polyfill for PropTypes.null\n/**\n * @hidden\n */\nexport function nullable(subRequirement) {\n    var check = function (required, props, key) {\n        var rest = [];\n        for (var _i = 3; _i < arguments.length; _i++) {\n            rest[_i - 3] = arguments[_i];\n        }\n        if (props[key] === null) {\n            return null;\n        }\n        var sub = required ? subRequirement.isRequired : subRequirement;\n        return sub.apply(void 0, [props, key].concat(rest));\n    };\n    var fn = check.bind(null, false);\n    fn.isRequired = check.bind(null, true);\n    return fn;\n}\n/**\n * @hidden\n */\nexport var viewInRange = function (candidate, min, max) {\n    if (min === undefined || max === undefined) {\n        return candidate;\n    }\n    return min <= candidate && candidate <= max\n        ? candidate\n        : candidate < min\n            ? min\n            : max;\n};\n/**\n * @hidden\n */\nexport var MIDNIGHT_DATE = new Date(1980, 0, 1);\n/**\n * @hidden\n */\nexport var MIN_DATE = new Date(1900, 0, 1);\n/**\n * @hidden\n */\nexport var MAX_DATE = new Date(2099, 11, 31);\n/**\n * @hidden\n */\nexport var MIN_TIME = new Date(1980, 0, 1);\n/**\n * @hidden\n */\nexport var MAX_TIME = new Date(1980, 0, 1, 23, 59, 59);\nvar isSet = function (value) { return value !== null && value !== undefined; };\n/**\n * @hidden\n */\nexport var isValidRange = function (min, max) { return (!isSet(min) || !isSet(max) || min <= max); };\n/**\n * @hidden\n */\nexport var setTime = function (origin, candidate) {\n    var date = cloneDate(origin);\n    date.setHours(candidate.getHours(), candidate.getMinutes(), candidate.getSeconds(), candidate.getMilliseconds());\n    return date;\n};\n/**\n * @hidden\n */\nexport var getToday = function () { return getDate(new Date()); };\n/**\n * @hidden\n */\nexport var isInRange = function (candidate, min, max) { return (!candidate || !((min && min > candidate) || (max && max < candidate))); };\n/**\n * @hidden\n */\nexport var isInDateRange = function (candidate, min, max) { return (candidate === null\n    || !((min && getDate(min) > getDate(candidate))\n        || (max && getDate(max) < getDate(candidate)))); };\n/**\n * @hidden\n */\nexport var isInSelectionRange = function (value, selectionRange) {\n    var _a = selectionRange || EMPTY_SELECTIONRANGE, start = _a.start, end = _a.end;\n    if (!start || !end) {\n        return false;\n    }\n    return start < value && value < end;\n};\n/**\n * @hidden\n */\nexport var range = function (start, end, step) {\n    if (step === void 0) { step = 1; }\n    var result = [];\n    for (var i = start; i < end; i = i + step) {\n        result.push(i);\n    }\n    return result;\n};\n/**\n * @hidden\n */\nexport var intersects = function (date, min, max) {\n    return min.getTime() <= date.getTime() && date.getTime() <= max.getTime();\n};\n/**\n * @hidden\n */\nexport var shiftWeekNames = function (names, offset) { return (names.slice(offset).concat(names.slice(0, offset))); };\n/**\n * @hidden\n */\nexport var dateInRange = function (candidate, min, max) {\n    if (!candidate) {\n        return candidate;\n    }\n    if (min && candidate < min) {\n        return cloneDate(min);\n    }\n    if (max && candidate > max) {\n        return cloneDate(max);\n    }\n    return candidate;\n};\n/**\n * @hidden\n */\nexport var domContainerFactory = function (type) { return function (children, classes, styles) {\n    if (classes === void 0) { classes = ''; }\n    if (styles === void 0) { styles = {}; }\n    var container = document.createElement(type);\n    container.className = classes;\n    Object.keys(styles).map(function (key) { return container.style[key] = styles[key]; });\n    if (typeof children === 'string') {\n        container.innerHTML = children || '';\n    }\n    else {\n        (children || []).forEach(function (child) { return child && container.appendChild(child); });\n    }\n    return container;\n}; };\n","var _a;\n/**\n * @hidden\n */\nexport var prevView = 'multiviewcalendar.prevView';\n/**\n * @hidden\n */\nexport var nextView = 'multiviewcalendar.nextView';\n/**\n * @hidden\n */\nexport var increaseValue = 'dateinput.increment';\n/**\n * @hidden\n */\nexport var decreaseValue = 'dateinput.decrement';\n/**\n * @hidden\n */\nexport var today = 'calendar.today';\n/**\n * @hidden\n */\nexport var toggleCalendar = 'datepicker.toggleCalendar';\n/**\n * @hidden\n */\nexport var swapStartEnd = 'daterangepicker.swapStartEnd';\n/**\n * @hidden\n */\nexport var start = 'daterangepicker.start';\n/**\n * @hidden\n */\nexport var end = 'daterangepicker.end';\n/**\n * @hidden\n */\nexport var separator = 'daterangepicker.separator';\n/**\n * @hidden\n */\nexport var toggleDateTimeSelector = 'datetimepicker.toggleDateTimeSelector';\n/**\n * @hidden\n */\nexport var now = 'timepicker.now';\n/**\n * @hidden\n */\nexport var selectNow = 'timepicker.selectNow';\n/**\n * @hidden\n */\nexport var timePickerCancel = 'timepicker.cancel';\n/**\n * @hidden\n */\nexport var timePickerSet = 'timepicker.set';\n/**\n * @hidden\n */\nexport var toggleTimeSelector = 'timepicker.toggleTimeSelector';\n/**\n * @hidden\n */\nexport var toggleClock = 'timepicker.toggleClock';\n/**\n * @hidden\n */\nexport var date = 'datetimepicker.date';\n/**\n * @hidden\n */\nexport var time = 'datetimepicker.time';\n/**\n * @hidden\n */\nexport var dateTimePickerCancel = 'datetimepicker.cancel';\n/**\n * @hidden\n */\nexport var dateTimePickerSet = 'datetimepicker.set';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n    _a[today] = 'TODAY',\n    _a[now] = 'NOW',\n    _a[timePickerSet] = 'Set',\n    _a[timePickerCancel] = 'Cancel',\n    _a[date] = 'Date',\n    _a[time] = 'Time',\n    _a[dateTimePickerCancel] = 'Cancel',\n    _a[dateTimePickerSet] = 'Set',\n    _a[start] = 'Start',\n    _a[end] = 'End',\n    _a[separator] = ' ',\n    _a[selectNow] = 'Select Now',\n    _a[toggleTimeSelector] = 'Toggle TimeSelector',\n    _a[toggleClock] = 'Toggle Clock',\n    _a[increaseValue] = 'Increase value',\n    _a[decreaseValue] = 'Decrease value',\n    _a[toggleCalendar] = 'Toggle calendar',\n    _a[prevView] = 'Navigate to previous view',\n    _a[nextView] = 'Navigate to next view',\n    _a[swapStartEnd] = 'Swap start and end values',\n    _a[toggleDateTimeSelector] = 'Toggle date-time selector',\n    _a);\n","import { cloneDate, addDays } from '@progress/kendo-date-math';\nimport { TIME_PART } from './models/TimePart';\nimport { MIDNIGHT_DATE, setTime } from '../utils';\nvar setter = function (method) { return function (date, value) {\n    var clone = cloneDate(date);\n    clone[method](value);\n    return clone;\n}; };\nvar defaultGetters = [\n    { type: TIME_PART.hour, getter: function (value) { return value.getHours(); } },\n    { type: TIME_PART.minute, getter: function (value) { return value.getMinutes(); } },\n    { type: TIME_PART.second, getter: function (value) { return value.getSeconds(); } },\n    { type: TIME_PART.millisecond, getter: function (value) { return value.getMilliseconds(); } }\n];\nvar left = function (getter) { return function (origin, _) { return getter(origin); }; };\nvar right = function (getter) { return function (_, candidate) { return getter(candidate); }; };\nvar convertToObject = function (parts) { return parts.reduce(function (obj, p) { obj[p.type] = p.type; return obj; }, {}); };\nvar getterByPart = function (parts) { return function (g) { return parts[g.type] ? right(g.getter) : left(g.getter); }; };\nvar gettersFactory = function (getters) { return function (parts) { return (getters.map(getterByPart(convertToObject(parts)))); }; };\nvar snapValue = function (getter, step, min, type) { return function (date) {\n    var value = getter(date);\n    var minValue = getter(min);\n    if (type === 'hour') {\n        return value - ((value - minValue) % step);\n    }\n    if (date.getTime() <= min.getTime()\n        && value !== 0\n        && value <= minValue) {\n        return (Math.ceil(value / step)) * step;\n    }\n    return value - (value % step);\n}; };\nvar snappersFactory = function (getters) { return function (steps, min) { return (getters.map(function (g) {\n    var step = Math.floor(steps[g.type]);\n    return step ? snapValue(g.getter, step, min, g.type) : g.getter;\n})); }; };\n/**\n * @hidden\n */\nexport var generateGetters = gettersFactory(defaultGetters);\n/**\n * @hidden\n */\nexport var generateSnappers = snappersFactory(defaultGetters);\n/**\n * @hidden\n */\nexport var valueMerger = function (getters) { return function (origin, candidate) {\n    origin.setHours.apply(origin, getters.map(function (g) { return g(origin, candidate); }));\n    return origin;\n}; };\n/**\n * @hidden\n */\nexport var snapTime = function (snappers) { return function (candidate) {\n    var date = cloneDate(candidate);\n    date.setHours.apply(date, snappers.map(function (s) { return s(date); }));\n    return date;\n}; };\n/**\n * @hidden\n */\nexport var setHours = setter('setHours');\n/**\n * @hidden\n */\nexport var setMinutes = setter('setMinutes');\n/**\n * @hidden\n */\nexport var setSeconds = setter('setSeconds');\n/**\n * @hidden\n */\nexport var getNow = function () { return new Date(); };\n/**\n * @hidden\n */\nexport var range = function (start, end, step) {\n    if (step === void 0) { step = 1; }\n    var result = [];\n    for (var i = start; i < end; i = i + step) {\n        result.push(i);\n    }\n    return result;\n};\nvar normalizeTimes = function (candidate, min, max) { return ({\n    candidateValue: setTime(MIDNIGHT_DATE, candidate),\n    maxValue: addDays(setTime(MIDNIGHT_DATE, max), min.getHours() < max.getHours() ? 0 : 1),\n    minValue: setTime(MIDNIGHT_DATE, min)\n}); };\n/**\n * @hidden\n */\nexport var timeInRange = function (candidate, min, max) {\n    if (!candidate || !min || !max) {\n        return candidate;\n    }\n    var _a = normalizeTimes(candidate, min, max), candidateValue = _a.candidateValue, minValue = _a.minValue, maxValue = _a.maxValue;\n    if (candidateValue < minValue) {\n        return setTime(candidate, min);\n    }\n    if (candidateValue > maxValue) {\n        return setTime(candidate, max);\n    }\n    return candidate;\n};\n/**\n * @hidden\n */\nexport var isInTimeRange = function (candidate, min, max) {\n    if (!candidate || !min || !max) {\n        return true;\n    }\n    var _a = normalizeTimes(candidate, min, max), candidateValue = _a.candidateValue, minValue = _a.minValue, maxValue = _a.maxValue;\n    return minValue <= candidateValue && candidateValue <= maxValue;\n};\n/**\n * @hidden\n */\nexport var isInRange = function (candidate, min, max) {\n    if (candidate === null) {\n        return true;\n    }\n    var _a = normalizeTimes(candidate, min, max), candidateValue = _a.candidateValue, minValue = _a.minValue, maxValue = _a.maxValue;\n    return minValue <= candidateValue && candidateValue <= maxValue;\n};\n/**\n * @hidden\n */\nexport var isSmallerThanMin = function (val, min) {\n    if (val === null || min === null) {\n        return false;\n    }\n    var normalizedValue = setTime(MIDNIGHT_DATE, val);\n    var normalizedMin = setTime(MIDNIGHT_DATE, min);\n    return normalizedValue.getTime() < normalizedMin.getHours();\n};\n/**\n * @hidden\n */\nexport var isBiggerThanMax = function (val, max) {\n    if (val === null || max === null) {\n        return false;\n    }\n    var normalizedValue = setTime(MIDNIGHT_DATE, val);\n    var normalizedMax = setTime(MIDNIGHT_DATE, max);\n    return normalizedMax.getTime() < normalizedValue.getHours();\n};\n","/**\n * @hidden\n */\nexport var TIME_PART = {\n    dayperiod: 'dayperiod',\n    hour: 'hour',\n    millisecond: 'millisecond',\n    minute: 'minute',\n    second: 'second'\n};\n","/**\n * @hidden\n */\nexport var MIDNIGHT_DATE = new Date(1980, 0, 1);\n/**\n * @hidden\n */\nexport var MIN_DATE = new Date(1900, 0, 1);\n/**\n * @hidden\n */\nexport var MAX_DATE = new Date(2099, 11, 31);\n/**\n * @hidden\n */\nexport var MIN_TIME = new Date(1980, 0, 1);\n/**\n * @hidden\n */\nexport var MAX_TIME = new Date(1980, 0, 1, 23, 59, 59);\n","var __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 __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};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { isEqual, cloneDate } from '@progress/kendo-date-math';\nimport { registerForIntl, provideIntlService, registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { KendoDate } from './models';\nimport { guid, AsyncFocusBlur, noop, classNames, createPropsContext, withPropsContext } from '@progress/kendo-react-common';\nimport { FloatingLabel } from '@progress/kendo-react-labels';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nimport { approximateStringMatching, defaultFormat, defaultFormatPlaceholder, isInRange, wrapperClasses } from './utils';\nimport { MAX_DATE, MIN_DATE } from './../utils';\nimport { messages, increaseValue, decreaseValue } from './../messages';\nimport { isInTimeRange } from '../timepicker/utils';\nimport { MIN_TIME, MAX_TIME } from '../defaults';\nvar VALIDATION_MESSAGE = 'Please enter a valid value!';\n// tslint:enable:max-line-length\n/** @hidden */\nvar DateInputWithoutContext = /** @class */ (function (_super) {\n    __extends(DateInputWithoutContext, _super);\n    function DateInputWithoutContext(props) {\n        var _this = _super.call(this, props) || this;\n        _this.kendoDate = null;\n        _this.paste = false;\n        _this._element = null;\n        _this._wrapper = null;\n        _this._inputId = guid();\n        /**\n         * @hidden\n         */\n        _this.focus = function () {\n            if (_this._element) {\n                _this._element.focus();\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.setValidity = function () {\n            if (_this.element && _this.element.setCustomValidity) {\n                _this.element.setCustomValidity(_this.validity.valid\n                    ? ''\n                    : _this.props.validationMessage || DateInputWithoutContext.defaultProps.validationMessage);\n            }\n        };\n        _this.updateOnPaste = function (event) {\n            if (!_this.element || !_this.kendoDate) {\n                return;\n            }\n            var value = provideIntlService(_this).parseDate(_this.element.value, _this.props.format) || _this.value;\n            var oldValue = _this.value;\n            _this.kendoDate.setValue(value);\n            _this.triggerChange(event, oldValue);\n        };\n        /* Handlers */\n        _this.spinnersMouseDown = function (event) {\n            /* do not steal focus from input when changing value with spinners */\n            event.preventDefault();\n            /* manually focus the input in case the user clicks the spinners first */\n            if (_this.element && document.activeElement !== _this.element) {\n                _this.element.focus({ preventScroll: true });\n            }\n        };\n        _this.handlePaste = function () {\n            _this.paste = true;\n        };\n        _this.elementChange = function (event) {\n            if (!_this.element || !_this.kendoDate) {\n                return;\n            }\n            if (_this.paste) {\n                _this.updateOnPaste(event);\n                _this.paste = false;\n                return;\n            }\n            var _a = _this.kendoDate.getTextAndFormat(), text = _a.text, currentFormat = _a.format;\n            _this.currentFormat = currentFormat;\n            var dateBeforeChange = _this.value;\n            var diff = approximateStringMatching(text, _this.currentFormat, _this.element.value, _this.selection.start);\n            var navigationOnly = (diff.length === 1 && diff[0][1] === '_');\n            if (!navigationOnly) {\n                for (var i = 0; i < diff.length; i++) {\n                    _this.kendoDate.parsePart(diff[i][0], diff[i][1]);\n                }\n            }\n            if (diff.length && diff[0][0] !== '_') {\n                _this.setSelection(_this.selectionBySymbol(diff[0][0]));\n            }\n            if (navigationOnly) {\n                _this.switchDateSegment(1);\n            }\n            _this.triggerChange(event, dateBeforeChange);\n        };\n        _this.elementClick = function (_) {\n            _this.setSelection(_this.selectionByIndex(_this.selection.start));\n        };\n        _this.nativeWheel = function (event) {\n            event.preventDefault();\n        };\n        _this.wheel = function (event) {\n            if (document.activeElement !== _this.element) {\n                return;\n            }\n            if (event.nativeEvent.deltaY < 0) {\n                _this.increasePart(event);\n            }\n            if (event.nativeEvent.deltaY > 0) {\n                _this.decreasePart(event);\n            }\n        };\n        _this.increasePart = function (event) {\n            _this.modifyDateSegmentValue(1, event);\n        };\n        _this.decreasePart = function (event) {\n            _this.modifyDateSegmentValue(-1, event);\n        };\n        _this.elementKeyDown = function (event) {\n            if (event.altKey) {\n                return;\n            }\n            switch (event.keyCode) {\n                case 37:\n                    /*\n                        * Key: `Left Arrow`\n                        * Action: Switches to previous logical* segment.\n                        * (*) https://www.w3.org/International/articles/inline-bidi-markup/uba-basics\n                        */\n                    _this.switchDateSegment(-1);\n                    break;\n                case (38):\n                    /*\n                        * Key: `Up Arrow`\n                        * Action: Increases the currently selected segment value.\n                        */\n                    _this.modifyDateSegmentValue(1, event);\n                    break;\n                case 39:\n                    /*\n                        * Key: `Right Arrow`\n                        * Action: Switches to the next logical segment.\n                        */\n                    _this.switchDateSegment(1);\n                    break;\n                case 40:\n                    /*\n                        * Key: `Down Arrow`\n                        * Action: Decreases the currently selected segment value.\n                        */\n                    _this.modifyDateSegmentValue(-1, event);\n                    break;\n                default:\n                    /*\n                        * Key: any\n                        * Action: Does not prevent the default behavior.\n                        */\n                    return;\n            }\n            event.preventDefault();\n        };\n        _this.elementOnFocus = function (_) {\n            if (_this.wrapper) {\n                _this.wrapper.classList.add('k-state-focused');\n            }\n            _this.setState({ focused: true });\n        };\n        _this.elementOnBlur = function (_) {\n            if (_this.wrapper) {\n                _this.wrapper.classList.remove('k-state-focused');\n            }\n            _this.setState({ focused: false });\n        };\n        validatePackage(packageMetadata);\n        _this.state = {\n            focused: false\n        };\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    DateInputWithoutContext.prototype.componentDidMount = function () {\n        this.setValidity();\n        if (this.wrapper) {\n            this.wrapper.addEventListener('wheel', this.nativeWheel, { passive: false });\n        }\n    };\n    /**\n     * @hidden\n     */\n    DateInputWithoutContext.prototype.componentDidUpdate = function (_, prevState) {\n        if (this._lastSelectedSymbol && prevState.focused === this.state.focused) {\n            this.setSelection(this.selectionBySymbol(this._lastSelectedSymbol));\n        }\n        else if (this.selection.start === this.selection.end) {\n            this.setSelection({ start: 0, end: this.currentFormat.length });\n        }\n        this.setValidity();\n    };\n    /**\n     * @hidden\n     */\n    DateInputWithoutContext.prototype.componentWillUnmount = function () {\n        if (this.wrapper) {\n            this.wrapper.removeEventListener('wheel', this.nativeWheel);\n        }\n    };\n    /**\n     * @hidden\n     */\n    DateInputWithoutContext.prototype.render = function () {\n        var _this = this;\n        if (this.props._ref) {\n            this.props._ref.current = this;\n        }\n        var localizationService = provideLocalizationService(this);\n        var props = __assign({}, DateInputWithoutContext.defaultProps, this.props);\n        var min = props.min, max = props.max, name = props.name, label = props.label, id = props.id;\n        var currentText = this.text;\n        var text = currentText === this.props.placeholder ? '' : currentText;\n        var placeholder = currentText === this.props.placeholder ? currentText : undefined;\n        var inputId = id || this._inputId;\n        var isValid = !this.validityStyles || this.validity.valid;\n        var ariaProps = {\n            'aria-valuemin': min === null ? undefined : min.getTime(),\n            'aria-valuemax': max === null ? undefined : max.getTime(),\n            'aria-valuetext': text\n        };\n        if (this.value !== null) {\n            ariaProps['aria-valuenow'] = this.value.getTime();\n        }\n        var wrapperClassesInstance = wrapperClasses.slice();\n        if (this.props.className) {\n            wrapperClassesInstance.push(this.props.className);\n        }\n        var dateinput = (React.createElement(AsyncFocusBlur, { onFocus: this.elementOnFocus, onBlur: this.elementOnBlur }, function (_a) {\n            var onFocus = _a.onFocus, onBlur = _a.onBlur;\n            return (React.createElement(\"span\", { style: !label\n                    ? { width: _this.props.width }\n                    : undefined, dir: _this.props.dir, className: wrapperClassesInstance.join(' '), onFocus: onFocus, onBlur: onBlur },\n                React.createElement(\"span\", { className: classNames('k-dateinput-wrap', {\n                        'k-state-disabled': _this.props.disabled,\n                        'k-state-invalid': !isValid\n                    }), ref: function (span) { _this._wrapper = span; } },\n                    React.createElement(\"input\", __assign({ role: \"spinbutton\", tabIndex: _this.props.tabIndex, disabled: _this.props.disabled, title: _this.props.title !== undefined ? _this.props.title : currentText, type: \"text\", spellCheck: false, autoComplete: \"off\", autoCorrect: \"off\", className: \"k-input\", id: inputId, \"aria-labelledby\": _this.props.ariaLabelledBy, \"aria-describedby\": _this.props.ariaDescribedBy, \"aria-expanded\": _this.props.ariaExpanded, \"aria-haspopup\": _this.props.ariaHasPopup, onWheel: _this.wheel, onClick: _this.elementClick, onInput: _this.elementChange, onPaste: _this.handlePaste, onKeyDown: _this.elementKeyDown, onChange: noop, value: text, placeholder: placeholder, name: name }, ariaProps, { ref: function (input) { return _this._element = input; } })),\n                    _this.props.children,\n                    _this.props.spinners &&\n                        React.createElement(\"span\", { className: \"k-select\", onMouseDown: _this.spinnersMouseDown },\n                            React.createElement(\"span\", { className: \"k-link k-link-increase\", \"aria-label\": localizationService\n                                    .toLanguageString(increaseValue, messages[increaseValue]), title: localizationService\n                                    .toLanguageString(increaseValue, messages[increaseValue]), onClick: _this.increasePart },\n                                React.createElement(\"span\", { className: \"k-icon k-i-arrow-n\" })),\n                            React.createElement(\"span\", { className: \"k-link k-link-decrease\", \"aria-label\": localizationService\n                                    .toLanguageString(decreaseValue, messages[decreaseValue]), title: localizationService\n                                    .toLanguageString(decreaseValue, messages[decreaseValue]), onClick: _this.decreasePart },\n                                React.createElement(\"span\", { className: \"k-icon k-i-arrow-s\" }))))));\n        }));\n        return label\n            ? (React.createElement(FloatingLabel, { label: label, editorId: inputId, editorValue: currentText, editorValid: isValid, editorDisabled: this.props.disabled, children: dateinput, style: { width: this.props.width } }))\n            : dateinput;\n    };\n    Object.defineProperty(DateInputWithoutContext.prototype, \"value\", {\n        /* Public Getters */\n        /**\n         * Gets the value of the DateInput.\n         */\n        get: function () {\n            if (this.valueDuringOnChange !== undefined) {\n                return this.valueDuringOnChange;\n            }\n            return this.kendoDate && this.kendoDate.getDateObject();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateInputWithoutContext.prototype, \"name\", {\n        /**\n         * Gets the `name` property of the DateInput.\n         */\n        get: function () {\n            return this.props.name;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateInputWithoutContext.prototype, \"min\", {\n        get: function () {\n            return this.props.min !== undefined\n                ? this.props.min\n                : DateInputWithoutContext.defaultProps.min;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateInputWithoutContext.prototype, \"max\", {\n        get: function () {\n            return this.props.max !== undefined\n                ? this.props.max\n                : DateInputWithoutContext.defaultProps.max;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateInputWithoutContext.prototype, \"text\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            var props = __assign({}, DateInput.defaultProps, this.props);\n            var _a = props.formatPlaceholder, formatPlaceholder = _a === void 0 ? DateInputWithoutContext.defaultProps.formatPlaceholder : _a, _b = props.format, format = _b === void 0 ? DateInputWithoutContext.defaultProps.format : _b, value = props.value, defaultValue = props.defaultValue;\n            if (this.kendoDate === null) {\n                this.kendoDate = new KendoDate(this.intl.bind(this), formatPlaceholder, format);\n                this.kendoDate.setValue(value || defaultValue || null);\n            }\n            else {\n                this.kendoDate.format = format;\n                this.kendoDate.formatPlaceholder = formatPlaceholder;\n            }\n            if (value !== undefined && this.value !== value) {\n                this.kendoDate.setValue(value);\n            }\n            var _c = this.kendoDate.getTextAndFormat(), currentText = _c.text, currentFormat = _c.format;\n            this.currentFormat = currentFormat;\n            return props.placeholder !== null && props.placeholder !== undefined\n                && !this.state.focused\n                && !this.kendoDate.hasValue()\n                ? props.placeholder\n                : currentText;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateInputWithoutContext.prototype, \"validity\", {\n        /**\n         * Represents the validity state into which the DateInput is set.\n         */\n        get: function () {\n            var inRange = isInRange(this.value, this.min, this.max)\n                && isInTimeRange(this.value, this.props.minTime, this.props.maxTime);\n            var customError = this.props.validationMessage !== undefined;\n            var isValid = (!this.required || this.value !== null) && inRange;\n            var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n            return {\n                customError: customError,\n                rangeOverflow: (this.value && this.max.getTime() < this.value.getTime()) || false,\n                rangeUnderflow: (this.value && this.value.getTime() < this.min.getTime()) || false,\n                valid: valid,\n                valueMissing: this.value === null\n            };\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateInputWithoutContext.prototype, \"element\", {\n        /**\n         * Gets the element of the DateInput.\n         *\n         * @return - An `HTMLInputElement`.\n         *\n         * @example\n         * ```jsx\n         * class App extends React.Component {\n         *     constructor(props) {\n         *         super(props);\n         *     }\n         *     element = null;\n         *     render() {\n         *         return (\n         *             <div>\n         *                 <DateInput\n         *                     ref={(dateInput) =>\n         *                         this.element = dateInput ? dateInput.element : null}\n         *                 />\n         *                 <button onClick={() => console.log(this.element)}>console.log the element</button>\n         *             </div>\n         *         );\n         *     }\n         * }\n         *\n         * ReactDOM.render(\n         *     <App />,\n         *     document.getElementsByTagName('my-app')[0]\n         * );\n         * ```\n         */\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateInputWithoutContext.prototype, \"validityStyles\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this.props.validityStyles !== undefined\n                ? this.props.validityStyles\n                : DateInputWithoutContext.defaultProps.validityStyles;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateInputWithoutContext.prototype, \"required\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this.props.required !== undefined\n                ? this.props.required\n                : DateInputWithoutContext.defaultProps.required;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateInputWithoutContext.prototype, \"wrapper\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this._wrapper;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    DateInputWithoutContext.prototype.intl = function () {\n        return provideIntlService(this);\n    };\n    Object.defineProperty(DateInputWithoutContext.prototype, \"selection\", {\n        /*  end handlers */\n        get: function () {\n            var returnValue = { start: 0, end: 0 };\n            if (this.element !== null && this.element.selectionStart !== undefined) {\n                returnValue = { start: this.element.selectionStart, end: this.element.selectionEnd };\n            }\n            return returnValue;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    DateInputWithoutContext.prototype.setSelection = function (selection) {\n        var _this = this;\n        this._lastSelectedSymbol = this.currentFormat[selection.start];\n        window.requestAnimationFrame(function () {\n            if (_this.element && document.activeElement === _this.element) {\n                _this.element.setSelectionRange(selection.start, selection.end);\n            }\n        });\n    };\n    DateInputWithoutContext.prototype.triggerChange = function (event, oldValue) {\n        this.valueDuringOnChange = this.value;\n        this.forceUpdate();\n        if (this.props.onChange\n            && !isEqual(oldValue, this.value)) {\n            // isEqual works with null\n            this.props.onChange.call(undefined, {\n                syntheticEvent: event,\n                nativeEvent: event.nativeEvent,\n                value: this.value,\n                target: this\n                // inRange: this.props.min && this.props.max ? isInRange(value, this.props.min, this.props.max) : true\n            });\n        }\n        this.valueDuringOnChange = undefined;\n    };\n    DateInputWithoutContext.prototype.selectionBySymbol = function (symbol) {\n        var start = -1;\n        var end = 0;\n        for (var i = 0; i < this.currentFormat.length; i++) {\n            if (this.currentFormat[i] === symbol) {\n                end = i + 1;\n                if (start === -1) {\n                    start = i;\n                }\n            }\n        }\n        if (start < 0) {\n            start = 0;\n        }\n        return { start: start, end: end };\n    };\n    DateInputWithoutContext.prototype.selectionByIndex = function (index) {\n        var selection = { start: index, end: index };\n        for (var i = index, j = index - 1; i < this.currentFormat.length || j >= 0; i++, j--) {\n            if (i < this.currentFormat.length && this.currentFormat[i] !== '_') {\n                selection = this.selectionBySymbol(this.currentFormat[i]);\n                break;\n            }\n            if (j >= 0 && this.currentFormat[j] !== '_') {\n                selection = this.selectionBySymbol(this.currentFormat[j]);\n                break;\n            }\n        }\n        return selection;\n    };\n    DateInputWithoutContext.prototype.switchDateSegment = function (offset) {\n        var _a = this.selection, selectionStart = _a.start, selectionEnd = _a.end;\n        if (selectionStart < selectionEnd &&\n            this.currentFormat[selectionStart] !== this.currentFormat[selectionEnd - 1]) {\n            this.setSelection(this.selectionByIndex(offset > 0 ? selectionStart : selectionEnd - 1));\n            return;\n        }\n        var previousFormatSymbol = this.currentFormat[selectionStart];\n        var a = selectionStart + offset;\n        while (a > 0 && a < this.currentFormat.length) {\n            if (this.currentFormat[a] !== previousFormatSymbol &&\n                this.currentFormat[a] !== '_') {\n                break;\n            }\n            a += offset;\n        }\n        if (this.currentFormat[a] === '_') {\n            // no known symbol is found\n            return;\n        }\n        var b = a;\n        while (b >= 0 && b < this.currentFormat.length) {\n            if (this.currentFormat[b] !== this.currentFormat[a]) {\n                break;\n            }\n            b += offset;\n        }\n        if (a > b && (b + 1 !== selectionStart || a + 1 !== selectionEnd)) {\n            this.setSelection({ start: b + 1, end: a + 1 });\n        }\n        else if (a < b && (a !== selectionStart || b !== selectionEnd)) {\n            this.setSelection({ start: a, end: b });\n        }\n    };\n    DateInputWithoutContext.prototype.modifyDateSegmentValue = function (offset, event) {\n        if (!this.kendoDate) {\n            return;\n        }\n        var oldValue = this.value;\n        var symbol = this.currentFormat[this.selection.start];\n        var currentStepSymbol = this.kendoDate.symbolMap(symbol);\n        var step = ((this.props.steps || {})[currentStepSymbol] || 1) * offset;\n        this.kendoDate.modifyPart(symbol, step);\n        this.triggerChange(event, oldValue);\n    };\n    /**\n     * @hidden\n     */\n    DateInputWithoutContext.displayName = 'DateInput';\n    /**\n     * @hidden\n     */\n    DateInputWithoutContext.propTypes = {\n        value: PropTypes.instanceOf(Date),\n        format: PropTypes.oneOfType([\n            PropTypes.string,\n            PropTypes.shape({\n                skeleton: PropTypes.string,\n                pattern: PropTypes.string,\n                date: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n                time: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n                datetime: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n                era: PropTypes.oneOf(['narrow', 'short', 'long']),\n                year: PropTypes.oneOf(['numeric', '2-digit']),\n                month: PropTypes.oneOf(['numeric', '2-digit', 'narrow', 'short', 'long']),\n                day: PropTypes.oneOf(['numeric', '2-digit']),\n                weekday: PropTypes.oneOf(['narrow', 'short', 'long']),\n                hour: PropTypes.oneOf(['numeric', '2-digit']),\n                hour12: PropTypes.bool,\n                minute: PropTypes.oneOf(['numeric', '2-digit']),\n                second: PropTypes.oneOf(['numeric', '2-digit']),\n                timeZoneName: PropTypes.oneOf(['short', 'long'])\n            })\n        ]),\n        formatPlaceholder: PropTypes.oneOfType([\n            PropTypes.oneOf(['wide', 'narrow', 'short', 'formatPattern']),\n            PropTypes.shape({\n                year: PropTypes.string,\n                month: PropTypes.string,\n                day: PropTypes.string,\n                hour: PropTypes.string,\n                minute: PropTypes.string,\n                second: PropTypes.string\n            })\n        ]),\n        width: PropTypes.oneOfType([\n            PropTypes.string,\n            PropTypes.number\n        ]),\n        tabIndex: PropTypes.number,\n        title: PropTypes.string,\n        steps: PropTypes.shape({\n            year: PropTypes.number,\n            month: PropTypes.number,\n            day: PropTypes.number,\n            hour: PropTypes.number,\n            minute: PropTypes.number,\n            second: PropTypes.number\n        }),\n        min: PropTypes.instanceOf(Date),\n        max: PropTypes.instanceOf(Date),\n        disabled: PropTypes.bool,\n        spinners: PropTypes.bool,\n        name: PropTypes.string,\n        dir: PropTypes.string,\n        label: PropTypes.string,\n        id: PropTypes.string,\n        ariaLabelledBy: PropTypes.string,\n        ariaDescribedBy: PropTypes.string,\n        ariaExpanded: PropTypes.oneOfType([\n            PropTypes.bool\n        ]),\n        onChange: PropTypes.func,\n        validationMessage: PropTypes.string,\n        required: PropTypes.bool,\n        validate: PropTypes.bool,\n        valid: PropTypes.bool\n    };\n    /**\n     * @hidden\n     */\n    DateInputWithoutContext.defaultProps = {\n        format: defaultFormat,\n        formatPlaceholder: defaultFormatPlaceholder,\n        // defaultValue: null as Date | null,\n        spinners: false,\n        disabled: false,\n        max: cloneDate(MAX_DATE),\n        min: cloneDate(MIN_DATE),\n        minTime: cloneDate(MIN_TIME),\n        maxTime: cloneDate(MAX_TIME),\n        required: false,\n        validityStyles: true,\n        validationMessage: VALIDATION_MESSAGE,\n        placeholder: null\n        // the rest of the properties are undefined by default\n    };\n    return DateInputWithoutContext;\n}(React.Component));\nexport { DateInputWithoutContext };\n/**\n * Represents the PropsContext of the `DateInput` component.\n * Used for global configuration of all `DateInput` instances.\n *\n * For more information, refer to the [DateInputs Props Context]({% slug props-context_dateinputs %}) article.\n */\nexport var DateInputPropsContext = createPropsContext();\n;\n/* eslint-disable @typescript-eslint/no-redeclare -- intentionally naming the component the same as the type */\n/**\n * Represents the KendoReact DateInput Component.\n *\n * Accepts properties of type [DateInputProps]({% slug api_dateinputs_dateinputprops %}).\n * Obtaining the `ref` returns an object of type [DateInputHandle]({% slug api_dateinputs_dateinputhandle %}).\n */\nexport var DateInput = withPropsContext(DateInputPropsContext, DateInputWithoutContext);\nDateInput.displayName = 'KendoReactDateInput';\nregisterForIntl(DateInputWithoutContext);\nregisterForLocalization(DateInputWithoutContext);\n","import { getDate } from './get-date';\nimport { isEqual } from './is-equal';\n/**\n * A function that compares the date portions of 2 dates.\n *\n * @param candidate - The candidate date.\n * @param expected - The expected date.\n * @returns - A Boolean value whether the values are equal.\n *\n * @example\n * ```ts-no-run\n * isEqualDate(new Date(2016, 0, 1, 10), new Date(2016, 0, 1, 20)); // true\n * isEqualDate(new Date(2016, 0, 1, 10), new Date(2016, 0, 2, 10)); // false\n * ```\n */\nexport var isEqualDate = function (candidate, expected) {\n    if (!candidate && !expected) {\n        return true;\n    }\n    return candidate && expected && isEqual(getDate(candidate), getDate(expected));\n};\n","var __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 _a, _b, _c;\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { RowHeightService, ScrollerService } from './services';\n/**\n * @hidden\n */\nexport var ScrollDirection;\n(function (ScrollDirection) {\n    ScrollDirection[ScrollDirection[\"Backward\"] = 0] = \"Backward\";\n    ScrollDirection[ScrollDirection[\"Forward\"] = 1] = \"Forward\";\n})(ScrollDirection || (ScrollDirection = {}));\nvar differenceToScroll = function (scrollTop, staticOffset, maxScrollDifference) {\n    return Math.min(Math.abs(staticOffset - scrollTop), maxScrollDifference);\n};\nvar FRAME_DURATION = 17;\nvar scrollModifiers = (_a = {},\n    _a[ScrollDirection.Forward] = function (step) { return function (value) { return value + step; }; },\n    _a[ScrollDirection.Backward] = function (step) { return function (value) { return value - step; }; },\n    _a);\nvar scrollNormalizers = (_b = {},\n    _b[ScrollDirection.Forward] = function (end) { return function (value) { return Math.min(value, end); }; },\n    _b[ScrollDirection.Backward] = function (end) { return function (value) { return Math.max(value, end); }; },\n    _b);\nvar scrollValidators = (_c = {},\n    _c[ScrollDirection.Forward] = function (end) { return function (start) { return start < end; }; },\n    _c[ScrollDirection.Backward] = function (end) { return function (start) { return start > end; }; },\n    _c);\n/**\n * @hidden\n */\nvar Virtualization = /** @class */ (function (_super) {\n    __extends(Virtualization, _super);\n    function Virtualization(props) {\n        var _this = _super.call(this, props) || this;\n        _this.animationInProgress = false;\n        _this.scrollTo = function (value) {\n            var scrollProperty = _this.direction === 'vertical' ? 'scrollTop' : 'scrollLeft';\n            if (!_this.scrollContainer) {\n                return;\n            }\n            _this.scrollContainer[scrollProperty] = value;\n        };\n        _this.scrollToIndex = function (index) {\n            if (_this.scrollToIndexTimeout !== undefined) {\n                window.cancelAnimationFrame(_this.scrollToIndexTimeout);\n            }\n            if (!_this.rowHeightService) {\n                return;\n            }\n            _this.scrollToIndexTimeout = window.requestAnimationFrame(function () {\n                _this.animationInProgress = false;\n                _this.scrollTo(_this.rowHeightService.offset(index));\n            });\n        };\n        _this.animateToIndex = function (index) {\n            if (!_this.rowHeightService || !window) {\n                return;\n            }\n            window.cancelAnimationFrame(_this.cancelAnimation);\n            var indexOffset = _this.rowHeightService.offset(index);\n            var direction = _this.getContainerScrollDirection(indexOffset);\n            var _a = _this.scrollRange(indexOffset, direction), start = _a.start, end = _a.end;\n            if (start === end) {\n                return;\n            }\n            var step = _this.scrollStep(start, end);\n            var modifyScroll = scrollModifiers[direction](step);\n            var normalizeScroll = scrollNormalizers[direction](end);\n            var isScrollValid = scrollValidators[direction](modifyScroll(end));\n            var animate = function (progress) {\n                _this.animationInProgress = true;\n                var next = modifyScroll(progress);\n                _this.scrollTo(normalizeScroll(next));\n                isScrollValid(next)\n                    ? _this.cancelAnimation = window.requestAnimationFrame(function () { animate(next); })\n                    : _this.animationInProgress = false;\n            };\n            _this.cancelAnimation = window.requestAnimationFrame(function () { animate(start); });\n        };\n        _this.scrollToBottom = function () {\n            if (!_this.rowHeightService) {\n                return;\n            }\n            _this.scrollTo(_this.rowHeightService.totalHeight() + _this.props.bottomOffset);\n        };\n        _this.scrollStep = function (start, end) {\n            var duration = _this.props.scrollDuration || Virtualization.defaultProps.scrollDuration;\n            return Math.abs(end - start) / (duration / FRAME_DURATION);\n        };\n        _this.scrollRange = function (indexOffset, direction) {\n            var containerScroll = _this.containerScrollPosition;\n            if (parseInt(\"\" + indexOffset, 10) === parseInt(\"\" + containerScroll, 10)) {\n                return { start: indexOffset, end: indexOffset };\n            }\n            var maxScroll = _this.containerMaxScroll();\n            var sign = direction === ScrollDirection.Backward ? 1 : -1;\n            var difference = differenceToScroll(containerScroll, indexOffset, _this.props.maxScrollDifference);\n            var end = Math.min(indexOffset, maxScroll);\n            var start = Math.min(Math.max(end + (sign * difference), 0), maxScroll);\n            return { start: start, end: end };\n        };\n        _this.containerMaxScroll = function () {\n            return _this.containerScrollSize - _this.containerOffsetSize;\n        };\n        _this.getContainerScrollDirection = function (indexOffset) {\n            return indexOffset < _this.containerScrollPosition ? ScrollDirection.Backward : ScrollDirection.Forward;\n        };\n        _this.initServices = function (props) {\n            if (props === void 0) { props = _this.props; }\n            var dimension = _this.direction === 'vertical' ? props.itemHeight : props.itemWidth;\n            if (dimension === undefined) {\n                return;\n            }\n            _this.rowHeightService = new RowHeightService(props.total, dimension, 0);\n            _this.scrollerService.create(_this.rowHeightService, props.skip, props.take, props.total, props.topOffset, _this.scrollOffsetSize, _this.direction);\n        };\n        _this.getContainerProperty = function (propertyName) {\n            if (!_this.scrollContainer) {\n                return 0;\n            }\n            return _this.scrollContainer[propertyName];\n        };\n        _this.handleScroll = function (event) {\n            if (!_this.scrollContainer || !_this.rowHeightService) {\n                return;\n            }\n            var target = event.target;\n            _this.scrollerService.onScroll({\n                scrollLeft: target.scrollLeft,\n                scrollTop: target.scrollTop,\n                offsetHeight: target.offsetHeight,\n                offsetWidth: target.offsetWidth\n            });\n            var index = _this.rowHeightService.index(_this.containerScrollPosition - _this.props.topOffset);\n            var onScrollAction = _this.props.onScrollAction;\n            var args = {\n                index: index,\n                target: target,\n                scrollAction: _this.scrollAction,\n                pageAction: _this.pageAction,\n                animationInProgress: _this.animationInProgress\n            };\n            if (_this.props.onScroll) {\n                _this.props.onScroll.call(undefined, event);\n            }\n            if (onScrollAction) {\n                onScrollAction.call(undefined, args);\n            }\n            _this.scrollAction = undefined;\n            _this.pageAction = undefined;\n        };\n        _this.handleScrollAction = function (action) {\n            _this.scrollAction = action;\n        };\n        _this.handlePageAction = function (action) {\n            _this.pageAction = action;\n        };\n        _this.scrollerService = new ScrollerService(_this.handleScrollAction, _this.handlePageAction);\n        return _this;\n    }\n    Object.defineProperty(Virtualization.prototype, \"element\", {\n        get: function () {\n            return this.scrollContainer;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Virtualization.prototype, \"containerOffsetSize\", {\n        get: function () {\n            return this.getContainerProperty(this.direction === 'vertical' ? 'offsetHeight' : 'offsetWidth');\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Virtualization.prototype, \"containerScrollSize\", {\n        get: function () {\n            return this.getContainerProperty(this.direction === 'vertical' ? 'scrollHeight' : 'scrollWidth');\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Virtualization.prototype, \"containerScrollPosition\", {\n        get: function () {\n            return this.getContainerProperty(this.direction === 'vertical' ? 'scrollTop' : 'scrollLeft');\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Virtualization.prototype, \"direction\", {\n        get: function () {\n            return this.props.direction !== undefined ? this.props.direction : Virtualization.defaultProps.direction;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Virtualization.prototype, \"scrollOffsetSize\", {\n        get: function () {\n            return this.props.scrollOffsetSize !== undefined\n                ? this.props.scrollOffsetSize : Virtualization.defaultProps.scrollOffsetSize;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Virtualization.prototype.activeIndex = function () {\n        return this.itemIndex(Math.ceil(this.containerScrollPosition));\n    };\n    Virtualization.prototype.itemIndex = function (offset) {\n        if (!this.rowHeightService) {\n            return 0;\n        }\n        return this.rowHeightService.index(offset);\n    };\n    Virtualization.prototype.itemOffset = function (index) {\n        if (!this.rowHeightService) {\n            return 0;\n        }\n        return this.rowHeightService.offset(index);\n    };\n    Virtualization.prototype.isIndexVisible = function (index) {\n        if (!this.rowHeightService) {\n            return false;\n        }\n        var containerTop = this.containerScrollPosition;\n        var containerBottom = containerTop + this.containerOffsetSize;\n        var top = this.rowHeightService.offset(index);\n        var bottom = top + this.rowHeightService.height(index);\n        return top >= containerTop && bottom <= containerBottom;\n    };\n    Virtualization.prototype.isListScrolled = function (index) {\n        if (!this.rowHeightService) {\n            return false;\n        }\n        return this.containerScrollPosition !== this.rowHeightService.offset(index);\n    };\n    Virtualization.prototype.componentDidMount = function () {\n        var onMount = this.props.onMount;\n        if (onMount) {\n            onMount.call(undefined, this);\n        }\n    };\n    Virtualization.prototype.render = function () {\n        var _this = this;\n        if (this.lastTotal !== this.props.total\n            || this.lastDirection !== this.direction\n            || this.lastTake !== this.props.take) {\n            this.initServices();\n            this.lastTotal = this.props.total;\n            this.lastDirection = this.direction;\n            this.lastTake = this.props.take;\n        }\n        var vertexLength = \"\" + ((this.rowHeightService ? this.rowHeightService.totalHeight() : 0) + this.props.bottomOffset);\n        var placeholderStyle = this.direction === 'vertical'\n            ? { height: vertexLength + \"px\" }\n            : { width: vertexLength + \"px\" };\n        var rootClassNames = classNames('k-content k-calendar-content k-scrollable', {\n            'k-scrollable-horizontal': this.direction === 'horizontal'\n        }, this.props.className);\n        var scrollableClassNames = classNames('k-scrollable-placeholder', {\n            'k-scrollable-horizontal-placeholder': this.direction === 'horizontal'\n        });\n        return (React.createElement(\"div\", { ref: function (el) { _this.scrollContainer = el; }, onScroll: this.handleScroll, className: rootClassNames, tabIndex: this.props.tabIndex, role: this.props.role },\n            this.props.children,\n            React.createElement(\"div\", { style: placeholderStyle, className: scrollableClassNames })));\n    };\n    Virtualization.propTypes = {\n        bottomOffset: PropTypes.number.isRequired,\n        className: PropTypes.string,\n        direction: PropTypes.oneOf(['horizontal', 'vertical']),\n        forceScroll: PropTypes.bool,\n        itemHeight: PropTypes.number,\n        itemWidth: PropTypes.number,\n        maxScrollDifference: PropTypes.number,\n        onScroll: PropTypes.func,\n        onScrollAction: PropTypes.func,\n        scrollDuration: PropTypes.number,\n        scrollOffsetSize: PropTypes.number,\n        skip: PropTypes.number.isRequired,\n        tabIndex: PropTypes.number,\n        take: PropTypes.number.isRequired,\n        topOffset: PropTypes.number.isRequired,\n        total: PropTypes.number.isRequired,\n        role: PropTypes.string\n    };\n    Virtualization.defaultProps = {\n        direction: 'vertical',\n        forceScroll: false,\n        scrollOffsetSize: 0,\n        maxScrollDifference: 100,\n        scrollDuration: 100\n    };\n    return Virtualization;\n}(React.Component));\nexport { Virtualization };\n","/**\n * @hidden\n */\nvar update = function (arr, idx, value) { return (arr.slice(0, idx + 1).concat((arr.slice(idx + 1).map(function (x) { return x + value; })))); };\n/**\n * @hidden\n */\nvar RowHeightService = /** @class */ (function () {\n    function RowHeightService(total, rowHeight, detailRowHeight) {\n        if (total === void 0) { total = 0; }\n        this.total = total;\n        this.rowHeight = rowHeight;\n        this.detailRowHeight = detailRowHeight;\n        this.offsets = [];\n        this.heights = [];\n        var agg = 0;\n        for (var idx = 0; idx < total; idx++) {\n            this.offsets.push(agg);\n            agg += rowHeight;\n            this.heights.push(rowHeight);\n        }\n    }\n    RowHeightService.prototype.height = function (rowIndex) {\n        return this.heights[rowIndex];\n    };\n    RowHeightService.prototype.expandDetail = function (rowIndex) {\n        if (this.height(rowIndex) === this.rowHeight) {\n            this.updateRowHeight(rowIndex, this.detailRowHeight);\n        }\n    };\n    RowHeightService.prototype.collapseDetail = function (rowIndex) {\n        if (this.height(rowIndex) > this.rowHeight) {\n            this.updateRowHeight(rowIndex, this.detailRowHeight * -1);\n        }\n    };\n    RowHeightService.prototype.index = function (position) {\n        for (var i = 0; i < this.offsets.length; i++) {\n            if (position === this.offsets[i]) {\n                return i;\n            }\n            if (position < this.offsets[i]) {\n                return i - 1;\n            }\n        }\n        return this.total - 1;\n    };\n    RowHeightService.prototype.offset = function (rowIndex) {\n        return this.offsets[rowIndex];\n    };\n    RowHeightService.prototype.totalHeight = function () {\n        return this.heights.reduce(function (prev, curr) { return prev + curr; }, 0);\n    };\n    RowHeightService.prototype.updateRowHeight = function (rowIndex, value) {\n        this.heights[rowIndex] += value;\n        this.offsets = update(this.offsets, rowIndex, value);\n    };\n    return RowHeightService;\n}());\nexport { RowHeightService };\n","var normalize = function (x) { return Math.max(x, 0); };\n/**\n * @hidden\n */\nvar ScrollAction = /** @class */ (function () {\n    function ScrollAction(offset) {\n        this.offset = offset;\n    }\n    return ScrollAction;\n}());\nexport { ScrollAction };\n/**\n * @hidden\n */\nvar PageAction = /** @class */ (function () {\n    function PageAction(skip) {\n        this.skip = skip;\n    }\n    return PageAction;\n}());\nexport { PageAction };\n/**\n * @hidden\n */\nvar ScrollerService = /** @class */ (function () {\n    function ScrollerService(onScrollAction, onPageAction) {\n        this.onScrollAction = onScrollAction;\n        this.onPageAction = onPageAction;\n        this.firstLoaded = 0;\n        this.bottomOffset = 0;\n        this.topOffset = 0;\n    }\n    ScrollerService.prototype.create = function (rowHeightService, skip, take, total, topOffset, bottomOffset, direction) {\n        if (topOffset === void 0) { topOffset = 0; }\n        if (bottomOffset === void 0) { bottomOffset = 0; }\n        if (direction === void 0) { direction = 'vertical'; }\n        this.rowHeightService = rowHeightService;\n        this.firstLoaded = skip;\n        this.lastLoaded = skip + take;\n        this.take = take;\n        this.total = total;\n        this.lastScrollTop = 0;\n        this.topOffset = topOffset;\n        this.bottomOffset = bottomOffset;\n        this.direction = direction;\n        var offsetBufferRows = this.rowsForHeight(topOffset);\n        var skipWithOffset = normalize(skip - offsetBufferRows);\n        this.onScrollAction(new ScrollAction(this.rowOffset(skipWithOffset)));\n        this.onPageAction(new PageAction(skipWithOffset));\n    };\n    ScrollerService.prototype.onScroll = function (_a) {\n        var scrollLeft = _a.scrollLeft, scrollTop = _a.scrollTop, offsetHeight = _a.offsetHeight, offsetWidth = _a.offsetWidth;\n        var scrollPosition = this.direction === 'vertical' ? scrollTop : scrollLeft;\n        var offsetSize = this.direction === 'vertical' ? offsetHeight : offsetWidth;\n        if (this.lastScrollTop === scrollPosition) {\n            return;\n        }\n        var up = this.lastScrollTop >= scrollPosition;\n        this.lastScrollTop = scrollPosition;\n        var firstItemIndex = this.rowHeightService.index(normalize(scrollPosition - this.topOffset));\n        var lastItemIndex = this.rowHeightService.index(normalize(scrollPosition + offsetSize - this.bottomOffset));\n        if (!up && lastItemIndex >= this.lastLoaded && this.lastLoaded < this.total) {\n            this.firstLoaded = firstItemIndex;\n            this.onScrollAction(new ScrollAction(this.rowOffset(firstItemIndex)));\n            this.lastLoaded = Math.min(this.firstLoaded + this.take, this.total);\n            this.onPageAction(new PageAction(this.firstLoaded));\n        }\n        if (up && firstItemIndex <= this.firstLoaded) {\n            var nonVisibleBuffer = Math.floor(this.take * 0.3);\n            this.firstLoaded = normalize(firstItemIndex - nonVisibleBuffer);\n            this.onScrollAction(new ScrollAction(this.rowOffset(this.firstLoaded)));\n            this.lastLoaded = Math.min(this.firstLoaded + this.take, this.total);\n            this.onPageAction(new PageAction(this.firstLoaded));\n        }\n    };\n    ScrollerService.prototype.rowOffset = function (index) {\n        return this.rowHeightService.offset(index) + this.topOffset;\n    };\n    ScrollerService.prototype.rowsForHeight = function (height) {\n        return Math.ceil(height / this.rowHeightService.height(0));\n    };\n    return ScrollerService;\n}());\nexport { ScrollerService };\n","/**\n * Enumeration which represents the week days.\n */\nexport var Day;\n(function (Day) {\n    /**\n     * The Sunday value with an underlying `0` number value.\n     */\n    Day[Day[\"Sunday\"] = 0] = \"Sunday\";\n    /**\n     * The Monday value with an underlying `1` number value.\n     */\n    Day[Day[\"Monday\"] = 1] = \"Monday\";\n    /**\n     * The Tuesday value with an underlying `2` number value.\n     */\n    Day[Day[\"Tuesday\"] = 2] = \"Tuesday\";\n    /**\n     * The Wednesday value with an underlying `3` number value.\n     */\n    Day[Day[\"Wednesday\"] = 3] = \"Wednesday\";\n    /**\n     * The Thursday value with an underlying `4` number value.\n     */\n    Day[Day[\"Thursday\"] = 4] = \"Thursday\";\n    /**\n     * The Friday value with an underlying `5` number value.\n     */\n    Day[Day[\"Friday\"] = 5] = \"Friday\";\n    /**\n     * The Saturday value with an underlying `6` number value.\n     */\n    Day[Day[\"Saturday\"] = 6] = \"Saturday\";\n})(Day || (Day = {}));\n","// tslint:disable:max-line-length\n/**\n * An enumeration which represents the horizontal direction. The `Forward` option moves forward. The `Backward` option moves backward.\n */\nexport var Direction;\n(function (Direction) {\n    /**\n     * The `Forward` value with an underlying `1` number value.\n     */\n    Direction[Direction[\"Forward\"] = 1] = \"Forward\";\n    /**\n     * The `Backward` value with an underlying `-1` (minus one) number value.\n     */\n    Direction[Direction[\"Backward\"] = -1] = \"Backward\";\n})(Direction || (Direction = {}));\n// tslint:enable:max-line-length\n","import { Direction } from \"./direction.enum\";\nimport { adjustDST } from \"./adjust-dst\";\nimport { cloneDate } from './clone-date';\n/**\n * @hidden\n *\n * A function which returns the next or previous date for a specific week day. For example, `Day.Monday`.\n *\n * @param date - The date to calculate from.\n * @param weekDay - The `Day` enum specifying the desired week day.\n * @param direction - The `Direction` enum specifying the calculation direction.\n * @returns - A `Date` instance.\n *\n * @example\n * ```ts-no-run\n * dayOfWeek(new Date(2016, 0, 1), Day.Wednesday, Direction.Forward); // 2016-01-06, Wednesday\n * dayOfWeek(new Date(2016, 0, 1), Day.Wednesday, Direction.Backward); // 2015-12-30, Wednesday\n * ```\n */\nexport var dayOfWeek = function (date, weekDay, direction) {\n    if (direction === void 0) { direction = Direction.Forward; }\n    var newDate = cloneDate(date);\n    var newDay = ((weekDay - newDate.getDay()) + (7 * direction)) % 7;\n    newDate.setDate(newDate.getDate() + newDay);\n    return adjustDST(newDate, date.getHours());\n};\n","/**\n * The Enum which defines all possible Calendar view types.\n */\nexport var CalendarViewEnum;\n(function (CalendarViewEnum) {\n    CalendarViewEnum[CalendarViewEnum[\"month\"] = 0] = \"month\";\n    CalendarViewEnum[CalendarViewEnum[\"year\"] = 1] = \"year\";\n    CalendarViewEnum[CalendarViewEnum[\"decade\"] = 2] = \"decade\";\n    CalendarViewEnum[CalendarViewEnum[\"century\"] = 3] = \"century\";\n})(CalendarViewEnum || (CalendarViewEnum = {}));\n","import { Day } from './day.enum';\nimport { addDays } from './add-days';\nimport { createDate } from './create-date';\nimport { prevDayOfWeek } from './prev-day-of-week';\nimport { MS_PER_DAY } from './constants';\nimport { getDate } from './get-date';\nvar moveDateToWeekStart = function (date, weekStartDay) {\n    if (weekStartDay !== Day.Monday) {\n        return addDays(prevDayOfWeek(date, weekStartDay), 4);\n    }\n    return addDays(date, (4 - (date.getDay() || 7)));\n};\nvar calcWeekInYear = function (date, weekStartDay) {\n    var firstWeekInYear = createDate(date.getFullYear(), 0, 1, -6);\n    var newDate = moveDateToWeekStart(date, weekStartDay);\n    var diffInMS = newDate.getTime() - firstWeekInYear.getTime();\n    var days = Math.floor(diffInMS / MS_PER_DAY);\n    return 1 + Math.floor(days / 7);\n};\n/**\n * A function that returns the number of the week within a year, which is calculated in relation to the date.\n *\n * For more information, refer to the [**ISO week date**](https://en.wikipedia.org/wiki/ISO_week_date) article.\n *\n * @param date - The date used for the week number calculation.\n * @param weekStartDay - The first day of the week. By default, the first week day is Monday.\n * @returns - The number of the week within the year.\n *\n * @example\n * ```ts-no-run\n * weekInYear(new Date(2016, 0, 1)); // Week 53, 2015\n * weekInYear(new Date(2016, 0, 5)); // Week 1, 2016\n * weekInYear(new Date(2017, 0, 1)); // Week 52, 2016\n * weekInYear(new Date(2017, 0, 2)); // Week 1, 2017\n * ```\n */\nexport var weekInYear = function (date, weekStartDay) {\n    if (weekStartDay === void 0) { weekStartDay = Day.Monday; }\n    date = getDate(date);\n    var prevWeekDate = addDays(date, -7);\n    var nextWeekDate = addDays(date, 7);\n    var weekNumber = calcWeekInYear(date, weekStartDay);\n    if (weekNumber === 0) {\n        return calcWeekInYear(prevWeekDate, weekStartDay) + 1;\n    }\n    if (weekNumber === 53 && calcWeekInYear(nextWeekDate, weekStartDay) > 1) {\n        return 1;\n    }\n    return weekNumber;\n};\n","import { Direction } from \"./direction.enum\";\nimport { dayOfWeek } from './day-of-week';\n/**\n * A function which returns a date by a specific week name. For example, `Day.Monday`.\n *\n * @param date - The date to calculate from.\n * @param weekDay - The `Day` enum specifying the desired week day.\n * @returns - A `Date` instance.\n *\n * @example\n * ```ts-no-run\n * prevDayOfWeek(new Date(2016, 0, 1), Day.Wednesday); // 2015-12-30, Wednesday\n * ```\n */\nexport var prevDayOfWeek = function (date, weekDay) {\n    return dayOfWeek(date, weekDay, Direction.Backward);\n};\n","/**\n * The number of milliseconds in one minute.\n */\nexport var MS_PER_MINUTE = 60000;\n/**\n * The number of milliseconds in one hour.\n */\nexport var MS_PER_HOUR = 3600000;\n/**\n * The number of milliseconds in one standard day.\n */\nexport var MS_PER_DAY = 86400000;\n","var __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 __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};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar compareProps = function (x, y) {\n    var xProps = Object.getOwnPropertyNames(x);\n    var yProps = Object.getOwnPropertyNames(y);\n    if (xProps.length !== yProps.length) {\n        return false;\n    }\n    for (var i = 0; i < xProps.length; i++) {\n        var propName = xProps[i];\n        if (x[propName] !== y[propName]) {\n            return false;\n        }\n    }\n    return true;\n};\n/**\n * The `CalendarCell` component is internally used for rendering the items in the current view. Also be used as a custom `cell` of the [Calendar]({% slug api_dateinputs_calendarprops %}#toc-cell) and the [MultiViewCalendar]({% slug api_dateinputs_multiviewcalendarprops %}#toc-cell).\n *\n * * [Customizing the cells inside the Calendar view]({% slug custom_rendering_calendar %}#toc-cells-inside-the-view)\n * * [Customizing the cells inside the MultiViewCalendar view]({% slug custom_rendering_multiviewcalendar %}#toc-cells-inside-the-view)\n */\nvar CalendarCell = /** @class */ (function (_super) {\n    __extends(CalendarCell, _super);\n    function CalendarCell() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        // tslint:enable:max-line-length\n        _this.handleClick = function (event) {\n            var _a = _this.props, onClick = _a.onClick, value = _a.value;\n            if (onClick) {\n                onClick.call(undefined, value, event);\n            }\n        };\n        _this.handleMouseEnter = function () {\n            var _a = _this.props, onMouseEnter = _a.onMouseEnter, value = _a.value;\n            if (onMouseEnter) {\n                onMouseEnter.call(undefined, value);\n            }\n        };\n        _this.handleMouseLeave = function () {\n            var _a = _this.props, onMouseLeave = _a.onMouseLeave, value = _a.value;\n            if (onMouseLeave) {\n                onMouseLeave.call(undefined, value);\n            }\n        };\n        return _this;\n    }\n    // Manually checking if the component needs an update\n    // due to date object being compared by instance\n    // and new Date object is created\n    // every time and fails the shallow compare of the React.PureComponent.\n    /**\n     * @hidden\n     */\n    CalendarCell.prototype.shouldComponentUpdate = function (nextProps) {\n        var _a = this.props, value = _a.value, props = __rest(_a, [\"value\"]);\n        var newValue = nextProps.value, newProps = __rest(nextProps, [\"value\"]);\n        var valueEqual = !(value && newValue) || value.getTime() === newValue.getTime();\n        return !(valueEqual && compareProps(props, newProps));\n    };\n    /* eslint-disable max-len */\n    /**\n     * @return\n     * Returns a `<td />` element with a `<span className=\"k-link\" />` inside to apply the styles. The text inside is the [`formattedValue`]({% slug api_dateinputs_calendarcellprops %}#toc-formattedvalue) of the `cell`.\n     */\n    CalendarCell.prototype.render = function () {\n        var _a = this.props, className = _a.className, formattedValue = _a.formattedValue, isWeekend = _a.isWeekend, isFocused = _a.isFocused, isInRange = _a.isInRange, isSelected = _a.isSelected, isRangeStart = _a.isRangeStart, isRangeMid = _a.isRangeMid, isRangeEnd = _a.isRangeEnd, isRangeSplitStart = _a.isRangeSplitStart, isRangeSplitEnd = _a.isRangeSplitEnd, isToday = _a.isToday, isDisabled = _a.isDisabled, view = _a.view, value = _a.value, other = __rest(_a, [\"className\", \"formattedValue\", \"isWeekend\", \"isFocused\", \"isInRange\", \"isSelected\", \"isRangeStart\", \"isRangeMid\", \"isRangeEnd\", \"isRangeSplitStart\", \"isRangeSplitEnd\", \"isToday\", \"isDisabled\", \"view\", \"value\"]);\n        var isEndActive = this.props.activeRangeEnd === 'end' && isRangeEnd;\n        var isStartActive = this.props.activeRangeEnd === 'start' && isRangeStart;\n        var rootClassName = classNames('k-calendar-td', {\n            'k-range-end': isRangeEnd,\n            'k-range-mid': isRangeMid,\n            'k-range-split-end': isRangeSplitEnd,\n            'k-range-split-start': isRangeSplitStart,\n            'k-range-start': isRangeStart,\n            'k-state-active': isStartActive || isEndActive,\n            'k-state-pending-focus': isFocused,\n            'k-state-selected': isSelected || isRangeStart || isRangeEnd,\n            'k-today': isToday,\n            'k-weekend': isWeekend,\n            'k-state-disabled': isDisabled\n        }, className);\n        return (React.createElement(\"td\", __assign({}, other, { className: rootClassName, onClick: this.handleClick, onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave }),\n            React.createElement(\"span\", { className: \"k-link\" }, this.props.children)));\n    };\n    return CalendarCell;\n}(React.Component));\nexport { CalendarCell };\n","var __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 __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};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * The `CalendarWeekCell` component is internally used for rendering the week cells inside the `month` view of the Calendar. Also used as a [custom week cell for the Calendar]({% slug api_dateinputs_calendarprops %}#toc-weekcell) and the [MultiViewCalendar]({% slug api_dateinputs_multiviewcalendarprops %}#toc-weekcell) components.\n *\n * * [Customizing week-column cells in the Calendar]({% slug custom_rendering_calendar %}#toc-cells-inside-the-week-column)\n * * [Customizing week-column cells in the MultiViewCalendar]({% slug custom_rendering_multiviewcalendar %}#toc-cells-inside-the-week-column)\n */\nvar CalendarWeekCell = /** @class */ (function (_super) {\n    __extends(CalendarWeekCell, _super);\n    function CalendarWeekCell() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @return\n     * Returns a `<td />` element with the [`value`]({% slug api_dateinputs_calendarweekcellprops %}#toc-value) as a child.\n     */\n    CalendarWeekCell.prototype.render = function () {\n        var _a = this.props, className = _a.className, firstDate = _a.firstDate, other = __rest(_a, [\"className\", \"firstDate\"]);\n        return (React.createElement(\"td\", __assign({ className: classNames('k-calendar-td', className) }, other), this.props.children));\n    };\n    return CalendarWeekCell;\n}(React.Component));\nexport { CalendarWeekCell };\n","import { shiftWeekNames } from '../../utils';\n/**\n * @hidden\n */\nvar WeekNamesService = /** @class */ (function () {\n    function WeekNamesService(intl) {\n        this.intl = intl;\n    }\n    WeekNamesService.prototype.getWeekNames = function (includeWeekNumber) {\n        if (includeWeekNumber === void 0) { includeWeekNumber = false; }\n        var weekNames = shiftWeekNames(this.intl.dateFormatNames({ nameType: 'short', type: 'days' }), this.intl.firstDay());\n        return includeWeekNumber ? [''].concat(weekNames) : weekNames;\n    };\n    return WeekNamesService;\n}());\nexport { WeekNamesService };\n","var __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 __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};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { weekInYear, cloneDate } from '@progress/kendo-date-math';\nimport { registerForIntl, provideIntlService } from '@progress/kendo-react-intl';\nimport { CalendarCell } from './CalendarCell';\nimport { CalendarWeekCell } from './CalendarWeekCell';\nimport { CalendarViewEnum } from '../models';\nimport { setTime, getToday } from '../../utils';\nimport { WeekNamesService } from '../services';\n// In case we decide to render content for the next month in the empty cells,\n// add k-other-month class to all cells and k-weekend for weekend cells.\n// tslint:disable-next-line jsx-use-translation-function\nvar emptyCell = function (idx) { return (React.createElement(\"td\", { key: idx, className: 'k-calendar-td' }, \"\\u00A0\")); };\n/**\n * @hidden\n */\nvar View = /** @class */ (function (_super) {\n    __extends(View, _super);\n    function View() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.buildWeekNumber = function (row, idx) {\n            var firstDayOfWeek = _this.firstDate(row);\n            if (!firstDayOfWeek) {\n                return emptyCell(\"week-cell-\" + idx);\n            }\n            var firstDate = _this.firstDate(row);\n            var weekCellValue = _this.getWeekNumber(firstDate);\n            var uniqueID = \"kendo-react-calendar-week-cell-\" + weekCellValue;\n            var cellProps = {\n                className: 'k-alt',\n                value: weekCellValue,\n                firstDate: firstDate\n            };\n            return _this.props.weekCell\n                ? React.createElement(_this.props.weekCell, __assign({}, cellProps, { key: uniqueID }), weekCellValue)\n                : React.createElement(CalendarWeekCell, __assign({}, cellProps, { key: uniqueID }), weekCellValue);\n        };\n        _this.buildRow = function (row) {\n            return row.map(function (cell, idx) {\n                if (!cell) {\n                    return emptyCell(idx);\n                }\n                var aria = { 'aria-selected': cell.isSelected };\n                var uniqueID = \"kendo-react-calendar-cell-\" + cell.value.getTime();\n                var cellProps = __assign({}, aria, cell, { isDisabled: !cell.isInRange, view: _this.props.activeView, onClick: _this.handleClick, onMouseEnter: _this.handleMouseEnter, onMouseLeave: _this.handleMouseLeave });\n                return _this.props.cell\n                    ? (React.createElement(_this.props.cell, __assign({}, cellProps, { key: uniqueID }), cell.formattedValue))\n                    : (React.createElement(CalendarCell, __assign({}, cellProps, { key: uniqueID }), cell.formattedValue));\n            });\n        };\n        _this.firstDate = function (row) {\n            var cell = _this.firstWeekDateContext(row);\n            return cell ? cell.value : null;\n        };\n        _this.firstWeekDateContext = function (rowCtx) {\n            if (!_this.weekNumber) {\n                return null;\n            }\n            var idx = 0;\n            var ctx = rowCtx[idx];\n            while (!ctx && idx < rowCtx.length) {\n                ctx = rowCtx[++idx];\n            }\n            return ctx;\n        };\n        _this.handleClick = function (value, event) {\n            var onChange = _this.props.onChange;\n            if (onChange) {\n                var args = {\n                    value: cloneDate(value),\n                    target: _this,\n                    nativeEvent: event && event.nativeEvent,\n                    syntheticEvent: event\n                };\n                onChange.call(undefined, args);\n            }\n        };\n        _this.handleMouseEnter = function (value) {\n            var onCellEnter = _this.props.onCellEnter;\n            if (onCellEnter) {\n                onCellEnter.call(undefined, cloneDate(value));\n            }\n        };\n        _this.handleMouseLeave = function (value) {\n            var onCellLeave = _this.props.onCellLeave;\n            if (onCellLeave) {\n                onCellLeave.call(undefined, cloneDate(value));\n            }\n        };\n        return _this;\n    }\n    Object.defineProperty(View.prototype, \"min\", {\n        get: function () {\n            return this.props.min;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(View.prototype, \"max\", {\n        get: function () {\n            return this.props.max;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(View.prototype, \"isHorizontal\", {\n        get: function () {\n            return this.props.direction === 'horizontal';\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(View.prototype, \"isMonthView\", {\n        get: function () {\n            return this.props.activeView === CalendarViewEnum.month;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(View.prototype, \"weekNumber\", {\n        get: function () {\n            return Boolean(this.props.showWeekNumbers && this.props.activeView === CalendarViewEnum.month);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(View.prototype, \"selectedDate\", {\n        get: function () {\n            return this.props.selectedDate !== undefined ? this.props.selectedDate : View.defaultProps.selectedDate;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    View.prototype.render = function () {\n        var _this = this;\n        this.intl = provideIntlService(this);\n        this.weekService = new WeekNamesService(this.intl);\n        var weekNames = this.weekService.getWeekNames(this.weekNumber);\n        var colSpan = this.props.service.rowLength(this.weekNumber);\n        var title = this.props.service.title(this.props.viewDate);\n        var time = getToday();\n        var viewDate = setTime(this.props.viewDate, time);\n        var data = this.props.service.data({\n            cellUID: this.props.cellUID,\n            min: this.min,\n            max: this.max,\n            focusedDate: this.props.focusedDate,\n            isActiveView: !this.props.bus.canMoveDown(this.props.activeView),\n            selectedDate: this.selectedDate,\n            selectionRange: this.props.selectionRange,\n            viewDate: viewDate\n        });\n        return (React.createElement(React.Fragment, null,\n            (this.isMonthView && this.isHorizontal) && (React.createElement(\"thead\", { role: \"rowgroup\", className: \"k-calendar-thead\" },\n                React.createElement(\"tr\", { role: \"row\", className: \"k-calendar-tr\" }, weekNames.map(function (name, idx) { return (React.createElement(\"th\", { key: idx, className: \"k-calendar-th\" }, name)); })))),\n            React.createElement(\"tbody\", { role: \"rowgroup\", className: \"k-calendar-tbody\" },\n                !this.isHorizontal && (React.createElement(\"tr\", { role: \"presentation\", className: \"k-calendar-tr\" },\n                    React.createElement(\"th\", { scope: \"col\", colSpan: colSpan, className: \"k-calendar-th\" }, title))),\n                data.map(function (row, idx) {\n                    return (React.createElement(\"tr\", { role: \"row\", className: \"k-calendar-tr\", key: idx },\n                        _this.weekNumber && _this.buildWeekNumber(row, idx),\n                        _this.buildRow(row)));\n                }))));\n    };\n    View.prototype.getWeekNumber = function (date) {\n        if (!this.weekNumber) {\n            return null;\n        }\n        return weekInYear(date, this.intl.firstDay());\n    };\n    View.propTypes = {\n        activeRangeEnd: PropTypes.oneOf(['start', 'end', null]),\n        activeView: PropTypes.number.isRequired,\n        cellUID: PropTypes.string.isRequired,\n        direction: PropTypes.oneOf(['horizontal', 'vertical']),\n        focusedDate: PropTypes.instanceOf(Date).isRequired,\n        max: PropTypes.instanceOf(Date).isRequired,\n        min: PropTypes.instanceOf(Date).isRequired,\n        onChange: PropTypes.func,\n        selectedDate: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.arrayOf(PropTypes.instanceOf(Date))]),\n        showWeekNumbers: PropTypes.bool,\n        viewDate: PropTypes.instanceOf(Date).isRequired\n    };\n    View.defaultProps = {\n        direction: 'vertical',\n        selectedDate: getToday(),\n        showWeekNumbers: false\n    };\n    return View;\n}(React.Component));\nexport { View };\nregisterForIntl(View);\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n    name: '@progress/kendo-react-buttons',\n    productName: 'KendoReact',\n    productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n    publishDate: 1642516028,\n    version: '',\n    licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","/**\n * @hidden\n */\nvar styles = {\n    button: 'k-button',\n    'flat': 'k-flat',\n    'outline': 'k-outline',\n    'clear': 'k-button-clear',\n    'primary': 'k-primary',\n    'state-selected': 'k-state-selected',\n    'button-icon': 'k-button-icon',\n    'button-icontext': 'k-button-icontext',\n    'state-disabled': 'k-state-disabled',\n    'group-start': 'k-group-start',\n    'group-end': 'k-group-end',\n    'button-group': 'k-button-group',\n    'button-group-stretched': 'k-button-group-stretched',\n    'ltr': 'k-ltr',\n    'rtl': 'k-rtl'\n};\nvar notDisabled = ':not(.k-state-disabled):not([disabled]):not([disabled=\"true\"])';\n/**\n * @hidden\n */\nexport var toolbarButtons = [\n    'button' + notDisabled,\n    '.k-button-group > button' + notDisabled,\n    '.k-dropdown > .k-dropdown-wrap' + notDisabled,\n    '.k-colorpicker > .k-picker-wrap' + notDisabled\n];\n/**\n * @hidden\n */\nexport default {\n    styles: styles\n};\n","var __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 __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};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from './package-metadata';\nimport util from './util';\nvar styles = util.styles;\n/**\n * @hidden\n */\nfunction iconElement(_a) {\n    var imageUrl = _a.imageUrl, icon = _a.icon, iconClass = _a.iconClass, imageAlt = _a.imageAlt;\n    if (imageUrl) {\n        return (React.createElement(\"img\", { role: \"presentation\", className: 'k-image', alt: imageAlt, src: imageUrl }));\n    }\n    else if (icon) {\n        var iconClasses = classNames('k-icon', 'k-i-' + icon);\n        return (React.createElement(\"span\", { role: \"presentation\", className: iconClasses }));\n    }\n    else if (iconClass) {\n        return (React.createElement(\"span\", { role: \"presentation\", className: iconClass }));\n    }\n    return null;\n}\nvar Button = /** @class */ (function (_super) {\n    __extends(Button, _super);\n    function Button(props) {\n        var _this = _super.call(this, props) || this;\n        _this._element = null;\n        _this.handleClick = function (event) {\n            _this.toggleIfApplicable();\n            if (_this.props.onClick) {\n                _this.props.onClick.call(undefined, event);\n            }\n        };\n        validatePackage(packageMetadata);\n        _this.state = { selected: _this.props.togglable === true && _this.props.selected === true };\n        return _this;\n    }\n    Object.defineProperty(Button.prototype, \"element\", {\n        /**\n         * Gets the DOM element of the Button component.\n         */\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Button.prototype, \"selected\", {\n        /**\n         * Returns `true` when the component is togglable and selected ([see example]({% slug toggleable_button %})).\n         * Otherwise, returns `false`.\n         */\n        get: function () {\n            return this._selectedTemp !== undefined ? this._selectedTemp : this.state.selected;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    Button.getDerivedStateFromProps = function (props, state) {\n        if (props.togglable && props.selected !== undefined && props.selected !== state.selected) {\n            return { selected: props.selected };\n        }\n        return null;\n    };\n    /**\n     * @hidden\n     */\n    Button.prototype.render = function () {\n        var _this = this;\n        var _a;\n        var _b = this.props, children = _b.children, look = _b.look, primary = _b.primary, togglable = _b.togglable, icon = _b.icon, iconClass = _b.iconClass, imageUrl = _b.imageUrl, imageAlt = _b.imageAlt, className = _b.className, onClick = _b.onClick, htmlAttributes = __rest(_b, [\"children\", \"look\", \"primary\", \"togglable\", \"icon\", \"iconClass\", \"imageUrl\", \"imageAlt\", \"className\", \"onClick\"]);\n        var hasIcon = (icon !== undefined || iconClass !== undefined || imageUrl !== undefined);\n        var hasChildren = children !== undefined;\n        var buttonClasses = classNames([styles.button], (_a = {},\n            _a[styles[\"\" + look]] = look !== 'default',\n            _a[styles.primary] = primary,\n            _a[styles['state-disabled']] = this.props.disabled,\n            _a[styles['state-selected']] = this.state.selected,\n            _a[styles['button-icon']] = !hasChildren && hasIcon,\n            _a[styles['button-icontext']] = hasChildren && hasIcon,\n            _a), [styles[\"\" + this.props.dir]], className);\n        var buttonProps = {\n            className: buttonClasses,\n            onClick: this.handleClick,\n            // Accessibility properties\n            role: togglable ? 'checkbox' : undefined,\n            'aria-disabled': this.props.disabled || undefined,\n            'aria-checked': togglable ? this.state.selected : undefined\n        };\n        var iconEl = iconElement({\n            icon: icon,\n            iconClass: iconClass,\n            imageUrl: imageUrl,\n            imageAlt: imageAlt\n        });\n        return (React.createElement(\"button\", __assign({}, buttonProps, htmlAttributes, { ref: function (button) { return _this._element = button; } }),\n            iconEl,\n            children));\n    };\n    Button.prototype.toggleIfApplicable = function () {\n        var _this = this;\n        if (this.props.togglable && this.props.selected === undefined) {\n            var selected = !this.state.selected;\n            this._selectedTemp = selected;\n            this.setState({ selected: selected }, function () { return _this._selectedTemp = undefined; });\n        }\n    };\n    /**\n     * @hidden\n     */\n    Button.propTypes = {\n        children: PropTypes.node,\n        look: PropTypes.oneOf(['default', 'flat', 'outline', 'clear']),\n        primary: PropTypes.bool,\n        selected: PropTypes.bool,\n        togglable: PropTypes.bool,\n        icon: PropTypes.string,\n        iconClass: PropTypes.string,\n        imageUrl: PropTypes.string,\n        imageAlt: PropTypes.string\n    };\n    /**\n     * @hidden\n     */\n    Button.defaultProps = {\n        look: 'default',\n        primary: false,\n        togglable: false\n    };\n    return Button;\n}(React.Component));\nexport default Button;\n","var __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 __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};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport { Button } from '@progress/kendo-react-buttons';\nimport * as React from 'react';\n/**\n * The `CalendarHeaderTitle` component is internally used for rendering the title of the current calendar view. Also used as a custom `headerTitle` for the [Calendar]({% slug api_dateinputs_calendarprops %}#toc-headertitle) and the [MultiViewCalendar]({% slug api_dateinputs_multiviewcalendarprops %}#toc-headertitle) components.\n *\n * * [Customizing the title for the current Calendar view]({% slug custom_rendering_calendar %}#toc-cells-inside-the-view)\n * * [Customizing the title for the current MultiViewCalendar view]({% slug custom_rendering_multiviewcalendar %}#toc-cells-inside-the-view)\n */\nvar CalendarHeaderTitle = /** @class */ (function (_super) {\n    __extends(CalendarHeaderTitle, _super);\n    function CalendarHeaderTitle() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @return\n     * Returns a `<span />` element with the [`value`]({% slug api_dateinputs_calendarheadertitleprops %}#toc-value) of the title as a child.\n     */\n    CalendarHeaderTitle.prototype.render = function () {\n        var _a = this.props, view = _a.view, props = __rest(_a, [\"view\"]);\n        return (React.createElement(Button, __assign({ type: \"button\", look: \"flat\" }, props), this.props.children));\n    };\n    return CalendarHeaderTitle;\n}(React.PureComponent));\nexport { CalendarHeaderTitle };\n","var __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 __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};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { registerForLocalization } from '@progress/kendo-react-intl';\nimport { classNames } from '@progress/kendo-react-common';\nimport { CalendarHeaderTitle } from './CalendarHeaderTitle';\nimport { MIN_DATE, MAX_DATE } from '../../defaults';\n/**\n * @hidden\n */\nvar Header = /** @class */ (function (_super) {\n    __extends(Header, _super);\n    function Header() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.getTitle = function () {\n            if (!_this.props.currentDate) {\n                return '';\n            }\n            var take = _this.rangeLength - 1;\n            var title = _this.props.service.title(_this.props.currentDate);\n            var nextDate = _this.props.service.addToDate(_this.props.currentDate, take);\n            if (take < 1 || !_this.props.service.isInRange(nextDate, _this.min, _this.max)) {\n                return title;\n            }\n            return title + \" - \" + _this.props.service.title(nextDate);\n        };\n        _this.handleTitleClick = function (event) {\n            if (!_this.canMoveUp) {\n                return;\n            }\n            _this.props.bus.moveUp(_this.props.activeView, event);\n        };\n        return _this;\n    }\n    Object.defineProperty(Header.prototype, \"min\", {\n        get: function () {\n            return this.props.min !== undefined\n                ? this.props.min\n                : Header.defaultProps.min;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Header.prototype, \"max\", {\n        get: function () {\n            return this.props.max !== undefined\n                ? this.props.max\n                : Header.defaultProps.max;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Header.prototype, \"rangeLength\", {\n        get: function () {\n            return this.props.rangeLength !== undefined ? this.props.rangeLength : Header.defaultProps.rangeLength;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Header.prototype, \"canMoveUp\", {\n        get: function () {\n            return this.props.bus.canMoveUp(this.props.activeView);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Header.prototype.render = function () {\n        var title = this.getTitle();\n        var titleClassNames = classNames('k-calendar-title');\n        var headerTitleProps = {\n            children: title,\n            value: title,\n            view: this.props.activeView,\n            className: titleClassNames,\n            onClick: this.handleTitleClick,\n            disabled: !this.canMoveUp\n        };\n        var headerTitle = this.props.headerTitle\n            ? React.createElement(this.props.headerTitle, __assign({}, headerTitleProps), title)\n            : React.createElement(CalendarHeaderTitle, __assign({}, headerTitleProps), title);\n        return (React.createElement(\"div\", { className: \"k-calendar-header k-hstack\" },\n            headerTitle,\n            React.createElement(\"span\", { className: \"k-spacer\" }),\n            React.createElement(\"span\", { className: \"k-calendar-nav k-hstack\" }, this.props.commands)));\n    };\n    Header.propTypes = {\n        activeView: PropTypes.number.isRequired,\n        currentDate: PropTypes.instanceOf(Date).isRequired,\n        max: PropTypes.instanceOf(Date).isRequired,\n        min: PropTypes.instanceOf(Date).isRequired,\n        rangeLength: PropTypes.number\n    };\n    Header.defaultProps = {\n        rangeLength: 1,\n        min: MIN_DATE,\n        max: MAX_DATE\n    };\n    return Header;\n}(React.Component));\nexport { Header };\nregisterForLocalization(Header);\n","var __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})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { classNames } from '@progress/kendo-react-common';\nimport { getDate } from '@progress/kendo-date-math';\nimport { messages, today } from '../../messages';\nimport { dateInRange, getToday, isInRange } from '../../utils';\nimport { MIN_DATE, MAX_DATE } from '../../defaults';\nvar TodayCommand = /** @class */ (function (_super) {\n    __extends(TodayCommand, _super);\n    function TodayCommand() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.handleClick = function (syntheticEvent) {\n            if (!_this.todayIsInRange) {\n                return;\n            }\n            if (_this.props.onClick) {\n                _this.props.onClick.call(undefined, {\n                    syntheticEvent: syntheticEvent,\n                    nativeEvent: syntheticEvent.nativeEvent,\n                    value: dateInRange(getToday(), _this.min, _this.max),\n                    target: _this,\n                    isTodayClick: true\n                });\n            }\n        };\n        return _this;\n    }\n    Object.defineProperty(TodayCommand.prototype, \"min\", {\n        get: function () {\n            return this.props.min !== undefined\n                ? this.props.min\n                : TodayCommand.defaultProps.min;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TodayCommand.prototype, \"max\", {\n        get: function () {\n            return this.props.max !== undefined\n                ? this.props.max\n                : TodayCommand.defaultProps.max;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TodayCommand.prototype, \"todayIsInRange\", {\n        get: function () {\n            return isInRange(getToday(), getDate(this.min), getDate(this.max));\n        },\n        enumerable: true,\n        configurable: true\n    });\n    TodayCommand.prototype.render = function () {\n        this.localization = provideLocalizationService(this);\n        var todayMessage = this.localization.toLanguageString(today, messages[today]);\n        var todayClassNames = classNames('k-nav-today', {\n            'k-state-disabled': this.props.disabled\n        });\n        return (React.createElement(\"span\", { className: todayClassNames, onClick: this.handleClick }, todayMessage));\n    };\n    TodayCommand.propTypes = {\n        max: PropTypes.instanceOf(Date).isRequired,\n        min: PropTypes.instanceOf(Date).isRequired,\n        onClick: PropTypes.func,\n        disabled: PropTypes.bool\n    };\n    TodayCommand.defaultProps = {\n        min: MIN_DATE,\n        max: MAX_DATE\n    };\n    return TodayCommand;\n}(React.Component));\nexport { TodayCommand };\nregisterForLocalization(TodayCommand);\n","var __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})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { cloneDate, getDate, isEqualDate } from '@progress/kendo-date-math';\nimport { registerForIntl, provideIntlService } from '@progress/kendo-react-intl';\nimport { Virtualization } from '../../virtualization/Virtualization';\nimport { View } from './View';\nimport { Header } from './Header';\nimport { dateInRange, getToday, isInRange, shiftWeekNames } from '../../utils';\nimport { CalendarViewEnum } from '../models';\nimport { TodayCommand } from './TodayCommand';\nvar VIEWS_COUNT = 5;\n/**\n * @hidden\n */\nvar ViewList = /** @class */ (function (_super) {\n    __extends(ViewList, _super);\n    function ViewList(props) {\n        var _this = _super.call(this, props) || this;\n        _this.isActive = false;\n        _this.animateToIndex = true;\n        _this.shouldScroll = false;\n        _this.focusActiveDate = function () {\n            if (!_this._element) {\n                return;\n            }\n            var focusedCell = _this._element.querySelector('td.k-state-focused');\n            var nextActiveCell = _this._element.querySelector('.k-state-pending-focus');\n            if (focusedCell && focusedCell[0]) {\n                focusedCell[0].classList.remove('k-state-focused');\n            }\n            if (nextActiveCell) {\n                nextActiveCell.classList.add('k-state-focused');\n            }\n            _this.isActive = true;\n        };\n        _this.blurActiveDate = function () {\n            if (!_this._element) {\n                return;\n            }\n            var focusedCell = _this._element.querySelector('td.k-state-focused');\n            if (focusedCell) {\n                focusedCell.classList.remove('k-state-focused');\n            }\n            _this.isActive = false;\n        };\n        _this.handleVirtualizationMount = function (virtualization) {\n            _this.virtualization = virtualization;\n            if (_this.virtualization && _this.table) {\n                _this.table.style.transform = \"translateY(\" + _this.viewOffset + \"px)\";\n                var viewDate = dateInRange(_this.props.focusedDate, _this.props.min, _this.props.max);\n                var indexToScroll = _this.props.service.skip(viewDate, _this.props.min);\n                _this.virtualization.scrollToIndex(indexToScroll);\n            }\n        };\n        _this.buildMonthView = function (cols, weekNames) {\n            return (React.createElement(\"table\", { key: \"calendar-view-list-weekdays\", className: \"k-calendar-table k-calendar-weekdays\" },\n                React.createElement(\"colgroup\", null, cols.map(function (_, idx) { return (React.createElement(\"col\", { key: idx })); })),\n                React.createElement(\"thead\", { className: \"k-calendar-thead\" },\n                    React.createElement(\"tr\", { className: \"k-calendar-tr\" }, weekNames.map(function (name, idx) { return (React.createElement(\"th\", { key: idx, className: \"k-calendar-th\" }, name)); })))));\n        };\n        _this.buildDates = function (cols, dates) {\n            var cellUID = _this.props.cellUID;\n            return (React.createElement(\"table\", { className: \"k-calendar-table\", ref: function (table) { return _this.table = table; } },\n                React.createElement(\"colgroup\", null, cols.map(function (_, idx) { return (React.createElement(\"col\", { key: idx })); })),\n                dates.map(function (date) { return (React.createElement(View, { ref: function (el) { if (!_this.calendarView) {\n                        _this.calendarView = el;\n                    } }, key: date.getTime(), activeView: _this.props.activeView, viewDate: date, min: _this.props.min, max: _this.props.max, cellUID: cellUID, focusedDate: _this.props.focusedDate, cell: _this.props.cell, selectedDate: _this.props.value, showWeekNumbers: _this.weekNumber, onChange: _this.handleDateChange, bus: _this.props.bus, service: _this.props.service, weekCell: _this.props.weekCell })); })));\n        };\n        _this.calculateHeights = function () {\n            if (!_this.props.dom) {\n                return;\n            }\n            var scrollableHeight = _this.props.activeView === CalendarViewEnum.month ?\n                _this.props.dom.scrollableContentHeight :\n                _this.props.dom.scrollableYearContentHeight;\n            _this.bottomOffset = scrollableHeight - _this.props.dom.viewHeight(_this.props.activeView);\n            _this.viewOffset = -1 * _this.props.dom.headerHeight;\n            _this.viewHeight = _this.props.dom.viewHeight(_this.props.activeView) || 1;\n        };\n        _this.getTake = function (skip, total) {\n            return Math.min(total - skip, _this.take);\n        };\n        _this.handleScrollAction = function (_a) {\n            var index = _a.index, scrollAction = _a.scrollAction, pageAction = _a.pageAction;\n            var skip = pageAction ? pageAction.skip : _this.state.skip;\n            if (_this.state.index !== index || _this.state.skip !== skip) {\n                _this.setState({ index: index, skip: skip });\n            }\n            if (_this.table && scrollAction) {\n                var translate = \"translateY(\" + scrollAction.offset + \"px)\";\n                _this.table.style.transform = translate;\n            }\n        };\n        _this.handleTodayClick = function (event) {\n            _this.shouldScroll = true;\n            _this.handleDateChange.call(undefined, event, true);\n        };\n        _this.handleDateChange = function (event, isTodayClick) {\n            if (isTodayClick === void 0) { isTodayClick = false; }\n            var onChange = _this.props.onChange;\n            if (onChange) {\n                var args = {\n                    syntheticEvent: event.syntheticEvent,\n                    nativeEvent: event.nativeEvent,\n                    value: cloneDate(event.value),\n                    target: _this,\n                    isTodayClick: isTodayClick\n                };\n                onChange.call(undefined, args);\n            }\n        };\n        _this.lastView = _this.props.activeView;\n        _this.lastFocus = _this.props.focusedDate;\n        _this.state = {\n            skip: _this.props.service.skip(_this.props.focusedDate, _this.props.min),\n            index: _this.props.service.skip(_this.props.focusedDate, _this.props.min)\n        };\n        return _this;\n    }\n    Object.defineProperty(ViewList.prototype, \"element\", {\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(ViewList.prototype, \"weekNames\", {\n        get: function () {\n            this.intl = provideIntlService(this);\n            var weekNames = shiftWeekNames(this.intl.dateFormatNames({ nameType: 'short', type: 'days' }), this.intl.firstDay());\n            return this.weekNumber ? [''].concat(weekNames) : weekNames;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(ViewList.prototype, \"weekNumber\", {\n        get: function () {\n            return Boolean(this.props.showWeekNumbers && this.props.activeView === CalendarViewEnum.month);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(ViewList.prototype, \"take\", {\n        get: function () {\n            return this.props.take !== undefined ? this.props.take : ViewList.defaultProps.take;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(ViewList.prototype, \"animate\", {\n        get: function () {\n            return Boolean(this.props.smoothScroll && this.animateToIndex);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(ViewList.prototype, \"todayIsInRange\", {\n        get: function () {\n            return isInRange(getToday(), getDate(this.props.min), getDate(this.props.max));\n        },\n        enumerable: true,\n        configurable: true\n    });\n    ViewList.prototype.componentDidUpdate = function (_prevProps, _prevState) {\n        this.shouldScroll = false;\n        if (this.indexToScroll !== undefined && this.virtualization) {\n            this.virtualization[this.animate ? 'animateToIndex' : 'scrollToIndex'](this.indexToScroll);\n        }\n        if (this.isActive) {\n            this.focusActiveDate();\n        }\n        this.lastView = this.props.activeView;\n        // this.lastFocus = this.props.focusedDate;\n        this.indexToScroll = undefined;\n    };\n    ViewList.prototype.render = function () {\n        var _this = this;\n        this.calculateHeights();\n        var didViewChange = this.lastView !== this.props.activeView;\n        var focusedDate = dateInRange(this.props.focusedDate, this.props.min, this.props.max);\n        var skip = !didViewChange ? this.state.skip : this.props.service.skip(focusedDate, this.props.min);\n        var total = this.props.service.total(this.props.min, this.props.max);\n        var take = this.getTake(skip, total);\n        var viewDate = this.props.service.addToDate(this.props.min, skip);\n        var activeDate = this.props.service.addToDate(this.props.min, this.state.index);\n        var cols = new Array(this.props.service.rowLength(this.weekNumber)).fill('');\n        var didViewChanged = this.props.activeView !== this.lastView;\n        this.animateToIndex = !didViewChanged;\n        if (didViewChanged\n            || !isEqualDate(this.lastFocus, focusedDate)\n            || this.shouldScroll\n            || (!this.props.shouldScroll || this.props.shouldScroll())) {\n            this.indexToScroll = this.props.service.skip(focusedDate, this.props.min);\n        }\n        this.lastFocus = focusedDate;\n        var rootClassNames = classNames('k-calendar-view k-vstack', {\n            'k-calendar-monthview': this.props.activeView === CalendarViewEnum.month,\n            'k-calendar-yearview': this.props.activeView === CalendarViewEnum.year,\n            'k-calendar-decadeview': this.props.activeView === CalendarViewEnum.decade,\n            'k-calendar-centuryview': this.props.activeView === CalendarViewEnum.century\n        });\n        var dates = this.buildDates(cols, this.props.service.datesList(viewDate, take));\n        var viewListBody = (React.createElement(React.Fragment, null,\n            React.createElement(Header, { key: \"calendar-view-list-header\", currentDate: activeDate, min: this.props.min, max: this.props.max, activeView: this.props.activeView, bus: this.props.bus, service: this.props.service, headerTitle: this.props.headerTitle, commands: (React.createElement(React.Fragment, null,\n                    React.createElement(TodayCommand, { min: this.props.min, max: this.props.max, onClick: this.handleTodayClick, disabled: !this.todayIsInRange }))) }),\n            this.props.activeView === CalendarViewEnum.month && this.buildMonthView(cols, this.weekNames),\n            React.createElement(Virtualization, { key: \"calendar-view-list-content\", skip: skip, take: this.take, total: total, itemHeight: this.viewHeight, topOffset: this.viewOffset, bottomOffset: this.bottomOffset, scrollOffsetSize: this.viewOffset, maxScrollDifference: this.viewHeight, onScroll: this.props.onScroll, onScrollAction: this.handleScrollAction, onMount: this.handleVirtualizationMount, children: dates })));\n        return (React.createElement(\"div\", { ref: function (el) { _this._element = el; }, className: rootClassNames }, this.props.dom.didCalculate ? viewListBody : null));\n    };\n    ViewList.propTypes = {\n        activeView: PropTypes.number.isRequired,\n        bottomOffset: PropTypes.number,\n        cellUID: PropTypes.string.isRequired,\n        focusedDate: PropTypes.instanceOf(Date).isRequired,\n        max: PropTypes.instanceOf(Date).isRequired,\n        min: PropTypes.instanceOf(Date).isRequired,\n        onChange: PropTypes.func,\n        showWeekNumbers: PropTypes.bool,\n        smoothScroll: PropTypes.bool,\n        take: PropTypes.number,\n        value: PropTypes.instanceOf(Date),\n        viewHeight: PropTypes.number,\n        viewOffset: PropTypes.number\n    };\n    ViewList.defaultProps = {\n        take: VIEWS_COUNT,\n        showWeekNumbers: false,\n        smoothScroll: true\n    };\n    return ViewList;\n}(React.Component));\nexport { ViewList };\nregisterForIntl(ViewList);\n","var __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 __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};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * The `CalendarNavigationItem` component is internally used for rendering the items in the side navigation of the Calendar. Also used as a custom navigation item for the [Calendar]({% slug api_dateinputs_calendarprops %}#toc-navigationitem) ([see example]({% slug custom_rendering_calendar %}#toc-items-in-the-side-navigation)).\n */\nvar CalendarNavigationItem = /** @class */ (function (_super) {\n    __extends(CalendarNavigationItem, _super);\n    function CalendarNavigationItem() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.handleClick = function (event) {\n            var _a = _this.props, onClick = _a.onClick, value = _a.value;\n            if (onClick) {\n                onClick.call(undefined, value, event);\n            }\n        };\n        return _this;\n    }\n    /**\n     * @return\n     * Returns a `<li />` element with a `<span />` inside. The text inside represents the [`value`]({% slug api_dateinputs_calendarnavigationitemprops %}#toc-value) of the `navigationItem`.\n     */\n    CalendarNavigationItem.prototype.render = function () {\n        var _a = this.props, isRangeStart = _a.isRangeStart, value = _a.value, text = _a.text, other = __rest(_a, [\"isRangeStart\", \"value\", \"text\"]);\n        return (React.createElement(\"li\", __assign({}, other, { onClick: this.handleClick }),\n            React.createElement(\"span\", { className: classNames({ 'k-calendar-navigation-marker': isRangeStart }) }, this.props.children)));\n    };\n    return CalendarNavigationItem;\n}(React.Component));\nexport { CalendarNavigationItem };\n","/**\n * @hidden\n */\nexport var Action;\n(function (Action) {\n    Action[Action[\"Left\"] = 0] = \"Left\";\n    Action[Action[\"Right\"] = 1] = \"Right\";\n    Action[Action[\"Up\"] = 2] = \"Up\";\n    Action[Action[\"Down\"] = 3] = \"Down\";\n    Action[Action[\"PrevView\"] = 4] = \"PrevView\";\n    Action[Action[\"NextView\"] = 5] = \"NextView\";\n    Action[Action[\"FirstInView\"] = 6] = \"FirstInView\";\n    Action[Action[\"LastInView\"] = 7] = \"LastInView\";\n    Action[Action[\"LowerView\"] = 8] = \"LowerView\";\n    Action[Action[\"UpperView\"] = 9] = \"UpperView\";\n})(Action || (Action = {}));\n","var _a;\n/* tslint:disable:object-literal-sort-keys */\nimport { addDecades, addCenturies, cloneDate, durationInCenturies, firstYearOfDecade, firstDecadeOfCentury, lastDecadeOfCentury } from '@progress/kendo-date-math';\nimport { Action, EMPTY_SELECTIONRANGE } from '../models';\nimport { getToday, isInRange, isInSelectionRange, range, intersects } from '../../utils';\nvar EMPTY_DATA = [[]];\nvar CELLS_LENGTH = 4;\nvar ROWS_LENGTH = 3;\nvar ACTIONS = (_a = {},\n    _a[Action.Left] = function (date) { return addDecades(date, -1); },\n    _a[Action.Up] = function (date) { return addDecades(date, -5); },\n    _a[Action.Right] = function (date) { return addDecades(date, 1); },\n    _a[Action.Down] = function (date) { return addDecades(date, 5); },\n    _a[Action.PrevView] = function (date) { return addCenturies(date, -1); },\n    _a[Action.NextView] = function (date) { return addCenturies(date, 1); },\n    _a[Action.FirstInView] = function (date) { return firstDecadeOfCentury(date); },\n    _a[Action.LastInView] = function (date) { return lastDecadeOfCentury(date); },\n    _a);\n/**\n * @hidden\n */\nvar CenturyViewService = /** @class */ (function () {\n    function CenturyViewService() {\n    }\n    CenturyViewService.prototype.addToDate = function (min, skip) {\n        return addCenturies(min, skip);\n    };\n    CenturyViewService.prototype.datesList = function (start, count) {\n        return range(0, count).map(function (i) { return addCenturies(start, i); });\n    };\n    CenturyViewService.prototype.data = function (options) {\n        var _this = this;\n        var cellUID = options.cellUID, focusedDate = options.focusedDate, isActiveView = options.isActiveView, max = options.max, min = options.min, selectedDate = options.selectedDate, _a = options.selectionRange, selectionRange = _a === void 0 ? EMPTY_SELECTIONRANGE : _a, viewDate = options.viewDate;\n        if (!viewDate) {\n            return EMPTY_DATA;\n        }\n        var cells = range(0, CELLS_LENGTH);\n        var firstDate = firstDecadeOfCentury(viewDate);\n        var lastDate = lastDecadeOfCentury(viewDate);\n        var today = getToday();\n        return range(0, ROWS_LENGTH).map(function (rowOffset) {\n            var baseDate = addDecades(firstDate, rowOffset * CELLS_LENGTH);\n            return cells.map(function (cellOffset) {\n                var cellDate = _this.normalize(addDecades(baseDate, cellOffset), min, max);\n                var isRangeStart = _this.isEqual(cellDate, selectionRange.start);\n                var isRangeEnd = _this.isEqual(cellDate, selectionRange.end);\n                var isInMiddle = !isRangeStart && !isRangeEnd;\n                var isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n                var isSelected = isActiveView && (!Array.isArray(selectedDate)\n                    ? isInRange(selectedDate, min, max) && _this.isEqual(cellDate, selectedDate)\n                    : _this.isSelectedFromArray(cellDate, selectedDate, min, max));\n                return intersects(cellDate, firstDate, lastDate) ? ({\n                    formattedValue: _this.value(cellDate),\n                    id: \"\" + cellUID + cellDate.getTime(),\n                    isFocused: _this.isEqual(cellDate, focusedDate),\n                    isSelected: isSelected,\n                    isWeekend: false,\n                    isInRange: isInRange(cellDate, min, max),\n                    isRangeStart: isRangeStart,\n                    isRangeMid: isRangeMid,\n                    isRangeEnd: isRangeEnd,\n                    isRangeSplitEnd: isRangeMid && _this.isEqual(cellDate, lastDate),\n                    isRangeSplitStart: isRangeMid && _this.isEqual(cellDate, firstDate),\n                    isToday: _this.isEqual(cellDate, today),\n                    title: _this.cellTitle(cellDate),\n                    value: cellDate\n                }) : null;\n            });\n        });\n    };\n    CenturyViewService.prototype.isSelectedFromArray = function (candidate, dates, min, max) {\n        var _this = this;\n        var result = false;\n        dates.forEach(function (date) {\n            if (isInRange(candidate, min, max) && _this.isEqual(candidate, date)) {\n                result = true;\n            }\n        });\n        return result;\n    };\n    CenturyViewService.prototype.isEqual = function (candidate, expected) {\n        if (!candidate || !expected) {\n            return false;\n        }\n        // TODO: double-check this!\n        return firstYearOfDecade(candidate).getFullYear() === firstYearOfDecade(expected).getFullYear();\n    };\n    CenturyViewService.prototype.isInArray = function (date, dates) {\n        if (!dates.length) {\n            return false;\n        }\n        var year = date.getFullYear();\n        return dates[0].getFullYear() <= year && year <= (dates[dates.length - 1].getFullYear() + 99);\n    };\n    CenturyViewService.prototype.isInRange = function (candidate, min, max) {\n        var year = firstYearOfDecade(candidate).getFullYear();\n        var aboveMin = !min || firstYearOfDecade(min).getFullYear() <= year;\n        var belowMax = !max || year <= firstYearOfDecade(max).getFullYear();\n        return aboveMin && belowMax;\n    };\n    CenturyViewService.prototype.isInSameView = function (candidate, value) {\n        return durationInCenturies(candidate, value) === 0;\n    };\n    CenturyViewService.prototype.isRangeStart = function (value) {\n        return value.getFullYear() % 1000 === 0;\n    };\n    CenturyViewService.prototype.move = function (value, action) {\n        var modifier = ACTIONS[action];\n        if (!modifier) {\n            return value;\n        }\n        return modifier(value);\n    };\n    CenturyViewService.prototype.cellTitle = function (value) {\n        return firstYearOfDecade(value).getFullYear().toString();\n    };\n    CenturyViewService.prototype.navigationTitle = function (value) {\n        return value ? firstDecadeOfCentury(value).getFullYear().toString() : '';\n    };\n    CenturyViewService.prototype.title = function (value) {\n        if (!value) {\n            return '';\n        }\n        return firstDecadeOfCentury(value).getFullYear() + \" - \" + lastDecadeOfCentury(value).getFullYear();\n    };\n    CenturyViewService.prototype.rowLength = function (_) {\n        return CELLS_LENGTH;\n    };\n    CenturyViewService.prototype.skip = function (value, min) {\n        return durationInCenturies(min, value);\n    };\n    CenturyViewService.prototype.total = function (min, max) {\n        return durationInCenturies(min, max) + 1;\n    };\n    CenturyViewService.prototype.value = function (current) {\n        return current ? firstYearOfDecade(current).getFullYear().toString() : '';\n    };\n    CenturyViewService.prototype.viewDate = function (date, max, border) {\n        if (border === void 0) { border = 1; }\n        var renderTwoViews = durationInCenturies(date, max) < border;\n        return renderTwoViews ? addCenturies(date, -1) : date;\n    };\n    CenturyViewService.prototype.normalize = function (cellDate, min, max) {\n        if (cellDate < min && this.isEqual(cellDate, min)) {\n            return cloneDate(min);\n        }\n        if (cellDate > max && this.isEqual(cellDate, max)) {\n            return cloneDate(max);\n        }\n        return cellDate;\n    };\n    return CenturyViewService;\n}());\nexport { CenturyViewService };\n","var __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 __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};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { cloneDate, isEqual } from '@progress/kendo-date-math';\nimport { CalendarNavigationItem } from './CalendarNavigationItem';\nimport { dateInRange } from '../../utils';\nimport { Virtualization } from '../../virtualization/Virtualization';\nvar ITEMS_COUNT = 30;\n/**\n * @hidden\n */\nvar Navigation = /** @class */ (function (_super) {\n    __extends(Navigation, _super);\n    function Navigation(props) {\n        var _this = _super.call(this, props) || this;\n        _this.topOffset = 0;\n        _this.handleVirtualizationMount = function (virtualization) {\n            _this.virtualization = virtualization;\n            if (_this.virtualization && _this.list) {\n                _this.list.style.transform = \"translateY(\" + _this.topOffset + \"px)\";\n                var viewDate = dateInRange(_this.props.focusedDate, _this.props.min, _this.props.max);\n                var indexToScroll = _this.props.service.skip(viewDate, _this.props.min);\n                _this.virtualization.scrollToIndex(indexToScroll);\n            }\n        };\n        _this.buildNavigationItem = function (date) {\n            var text = _this.props.service.navigationTitle(date);\n            var isRangeStart = _this.props.service.isRangeStart(date);\n            var uniqueID = \"kendo-react-calendar-nav-item-\" + date.getTime();\n            var navigationItemProps = {\n                text: text,\n                value: date,\n                isRangeStart: isRangeStart,\n                view: _this.props.activeView,\n                onClick: _this.handleDateChange\n            };\n            return _this.props.navigationItem\n                ? (React.createElement(_this.props.navigationItem, __assign({}, navigationItemProps, { key: uniqueID }), text))\n                : (React.createElement(CalendarNavigationItem, __assign({}, navigationItemProps, { key: uniqueID }), text));\n        };\n        _this.calculateHeights = function () {\n            var calendarHeight = _this.props.dom.calendarHeight;\n            _this.itemHeight = _this.props.dom.navigationItemHeight || 1;\n            _this.maxViewHeight = _this.props.dom.monthViewHeight;\n            _this.topOffset = (calendarHeight - _this.itemHeight) / 2;\n            _this.bottomOffset = calendarHeight - _this.itemHeight;\n        };\n        _this.handleDateChange = function (value, event) {\n            var onChange = _this.props.onChange;\n            if (onChange) {\n                var args = {\n                    value: cloneDate(value),\n                    target: _this,\n                    nativeEvent: event && event.nativeEvent,\n                    syntheticEvent: event\n                };\n                onChange.call(undefined, args);\n            }\n        };\n        _this.handleScrollAction = function (_a) {\n            var scrollAction = _a.scrollAction, pageAction = _a.pageAction;\n            var skip = pageAction ? pageAction.skip : _this.state.skip;\n            if (_this.state.skip !== skip) {\n                _this.setState({ skip: skip });\n            }\n            if (_this.list && scrollAction) {\n                var translate = \"translateY(\" + scrollAction.offset + \"px)\";\n                _this.list.style.transform = translate;\n            }\n        };\n        _this.lastView = _this.props.activeView;\n        _this.lastFocus = _this.props.focusedDate;\n        var skip = _this.props.service.skip(_this.props.focusedDate, _this.props.min);\n        var total = _this.props.service.total(_this.props.min, _this.props.max);\n        _this.state = {\n            skip: (skip - _this.getTake(skip, total) > 0) ? skip : 0\n        };\n        return _this;\n    }\n    Object.defineProperty(Navigation.prototype, \"take\", {\n        get: function () {\n            return this.props.take !== undefined\n                ? this.props.take\n                : Navigation.defaultProps.take;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    Navigation.prototype.componentDidUpdate = function (_prevProps, _prevState) {\n        if (this.indexToScroll !== undefined && this.virtualization) {\n            this.virtualization.scrollToIndex(this.indexToScroll);\n        }\n        this.lastView = this.props.activeView;\n        this.lastFocus = this.props.focusedDate;\n        this.indexToScroll = undefined;\n    };\n    Navigation.prototype.render = function () {\n        var _this = this;\n        this.calculateHeights();\n        var didViewChange = this.lastView !== this.props.activeView;\n        var focusedDate = dateInRange(this.props.focusedDate, this.props.min, this.props.max);\n        var skip = !didViewChange ? this.state.skip : this.props.service.skip(focusedDate, this.props.min);\n        var total = this.props.service.total(this.props.min, this.props.max);\n        var take = this.getTake(skip, total);\n        var viewDate = this.props.service.addToDate(this.props.min, skip);\n        var dates = this.props.service.datesList(viewDate, take);\n        if (this.props.activeView !== this.lastView\n            || !isEqual(focusedDate, this.lastFocus)) {\n            this.indexToScroll = this.props.service.skip(focusedDate, this.props.min);\n        }\n        var navigationBody = (React.createElement(Virtualization, { skip: skip, take: this.take, total: total, itemHeight: this.itemHeight, topOffset: this.topOffset, bottomOffset: this.bottomOffset, onScroll: this.props.onScroll, maxScrollDifference: this.maxViewHeight, onScrollAction: this.handleScrollAction, onMount: this.handleVirtualizationMount },\n            React.createElement(\"ul\", { ref: function (el) { _this.list = el; }, className: \"k-reset\" }, dates.map(function (date) { return (_this.buildNavigationItem(date)); }))));\n        return (React.createElement(\"div\", { className: \"k-calendar-navigation\" },\n            React.createElement(\"span\", { className: \"k-calendar-navigation-highlight\" }),\n            this.props.dom.didCalculate ? navigationBody : null));\n    };\n    Navigation.prototype.getTake = function (skip, total) {\n        return Math.min(total - skip, this.take);\n    };\n    Navigation.propTypes = {\n        activeView: PropTypes.number.isRequired,\n        focusedDate: PropTypes.instanceOf(Date).isRequired,\n        max: PropTypes.instanceOf(Date).isRequired,\n        min: PropTypes.instanceOf(Date).isRequired,\n        onChange: PropTypes.func,\n        take: PropTypes.number\n    };\n    Navigation.defaultProps = {\n        take: ITEMS_COUNT\n    };\n    return Navigation;\n}(React.Component));\nexport { Navigation };\n","import { CalendarViewEnum } from '../models/CalendarViewEnum';\nimport { domContainerFactory as containerFactory } from '../../utils';\nimport { canUseDOM } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar DOMService = /** @class */ (function () {\n    function DOMService() {\n        this.didCalculate = false;\n    }\n    DOMService.prototype.ensureHeights = function () {\n        if (this.calendarHeight !== undefined) {\n            return;\n        }\n        this.calculateHeights();\n    };\n    DOMService.prototype.calculateHeights = function (container) {\n        var _this = this;\n        if (!canUseDOM) {\n            return;\n        }\n        var div = containerFactory('div');\n        var ul = containerFactory('ul');\n        var li = containerFactory('li');\n        var td = containerFactory('td');\n        var th = containerFactory('th');\n        var tr = containerFactory('tr');\n        var tbody = containerFactory('tbody');\n        var thead = containerFactory('thead');\n        var table = containerFactory('table');\n        var monthHeader = function () { return (div(\"\\n                <span class=\\\"k-button k-flat k-calendar-title\\\">\\n                <span className=\\\"k-button-text\\\">March 2017</span>\\n            </span>\\n            <span class=\\\"k-spacer\\\"></span>\\n            <span class=\\\"k-calendar-nav k-hstack\\\"><span class=\\\"k-nav-today\\\">TODAY</span></span>\\n        \", 'k-calendar-header k-hstack')); };\n        var monthWeekHeader = function () { return (table([\n            thead([\n                tr([th('MO', 'k-calendar-th')], 'k-calendar-tr')\n            ], 'k-calendar-thead')\n        ], 'k-calendar-table k-calendar-weekdays')); };\n        var repeat = function (count, mapper) { return new Array(count).fill('1').map(mapper); };\n        var content = function (rows, cells) {\n            if (cells === void 0) { cells = 1; }\n            return (table([\n                tbody([tr([td('1', 'k-calendar-td k-alt')])].concat(repeat(rows, function () { return tr(repeat(cells, function (c) { return td(\"<span class=\\\"k-link\\\">\" + c + \"</span>\", 'k-calendar-td'); }), 'k-calendar-tr'); })), 'k-calendar-tbody')\n            ], 'k-calendar-table'));\n        };\n        var scrollable = function (children) { return div(children, 'k-content k-calendar-content k-scrollable'); };\n        var view = function (contentElement, className, renderWeekHeader) { return (div(renderWeekHeader\n            ? [\n                monthHeader(),\n                monthWeekHeader(),\n                scrollable([contentElement, contentElement])\n            ]\n            : [\n                monthHeader(),\n                scrollable([contentElement, contentElement])\n            ], className, { left: '-10000px', position: 'absolute' })); };\n        var navigationList = (function () {\n            var navElement;\n            return function () {\n                if (!canUseDOM) {\n                    return null;\n                }\n                if (!navElement) {\n                    navElement = div([scrollable([ul([li('<span>FEB</span>')])])], 'k-calendar-navigation', { left: '0px', position: 'absolute' });\n                }\n                return navElement;\n            };\n        })();\n        var viewFactory = function (_a, className, renderWeekHeader) {\n            var cells = _a.cells, rows = _a.rows;\n            var viewElement;\n            return function () {\n                if (!canUseDOM) {\n                    return null;\n                }\n                if (!viewElement) {\n                    viewElement = view(content(rows, cells), className, renderWeekHeader);\n                }\n                return viewElement;\n            };\n        };\n        var getScrollable = function (element) { return element.querySelector('.k-scrollable'); };\n        var horizontal = function (element) {\n            var scrollableElement = getScrollable(element);\n            scrollableElement.className = scrollableElement.className + \" k-scrollable-horizontal\";\n            return element;\n        };\n        var monthView = viewFactory({ cells: 7, rows: 6 }, 'k-calendar-view k-calendar-monthview k-vstack', true);\n        var yearView = viewFactory({ cells: 5, rows: 3 }, 'k-calendar-view k-calendar-yearview', false);\n        var decadeView = viewFactory({ cells: 5, rows: 2 }, 'k-calendar-view k-calendar-decadeview', false);\n        var horzMonthView = function () { return horizontal(monthView()); };\n        var horzYearView = function () { return horizontal(yearView()); };\n        var horzDecadeView = function () { return horizontal(decadeView()); };\n        var height = function (element) { return (parseFloat(window.getComputedStyle(element).height) || element.offsetHeight); };\n        var width = function (element) {\n            var styles = window.getComputedStyle(element);\n            var computed = parseFloat(styles.width)\n                + parseFloat(styles.paddingLeft)\n                + parseFloat(styles.paddingRight);\n            return computed || element.offsetWidth;\n        };\n        var getBody = function (element) { return element.querySelector('tbody'); };\n        this.didCalculate = true;\n        if (container) {\n            this.hostContainer = container;\n        }\n        this.batch(monthView(), function (contentElement) {\n            var viewElement = getBody(contentElement);\n            _this.calendarHeight = height(contentElement);\n            _this.monthViewHeight = height(viewElement);\n            _this.headerHeight = height(viewElement.children[0]);\n            _this.scrollableContentHeight = height(getScrollable(contentElement));\n        });\n        this.batch(horzMonthView(), function (contentElement) {\n            var viewElement = getBody(contentElement);\n            _this.calendarWidth = width(contentElement);\n            _this.monthViewWidth = width(viewElement);\n            _this.scrollableContentWidth = width(getScrollable(contentElement));\n        });\n        this.batch(yearView(), function (contentElement) {\n            _this.yearViewHeight = height(getBody(contentElement));\n            _this.scrollableYearContentHeight = height(getScrollable(contentElement));\n        });\n        this.batch(horzYearView(), function (contentElement) {\n            _this.yearViewWidth = width(getBody(contentElement));\n        });\n        this.batch(decadeView(), function (contentElement) {\n            _this.decadeViewHeight = height(getBody(contentElement));\n            _this.centuryViewHeight = _this.decadeViewHeight;\n        });\n        this.batch(horzDecadeView(), function (contentElement) {\n            _this.decadeViewWidth = width(getBody(contentElement));\n            _this.centuryViewWidth = _this.decadeViewWidth;\n        });\n        this.batch(navigationList(), function (contentElement) {\n            _this.navigationItemHeight = height(contentElement.querySelector('li'));\n        });\n    };\n    DOMService.prototype.viewHeight = function (viewType) {\n        return this.viewDimension(viewType, 'height');\n    };\n    DOMService.prototype.viewWidth = function (viewType) {\n        return this.viewDimension(viewType, 'width');\n    };\n    DOMService.prototype.viewDimension = function (viewType, dimension) {\n        var viewProp = dimension === 'height' ? 'ViewHeight' : 'ViewWidth';\n        switch (viewType) {\n            case CalendarViewEnum.month:\n                return this[\"month\" + viewProp];\n            case CalendarViewEnum.year:\n                return this[\"year\" + viewProp];\n            case CalendarViewEnum.decade:\n                return this[\"decade\" + viewProp];\n            case CalendarViewEnum.century:\n                return this[\"century\" + viewProp];\n            default:\n                return 1;\n        }\n    };\n    DOMService.prototype.batch = function (contentElement, action) {\n        var hostContainer = this.hostContainer || document.body;\n        var appendedContent = hostContainer.appendChild(contentElement);\n        action(appendedContent);\n        hostContainer.removeChild(appendedContent);\n    };\n    return DOMService;\n}());\nexport { DOMService };\n","import { addMonths } from './add-months';\nimport { createDate } from './create-date';\nimport { lastDayOfMonth } from './last-day-of-month';\n/**\n * @hidden\n */\nexport var setYear = function (value, year) {\n    var month = value.getMonth();\n    var candidate = createDate(year, month, value.getDate(), value.getHours(), value.getMinutes(), value.getSeconds(), value.getMilliseconds());\n    return candidate.getMonth() === month ? candidate : lastDayOfMonth(addMonths(candidate, -1));\n};\n","import { adjustDST } from './adjust-dst';\nimport { setYear } from './set-year';\n/**\n * A function that adds and subtracts years from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of years to add or subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addYears(new Date(2016, 5, 1), 5); // 2011-6-1\n * addYears(new Date(2016, 5, 1), -5); // 2021-6-1\n * ```\n */\nexport var addYears = function (value, offset) {\n    return adjustDST(setYear(value, value.getFullYear() + offset), value.getHours());\n};\n","import { addYears } from './add-years';\n/**\n * A function that adds and subtracts decades from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of decades to add or subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addDecades(new Date(2016, 5, 1), 5); // 2066-6-1\n * addDecades(new Date(2016, 5, 1), -5); // 1966-6-1\n * ```\n */\nexport var addDecades = function (value, offset) {\n    return addYears(value, 10 * offset);\n};\n","import { addYears } from './add-years';\n/**\n * A function that adds and subtracts centuries from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of centuries to add or subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addCenturies(new Date(2016, 5, 1), 5); // 2516-6-1\n * addCenturies(new Date(2016, 5, 1), -5); // 1516-6-1\n * ```\n */\nexport var addCenturies = function (value, offset) {\n    return addYears(value, 100 * offset);\n};\n","import { setYear } from './set-year';\n/**\n * @hidden\n */\nexport var normalizeYear = function (value, year) { return (setYear(value, year(value.getFullYear()))); };\n","import { normalizeYear } from './normalize-year';\n/**\n * A function that returns a `Date` object of the first decade in a century.\n *\n * @param date - The start date value.\n * @returns - The first year in a century.\n *\n * @example\n * ```ts-no-run\n * firstDecadeOfCentury(new Date(2017, 0, 1)); // 2000-1-1\n * firstDecadeOfCentury(new Date(2007, 10, 22)); // 2000-11-22\n * firstDecadeOfCentury(new Date(2126, 0, 1)); // 2100-1-1\n * ```\n */\nexport var firstDecadeOfCentury = function (value) { return (normalizeYear(value, function (y) { return y - (y % 100); })); };\n","import { normalizeYear } from './normalize-year';\n/**\n * A function that returns a `Date` object of the last decade in a century.\n *\n * @param date - The start date value.\n * @returns - The last year in a decade.\n *\n * @example\n * ```ts-no-run\n * lastDecadeOfCentury(new Date(2017, 0, 1)); // 2090-1-1\n * lastDecadeOfCentury(new Date(2007, 10, 22)); // 2090-11-22\n * lastDecadeOfCentury(new Date(2126, 0, 1)); // 2190-1-1\n * ```\n */\nexport var lastDecadeOfCentury = function (value) { return (normalizeYear(value, function (y) { return y - (y % 100) + 90; })); };\n","import { normalizeYear } from './normalize-year';\n/**\n * A function that returns a `Date` object of the first year in a decade.\n *\n * @param date - The start date value.\n * @returns - The first year in a decade.\n *\n * @example\n * ```ts-no-run\n * firstYearOfDecade(new Date(2017, 0, 1)); // 2010-1-1\n * firstYearOfDecade(new Date(2007, 10, 22)); // 2000-11-22\n * firstYearOfDecade(new Date(2026, 0, 1)); // 2020-1-1\n * ```\n */\nexport var firstYearOfDecade = function (value) { return (normalizeYear(value, function (y) { return y - (y % 10); })); };\n","import { firstDecadeOfCentury } from './first-decade-of-century';\n/**\n * A function that calculates duration in centuries between two `Date` objects.\n *\n * @param start - The start date value.\n * @param end - The end date value.\n * @returns - The duration in months.\n *\n * @example\n * ```ts-no-run\n * durationInCenturies(new Date(2016, 0, 1), new Date(3216, 0, 1)); // 12\n * durationInCenturies(new Date(2016, 6, 1), new Date(2617, 0, 1)); // 6\n * durationInCenturies(new Date(2016, 0, 1), new Date(2016, 0, 1)); // 0\n * ```\n */\nexport var durationInCenturies = function (start, end) { return ((firstDecadeOfCentury(end).getFullYear() - firstDecadeOfCentury(start).getFullYear()) / 100); };\n","var _a;\nimport { addDecades, addYears, cloneDate, durationInDecades, firstYearOfDecade, lastYearOfDecade } from '@progress/kendo-date-math';\nimport { Action } from '../models/NavigationAction';\nimport { EMPTY_SELECTIONRANGE } from '../models/SelectionRange';\nimport { getToday, isInRange, isInSelectionRange, range, intersects } from '../../utils';\nvar EMPTY_DATA = [[]];\nvar CELLS_LENGTH = 4;\nvar ROWS_LENGTH = 3;\nvar ACTIONS = (_a = {},\n    _a[Action.Left] = function (date) { return addYears(date, -1); },\n    _a[Action.Up] = function (date) { return addYears(date, -5); },\n    _a[Action.Right] = function (date) { return addYears(date, 1); },\n    _a[Action.Down] = function (date) { return addYears(date, 5); },\n    _a[Action.PrevView] = function (date) { return addDecades(date, -1); },\n    _a[Action.NextView] = function (date) { return addDecades(date, 1); },\n    _a[Action.FirstInView] = function (date) { return firstYearOfDecade(date); },\n    _a[Action.LastInView] = function (date) { return lastYearOfDecade(date); },\n    _a);\n/**\n * @hidden\n */\nvar DecadeViewService = /** @class */ (function () {\n    function DecadeViewService() {\n    }\n    DecadeViewService.prototype.addToDate = function (min, skip) {\n        return addDecades(min, skip);\n    };\n    DecadeViewService.prototype.datesList = function (start, count) {\n        return range(0, count).map(function (i) { return addDecades(start, i); });\n    };\n    DecadeViewService.prototype.data = function (options) {\n        var _this = this;\n        var cellUID = options.cellUID, focusedDate = options.focusedDate, isActiveView = options.isActiveView, max = options.max, min = options.min, selectedDate = options.selectedDate, _a = options.selectionRange, selectionRange = _a === void 0 ? EMPTY_SELECTIONRANGE : _a, viewDate = options.viewDate;\n        if (!viewDate) {\n            return EMPTY_DATA;\n        }\n        var cells = range(0, CELLS_LENGTH);\n        var firstDate = firstYearOfDecade(viewDate);\n        var lastDate = lastYearOfDecade(viewDate);\n        var today = getToday();\n        return range(0, ROWS_LENGTH).map(function (rowOffset) {\n            var baseDate = addYears(firstDate, rowOffset * CELLS_LENGTH);\n            return cells.map(function (cellOffset) {\n                var cellDate = _this.normalize(addYears(baseDate, cellOffset), min, max);\n                var isRangeStart = _this.isEqual(cellDate, selectionRange.start);\n                var isRangeEnd = _this.isEqual(cellDate, selectionRange.end);\n                var isInMiddle = !isRangeStart && !isRangeEnd;\n                var isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n                var isSelected = isActiveView && (!Array.isArray(selectedDate)\n                    ? isInRange(selectedDate, min, max) && _this.isEqual(cellDate, selectedDate)\n                    : _this.isSelectedFromArray(cellDate, selectedDate, min, max));\n                return intersects(cellDate, firstDate, lastDate) ? ({\n                    formattedValue: _this.value(cellDate),\n                    id: \"\" + cellUID + cellDate.getTime(),\n                    isFocused: _this.isEqual(cellDate, focusedDate),\n                    isSelected: isSelected,\n                    isWeekend: false,\n                    isInRange: isInRange(cellDate, min, max),\n                    isRangeStart: isRangeStart,\n                    isRangeMid: isRangeMid,\n                    isRangeEnd: isRangeEnd,\n                    isRangeSplitEnd: isRangeMid && _this.isEqual(cellDate, lastDate),\n                    isRangeSplitStart: isRangeMid && _this.isEqual(cellDate, firstDate),\n                    isToday: _this.isEqual(cellDate, today),\n                    title: _this.cellTitle(cellDate),\n                    value: cellDate\n                }) : null;\n            });\n        });\n    };\n    DecadeViewService.prototype.isSelectedFromArray = function (candidate, dates, min, max) {\n        var _this = this;\n        var result = false;\n        dates.forEach(function (date) {\n            if (isInRange(candidate, min, max) && _this.isEqual(candidate, date)) {\n                result = true;\n            }\n        });\n        return result;\n    };\n    DecadeViewService.prototype.isEqual = function (candidate, expected) {\n        if (!candidate || !expected) {\n            return false;\n        }\n        return candidate.getFullYear() === expected.getFullYear();\n    };\n    DecadeViewService.prototype.isInArray = function (date, dates) {\n        if (!dates.length) {\n            return false;\n        }\n        var year = date.getFullYear();\n        return dates[0].getFullYear() <= year && year <= (dates[dates.length - 1].getFullYear() + 9);\n    };\n    DecadeViewService.prototype.isInRange = function (candidate, min, max) {\n        var year = candidate.getFullYear();\n        var aboveMin = !min || min.getFullYear() <= year;\n        var belowMax = !max || year <= max.getFullYear();\n        return aboveMin && belowMax;\n    };\n    DecadeViewService.prototype.isRangeStart = function (value) {\n        return value.getFullYear() % 100 === 0;\n    };\n    DecadeViewService.prototype.isInSameView = function (candidate, value) {\n        return durationInDecades(candidate, value) === 0;\n    };\n    DecadeViewService.prototype.move = function (value, action) {\n        var modifier = ACTIONS[action];\n        if (!modifier) {\n            return value;\n        }\n        return modifier(value);\n    };\n    DecadeViewService.prototype.cellTitle = function (value) {\n        return value.getFullYear().toString();\n    };\n    DecadeViewService.prototype.navigationTitle = function (value) {\n        return value ? firstYearOfDecade(value).getFullYear().toString() : '';\n    };\n    DecadeViewService.prototype.title = function (value) {\n        if (!value) {\n            return '';\n        }\n        return firstYearOfDecade(value).getFullYear() + \" - \" + lastYearOfDecade(value).getFullYear();\n    };\n    DecadeViewService.prototype.rowLength = function (_) {\n        return CELLS_LENGTH;\n    };\n    DecadeViewService.prototype.skip = function (value, min) {\n        return durationInDecades(min, value);\n    };\n    DecadeViewService.prototype.total = function (min, max) {\n        return durationInDecades(min, max) + 1;\n    };\n    DecadeViewService.prototype.value = function (current) {\n        return current ? current.getFullYear().toString() : '';\n    };\n    DecadeViewService.prototype.viewDate = function (date, max, border) {\n        if (border === void 0) { border = 1; }\n        var renderTwoViews = durationInDecades(date, max) < border;\n        return renderTwoViews ? addDecades(date, -1) : date;\n    };\n    DecadeViewService.prototype.normalize = function (cellDate, min, max) {\n        if (cellDate < min && this.isEqual(cellDate, min)) {\n            return cloneDate(min);\n        }\n        if (cellDate > max && this.isEqual(cellDate, max)) {\n            return cloneDate(max);\n        }\n        return cellDate;\n    };\n    return DecadeViewService;\n}());\nexport { DecadeViewService };\n","var _a;\nimport { addDays, addWeeks, addMonths, dayOfWeek, durationInMonths, getDate, firstDayOfMonth, lastDayOfMonth } from '@progress/kendo-date-math';\nimport { Action } from '../models/NavigationAction';\nimport { EMPTY_SELECTIONRANGE } from '../models/SelectionRange';\nimport { getToday, isInRange, isInSelectionRange, range } from '../../utils';\nvar EMPTY_DATA = [[]];\nvar CELLS_LENGTH = 7;\nvar ROWS_LENGTH = 6;\nvar SATURDAY = 6;\nvar SUNDAY = 0;\nvar ACTIONS = (_a = {},\n    _a[Action.Left] = function (date) { return addDays(date, -1); },\n    _a[Action.Up] = function (date) { return addWeeks(date, -1); },\n    _a[Action.Right] = function (date) { return addDays(date, 1); },\n    _a[Action.Down] = function (date) { return addWeeks(date, 1); },\n    _a[Action.PrevView] = function (date) { return addMonths(date, -1); },\n    _a[Action.NextView] = function (date) { return addMonths(date, 1); },\n    _a[Action.FirstInView] = function (date) { return firstDayOfMonth(date); },\n    _a[Action.LastInView] = function (date) { return lastDayOfMonth(date); },\n    _a);\n/**\n * @hidden\n */\nvar MonthViewService = /** @class */ (function () {\n    function MonthViewService(intl) {\n        this.intl = intl;\n    }\n    MonthViewService.prototype.addToDate = function (min, skip) {\n        return addMonths(min, skip);\n    };\n    MonthViewService.prototype.datesList = function (start, count) {\n        return range(0, count).map(function (i) { return addMonths(start, i); });\n    };\n    MonthViewService.prototype.data = function (options) {\n        var _this = this;\n        var cellUID = options.cellUID, focusedDate = options.focusedDate, isActiveView = options.isActiveView, max = options.max, min = options.min, selectedDate = options.selectedDate, _a = options.selectionRange, selectionRange = _a === void 0 ? EMPTY_SELECTIONRANGE : _a, viewDate = options.viewDate;\n        if (!viewDate) {\n            return EMPTY_DATA;\n        }\n        var firstMonthDate = firstDayOfMonth(viewDate);\n        var lastMonthDate = lastDayOfMonth(viewDate);\n        var backward = -1;\n        var date = dayOfWeek(firstMonthDate, this.intl.firstDay(), backward);\n        var cells = range(0, CELLS_LENGTH);\n        var today = getToday();\n        return range(0, ROWS_LENGTH).map(function (rowOffset) {\n            var baseDate = addDays(date, rowOffset * CELLS_LENGTH);\n            return cells.map(function (cellOffset) {\n                var cellDate = _this.normalize(addDays(baseDate, cellOffset), min, max);\n                var otherMonth = cellDate < firstMonthDate || cellDate > lastMonthDate;\n                if (otherMonth) {\n                    return null;\n                }\n                var isRangeStart = _this.isEqual(cellDate, selectionRange.start);\n                var isRangeEnd = _this.isEqual(cellDate, selectionRange.end);\n                var isInMiddle = !isRangeStart && !isRangeEnd;\n                var isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n                var isSelected = isActiveView && (!Array.isArray(selectedDate)\n                    ? isInRange(selectedDate, min, max) && _this.isEqual(cellDate, selectedDate)\n                    : _this.isSelectedFromArray(cellDate, selectedDate, min, max));\n                var cell = {\n                    formattedValue: _this.value(cellDate),\n                    id: \"\" + cellUID + cellDate.getTime(),\n                    isFocused: _this.isEqual(cellDate, focusedDate),\n                    isSelected: isSelected,\n                    isInRange: isInRange(cellDate, min, max),\n                    isWeekend: _this.isWeekend(cellDate),\n                    isRangeStart: isRangeStart,\n                    isRangeMid: isRangeMid,\n                    isRangeEnd: isRangeEnd,\n                    isRangeSplitStart: isRangeMid && _this.isEqual(cellDate, firstMonthDate),\n                    isRangeSplitEnd: isRangeMid && _this.isEqual(cellDate, lastMonthDate),\n                    isToday: _this.isEqual(cellDate, today),\n                    title: _this.cellTitle(cellDate),\n                    value: cellDate\n                };\n                return cell;\n            });\n        });\n    };\n    MonthViewService.prototype.isEqual = function (candidate, expected) {\n        if (!candidate || !expected) {\n            return false;\n        }\n        return getDate(candidate).getTime() === getDate(expected).getTime();\n    };\n    MonthViewService.prototype.isSelectedFromArray = function (candidate, dates, min, max) {\n        var _this = this;\n        var result = false;\n        dates.forEach(function (date) {\n            if (isInRange(candidate, min, max) && _this.isEqual(candidate, date)) {\n                result = true;\n            }\n        });\n        return result;\n    };\n    MonthViewService.prototype.isInArray = function (date, dates) {\n        return !!dates.length && firstDayOfMonth(dates[0]) <= date && date <= lastDayOfMonth(dates[dates.length - 1]);\n    };\n    MonthViewService.prototype.isInRange = function (candidate, min, max) {\n        var value = getDate(candidate);\n        var aboveMin = !min || getDate(min) <= value;\n        var belowMax = !max || value <= getDate(max);\n        return aboveMin && belowMax;\n    };\n    MonthViewService.prototype.isInSameView = function (candidate, value) {\n        return durationInMonths(candidate, value) === 0;\n    };\n    MonthViewService.prototype.isRangeStart = function (value) {\n        return !value.getMonth();\n    };\n    MonthViewService.prototype.move = function (value, action) {\n        var modifier = ACTIONS[action];\n        if (!modifier) {\n            return value;\n        }\n        return modifier(value);\n    };\n    MonthViewService.prototype.cellTitle = function (value) {\n        return this.intl.formatDate(value, 'D');\n    };\n    MonthViewService.prototype.navigationTitle = function (value) {\n        if (!value) {\n            return '';\n        }\n        return this.isRangeStart(value) ? value.getFullYear().toString() : this.abbrMonthNames()[value.getMonth()];\n    };\n    MonthViewService.prototype.title = function (current) {\n        return this.wideMonthNames()[current.getMonth()] + \" \" + current.getFullYear();\n    };\n    MonthViewService.prototype.rowLength = function (prependCell) {\n        return CELLS_LENGTH + (prependCell ? 1 : 0);\n    };\n    MonthViewService.prototype.skip = function (value, min) {\n        return durationInMonths(min, value);\n    };\n    MonthViewService.prototype.total = function (min, max) {\n        return durationInMonths(min, max) + 1;\n    };\n    MonthViewService.prototype.value = function (current) {\n        return current ? current.getDate().toString() : '';\n    };\n    MonthViewService.prototype.viewDate = function (date, max, border) {\n        if (border === void 0) { border = 1; }\n        var renderTwoViews = durationInMonths(date, max) < border;\n        return renderTwoViews ? addMonths(date, -1) : date;\n    };\n    MonthViewService.prototype.isWeekend = function (date) {\n        var day = date.getDay();\n        return day === SATURDAY || day === SUNDAY;\n    };\n    MonthViewService.prototype.abbrMonthNames = function () {\n        return this.intl.dateFormatNames({ nameType: 'abbreviated', type: 'months' });\n    };\n    MonthViewService.prototype.normalize = function (cellDate, min, max) {\n        if (cellDate < min && this.isEqual(cellDate, min)) {\n            return getDate(min);\n        }\n        if (cellDate > max && this.isEqual(cellDate, max)) {\n            return getDate(max);\n        }\n        return cellDate;\n    };\n    MonthViewService.prototype.wideMonthNames = function () {\n        return this.intl.dateFormatNames({ nameType: 'wide', type: 'months' });\n    };\n    return MonthViewService;\n}());\nexport { MonthViewService };\n","var _a;\nimport { addMonths, addYears, createDate, durationInYears, firstMonthOfYear, lastMonthOfYear } from '@progress/kendo-date-math';\nimport { Action } from '../models/NavigationAction';\nimport { getToday, isInRange, isInSelectionRange, range } from '../../utils';\nimport { EMPTY_SELECTIONRANGE } from '../models/SelectionRange';\nimport { cloneDate } from '@progress/kendo-date-math';\nvar EMPTY_DATA = [[]];\nvar CELLS_LENGTH = 4;\nvar ROWS_LENGTH = 3;\nvar upStep = function (month) {\n    if (month > 4) {\n        return -5;\n    }\n    if (month < 2) {\n        return -2;\n    }\n    return -7;\n};\nvar downStep = function (month) {\n    if (month < 7) {\n        return 5;\n    }\n    if (month < 10) {\n        return 7;\n    }\n    return 2;\n};\nvar ACTIONS = (_a = {},\n    _a[Action.Left] = function (date) { return addMonths(date, -1); },\n    _a[Action.Up] = function (date) { return addMonths(date, upStep(date.getMonth())); },\n    _a[Action.Right] = function (date) { return addMonths(date, 1); },\n    _a[Action.Down] = function (date) { return addMonths(date, downStep(date.getMonth())); },\n    _a[Action.PrevView] = function (date) { return addYears(date, -1); },\n    _a[Action.NextView] = function (date) { return addYears(date, 1); },\n    _a[Action.FirstInView] = function (date) { return firstMonthOfYear(date); },\n    _a[Action.LastInView] = function (date) { return lastMonthOfYear(date); },\n    _a);\n/**\n * @hidden\n */\nvar YearViewService = /** @class */ (function () {\n    function YearViewService(intl) {\n        this._intl = intl;\n    }\n    YearViewService.prototype.addToDate = function (min, skip) {\n        return addYears(min, skip);\n    };\n    YearViewService.prototype.datesList = function (start, count) {\n        return range(0, count).map(function (i) { return addYears(start, i); });\n    };\n    YearViewService.prototype.data = function (options) {\n        var _this = this;\n        var cellUID = options.cellUID, focusedDate = options.focusedDate, isActiveView = options.isActiveView, max = options.max, min = options.min, selectedDate = options.selectedDate, _a = options.selectionRange, selectionRange = _a === void 0 ? EMPTY_SELECTIONRANGE : _a, viewDate = options.viewDate;\n        if (!viewDate) {\n            return EMPTY_DATA;\n        }\n        var months = this.abbrMonthNames();\n        var firstDate = firstMonthOfYear(viewDate);\n        var lastDate = lastMonthOfYear(viewDate);\n        var currentYear = firstDate.getFullYear();\n        var cells = range(0, CELLS_LENGTH);\n        var today = getToday();\n        return range(0, ROWS_LENGTH).map(function (rowOffset) {\n            var baseDate = addMonths(firstDate, rowOffset * CELLS_LENGTH);\n            return cells.map(function (cellOffset) {\n                var cellDate = _this.normalize(addMonths(baseDate, cellOffset), min, max);\n                var changedYear = currentYear < cellDate.getFullYear();\n                if (changedYear) {\n                    return null;\n                }\n                var isRangeStart = _this.isEqual(cellDate, selectionRange.start);\n                var isRangeEnd = _this.isEqual(cellDate, selectionRange.end);\n                var isInMiddle = !isRangeStart && !isRangeEnd;\n                var isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n                var isSelected = isActiveView && (!Array.isArray(selectedDate)\n                    ? isInRange(selectedDate, min, max) && _this.isEqual(cellDate, selectedDate)\n                    : _this.isSelectedFromArray(cellDate, selectedDate, min, max));\n                return {\n                    formattedValue: months[cellDate.getMonth()],\n                    id: \"\" + cellUID + cellDate.getTime(),\n                    isFocused: _this.isEqual(cellDate, focusedDate),\n                    isSelected: isSelected,\n                    isInRange: isInRange(cellDate, min, max),\n                    isWeekend: false,\n                    isRangeStart: isRangeStart,\n                    isRangeMid: isRangeMid,\n                    isRangeEnd: isRangeEnd,\n                    isRangeSplitEnd: isRangeMid && _this.isEqual(cellDate, lastDate),\n                    isRangeSplitStart: isRangeMid && _this.isEqual(cellDate, firstDate),\n                    isToday: _this.isEqual(cellDate, today),\n                    title: _this.cellTitle(cellDate),\n                    value: cellDate\n                };\n            });\n        });\n    };\n    YearViewService.prototype.isSelectedFromArray = function (candidate, dates, min, max) {\n        var _this = this;\n        var result = false;\n        dates.forEach(function (date) {\n            if (isInRange(candidate, min, max) && _this.isEqual(candidate, date)) {\n                result = true;\n            }\n        });\n        return result;\n    };\n    YearViewService.prototype.isEqual = function (candidate, expected) {\n        if (!candidate || !expected) {\n            return false;\n        }\n        return candidate.getFullYear() === expected.getFullYear() &&\n            candidate.getMonth() === expected.getMonth();\n    };\n    YearViewService.prototype.isInArray = function (date, dates) {\n        if (!dates.length) {\n            return false;\n        }\n        var year = date.getFullYear();\n        return dates[0].getFullYear() <= year && year <= dates[dates.length - 1].getFullYear();\n    };\n    YearViewService.prototype.isInRange = function (candidate, min, max) {\n        var candidateValue = createDate(candidate.getFullYear(), candidate.getMonth(), 1);\n        var aboveMin = !min || createDate(min.getFullYear(), min.getMonth(), 1) <= candidateValue;\n        var belowMax = !max || candidateValue <= createDate(max.getFullYear(), max.getMonth(), 1);\n        return aboveMin && belowMax;\n    };\n    YearViewService.prototype.isInSameView = function (candidate, value) {\n        return durationInYears(candidate, value) === 0;\n    };\n    YearViewService.prototype.isRangeStart = function (value) {\n        return value.getFullYear() % 10 === 0;\n    };\n    YearViewService.prototype.move = function (value, action) {\n        var modifier = ACTIONS[action];\n        if (!modifier) {\n            return value;\n        }\n        return modifier(value);\n    };\n    YearViewService.prototype.cellTitle = function (value) {\n        return value.getFullYear() + \" \" + this.value(value);\n    };\n    YearViewService.prototype.navigationTitle = function (value) {\n        return this.title(value);\n    };\n    YearViewService.prototype.title = function (current) {\n        return current ? current.getFullYear().toString() : '';\n    };\n    YearViewService.prototype.rowLength = function (_) {\n        return CELLS_LENGTH;\n    };\n    YearViewService.prototype.skip = function (value, min) {\n        return durationInYears(min, value);\n    };\n    YearViewService.prototype.total = function (min, max) {\n        return durationInYears(min, max) + 1;\n    };\n    YearViewService.prototype.value = function (current) {\n        return current ? this.abbrMonthNames()[current.getMonth()] : '';\n    };\n    YearViewService.prototype.viewDate = function (date, max, border) {\n        if (border === void 0) { border = 1; }\n        var renderTwoViews = durationInYears(date, max) < border;\n        return renderTwoViews ? addYears(date, -1) : date;\n    };\n    YearViewService.prototype.abbrMonthNames = function () {\n        return this._intl.dateFormatNames({ nameType: 'abbreviated', type: 'months' });\n    };\n    YearViewService.prototype.normalize = function (cellDate, min, max) {\n        if (cellDate < min && this.isEqual(cellDate, min)) {\n            return cloneDate(min);\n        }\n        if (cellDate > max && this.isEqual(cellDate, max)) {\n            return cloneDate(max);\n        }\n        return cellDate;\n    };\n    return YearViewService;\n}());\nexport { YearViewService };\n","var _a;\nimport { CenturyViewService } from './CenturyViewService';\nimport { DecadeViewService } from './DecadeViewService';\nimport { MonthViewService } from './MonthViewService';\nimport { YearViewService } from './YearViewService';\nimport { CalendarViewEnum } from '../models/CalendarViewEnum';\nvar services = (_a = {},\n    _a[CalendarViewEnum.month] = MonthViewService,\n    _a[CalendarViewEnum.year] = YearViewService,\n    _a[CalendarViewEnum.decade] = DecadeViewService,\n    _a[CalendarViewEnum.century] = CenturyViewService,\n    _a);\nvar viewOffset = function (view, offset) {\n    var candidate = CalendarViewEnum[CalendarViewEnum[view + offset]];\n    return candidate !== undefined ? candidate : view;\n};\n/**\n * @hidden\n */\nvar BusViewService = /** @class */ (function () {\n    function BusViewService(onViewChanged) {\n        this.bottom = CalendarViewEnum.month;\n        this.top = CalendarViewEnum.century;\n        this.onViewChanged = onViewChanged;\n    }\n    BusViewService.prototype.configure = function (bottom, top) {\n        this.bottom = bottom;\n        this.top = top;\n    };\n    BusViewService.prototype.service = function (view, intl) {\n        return new services[\"\" + view](intl);\n    };\n    BusViewService.prototype.moveDown = function (view, event) {\n        this.move(view, -1, event);\n    };\n    BusViewService.prototype.moveUp = function (view, event) {\n        this.move(view, 1, event);\n    };\n    BusViewService.prototype.moveToBottom = function (activeView) {\n        if (activeView === this.bottom) {\n            return;\n        }\n        this.onViewChanged({ view: this.bottom });\n    };\n    BusViewService.prototype.canMoveDown = function (view) {\n        return this.bottom < view;\n    };\n    BusViewService.prototype.canMoveUp = function (view) {\n        return view < this.top;\n    };\n    BusViewService.prototype.clamp = function (view) {\n        if (view < this.bottom) {\n            return this.bottom;\n        }\n        if (view > this.top) {\n            return this.top;\n        }\n        return view;\n    };\n    BusViewService.prototype.move = function (view, offset, event) {\n        var candidate = this.clamp(viewOffset(view, offset));\n        if (candidate === view) {\n            return;\n        }\n        this.onViewChanged({ view: candidate }, event);\n    };\n    return BusViewService;\n}());\nexport { BusViewService };\n","import { normalizeYear } from './normalize-year';\n/**\n * A function that returns a `Date` object of the last year in a decade.\n *\n * @param date - The start date value.\n * @returns - The last year in a decade.\n *\n * @example\n * ```ts-no-run\n * lastYearOfDecade(new Date(2017, 0, 1)); // 2019-1-1\n * lastYearOfDecade(new Date(2007, 10, 22)); // 2009-11-22\n * lastYearOfDecade(new Date(2026, 0, 1)); // 2029-1-1\n * ```\n */\nexport var lastYearOfDecade = function (value) { return (normalizeYear(value, function (y) { return y - (y % 10) + 9; })); };\n","import { firstYearOfDecade } from './first-year-of-decade';\n/**\n * A function that calculates duration in decades between two `Date` objects.\n *\n * @param start - The start date value.\n * @param end - The end date value.\n * @returns - The duration in months.\n *\n * @example\n * ```ts-no-run\n * durationInDecades(new Date(2016, 0, 1), new Date(2136, 0, 1)); // 12\n * durationInDecades(new Date(2016, 0, 1), new Date(2016, 0, 1)); // 0\n * ```\n */\nexport var durationInDecades = function (start, end) { return ((firstYearOfDecade(end).getFullYear() - firstYearOfDecade(start).getFullYear()) / 10); };\n","import { addDays } from './add-days';\n/**\n * A function that adds and subtracts weeks from a Date object.\n *\n * @param date - The initial date value.\n * @param offset - The number of weeks to add/subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addWeeks(new Date(2016, 5, 1), 3); // 2016-6-22\n * addWeeks(new Date(2016, 5, 1), -3); // 2015-5-11\n * ```\n */\nexport var addWeeks = function (date, offset) {\n    return addDays(date, offset * 7);\n};\n","import { createDate } from './create-date';\n/**\n * A function which returns the first date of the month.\n *\n * @param date - The initial date.\n * @returns - The first date of the initial date month.\n *\n * @example\n * ```ts-no-run\n * firstDayOfMonth(new Date(2016, 0, 15)); // 2016-01-01\n * ```\n */\nexport var firstDayOfMonth = function (date) {\n    return createDate(date.getFullYear(), date.getMonth(), 1, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n};\n","/**\n * A function that calculates duration in months between two `Date` objects.\n *\n * @param start - The start date value.\n * @param end - The end date value.\n * @returns - The duration in months.\n *\n * @example\n * ```ts-no-run\n * durationInMonths(new Date(2016, 0, 1), new Date(2017, 0, 1)); // 12\n * durationInMonths(new Date(2016, 6, 1), new Date(2017, 0, 1)); // 6\n * durationInMonths(new Date(2016, 0, 1), new Date(2016, 0, 1)); // 0\n * ```\n */\nexport var durationInMonths = function (start, end) { return (((end.getFullYear() - start.getFullYear())) * 12 + (end.getMonth() - start.getMonth())); };\n","import { addMonths } from './add-months';\nimport { createDate } from './create-date';\nimport { lastDayOfMonth } from './last-day-of-month';\n/**\n * @hidden\n */\nexport var setMonth = function (value, month) {\n    var day = value.getDate();\n    var candidate = createDate(value.getFullYear(), month, day, value.getHours(), value.getMinutes(), value.getSeconds(), value.getMilliseconds());\n    return candidate.getDate() === day ? candidate : lastDayOfMonth(addMonths(candidate, -1));\n};\n","import { setMonth } from './set-month';\n/**\n * A function that returns a `Date` object of the first month in a year.\n *\n * @param date - The start date value.\n * @returns - The first month in a year.\n *\n * @example\n * ```ts-no-run\n * firstMonthOfYear(new Date(2017, 11, 1)); // 2017-1-1\n * firstMonthOfYear(new Date(2017, 0, 1)); // 2017-1-1\n * ```\n */\nexport var firstMonthOfYear = function (value) { return setMonth(value, 0); };\n","import { setMonth } from './set-month';\n/**\n * A function that returns a `Date` object of the last month in a year.\n *\n * @param date - The start date value.\n * @returns - The last month in a year.\n *\n * @example\n * ```ts-no-run\n * lastMonthOfYear(new Date(2017, 5, 3)); // 2017-12-3\n * lastMonthOfYear(new Date(2017, 11, 3)); // 2017-12-3\n * ```\n */\nexport var lastMonthOfYear = function (value) { return setMonth(value, 11); };\n","/**\n * A function that calculates duration in years between two `Date` objects.\n *\n * @param start - The start date value.\n * @param end - The end date value.\n * @returns - The duration in years.\n *\n * @example\n * ```ts-no-run\n * durationInYears(new Date(2016, 0, 1), new Date(2028, 0, 1)); // 12\n * durationInYears(new Date(2016, 0, 1), new Date(2022, 0, 1)); // 6\n * durationInYears(new Date(2016, 0, 1), new Date(2016, 0, 1)); // 0\n * ```\n */\nexport var durationInYears = function (start, end) { return (end.getFullYear() - start.getFullYear()); };\n","import { Action } from '../models/NavigationAction';\nvar KEY_TO_ACTION = {\n    '33': Action.PrevView,\n    '34': Action.NextView,\n    '35': Action.LastInView,\n    '36': Action.FirstInView,\n    '37': Action.Left,\n    '38': Action.Up,\n    '39': Action.Right,\n    '40': Action.Down,\n    'meta+38': Action.UpperView,\n    'meta+40': Action.LowerView\n};\n/**\n * @hidden\n */\nvar NavigationService = /** @class */ (function () {\n    function NavigationService(bus) {\n        this.bus = bus;\n    }\n    NavigationService.prototype.action = function (event) {\n        var action = \"\" + (event.ctrlKey || event.metaKey ? 'meta+' : '') + event.keyCode;\n        return KEY_TO_ACTION[action];\n    };\n    NavigationService.prototype.move = function (value, action, activeView, service, event) {\n        if (!service) {\n            return value;\n        }\n        if (action === Action.UpperView && this.bus.canMoveUp(activeView)) {\n            this.bus.moveUp(activeView, event);\n            return value;\n        }\n        if (action === Action.LowerView && this.bus.canMoveDown(activeView)) {\n            this.bus.moveDown(activeView, event);\n            return value;\n        }\n        return service.move(value, action);\n    };\n    return NavigationService;\n}());\nexport { NavigationService };\n","var divideByMagnitude = function (magnitude) { return function (x) { return Math.floor(x / magnitude); }; };\nvar powerByMagnitude = function (magnitude) { return function (x) { return x * magnitude; }; };\n/**\n * @hidden\n */\nvar ScrollSyncService = /** @class */ (function () {\n    function ScrollSyncService(dom) {\n        this.dom = dom;\n        this.monthScrolled = false;\n        this.navScrolled = false;\n    }\n    ScrollSyncService.prototype.configure = function (activeView) {\n        var magnitude = Math.max(this.dom.viewHeight(activeView) / this.dom.navigationItemHeight, 1);\n        this.divideByMagnitude = divideByMagnitude(magnitude);\n        this.powerByMagnitude = powerByMagnitude(magnitude);\n    };\n    ScrollSyncService.prototype.sync = function (navigator, view, e) {\n        if (!navigator || !view) {\n            return;\n        }\n        this.navigator = navigator;\n        this.view = view;\n        if (e.target === this.navigator.element) {\n            if (this.monthScrolled) {\n                this.monthScrolled = false;\n                return;\n            }\n            this.navScrolled = true;\n            this.scrollSiblingOf(this.navigator.element);\n        }\n        if (e.target === this.view.element) {\n            if (this.navScrolled) {\n                this.navScrolled = false;\n                return;\n            }\n            this.monthScrolled = true;\n            this.scrollSiblingOf(this.view.element);\n        }\n    };\n    ScrollSyncService.prototype.scrollSiblingOf = function (scrolledElement) {\n        var component = this.siblingComponent(scrolledElement);\n        var scrollTop = this.calculateScroll(component, scrolledElement.scrollTop);\n        component.scrollTo(scrollTop);\n    };\n    ScrollSyncService.prototype.siblingComponent = function (scrollableElement) {\n        return this.navigator.element === scrollableElement ? this.view : this.navigator;\n    };\n    ScrollSyncService.prototype.calculateScroll = function (component, scrollTop) {\n        var modifier = component === this.navigator ? this.divideByMagnitude : this.powerByMagnitude;\n        return modifier(scrollTop);\n    };\n    return ScrollSyncService;\n}());\nexport { ScrollSyncService };\n","var __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 __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};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, guid, Keys, validatePackage, withPropsContext, createPropsContext } from '@progress/kendo-react-common';\nimport { cloneDate, getDate, isEqualDate } from '@progress/kendo-date-math';\nimport { provideIntlService, registerForIntl } from '@progress/kendo-react-intl';\nimport { packageMetadata } from '../../package-metadata';\nimport { ViewList } from './ViewList';\nimport { Navigation } from './Navigation';\nimport { MIN_DATE, MAX_DATE } from '../../defaults';\nimport { CalendarViewEnum } from '../models';\nimport { getToday, dateInRange, isInRange, viewInRange } from '../../utils';\nimport { BusViewService, DOMService, ScrollSyncService, NavigationService } from '../services';\nvar virtualizationProp = function (x) { return x ? x.virtualization : null; };\nvar calculateValue = function (min, max, stateValue, propValue) {\n    if (min === void 0) { min = CalendarWithoutContext.defaultProps.min; }\n    if (max === void 0) { max = CalendarWithoutContext.defaultProps.max; }\n    return propValue !== undefined\n        ? propValue !== null && isInRange(getDate(propValue), min, max)\n            ? propValue\n            : null\n        : stateValue !== null && isInRange(getDate(stateValue), min, max)\n            ? stateValue\n            : null;\n};\n/** @hidden */\nvar CalendarWithoutContext = /** @class */ (function (_super) {\n    __extends(CalendarWithoutContext, _super);\n    function CalendarWithoutContext(props) {\n        var _this = _super.call(this, props) || this;\n        _this.cellUID = guid();\n        _this.id = guid();\n        _this.isActive = false;\n        _this.didNavigationChange = false;\n        /**\n         * @hidden\n         */\n        _this.focus = function () {\n            if (_this._element) {\n                _this._element.focus();\n            }\n        };\n        _this.shouldScroll = function () { return _this.didNavigationChange; };\n        _this.handleScroll = function (event) {\n            if (!_this.scrollSyncService) {\n                return;\n            }\n            _this.scrollSyncService.sync(virtualizationProp(_this.Navigation), virtualizationProp(_this.calendarViewList), event);\n        };\n        _this.handleNavigationChange = function (event) {\n            if (_this.props.disabled) {\n                return;\n            }\n            _this.didNavigationChange = true;\n            var focusedDate = cloneDate(event.value);\n            _this.setState({ focusedDate: focusedDate });\n        };\n        _this.handleViewChange = function (_a) {\n            var view = _a.view;\n            _this.scrollSyncService.configure(view);\n            _this.setState({ activeView: view });\n        };\n        _this.handleDateChange = function (event) {\n            var value = cloneDate(event.value);\n            var focusedDate = cloneDate(event.value);\n            var canNavigateDown = _this.bus.canMoveDown(_this.state.activeView);\n            if (_this.props.disabled) {\n                return;\n            }\n            if (canNavigateDown) {\n                if (event.isTodayClick) {\n                    _this.bus.moveToBottom(_this.state.activeView);\n                }\n                else {\n                    _this.bus.moveDown(_this.state.activeView, event.syntheticEvent);\n                    _this.setState({ focusedDate: focusedDate });\n                    return;\n                }\n            }\n            _this.setState({ value: value, focusedDate: focusedDate });\n            _this.valueDuringOnChange = value;\n            var onChange = _this.props.onChange;\n            if (onChange) {\n                var args = {\n                    syntheticEvent: event.syntheticEvent,\n                    nativeEvent: event.nativeEvent,\n                    value: value,\n                    target: _this\n                };\n                onChange.call(undefined, args);\n            }\n            _this.valueDuringOnChange = undefined;\n        };\n        _this.handleFocus = function (event) {\n            _this.isActive = true;\n            if (!_this.calendarViewList) {\n                return;\n            }\n            _this.calendarViewList.focusActiveDate();\n            var onFocus = _this.props.onFocus;\n            if (onFocus) {\n                onFocus.call(undefined, event);\n            }\n        };\n        _this.handleBlur = function (event) {\n            _this.isActive = false;\n            if (!_this.calendarViewList) {\n                return;\n            }\n            _this.calendarViewList.blurActiveDate();\n            var onBlur = _this.props.onBlur;\n            if (onBlur) {\n                onBlur.call(undefined, event);\n            }\n        };\n        _this.handleKeyDown = function (event) {\n            var keyCode = event.keyCode;\n            if (keyCode === Keys.enter) {\n                if (_this.value !== null\n                    && isEqualDate(_this.focusedDate, _this.value)) {\n                    var viewDate = dateInRange(_this.focusedDate, _this.min, _this.max);\n                    virtualizationProp(_this.calendarViewList).scrollToIndex(_this.service.skip(viewDate, _this.min));\n                }\n                var args = {\n                    syntheticEvent: event,\n                    nativeEvent: event.nativeEvent,\n                    value: _this.focusedDate,\n                    target: _this\n                };\n                _this.handleDateChange.call(undefined, args);\n            }\n            else {\n                var candidate = dateInRange(_this.navigation.move(_this.focusedDate, _this.navigation.action(event), _this.state.activeView, _this.service, event), _this.min, _this.max);\n                if (isEqualDate(_this.focusedDate, candidate)) {\n                    return;\n                }\n                _this.setState({ focusedDate: candidate });\n            }\n            event.preventDefault();\n        };\n        _this.handleMouseDown = function (event) {\n            event.preventDefault();\n        };\n        _this.handleClick = function (_) {\n            if (_this._element) {\n                _this._element.focus({ preventScroll: true });\n            }\n        };\n        validatePackage(packageMetadata);\n        var value = calculateValue(_this.min, _this.max, _this.props.defaultValue || CalendarWithoutContext.defaultProps.defaultValue, _this.props.value);\n        _this.state = {\n            value: value,\n            activeView: viewInRange(CalendarViewEnum[props.defaultActiveView], _this.bottomView, _this.topView),\n            focusedDate: dateInRange(props.focusedDate\n                || value\n                || getToday(), _this.min, _this.max)\n        };\n        _this.dom = new DOMService();\n        _this.bus = new BusViewService(_this.handleViewChange);\n        _this.navigation = new NavigationService(_this.bus);\n        _this.oldValue = value;\n        return _this;\n    }\n    Object.defineProperty(CalendarWithoutContext.prototype, \"element\", {\n        /**\n         * Gets the wrapping element of the Calendar.\n         */\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(CalendarWithoutContext.prototype, \"value\", {\n        /**\n         * Gets the value of the Calendar.\n         */\n        get: function () {\n            return this.valueDuringOnChange !== undefined\n                ? this.valueDuringOnChange\n                : this.props.value !== undefined\n                    ? this.props.value\n                    : this.state.value;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(CalendarWithoutContext.prototype, \"min\", {\n        get: function () {\n            return getDate(this.props.min !== undefined\n                ? this.props.min\n                : CalendarWithoutContext.defaultProps.min);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(CalendarWithoutContext.prototype, \"max\", {\n        get: function () {\n            return getDate(this.props.max !== undefined\n                ? this.props.max\n                : CalendarWithoutContext.defaultProps.max);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(CalendarWithoutContext.prototype, \"bottomView\", {\n        get: function () {\n            return CalendarViewEnum[this.props.bottomView !== undefined\n                ? this.props.bottomView\n                : CalendarWithoutContext.defaultProps.bottomView];\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(CalendarWithoutContext.prototype, \"topView\", {\n        get: function () {\n            return CalendarViewEnum[this.props.topView !== undefined\n                ? this.props.topView\n                : CalendarWithoutContext.defaultProps.topView];\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    CalendarWithoutContext.prototype.componentDidMount = function () {\n        var _this = this;\n        // Async calculation of height to avoid animation cancellation\n        Promise.resolve().then(function () {\n            if (!_this._element) {\n                return;\n            }\n            _this.dom.calculateHeights(_this._element);\n            _this.scrollSyncService = new ScrollSyncService(_this.dom);\n            _this.scrollSyncService.configure(_this.state.activeView);\n            _this.forceUpdate();\n        });\n    };\n    /**\n     * @hidden\n     */\n    CalendarWithoutContext.prototype.componentDidUpdate = function (_, prevState) {\n        if (prevState.activeView !== this.state.activeView) {\n            this.scrollSyncService.configure(this.state.activeView);\n        }\n        if (this.calendarViewList) {\n            (this.isActive ? this.calendarViewList.focusActiveDate : this.calendarViewList.blurActiveDate)();\n        }\n        this.didNavigationChange = false;\n        this.oldValue = this.value;\n    };\n    /**\n     * @hidden\n     */\n    CalendarWithoutContext.prototype.render = function () {\n        var _this = this;\n        if (this.props._ref) {\n            this.props._ref(this);\n        }\n        var didValueChange = this.value !== null && this.oldValue !== null\n            ? !isEqualDate(this.value, this.oldValue)\n            : this.value !== this.oldValue;\n        var activeView = viewInRange(this.state.activeView, CalendarViewEnum[this.props.bottomView !== undefined\n            ? this.props.bottomView\n            : CalendarWithoutContext.defaultProps.bottomView], CalendarViewEnum[this.props.topView !== undefined\n            ? this.props.topView\n            : CalendarWithoutContext.defaultProps.topView]);\n        var value = calculateValue(this.min, this.max, this.value, this.value);\n        var sanitizedValue = value ? getDate(value) : null;\n        this.focusedDate = getDate(dateInRange(didValueChange && value !== null\n            ? value\n            : this.state.focusedDate, this.min, this.max));\n        this.intl = provideIntlService(this);\n        this.bus.configure(this.bottomView, this.topView);\n        this.service = this.bus.service(activeView, this.intl);\n        var rootClassNames = classNames('k-widget k-calendar k-calendar-infinite', {\n            'k-state-disabled': this.props.disabled,\n            'k-week-number': this.props.weekNumber\n        }, this.props.className);\n        var aria = {\n            'aria-disabled': this.props.disabled,\n            'aria-activedescendant': this.cellUID + this.focusedDate.getTime()\n        };\n        var calendarBody = [this.props.navigation && (React.createElement(Navigation, { key: 0, ref: function (el) { _this.Navigation = el; }, activeView: this.state.activeView, focusedDate: this.focusedDate, min: this.min, max: this.max, onScroll: this.handleScroll, onChange: this.handleNavigationChange, service: this.service, dom: this.dom, navigationItem: this.props.navigationItem })), (React.createElement(ViewList, { key: 1, ref: function (el) { _this.calendarViewList = el; }, activeView: this.state.activeView, focusedDate: this.focusedDate, min: this.min, max: this.max, bus: this.bus, shouldScroll: this.shouldScroll, onScroll: this.handleScroll, service: this.service, cell: this.props.cell, weekCell: this.props.weekCell, dom: this.dom, smoothScroll: this.props.smoothScroll, showWeekNumbers: this.props.weekNumber, onChange: this.handleDateChange, value: sanitizedValue, cellUID: this.cellUID, headerTitle: this.props.headerTitle }))];\n        return (React.createElement(\"div\", __assign({}, aria, { ref: function (el) { _this._element = el; }, className: rootClassNames, id: this.props.id || this.id, \"aria-labelledby\": this.props.ariaLabelledBy, \"aria-describedby\": this.props.ariaDescribedBy, role: \"grid\", tabIndex: !this.props.disabled ? this.props.tabIndex || 0 : undefined, onFocus: this.handleFocus, onBlur: this.handleBlur, onKeyDown: this.handleKeyDown, onMouseDown: this.handleMouseDown, onClick: this.handleClick }), calendarBody));\n    };\n    /**\n     * @hidden\n     */\n    CalendarWithoutContext.displayName = 'Calendar';\n    /**\n     * @hidden\n     */\n    CalendarWithoutContext.propTypes = {\n        className: PropTypes.string,\n        defaultActiveView: PropTypes.oneOf(['month', 'year', 'decade', 'century']),\n        defaultValue: PropTypes.instanceOf(Date),\n        disabled: PropTypes.bool,\n        focusedDate: PropTypes.instanceOf(Date),\n        id: PropTypes.string,\n        ariaLabelledBy: PropTypes.string,\n        ariaDescribedBy: PropTypes.string,\n        max: PropTypes.instanceOf(Date),\n        min: PropTypes.instanceOf(Date),\n        navigation: PropTypes.bool,\n        smoothScroll: PropTypes.bool,\n        onBlur: PropTypes.func,\n        onChange: PropTypes.func,\n        onFocus: PropTypes.func,\n        tabIndex: PropTypes.number,\n        value: PropTypes.instanceOf(Date),\n        weekNumber: PropTypes.bool,\n        topView: function (props, propName, componentName) {\n            var prop = props[propName];\n            var bottomView = props.bottomView;\n            if (prop && bottomView && CalendarViewEnum[prop] < CalendarViewEnum[bottomView]) {\n                return new Error(\"Invalid prop + \" + propName + \" suplied to \" + componentName + \".\\n                    \" + propName + \" can not be smaller than bottomView.\\n                    \");\n            }\n            return null;\n        },\n        bottomView: function (props, propName, componentName) {\n            var prop = props[propName];\n            var topView = props.topView;\n            if (prop && topView && CalendarViewEnum[prop] > CalendarViewEnum[topView]) {\n                return new Error(\"Invalid prop + \" + propName + \" suplied to \" + componentName + \".\\n                    \" + propName + \" can not be bigger than topView.\\n                    \");\n            }\n            return null;\n        }\n    };\n    /**\n     * @hidden\n     */\n    CalendarWithoutContext.defaultProps = {\n        disabled: false,\n        min: MIN_DATE,\n        max: MAX_DATE,\n        navigation: true,\n        defaultActiveView: 'month',\n        defaultValue: null,\n        smoothScroll: true,\n        topView: 'century',\n        bottomView: 'month'\n    };\n    return CalendarWithoutContext;\n}(React.Component));\nexport { CalendarWithoutContext };\n/**\n * Represents the PropsContext of the `Calendar` component.\n * Used for global configuration of all `Calendar` instances.\n *\n * For more information, refer to the [DateInputs Props Context]({% slug props-context_dateinputs %}) article.\n */\nexport var CalendarPropsContext = createPropsContext();\n/* eslint-disable @typescript-eslint/no-redeclare -- intentionally naming the component the same as the type */\n/**\n * Represents the KendoReact Calendar Component.\n *\n * Accepts properties of type [CalendarProps]({% slug api_dateinputs_calendarprops %}).\n * Obtaining the `ref` returns an object of type [CalendarHandle]({% slug api_dateinputs_calendarhandle %}).\n */\nexport var Calendar = withPropsContext(CalendarPropsContext, CalendarWithoutContext);\nCalendar.displayName = 'KendoReactCalendar';\nregisterForIntl(CalendarWithoutContext);\n","import * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * Represents the default `toggleButton` component rendered by the [KendoReact Scheduler DatePicker]({% slug overview_datepicker %}).\n */\nexport var ToggleButton = React.forwardRef(function (props, ref) {\n    var className = classNames('k-select', props.className);\n    return (React.createElement(\"a\", { ref: ref, id: props.id, role: \"button\", style: props.style, className: className, tabIndex: props.tabIndex, title: props.title, \"aria-label\": props.title, onMouseDown: props.onMouseDown, onClick: props.onClick, onMouseUp: props.onMouseUp }, props.children));\n});\n","import * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * Represents the default `pickerWrap` component rendered by the [KendoReact Scheduler DatePicker]({% slug overview_datepicker %}).\n */\nexport var PickerWrap = React.forwardRef(function (props, ref) {\n    var _ref = props._ref;\n    var element = React.useRef(null);\n    React.useImperativeHandle(ref, function () { return element.current; });\n    React.useImperativeHandle(_ref, function () { return element.current; });\n    var className = React.useMemo(function () { return classNames(props.className, 'k-picker-wrap'); }, [props.className]);\n    return (React.createElement(\"span\", { ref: element, id: props.id, style: props.style, className: className, tabIndex: props.tabIndex }, props.children));\n});\n","var __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};\nimport * as React from 'react';\nimport { FloatingLabel } from '@progress/kendo-react-labels';\n/**\n * @hidden\n */\nexport var usePickerFloatingLabel = function (dateInput) {\n    var _a = React.useState(false), show = _a[0], setShow = _a[1];\n    var syncText = function () {\n        if (dateInput.current) {\n            setShow(Boolean(dateInput.current.text));\n        }\n    };\n    React.useEffect(syncText);\n    return {\n        editorValue: show\n    };\n};\n/**\n * @hidden\n */\nexport var PickerFloatingLabel = function (props) {\n    var floatingLabelProps = usePickerFloatingLabel(props.dateInput);\n    return (React.createElement(FloatingLabel, __assign({}, props, floatingLabelProps)));\n};\n","var __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 __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};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { getDate, cloneDate } from '@progress/kendo-date-math';\nimport { classNames, guid, Keys, AsyncFocusBlur, createPropsContext, withPropsContext } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nimport { DateInput } from '../dateinput/DateInput';\nimport { Calendar } from '../calendar/components/Calendar';\nimport { MIN_DATE, MAX_DATE, setTime } from '../utils';\nimport { isInDateRange } from '../utils';\nimport { messages, toggleCalendar } from '../messages';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { ToggleButton } from './ToggleButton';\nimport { PickerWrap } from '../common/PickerWrap';\nimport { PickerFloatingLabel } from '../hooks/usePickerFloatingLabel';\n/** @hidden */\nvar DatePickerWithoutContext = /** @class */ (function (_super) {\n    __extends(DatePickerWithoutContext, _super);\n    function DatePickerWithoutContext(props) {\n        var _this = _super.call(this, props) || this;\n        _this._popupId = guid();\n        _this._element = null;\n        _this._wrapper = null;\n        _this._dateInput = React.createRef();\n        _this._calendar = null;\n        _this.shouldFocusDateInput = false;\n        /**\n         * @hidden\n         */\n        _this.focus = function () {\n            if (_this.dateInput) {\n                _this.dateInput.focus();\n            }\n        };\n        _this.setCalendarRef = function (calendar) {\n            _this._calendar = calendar;\n        };\n        _this.nextValue = function (nextProps, nextState) {\n            return nextProps.value !== undefined\n                ? nextProps.value\n                : nextState.value;\n        };\n        _this.nextShow = function (nextProps, nextState) {\n            return nextProps.show !== undefined\n                ? nextProps.show\n                : nextState.show;\n        };\n        _this.handleInputValueChange = function (event) {\n            _this.handleValueChange(event.value, event);\n        };\n        _this.handleCalendarValueChange = function (event) {\n            var value = _this.mergeTime(event.value);\n            _this.handleValueChange(value, event);\n        };\n        _this.handleValueChange = function (value, event) {\n            _this.setState({\n                value: cloneDate(value || undefined),\n                show: false\n            });\n            _this.valueDuringOnChange = value;\n            _this.showDuringOnChange = false;\n            _this.shouldFocusDateInput = true;\n            var onChange = _this.props.onChange;\n            if (onChange) {\n                onChange.call(undefined, {\n                    syntheticEvent: event.syntheticEvent,\n                    nativeEvent: event.nativeEvent,\n                    value: _this.value,\n                    show: _this.show,\n                    target: _this\n                });\n            }\n            _this.valueDuringOnChange = undefined;\n            _this.showDuringOnChange = undefined;\n        };\n        _this.handleFocus = function () {\n            _this.setState({ focused: true });\n        };\n        _this.handleBlur = function () {\n            _this.setState({ focused: false });\n            _this.setShow(false);\n        };\n        _this.handleIconClick = function () {\n            if (_this.props.disabled) {\n                return;\n            }\n            _this.shouldFocusDateInput = true;\n            _this.setShow(!_this.show);\n        };\n        _this.handleIconMouseDown = function (event) {\n            event.preventDefault();\n        };\n        _this.handleKeyDown = function (event) {\n            var altKey = event.altKey, keyCode = event.keyCode;\n            if (keyCode === Keys.esc) {\n                _this.shouldFocusDateInput = true;\n                _this.setShow(false);\n                return;\n            }\n            if (altKey && (keyCode === Keys.up || keyCode === Keys.down)) {\n                event.preventDefault();\n                event.stopPropagation();\n                _this.shouldFocusDateInput = keyCode === Keys.up;\n                _this.setShow(keyCode === Keys.down);\n            }\n        };\n        validatePackage(packageMetadata);\n        _this.state = {\n            value: _this.props.defaultValue || DatePickerWithoutContext.defaultProps.defaultValue,\n            show: _this.props.defaultShow || DatePickerWithoutContext.defaultProps.defaultShow,\n            focused: false\n        };\n        return _this;\n    }\n    Object.defineProperty(DatePickerWithoutContext.prototype, \"element\", {\n        /**\n         * Gets the wrapping element of the DatePickerWithoutContext.\n         */\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DatePickerWithoutContext.prototype, \"dateInput\", {\n        /**\n         * Gets the DateInput component inside the DatePicker component.\n         */\n        get: function () {\n            return this._dateInput.current;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DatePickerWithoutContext.prototype, \"calendar\", {\n        /**\n         * Gets the Calendar component inside the DatePicker component.\n         */\n        get: function () {\n            return this._calendar;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DatePickerWithoutContext.prototype, \"value\", {\n        /**\n         * Gets the value of the DatePickerWithoutContext.\n         */\n        get: function () {\n            var value = this.valueDuringOnChange !== undefined\n                ? this.valueDuringOnChange\n                : this.props.value !== undefined\n                    ? this.props.value\n                    : this.state.value;\n            return (value !== null) ? cloneDate(value) : null;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DatePickerWithoutContext.prototype, \"show\", {\n        /**\n         * Gets the popup state of the DatePickerWithoutContext.\n         */\n        get: function () {\n            return this.showDuringOnChange !== undefined\n                ? this.showDuringOnChange\n                : this.props.show !== undefined\n                    ? this.props.show\n                    : this.state.show;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DatePickerWithoutContext.prototype, \"name\", {\n        /**\n         * Gets the `name` property of the DatePickerWithoutContext.\n         */\n        get: function () {\n            return this.props.name;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DatePickerWithoutContext.prototype, \"min\", {\n        get: function () {\n            return this.props.min !== undefined\n                ? this.props.min\n                : DatePickerWithoutContext.defaultProps.min;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DatePickerWithoutContext.prototype, \"max\", {\n        get: function () {\n            return this.props.max !== undefined\n                ? this.props.max\n                : DatePickerWithoutContext.defaultProps.max;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DatePickerWithoutContext.prototype, \"dateInputComp\", {\n        get: function () {\n            return this.props.dateInput || DatePickerWithoutContext.defaultProps.dateInput;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DatePickerWithoutContext.prototype, \"toggleButtonComp\", {\n        get: function () {\n            return this.props.toggleButton || DatePickerWithoutContext.defaultProps.toggleButton;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DatePickerWithoutContext.prototype, \"calendarComp\", {\n        get: function () {\n            return this.props.calendar || DatePickerWithoutContext.defaultProps.calendar;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DatePickerWithoutContext.prototype, \"popupComp\", {\n        get: function () {\n            return this.props.popup || DatePickerWithoutContext.defaultProps.popup;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DatePickerWithoutContext.prototype, \"pickerWrapComp\", {\n        get: function () {\n            return this.props.pickerWrap || DatePickerWithoutContext.defaultProps.pickerWrap;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DatePickerWithoutContext.prototype, \"validity\", {\n        /**\n         * Represents the validity state into which the DatePicker is set.\n         */\n        get: function () {\n            var inRange = isInDateRange(this.value, this.min, this.max);\n            var customError = this.props.validationMessage !== undefined;\n            var isValid = (!this.required || this.value !== null) && inRange;\n            var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n            return {\n                customError: customError,\n                rangeOverflow: (this.value && this.max.getTime() < this.value.getTime()) || false,\n                rangeUnderflow: (this.value && this.value.getTime() < this.min.getTime()) || false,\n                valid: valid,\n                valueMissing: this.value === null\n            };\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DatePickerWithoutContext.prototype, \"validityStyles\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this.props.validityStyles !== undefined\n                ? this.props.validityStyles\n                : DatePickerWithoutContext.defaultProps.validityStyles;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DatePickerWithoutContext.prototype, \"required\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this.props.required !== undefined\n                ? this.props.required\n                : DatePickerWithoutContext.defaultProps.required;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    DatePickerWithoutContext.prototype.componentDidMount = function () {\n        if (this.show) {\n            // If defaultShow is true during the initial render, the popup is not aligned.\n            this.forceUpdate();\n        }\n    };\n    /**\n     * @hidden\n     */\n    DatePickerWithoutContext.prototype.componentDidUpdate = function () {\n        if (this._calendar && this._calendar.element && this.show && !this.prevShow) {\n            this._calendar.element.focus({ preventScroll: true });\n        }\n        if (this.dateInput\n            && this.dateInput.element\n            && !this.show\n            && this.shouldFocusDateInput) {\n            this.dateInput.element.focus({ preventScroll: true });\n        }\n        this.prevShow = this.show;\n        this.shouldFocusDateInput = false;\n    };\n    /**\n     * @hidden\n     */\n    DatePickerWithoutContext.prototype.componentWillUnmount = function () {\n        clearTimeout(this.nextTickId);\n    };\n    /**\n     * @hidden\n     */\n    DatePickerWithoutContext.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, disabled = _a.disabled, tabIndex = _a.tabIndex, title = _a.title, id = _a.id, format = _a.format, formatPlaceholder = _a.formatPlaceholder, min = _a.min, max = _a.max, weekNumber = _a.weekNumber, focusedDate = _a.focusedDate, className = _a.className, width = _a.width, name = _a.name, validationMessage = _a.validationMessage, required = _a.required, validityStyles = _a.validityStyles, ariaLabelledBy = _a.ariaLabelledBy, ariaDescribedBy = _a.ariaDescribedBy;\n        var _b = this.props.popupSettings, popupClass = _b.popupClass, otherPopupSettings = __rest(_b, [\"popupClass\"]);\n        var show = this.show;\n        var value = this.value;\n        var sanitizedValue = value && getDate(value);\n        var isValid = !this.validityStyles || this.validity.valid;\n        var rootClassName = classNames('k-widget k-datepicker', className);\n        var wrapperClassNames = classNames('k-picker-wrap', {\n            'k-state-invalid': !isValid,\n            'k-state-disabled': disabled,\n            'k-state-focused': this.state.focused\n        });\n        var popupClassNames = classNames('k-calendar-container k-group k-reset', popupClass);\n        var dateInputProps = {\n            disabled: disabled,\n            format: format,\n            formatPlaceholder: formatPlaceholder,\n            id: id,\n            ariaLabelledBy: ariaLabelledBy,\n            ariaDescribedBy: ariaDescribedBy,\n            max: max,\n            min: min,\n            name: name,\n            onChange: this.handleInputValueChange,\n            required: required,\n            tabIndex: !show ? tabIndex : -1,\n            title: title,\n            valid: this.validity.valid,\n            validationMessage: validationMessage,\n            validityStyles: validityStyles,\n            value: value,\n            label: undefined,\n            placeholder: !this.state.focused ? this.props.placeholder : null,\n            ariaHasPopup: true,\n            ariaExpanded: this.show\n        };\n        var popupProps = __assign({ show: show, anchor: this._wrapper || this._element, className: popupClassNames, id: this._popupId, anchorAlign: {\n                horizontal: 'left',\n                vertical: 'bottom'\n            }, popupAlign: {\n                horizontal: 'left',\n                vertical: 'top'\n            } }, otherPopupSettings);\n        var calendarProps = {\n            disabled: disabled,\n            value: sanitizedValue,\n            min: min,\n            max: max,\n            weekNumber: weekNumber,\n            focusedDate: focusedDate,\n            onChange: this.handleCalendarValueChange\n        };\n        var datepicker = (React.createElement(AsyncFocusBlur, { onFocus: this.handleFocus, onBlur: this.handleBlur, onSyncBlur: this.props.onBlur, onSyncFocus: this.props.onFocus }, function (_a) {\n            var onFocus = _a.onFocus, onBlur = _a.onBlur;\n            return (React.createElement(\"span\", { role: \"group\", \"aria-expanded\": _this.show, ref: function (span) { _this._element = span; }, className: rootClassName, onKeyDown: _this.handleKeyDown, style: { width: width }, onFocus: onFocus, onBlur: onBlur },\n                React.createElement(_this.pickerWrapComp, { _ref: function (span) { _this._wrapper = span; }, className: wrapperClassNames },\n                    React.createElement(_this.dateInputComp, __assign({ _ref: _this._dateInput }, dateInputProps)),\n                    React.createElement(_this.toggleButtonComp, { onMouseDown: _this.handleIconMouseDown, onClick: _this.handleIconClick, title: provideLocalizationService(_this)\n                            .toLanguageString(toggleCalendar, messages[toggleCalendar]), className: \"k-select\" },\n                        React.createElement(\"span\", { className: \"k-icon k-i-calendar\" }))),\n                React.createElement(_this.popupComp, __assign({}, popupProps),\n                    React.createElement(_this.calendarComp, __assign({ _ref: _this.setCalendarRef }, calendarProps)))));\n        }));\n        return this.props.label\n            ? (React.createElement(PickerFloatingLabel, { dateInput: this._dateInput, label: this.props.label, editorId: id, editorValid: isValid, editorDisabled: this.props.disabled, children: datepicker, style: { width: this.props.width } }))\n            : datepicker;\n    };\n    DatePickerWithoutContext.prototype.setShow = function (show) {\n        if (this.show === show) {\n            return;\n        }\n        this.setState({ show: show });\n    };\n    DatePickerWithoutContext.prototype.mergeTime = function (value) {\n        return this.value && value ? setTime(value, this.value) : value;\n    };\n    DatePickerWithoutContext.prototype.nextTick = function (f) {\n        // XXX: use window.setTimeout due to async focus/blur events in IE, and missing relatedTarget prop.\n        // XXX: https://github.com/facebook/react/issues/3751\n        // Handles multiple focus events happening at the same time.\n        clearTimeout(this.nextTickId);\n        this.nextTickId = window.setTimeout(function () { return f(); });\n    };\n    /**\n     * @hidden\n     */\n    DatePickerWithoutContext.displayName = 'DatePicker';\n    /**\n     * @hidden\n     */\n    DatePickerWithoutContext.propTypes = {\n        className: PropTypes.string,\n        defaultShow: PropTypes.bool,\n        defaultValue: PropTypes.instanceOf(Date),\n        disabled: PropTypes.bool,\n        focusedDate: PropTypes.instanceOf(Date),\n        format: PropTypes.oneOfType([\n            PropTypes.string,\n            PropTypes.shape({\n                skeleton: PropTypes.string,\n                pattern: PropTypes.string,\n                date: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n                time: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n                datetime: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n                era: PropTypes.oneOf(['narrow', 'short', 'long']),\n                year: PropTypes.oneOf(['numeric', '2-digit']),\n                month: PropTypes.oneOf(['numeric', '2-digit', 'narrow', 'short', 'long']),\n                day: PropTypes.oneOf(['numeric', '2-digit']),\n                weekday: PropTypes.oneOf(['narrow', 'short', 'long']),\n                hour: PropTypes.oneOf(['numeric', '2-digit']),\n                hour12: PropTypes.bool,\n                minute: PropTypes.oneOf(['numeric', '2-digit']),\n                second: PropTypes.oneOf(['numeric', '2-digit']),\n                timeZoneName: PropTypes.oneOf(['short', 'long'])\n            })\n        ]),\n        formatPlaceholder: PropTypes.oneOfType([\n            PropTypes.oneOf(['wide', 'narrow', 'short', 'formatPattern']),\n            PropTypes.shape({\n                year: PropTypes.string,\n                month: PropTypes.string,\n                day: PropTypes.string,\n                hour: PropTypes.string,\n                minute: PropTypes.string,\n                second: PropTypes.string\n            })\n        ]),\n        id: PropTypes.string,\n        ariaLabelledBy: PropTypes.string,\n        ariaDescribedBy: PropTypes.string,\n        min: PropTypes.instanceOf(Date),\n        max: PropTypes.instanceOf(Date),\n        name: PropTypes.string,\n        popupSettings: PropTypes.shape({\n            animate: PropTypes.bool,\n            appendTo: PropTypes.any,\n            popupClass: PropTypes.string\n        }),\n        show: PropTypes.bool,\n        tabIndex: PropTypes.number,\n        title: PropTypes.string,\n        value: PropTypes.instanceOf(Date),\n        weekNumber: PropTypes.bool,\n        width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n        validationMessage: PropTypes.string,\n        required: PropTypes.bool,\n        validate: PropTypes.bool,\n        valid: PropTypes.bool\n    };\n    /**\n     * @hidden\n     */\n    DatePickerWithoutContext.defaultProps = {\n        defaultShow: false,\n        defaultValue: null,\n        dateInput: DateInput,\n        calendar: Calendar,\n        toggleButton: ToggleButton,\n        popup: Popup,\n        pickerWrap: PickerWrap,\n        disabled: false,\n        format: 'd',\n        max: MAX_DATE,\n        min: MIN_DATE,\n        popupSettings: {},\n        tabIndex: 0,\n        weekNumber: false,\n        required: false,\n        validityStyles: true\n    };\n    return DatePickerWithoutContext;\n}(React.Component));\nexport { DatePickerWithoutContext };\n/**\n * Represents the PropsContext of the `DatePicker` component.\n * Used for global configuration of all `DatePicker` instances.\n *\n * For more information, refer to the [DateInputs Props Context]({% slug props-context_dateinputs %}) article.\n */\nexport var DatePickerPropsContext = createPropsContext();\n/* eslint-disable @typescript-eslint/no-redeclare */\n/**\n * Represents the KendoReact DatePicker Component.\n *\n * Accepts properties of type [DatePickerProps]({% slug api_dateinputs_datepickerprops %}).\n * Obtaining the `ref` returns an object of type [DatePickerHandle]({% slug api_dateinputs_datepickerhandle %}).\n */\nexport var DatePicker = withPropsContext(DatePickerPropsContext, DatePickerWithoutContext);\nDatePicker.displayName = 'KendoReactDatePicker';\nregisterForLocalization(DatePickerWithoutContext);\n","var __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})();\nimport * as React from 'react';\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\nimport { NumericTextBox } from '@progress/kendo-react-inputs';\nimport { DatePicker } from '@progress/kendo-react-dateinputs';\nimport { cellBoolDropdownChange, cellInputChange, cellOperatorChange } from '../filterCommon';\n/**\n * @hidden\n */\nvar GridColumnMenuFilterCell = /** @class */ (function (_super) {\n    __extends(GridColumnMenuFilterCell, _super);\n    function GridColumnMenuFilterCell(props) {\n        var _this = _super.call(this, props) || this;\n        _this.renderOperatorEditor = function () {\n            if (_this.props.filterType === 'boolean') {\n                return;\n            }\n            var value = _this.props.operators.find(function (item) { return item.operator === _this.props.operator; }) || null;\n            return (React.createElement(DropDownList, { value: value, onChange: _this.operatorChange, data: _this.props.operators, textField: \"text\" }));\n        };\n        _this.inputChange = _this.inputChange.bind(_this);\n        _this.operatorChange = _this.operatorChange.bind(_this);\n        _this.boolDropdownChange = _this.boolDropdownChange.bind(_this);\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    GridColumnMenuFilterCell.prototype.render = function () {\n        return (React.createElement(React.Fragment, null,\n            this.renderOperatorEditor(),\n            this.filterComponent(this.props.filterType, this.props.value, this.props.booleanValues)));\n    };\n    GridColumnMenuFilterCell.prototype.inputChange = function (value, e) {\n        cellInputChange(value, e, this.props);\n    };\n    GridColumnMenuFilterCell.prototype.operatorChange = function (event) {\n        cellOperatorChange(event, this.props.value, this.props.onChange);\n    };\n    GridColumnMenuFilterCell.prototype.boolDropdownChange = function (event) {\n        cellBoolDropdownChange(event, this.props.onChange);\n    };\n    GridColumnMenuFilterCell.prototype.filterComponent = function (filterType, value, booleanValues) {\n        var _this = this;\n        switch (filterType) {\n            case 'numeric':\n                return (React.createElement(NumericTextBox, { value: value, onChange: function (e) { _this.inputChange(e.value, e.syntheticEvent); }, rangeOnEnter: false }));\n            case 'date':\n                return (React.createElement(DatePicker, { value: value, onChange: function (e) { _this.inputChange(e.value, e.syntheticEvent); } }));\n            case 'boolean':\n                var noFilterSet_1 = function (filter) { return filter === null || filter === undefined; };\n                return (React.createElement(DropDownList, { onChange: this.boolDropdownChange, value: booleanValues.find(function (item) { return item.operator === (noFilterSet_1(value) ? '' : value); }), data: booleanValues, textField: \"text\" }));\n            default: return (React.createElement(\"input\", { className: \"k-textbox\", value: value || '', onChange: function (e) { _this.inputChange(e.target.value, e); } }));\n        }\n    };\n    return GridColumnMenuFilterCell;\n}(React.Component));\nexport { GridColumnMenuFilterCell };\n","var __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 __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};\nimport * as React from 'react';\nimport { GridColumnMenuFilterCell } from './GridColumnMenuFilterCell';\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\n/**\n * @hidden\n */\nvar GridColumnMenuFilterUI = /** @class */ (function (_super) {\n    __extends(GridColumnMenuFilterUI, _super);\n    function GridColumnMenuFilterUI() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    GridColumnMenuFilterUI.prototype.render = function () {\n        var _a = this.props, firstFilterProps = _a.firstFilterProps, hideSecondFilter = _a.hideSecondFilter, secondFilterProps = _a.secondFilterProps, logicData = _a.logicData, logicValue = _a.logicValue, onLogicChange = _a.onLogicChange;\n        return (React.createElement(React.Fragment, null,\n            React.createElement(GridColumnMenuFilterCell, __assign({}, firstFilterProps)),\n            !hideSecondFilter && (React.createElement(React.Fragment, null,\n                React.createElement(DropDownList, { data: logicData, value: logicValue, onChange: onLogicChange, className: 'k-filter-and', textField: \"text\" }),\n                React.createElement(GridColumnMenuFilterCell, __assign({}, secondFilterProps))))));\n    };\n    return GridColumnMenuFilterUI;\n}(React.Component));\nexport { GridColumnMenuFilterUI };\n","var __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 __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};\nimport * as React from 'react';\nimport { isCompositeFilterDescriptor } from '@progress/kendo-data-query';\nimport { GridColumnMenuItem } from './GridColumnMenuItem';\nimport { GridColumnMenuItemGroup } from './GridColumnMenuItemGroup';\nimport { GridColumnMenuItemContent } from './GridColumnMenuItemContent';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { operatorMap, getDefaultOperator, filterLogicList, defaultHideSecondFilter, booleanFilterValues, getFilterType, IsUnaryFilter } from '../filterCommon';\nimport { messages, filterClearButton, filterSubmitButton, filterTitle } from '../messages';\nimport { GridColumnMenuFilterUI } from './GridColumnMenuFilterUI';\n/**\n * @hidden\n */\nexport var rootFilterOrDefault = function (rootFilter) {\n    return (rootFilter || { filters: [], logic: 'and' });\n};\n/**\n * @hidden\n */\nexport var filterGroupByField = function (field, filter) {\n    var rootFilter = rootFilterOrDefault(filter);\n    var compositeFilters = rootFilter.filters\n        .filter(function (f) {\n        if (isCompositeFilterDescriptor(f)) {\n            return f.filters &&\n                f.filters.length &&\n                f.filters.length <= 2 &&\n                !f.filters.find(function (nf) { return isCompositeFilterDescriptor(nf) || nf.field !== field; });\n        }\n        return false;\n    });\n    return compositeFilters[0] || null;\n};\n/**\n * @example\n * ```jsx-no-run\n * class TextColumnMenu extends React.Component {\n *     render() {\n *         return (\n *         <div>\n *             <GridColumnMenuSort {...this.props} />\n *             <GridColumnMenuFilter {...this.props} />\n *         </div>);\n *     }\n * }\n *\n * class App extends React.PureComponent {\n *     constructor(props) {\n *         super(props);\n *\n *         this.state = this.createAppState({\n *             take: 10,\n *             skip: 0\n *         });\n *     }\n *\n *     createAppState(dataState) {\n *         return {\n *             result: process(products.slice(0), dataState),\n *             dataState: dataState\n *         };\n *     }\n *\n *     dataStateChange = (event) => {\n *         this.setState(this.createAppState(event.dataState));\n *     }\n *\n *     render() {\n *         return (\n *             <div>\n *                 <Grid\n *                     data={this.state.result}\n *                     {...this.state.dataState}\n *                     onDataStateChange={this.dataStateChange}\n *                     sortable={true}\n *                     pageable={true}\n *                 >\n *                     <Column field=\"ProductID\" title=\"Product ID\" />\n *                     <Column field=\"ProductName\" columnMenu={TextColumnMenu} />\n *                 </Grid>\n *                 <br />\n *             </div>\n *         );\n *     }\n * }\n *\n * ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nvar GridColumnMenuFilter = /** @class */ (function (_super) {\n    __extends(GridColumnMenuFilter, _super);\n    function GridColumnMenuFilter(props) {\n        var _this = _super.call(this, props) || this;\n        /**\n         * @hidden\n         */\n        _this.removeGroup = function (group, rootFilter) {\n            var filters = rootFilter.filters.slice();\n            var groupIndex = filters\n                .findIndex(function (f) { return f === group; });\n            if (groupIndex > -1) {\n                filters.splice(groupIndex, 1);\n            }\n            return __assign({}, rootFilter, { filters: filters });\n        };\n        /**\n         * @hidden\n         */\n        _this.insertGroup = function (group, rootFilter) {\n            return __assign({}, rootFilter, { filters: [\n                    group\n                ].concat(rootFilter.filters) });\n        };\n        /**\n         * @hidden\n         */\n        _this.isControlled = function () { return _this.props.expanded !== undefined; };\n        /**\n         * @hidden\n         */\n        _this.onFilterExpand = function () {\n            var isControlled = _this.isControlled();\n            var nextValue = !(isControlled ? _this.props.expanded : _this.state.expanded);\n            if (_this.props.onExpandChange) {\n                _this.props.onExpandChange(nextValue);\n            }\n            if (!isControlled) {\n                _this.setState({\n                    expanded: nextValue\n                });\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.firstFilterChange = function (event) {\n            _this.filterChange(0, event);\n        };\n        /**\n         * @hidden\n         */\n        _this.secondFilterChange = function (event) {\n            _this.filterChange(1, event);\n        };\n        /**\n         * @hidden\n         */\n        _this.filterChange = function (filterIndex, e) {\n            var filters = _this.state.filterGroup.filters.map(function (f, i) {\n                if (i === filterIndex) {\n                    return __assign({}, f, { value: e.value, operator: e.operator });\n                }\n                return f;\n            });\n            _this.setState({\n                filterGroup: __assign({}, _this.state.filterGroup, { filters: filters })\n            });\n        };\n        /**\n         * @hidden\n         */\n        _this.logicChange = function (event) {\n            _this.setState({\n                filterGroup: __assign({}, _this.state.filterGroup, { logic: event.target.value.operator })\n            });\n        };\n        /**\n         * @hidden\n         */\n        _this.clear = function (event) {\n            event.preventDefault();\n            if (!_this.props.onFilterChange) {\n                return;\n            }\n            var field = _this.props.column.field;\n            var rootFilter = rootFilterOrDefault(_this.props.filter);\n            var filterGroup = filterGroupByField(field, _this.props.filter);\n            var rootFilters = rootFilter.filters.filter(function (f) { return f !== filterGroup; });\n            if (!rootFilters.length) {\n                _this.props.onFilterChange(null, event);\n            }\n            else {\n                _this.props.onFilterChange(__assign({}, rootFilter, { filters: rootFilters }), event);\n            }\n            if (_this.props.onCloseMenu) {\n                _this.props.onCloseMenu();\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.currentFilterGroup = function () {\n            return __assign({}, _this.state.filterGroup, { filters: _this.state\n                    .filterGroup\n                    .filters\n                    .filter(function (nf) {\n                    return (nf.value !== undefined && nf.value !== null && nf.value !== '') ||\n                        (nf.value === null && nf.operator);\n                }) });\n        };\n        /**\n         * @hidden\n         */\n        _this.submit = function (event) {\n            event.preventDefault();\n            if (!_this.props.onFilterChange) {\n                return;\n            }\n            var field = _this.props.column.field;\n            var rootFilter = rootFilterOrDefault(_this.props.filter);\n            var filterGroup = filterGroupByField(field, _this.props.filter);\n            var currentFilterGroup = _this.currentFilterGroup();\n            var updatedFilter = null;\n            if (filterGroup && currentFilterGroup.filters.length > 0) {\n                var rootFilters = rootFilter.filters.map(function (f) {\n                    if (f === filterGroup) {\n                        return currentFilterGroup;\n                    }\n                    return f;\n                });\n                updatedFilter = __assign({}, rootFilter, { filters: rootFilters });\n            }\n            else if (currentFilterGroup.filters.length === 0) {\n                var rootFilters = rootFilter\n                    .filters\n                    .filter(function (f) { return f !== filterGroup; });\n                if (rootFilters.length) {\n                    updatedFilter = __assign({}, rootFilter, { filters: rootFilters });\n                }\n            }\n            else {\n                updatedFilter = __assign({}, rootFilter, { filters: rootFilter.filters.concat([currentFilterGroup]) });\n            }\n            _this.props.onFilterChange(updatedFilter, event);\n            if (_this.props.onCloseMenu) {\n                _this.props.onCloseMenu();\n            }\n        };\n        var filterGroup;\n        if (props.column && props.column.field) {\n            var filterType = getFilterType(props.column.filter);\n            var defaultOperator = getDefaultOperator(props.filterOperators, filterType);\n            filterGroup = filterGroupByField(props.column.field, props.filter);\n            filterGroup = filterGroup ? __assign({}, filterGroup, { filters: filterGroup.filters.map(function (f) {\n                    return __assign({}, f);\n                }) }) : {\n                logic: 'and',\n                filters: [\n                    { field: props.column.field, operator: defaultOperator, value: IsUnaryFilter(defaultOperator) ? null : undefined },\n                    { field: props.column.field, operator: defaultOperator, value: IsUnaryFilter(defaultOperator) ? null : undefined }\n                ]\n            };\n            if (filterGroup.filters.filter(function (x) { return x.field === props.column.field; }).length === 1) {\n                filterGroup.filters.splice(1, 0, { field: props.column.field, operator: defaultOperator });\n            }\n        }\n        _this.state = {\n            expanded: props.expanded || false,\n            filterGroup: filterGroup\n        };\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    GridColumnMenuFilter.prototype.render = function () {\n        var _a = this.props, column = _a.column, filterUI = _a.filterUI, hideSecondFilter = _a.hideSecondFilter, filterOperators = _a.filterOperators;\n        if (!column || !column.field) {\n            return React.createElement(\"div\", null);\n        }\n        var filterType = getFilterType(column.filter);\n        var currentHideSecondFilter = hideSecondFilter !== undefined ?\n            hideSecondFilter : defaultHideSecondFilter[filterType];\n        var localizationService = provideLocalizationService(this);\n        var filters = this.state.filterGroup.filters;\n        var currentOperators = operatorMap(filterOperators[filterType], localizationService);\n        var booleanValues = operatorMap(booleanFilterValues, localizationService);\n        var firstFilterCellProps = {\n            field: column.field,\n            value: filters[0].value,\n            operator: filters[0].operator,\n            operators: currentOperators,\n            booleanValues: booleanValues,\n            onChange: this.firstFilterChange,\n            filterType: filterType\n        };\n        var secondFilterCellProps = {\n            field: column.field,\n            value: filters[1].value,\n            operator: filters[1].operator,\n            operators: currentOperators,\n            booleanValues: booleanValues,\n            onChange: this.secondFilterChange,\n            filterType: filterType\n        };\n        var filterLogic = this.state.filterGroup.logic;\n        var logicData = operatorMap(filterLogicList, localizationService);\n        var logicProps = {\n            value: logicData.find(function (item) { return item.operator === (filterLogic === null ? '' : filterLogic); }),\n            onChange: this.logicChange,\n            data: logicData\n        };\n        var FilterUI = filterUI;\n        var filterUIProps = {\n            firstFilterProps: firstFilterCellProps,\n            secondFilterProps: secondFilterCellProps,\n            logicData: logicProps.data,\n            logicValue: logicProps.value,\n            onLogicChange: logicProps.onChange,\n            hideSecondFilter: currentHideSecondFilter\n        };\n        var isFilterValid = this.currentFilterGroup().filters.length !== 0 ||\n            IsUnaryFilter(filters[0].operator) ||\n            IsUnaryFilter(filters[1].operator);\n        var expandState = this.isControlled() ? this.props.expanded : this.state.expanded;\n        return (React.createElement(GridColumnMenuItemGroup, null,\n            React.createElement(GridColumnMenuItem, { title: localizationService.toLanguageString(filterTitle, messages[filterTitle]), iconClass: 'k-i-filter', onClick: this.onFilterExpand }),\n            React.createElement(GridColumnMenuItemContent, { show: !!expandState },\n                React.createElement(\"div\", { className: 'kendo-grid-filter-menu-container' },\n                    React.createElement(\"form\", { className: 'k-filter-menu k-group k-reset k-state-border-up', onSubmit: this.submit, onReset: this.clear, onKeyDown: function (e) { return e.stopPropagation(); } },\n                        React.createElement(\"div\", { className: 'k-filter-menu-container' },\n                            FilterUI ?\n                                React.createElement(FilterUI, __assign({}, filterUIProps)) :\n                                React.createElement(GridColumnMenuFilterUI, __assign({}, filterUIProps)),\n                            React.createElement(\"div\", { className: 'k-actions k-hstack k-justify-content-stretch' },\n                                React.createElement(\"button\", { className: 'k-button', type: 'reset' }, localizationService\n                                    .toLanguageString(filterClearButton, messages[filterClearButton])),\n                                React.createElement(\"button\", { className: 'k-button k-primary', disabled: !isFilterValid }, localizationService\n                                    .toLanguageString(filterSubmitButton, messages[filterSubmitButton])))))))));\n    };\n    /* eslint-disable max-len */\n    /**\n     * Can be used to check if filtering is applied to a specific field ([see example]({% slug column_menu_grid %}#toc-styling-the-column-menu-icon)). Useful for creating active filter indicators.\n     */\n    // tslint:enable:max-line-length\n    GridColumnMenuFilter.active = function (field, filter) {\n        return !!filterGroupByField(field, filter);\n    };\n    return GridColumnMenuFilter;\n}(React.Component));\nexport { GridColumnMenuFilter };\nregisterForLocalization(GridColumnMenuFilter);\n","/**\n * @hidden\n */\nvar getDocument = function () { return typeof document !== 'undefined' ? document : {}; };\n/**\n * @hidden\n */\nvar BrowserSupportService = /** @class */ (function () {\n    function BrowserSupportService() {\n    }\n    Object.defineProperty(BrowserSupportService.prototype, \"scrollbarWidth\", {\n        get: function () {\n            var document = getDocument();\n            if (!this.scrollbar && document && document.createElement) {\n                var div = document.createElement('div');\n                div.style.cssText = 'overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block';\n                div.innerHTML = '&nbsp;';\n                document.body.appendChild(div);\n                this.scrollbar = div.offsetWidth - div.scrollWidth;\n                document.body.removeChild(div);\n            }\n            return this.scrollbar;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    return BrowserSupportService;\n}());\nexport { BrowserSupportService };\n","import { BrowserSupportService } from './browser-support.service';\nimport { canUseDOM } from './canUseDOM';\n/**\n * @hidden\n */\nexport var getScrollbarWidth = function () {\n    if (!canUseDOM || !document.body) {\n        return false;\n    }\n    var scrollbarWidth = new BrowserSupportService().scrollbarWidth;\n    return scrollbarWidth;\n};\n/**\n * @hidden\n */\nexport var setScrollbarWidth = function () {\n    if (!canUseDOM || !document.body) {\n        return false;\n    }\n    var scrollbarWidth = new BrowserSupportService().scrollbarWidth;\n    document.body.style.setProperty('--kendo-scrollbar-width', scrollbarWidth + \"px\");\n};\n","/**\n * @hidden\n */\nexport var FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\n","import { fieldList } from './fieldList';\nvar getterCache = {};\ngetterCache.undefined = function () { return undefined; };\n/**\n * Can be used for getting value from object using field path. For example `users[index].name`.\n *\n * @example\n * ```jsx-no-run\n * const values = {users:[{lastName: 'Doe'}]};\n * const firstUserLastName = getter('user[0].lastName');\n *\n * console.log(firstUserLastName(values))\n *\n * // result: 'Doe'\n * ```\n */\nexport function getter(field) {\n    if (getterCache[field]) {\n        return getterCache[field];\n    }\n    var fields = fieldList(field);\n    getterCache[field] = function (obj) {\n        var result = obj;\n        for (var idx = 0; idx < fields.length && result; idx++) {\n            result = result[fields[idx]];\n        }\n        return result;\n    };\n    return getterCache[field];\n}\n","var _a, _b, _c;\n/**\n * @hidden\n */\nexport var KEYBOARD_NAV_DATA_LEVEL = 'data-keyboardnavlevel';\n/**\n * @hidden\n */\nexport var KEYBOARD_NAV_DATA_SCOPE = 'data-keyboardnavscope';\n/**\n * @hidden\n */\nexport var KEYBOARD_NAV_DATA_HEADER = 'data-keyboardnavheader';\n/**\n * @hidden\n */\nexport var KEYBOARD_NAV_DATA_BODY = 'data-keyboardnavbody';\n/**\n * @hidden\n */\nexport var KEYBOARD_NAV_DATA_ID = 'data-keyboardnavid';\n/**\n * @hidden\n */\nexport var KEYBOARD_NAV_DATA_ZONE = 'data-keyboardnavzone';\n/**\n * @hidden\n */\nexport var KEYBOARD_NAV_FILTER_COL_SUFFIX = '_filter';\nvar FOCUSABLE_ELEMENTS_BASE = [\n    'input:not([disabled]):not([type=hidden])',\n    'select:not([disabled])',\n    'textarea:not([disabled])',\n    'button:not([disabled])',\n    'a[href]',\n    'area[href]',\n    'summary',\n    'iframe',\n    'object',\n    'embed',\n    'audio[controls]',\n    'video[controls]',\n    '[contenteditable]'\n];\n/**\n * @hidden\n */\nexport var FOCUSABLE_ELEMENTS = FOCUSABLE_ELEMENTS_BASE.concat(['[tabindex]']);\n/**\n * @hidden\n */\nexport var TABBABLE_ELEMENTS = FOCUSABLE_ELEMENTS_BASE.concat(['[tabindex]']).map(function (selector) { return selector + ':not([tabindex=\"-1\"])'; });\n/**\n * @hidden\n */\nexport var tableKeyboardNavigationScopeAttributes = (_a = {},\n    _a[KEYBOARD_NAV_DATA_SCOPE] = true,\n    _a);\n/**\n * @hidden\n */\nexport var tableKeyboardNavigationHeaderAttributes = (_b = {},\n    _b[KEYBOARD_NAV_DATA_HEADER] = true,\n    _b);\n/**\n * @hidden\n */\nexport var tableKeyboardNavigationBodyAttributes = (_c = {},\n    _c[KEYBOARD_NAV_DATA_BODY] = true,\n    _c);\n","import { FIELD_REGEX } from './constants';\n/**\n * @hidden\n */\nexport function fieldList(field) {\n    var fields = [];\n    field.replace(FIELD_REGEX, function (_match, index, indexAccessor, fieldName) {\n        fields.push(index !== undefined ? index : (indexAccessor || fieldName));\n    });\n    return fields;\n}\n","import { FOCUSABLE_ELEMENTS, KEYBOARD_NAV_DATA_BODY, KEYBOARD_NAV_DATA_HEADER, KEYBOARD_NAV_DATA_ID, KEYBOARD_NAV_DATA_LEVEL, KEYBOARD_NAV_DATA_SCOPE, KEYBOARD_NAV_FILTER_COL_SUFFIX, TABBABLE_ELEMENTS } from './constants';\n/**\n * @hidden\n */\nexport var generateNavigatableId = function (navigationId, idPrefix, type) {\n    if (type === void 0) { type = 'cell'; }\n    return idPrefix + \"_\" + navigationId + \"_\" + type;\n};\n/**\n * @hidden\n */\nexport var getNavigatableLevel = function (element) {\n    if (!element) {\n        return;\n    }\n    return parseInt(element.getAttribute(KEYBOARD_NAV_DATA_LEVEL) || '', 10);\n};\n/**\n * @hidden\n */\nexport var getNavigatableId = function (element) {\n    if (!element) {\n        return;\n    }\n    var dataId = element.getAttribute(KEYBOARD_NAV_DATA_ID);\n    return dataId ? dataId : undefined;\n};\n/**\n * @hidden\n */\nexport var isNavigatable = function (element) {\n    if (!element) {\n        return false;\n    }\n    var dataId = element.getAttribute(KEYBOARD_NAV_DATA_ID);\n    return Boolean(dataId);\n};\n/**\n * @hidden\n */\nexport var getNavigatableElement = function (scope, options) {\n    if (options === void 0) { options = { level: 0 }; }\n    return scope.querySelector(\"[\" + KEYBOARD_NAV_DATA_LEVEL + \"='\" + options.level + \"']\");\n};\n/**\n * @hidden\n */\nexport var getClosestNavigatableElement = function (target) {\n    return (target.parentElement &&\n        target.parentElement.closest(\"[\" + KEYBOARD_NAV_DATA_LEVEL + \"]\"));\n};\n/**\n * @hidden\n */\nexport var getActiveElement = function (scope, activeId) {\n    return scope.querySelector(\"[\" + KEYBOARD_NAV_DATA_ID + \"='\" + activeId + \"']\");\n};\n/**\n * @hidden\n */\nexport var getClosestScope = function (target) {\n    return (target.parentElement &&\n        target.parentElement.closest(\"[\" + KEYBOARD_NAV_DATA_SCOPE + \"]\"));\n};\n/**\n * @hidden\n */\nexport var getHeaderElement = function (scope) {\n    return scope.querySelector(\"[\" + KEYBOARD_NAV_DATA_HEADER + \"]\");\n};\n/**\n * @hidden\n */\nexport var getBodyElement = function (scope) {\n    return scope.querySelector(\"[\" + KEYBOARD_NAV_DATA_BODY + \"]\");\n};\n/**\n * @hidden\n */\nexport var getFocusableElements = function (scope, options) {\n    if (options === void 0) { options = { focusable: false }; }\n    var selectors = options.focusable ? FOCUSABLE_ELEMENTS : TABBABLE_ELEMENTS;\n    return Array.from(scope.querySelectorAll(selectors.join(',')));\n};\n/**\n * @hidden\n */\nexport var getNavigatableElements = function (scope, options) {\n    if (options === void 0) { options = { level: 0 }; }\n    if (!scope) {\n        return [];\n    }\n    var selector = FOCUSABLE_ELEMENTS.map(function (el) { return el + (\"[\" + KEYBOARD_NAV_DATA_LEVEL + \"='\" + options.level + \"']\"); }).join(',');\n    return Array.from(scope.querySelectorAll(selector));\n};\n/**\n * @hidden\n */\nexport var filterNavigatableElements = function (options) {\n    if (options === void 0) { options = { level: 0 }; }\n    var selector = FOCUSABLE_ELEMENTS.map(function (sel) { return sel + (\"[\" + KEYBOARD_NAV_DATA_LEVEL + \"='\" + options.level + \"']\"); }).join(',');\n    return function (element) { return element.matches(selector); };\n};\n/**\n * @hidden\n */\nexport var focusElement = function (options) {\n    var elementForFocus = options.elementForFocus, event = options.event, contextStateRef = options.contextStateRef, prevElement = options.prevElement;\n    if (contextStateRef.current && elementForFocus && elementForFocus.focus) {\n        event.preventDefault();\n        elementForFocus.focus();\n        if (isNavigatable(elementForFocus)) {\n            elementForFocus.setAttribute('tabIndex', '0');\n            contextStateRef.current.activeId = getNavigatableId(elementForFocus);\n        }\n        if (prevElement && isNavigatable(prevElement)) {\n            prevElement.setAttribute('tabIndex', '-1');\n        }\n    }\n};\n/**\n * @hidden\n */\nexport var getIdPrefix = function (navigationStateRef) {\n    return navigationStateRef.current ? navigationStateRef.current.idPrefix : '';\n};\n/**\n * @hidden\n */\nexport var findNextIdByRowIndex = function (initialRowIndex, cellIndex, elementId, matrix, isReverse) {\n    if (!elementId) {\n        return [];\n    }\n    var currentRowIndex = initialRowIndex + (isReverse ? -1 : 1);\n    while (currentRowIndex >= 0 && currentRowIndex < matrix.length) {\n        var currentId = matrix[currentRowIndex][cellIndex];\n        if (currentId !== elementId) {\n            return [currentId, [currentRowIndex, cellIndex]];\n        }\n        currentRowIndex = currentRowIndex + (isReverse ? -1 : 1);\n    }\n    return [];\n};\n/**\n * @hidden\n */\nexport var findNextIdByCellIndex = function (rowIndex, initialCellIndex, elementId, matrix, isReverse) {\n    if (!elementId) {\n        return [];\n    }\n    var currentCellIndex = initialCellIndex + (isReverse ? -1 : 1);\n    while (currentCellIndex >= 0 && currentCellIndex < matrix[rowIndex].length) {\n        var currentId = matrix[rowIndex][currentCellIndex];\n        if (currentId !== elementId) {\n            return [currentId, [rowIndex, currentCellIndex]];\n        }\n        currentCellIndex = currentCellIndex + (isReverse ? -1 : 1);\n    }\n    return [];\n};\n/**\n * @hidden\n */\nexport var findId = function (navigationMatrix, cellId) {\n    if (!cellId) {\n        return;\n    }\n    for (var rowIndex = 0; rowIndex < navigationMatrix.length; rowIndex++) {\n        for (var cellIndex = 0; cellIndex < navigationMatrix[rowIndex].length; cellIndex++) {\n            if (navigationMatrix[rowIndex][cellIndex] === cellId) {\n                return [rowIndex, cellIndex];\n            }\n        }\n    }\n};\n/**\n * @hidden\n */\nexport var getNextNavigationIndex = function (navigationStateRef) {\n    return navigationStateRef.current ? navigationStateRef.current.navigationMatrix.length : 0;\n};\n/**\n * @hidden\n */\nexport var getFilterColumnId = function (columnId) {\n    return columnId ? \"\" + columnId + KEYBOARD_NAV_FILTER_COL_SUFFIX : '';\n};\n/**\n * @hidden\n */\nexport var tableKeyboardNavigationTools = {\n    generateNavigatableId: generateNavigatableId,\n    getNavigatableId: getNavigatableId,\n    getNavigatableLevel: getNavigatableLevel,\n    getNavigatableElement: getNavigatableElement,\n    getClosestNavigatableElement: getClosestNavigatableElement,\n    getActiveElement: getActiveElement,\n    getClosestScope: getClosestScope,\n    getHeaderElement: getHeaderElement,\n    getBodyElement: getBodyElement,\n    getFocusableElements: getFocusableElements,\n    getNavigatableElements: getNavigatableElements,\n    filterNavigatableElements: filterNavigatableElements,\n    focusElement: focusElement,\n    getIdPrefix: getIdPrefix,\n    isNavigatable: isNavigatable,\n    findNextIdByRowIndex: findNextIdByRowIndex,\n    findNextIdByCellIndex: findNextIdByCellIndex,\n    findId: findId,\n    getNextNavigationIndex: getNextNavigationIndex,\n    getFilterColumnId: getFilterColumnId\n};\n","import { guid, Keys } from '@progress/kendo-react-common';\nimport { findId, findNextIdByCellIndex, findNextIdByRowIndex, getBodyElement, getHeaderElement, getNavigatableId, tableKeyboardNavigationTools as navigationTools } from './utils';\n/**\n * @hidden\n */\nvar onConstructor = function (options) {\n    var navigatable = options.navigatable, contextStateRef = options.contextStateRef, navigationStateRef = options.navigationStateRef, idPrefix = options.idPrefix;\n    // v.2: check if nested navigation\n    if (navigatable) {\n        contextStateRef.current = {\n            activeId: '',\n            level: 0\n        };\n        navigationStateRef.current = {\n            activeElementIsFocused: false,\n            prevNavigationIndexes: undefined,\n            idPrefix: idPrefix || guid(),\n            navigationMatrix: [],\n            lastHeaderIndex: -1\n        };\n    }\n};\n/**\n * @hidden\n */\nvar onComponentDidMount = function (options) {\n    var scope = options.scope, contextStateRef = options.contextStateRef, navigationStateRef = options.navigationStateRef;\n    if (contextStateRef.current && navigationStateRef.current && scope) {\n        generateMatrix(options);\n        var firstId = navigationStateRef.current.navigationMatrix[0][0];\n        var firstIdElement = navigationTools.getActiveElement(scope, firstId);\n        if (firstId && firstIdElement) {\n            contextStateRef.current.activeId = firstId;\n            firstIdElement.setAttribute('tabIndex', '0');\n        }\n    }\n};\n/**\n * @hidden\n */\nvar onGetSnapshotBeforeUpdate = function (options) {\n    var contextStateRef = options.contextStateRef, navigationStateRef = options.navigationStateRef, currentDocument = options.document;\n    if (contextStateRef.current && navigationStateRef.current && currentDocument) {\n        var activeElement = currentDocument.activeElement;\n        var activeId = navigationTools.getNavigatableId(activeElement);\n        if (activeId && activeId === contextStateRef.current.activeId) {\n            navigationStateRef.current.activeElementIsFocused = true;\n        }\n    }\n};\n/**\n * @hidden\n */\nvar onComponentDidUpdate = function (options) {\n    var scope = options.scope, contextStateRef = options.contextStateRef, navigationStateRef = options.navigationStateRef;\n    generateMatrix(options);\n    // check if nested navigation\n    if (contextStateRef.current && navigationStateRef.current && scope) {\n        var activeElement = navigationTools.getActiveElement(scope, contextStateRef.current.activeId);\n        if (!activeElement) {\n            var firstId = navigationStateRef.current.navigationMatrix[0][0];\n            var firstIdElement = navigationTools.getActiveElement(scope, firstId);\n            if (firstId && firstIdElement) {\n                contextStateRef.current.activeId = firstId;\n                firstIdElement.setAttribute('tabIndex', '0');\n                if (navigationStateRef.current.activeElementIsFocused) {\n                    firstIdElement.focus();\n                }\n            }\n        }\n        navigationStateRef.current.activeElementIsFocused = false;\n    }\n};\n/**\n * @hidden\n */\nvar onFocus = function (event, options) {\n    var contextStateRef = options.contextStateRef;\n    if (event.isDefaultPrevented()) {\n        return;\n    }\n    if (!contextStateRef.current) {\n        return;\n    }\n    var focusedElement = event.target;\n    var activeId = navigationTools.getNavigatableId(focusedElement);\n    if (activeId && activeId !== contextStateRef.current.activeId) {\n        var scope = navigationTools.getClosestScope(focusedElement);\n        if (!scope) {\n            return;\n        }\n        var prevElement = navigationTools.getActiveElement(scope, contextStateRef.current.activeId);\n        if (prevElement) {\n            prevElement.setAttribute('tabIndex', '-1');\n        }\n        focusedElement.setAttribute('tabIndex', '0');\n        contextStateRef.current.activeId = activeId;\n    }\n};\n/**\n * @hidden\n */\nvar onKeyDown = function (event, options) {\n    var contextStateRef = options.contextStateRef, navigationStateRef = options.navigationStateRef, onNavigationAction = options.onNavigationAction;\n    if (event.isDefaultPrevented()) {\n        return;\n    }\n    if (!contextStateRef.current || !navigationStateRef.current) {\n        return;\n    }\n    if (event.keyCode === Keys.esc) {\n        // activate navigation\n        var elementForFocus = navigationTools.getClosestNavigatableElement(event.target);\n        navigationTools.focusElement({ elementForFocus: elementForFocus, event: event, contextStateRef: contextStateRef });\n        return;\n    }\n    var element = event.target;\n    var elementId = navigationTools.getNavigatableId(element);\n    var dataLevel = navigationTools.getNavigatableLevel(element);\n    var scope = navigationTools.getClosestScope(element);\n    var matrix = navigationStateRef.current.navigationMatrix;\n    if (dataLevel !== undefined && scope) {\n        if (event.keyCode === Keys.enter) {\n            // activate nested navigation or focus focusable element\n            var navigatableElement = navigationTools.getNavigatableElement(element, { level: dataLevel + 1 });\n            if (navigatableElement) {\n                navigationTools.focusElement({\n                    elementForFocus: navigatableElement,\n                    event: event,\n                    contextStateRef: contextStateRef,\n                    prevElement: element\n                });\n                return;\n            }\n            else {\n                var elementForFocus = navigationTools.getFocusableElements(element)[0];\n                navigationTools.focusElement({ elementForFocus: elementForFocus, event: event, contextStateRef: contextStateRef, prevElement: element });\n                return;\n            }\n        }\n        if (event.keyCode === Keys.up ||\n            event.keyCode === Keys.down ||\n            event.keyCode === Keys.left ||\n            event.keyCode === Keys.right) {\n            var isReverse = event.keyCode === Keys.up || event.keyCode === Keys.left;\n            var isVertical = event.keyCode === Keys.up || event.keyCode === Keys.down;\n            var currentIdIndexes = void 0;\n            if (navigationStateRef.current && navigationStateRef.current.prevNavigationIndexes) {\n                var _a = navigationStateRef.current.prevNavigationIndexes, rowIndex = _a[0], cellIndex = _a[1];\n                if (matrix[rowIndex][cellIndex] === elementId) {\n                    currentIdIndexes = navigationStateRef.current.prevNavigationIndexes;\n                }\n                else {\n                    currentIdIndexes = findId(matrix, elementId);\n                }\n            }\n            else {\n                currentIdIndexes = findId(matrix, elementId);\n            }\n            if (currentIdIndexes) {\n                var rowIndex = currentIdIndexes[0], cellIndex = currentIdIndexes[1];\n                var _b = isVertical ?\n                    findNextIdByRowIndex(rowIndex, cellIndex, elementId, matrix, isReverse) :\n                    findNextIdByCellIndex(rowIndex, cellIndex, elementId, matrix, isReverse), idForFocus = _b[0], currentIndexes = _b[1];\n                if (idForFocus) {\n                    var elementForFocus = navigationTools.getActiveElement(scope, idForFocus);\n                    // emit event\n                    navigationTools.focusElement({ elementForFocus: elementForFocus, event: event, contextStateRef: contextStateRef, prevElement: element });\n                    navigationStateRef.current.prevNavigationIndexes = currentIndexes;\n                    if (onNavigationAction) {\n                        onNavigationAction({ focusElement: elementForFocus, event: event });\n                    }\n                }\n            }\n        }\n    }\n};\n/**\n * @hidden\n */\nvar generateMatrix = function (options) {\n    var navigationStateRef = options.navigationStateRef, scope = options.scope;\n    if (!navigationStateRef.current || !scope) {\n        return;\n    }\n    var matrix = [];\n    var thead = getHeaderElement(scope);\n    var tbody = getBodyElement(scope);\n    if (!thead || !tbody) {\n        return;\n    }\n    var headerRows = Array.from(thead.children);\n    var bodyRows = Array.from(tbody.children);\n    headerRows.concat(bodyRows).forEach(function (row, rowIndex) {\n        Array.from(row.children).forEach(function (cell) {\n            var cellId = getNavigatableId(cell);\n            if (!cellId) {\n                return;\n            } // cell is not navigatable\n            var rowSpan = cell.rowSpan || 1;\n            var cellSpan = cell.colSpan || 1;\n            var cellIndex;\n            for (var depth = rowIndex, maxDepth = rowIndex + rowSpan; depth < maxDepth; depth++) {\n                if (!matrix[depth]) {\n                    matrix[depth] = [];\n                }\n                if (cellIndex === undefined) {\n                    var freeSlotIndex = matrix[depth].findIndex(function (mi) { return !mi; });\n                    cellIndex = freeSlotIndex > -1 ? freeSlotIndex : matrix[depth].length;\n                }\n                matrix[depth][cellIndex] = cellId || '';\n            }\n            for (var depth = cellIndex + 1, maxDepth = cellIndex + cellSpan; depth < maxDepth; depth++) {\n                matrix[rowIndex][depth] = cellId || '';\n            }\n        });\n    });\n    navigationStateRef.current.navigationMatrix = matrix.filter(function (row) { return !!row; });\n    navigationStateRef.current.lastHeaderIndex = headerRows.length - 1;\n};\n/**\n * @hidden\n */\nexport var tableKeyboardNavigation = {\n    onConstructor: onConstructor,\n    onComponentDidMount: onComponentDidMount,\n    onGetSnapshotBeforeUpdate: onGetSnapshotBeforeUpdate,\n    onComponentDidUpdate: onComponentDidUpdate,\n    onFocus: onFocus,\n    onKeyDown: onKeyDown,\n    generateMatrix: generateMatrix\n};\n","/** @hidden */\nexport var TABLE_ROW_INDEX_ATTRIBUTE = 'data-grid-row-index';\n/** @hidden */\nexport var TABLE_COL_INDEX_ATTRIBUTE = 'data-grid-col-index';\n/** @hidden */\nexport var TABLE_PREVENT_SELECTION_ELEMENT = 'data-prevent-selection';\n","var __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};\nimport { extendDataItem, getter, Keys, mapTree, hasRelativeStackingContext } from '@progress/kendo-react-common';\nimport { TABLE_COL_INDEX_ATTRIBUTE, TABLE_ROW_INDEX_ATTRIBUTE } from './constants';\nvar GROUP_SUBITEMS_COLLECTION = 'items';\nvar LAST_SELECTION_STATE = {};\nvar getCellSelection = function (currentSelection, selectedColumn) {\n    if (!currentSelection || (Array.isArray(currentSelection) && currentSelection.length === 0)) {\n        return [selectedColumn];\n    }\n    else {\n        var foundIndex = currentSelection.findIndex(function (columnIndex) { return columnIndex === selectedColumn; });\n        if (foundIndex > -1) {\n            return currentSelection.filter(function (columnIndex) { return columnIndex === selectedColumn; });\n        }\n        else {\n            return currentSelection.concat([selectedColumn]);\n        }\n    }\n};\n/** @hidden */\nexport var closestTagName = function (target, tagName) {\n    var currentTarget = target;\n    while (currentTarget) {\n        if (currentTarget.tagName === tagName) {\n            return currentTarget;\n        }\n        else if (currentTarget.tagName === 'TABLE') {\n            return null;\n        }\n        currentTarget = currentTarget.parentElement;\n    }\n    return null;\n};\n/** @hidden */\nexport var getRowIndex = function (element) {\n    if (!element) {\n        return;\n    }\n    var rowIndex = element.getAttribute(TABLE_ROW_INDEX_ATTRIBUTE);\n    return rowIndex ? parseInt(rowIndex, 10) : undefined;\n};\n/** @hidden */\nexport var getColumnIndex = function (element) {\n    if (!element) {\n        return;\n    }\n    var colIndex = element.getAttribute(TABLE_COL_INDEX_ATTRIBUTE);\n    return colIndex ? parseInt(colIndex, 10) : undefined;\n};\n/**\n * @hidden\n *\n * Apply the selected field to the data items based on the selected state.\n *\n * @param {{data: any, selectedState:  {[id: string]: boolean | number[]}, dataItemKey: string; selectedField: string; subItemsField?: string; }} options\n * @returns {any[]}\n */\nexport var setSelectedState = function (options) {\n    var subItemsField = options.subItemsField || GROUP_SUBITEMS_COLLECTION;\n    var idGetter = getter(options.dataItemKey);\n    return mapTree(options.data, subItemsField, function (item) {\n        var _a;\n        return extendDataItem(item, subItemsField, (_a = {},\n            _a[options.selectedField] = options.selectedState[idGetter(item)],\n            _a));\n    });\n};\n/**\n * Get selected state from the component KeyDown event.\n *\n * @param {{event: TableKeyDownEvent, selectedState:  {[id: string]: boolean | number[]}, dataItemKey: string}} options\n * @returns {{[id: string]: boolean | number[]}} - The new selected state.\n */\nexport var getSelectedStateFromKeyDown = function (options) {\n    var event = options.event, dataItemKey = options.dataItemKey, selectedState = options.selectedState;\n    var syntheticEvent = event.syntheticEvent, nativeEvent = event.nativeEvent, dataItems = event.dataItems, componentId = event.componentId, mode = event.mode, cell = event.cell, selectedField = event.selectedField;\n    var target = nativeEvent.target, ctrlKey = nativeEvent.ctrlKey, metaKey = nativeEvent.metaKey, altKey = nativeEvent.altKey, shiftKey = nativeEvent.shiftKey;\n    if (syntheticEvent.isDefaultPrevented() || nativeEvent.keyCode !== Keys.enter) {\n        return selectedState;\n    }\n    var tdElement = closestTagName(target, 'TD');\n    var trElement = closestTagName(target, 'TR');\n    var colIndex = getColumnIndex(tdElement);\n    var rowIndex = getRowIndex(trElement);\n    var selectionState = {};\n    if (tdElement && trElement && rowIndex !== undefined && colIndex !== undefined) {\n        selectionState = getSelectedState({\n            selectedState: selectedState,\n            dataItemKey: dataItemKey,\n            event: {\n                ctrlKey: ctrlKey, metaKey: metaKey, altKey: altKey, shiftKey: shiftKey,\n                dataItems: dataItems, cell: cell, mode: mode, selectedField: selectedField, componentId: componentId,\n                startColIndex: colIndex, endColIndex: colIndex, startRowIndex: rowIndex, endRowIndex: rowIndex,\n                isDrag: false,\n                syntheticEvent: syntheticEvent,\n                nativeEvent: nativeEvent,\n                target: event.target,\n                dataItem: null\n            }\n        });\n    }\n    return selectionState;\n};\n/**\n * Get selected state from the component selection event.\n *\n * @param {{event: TableSelectionChangeEvent, selectedState:  {[id: string]: boolean | number[]}, dataItemKey: string}} options\n * @returns {{[id: string]: boolean | number[]}} - The new selected state.\n */\nexport var getSelectedState = function (options) {\n    var event = options.event, dataItemKey = options.dataItemKey, prevSelectedState = options.selectedState;\n    var dataItems = event.dataItems, startRowIndex = event.startRowIndex, endRowIndex = event.endRowIndex, startColIndex = event.startColIndex, endColIndex = event.endColIndex, cell = event.cell, isDrag = event.isDrag, ctrlKey = event.ctrlKey, shiftKey = event.shiftKey, metaKey = event.metaKey, componentId = event.componentId, mode = event.mode, dataItem = event.dataItem;\n    var idGetter = getter(dataItemKey);\n    var selectionState = {};\n    var isInputEvent = dataItem !== null;\n    if (mode === 'single') {\n        var currentDataItem = dataItems.slice(startRowIndex, startRowIndex + 1)[0];\n        var itemId = idGetter(currentDataItem);\n        LAST_SELECTION_STATE[componentId] = {\n            rowIndex: startRowIndex,\n            colIndex: startColIndex\n        };\n        selectionState[itemId] = cell ? [startColIndex] : true;\n    }\n    else if (isDrag || (!shiftKey && !ctrlKey && !metaKey && !isInputEvent)) {\n        if (!isDrag) {\n            LAST_SELECTION_STATE[componentId] = {\n                rowIndex: startRowIndex,\n                colIndex: startColIndex\n            };\n        }\n        var selectedColumns_1 = [];\n        for (var i = startColIndex; i <= endColIndex; i++) {\n            selectedColumns_1.push(i);\n        }\n        var selectedDataItems = dataItems.slice(startRowIndex, endRowIndex + 1);\n        selectedDataItems.forEach(function (currentItem) {\n            var itemId = idGetter(currentItem);\n            selectionState[itemId] = cell ? selectedColumns_1.slice() : true;\n        });\n    }\n    else {\n        if (ctrlKey || metaKey || isInputEvent) {\n            LAST_SELECTION_STATE[componentId] = {\n                rowIndex: startRowIndex,\n                colIndex: startColIndex\n            };\n            var selectedDataItems = dataItems.slice(startRowIndex, endRowIndex + 1);\n            var currentDataItem = selectedDataItems[0];\n            var itemId = idGetter(currentDataItem);\n            selectionState = __assign({}, prevSelectedState);\n            selectionState[itemId] = cell && !isInputEvent ? getCellSelection(selectionState[itemId], startColIndex) : !selectionState[itemId];\n        }\n        else if (shiftKey) {\n            var lastRowIndex = (LAST_SELECTION_STATE[componentId] && LAST_SELECTION_STATE[componentId].rowIndex) || 0;\n            var lastColIndex = (LAST_SELECTION_STATE[componentId] && LAST_SELECTION_STATE[componentId].colIndex) || 0;\n            var currentStartRowIndex = Math.min(lastRowIndex, startRowIndex, endRowIndex);\n            var currentEndRowIndex = Math.max(lastRowIndex, startRowIndex, endRowIndex);\n            var currentStarColIndex = Math.min(lastColIndex, startColIndex, endColIndex);\n            var currentEndColIndex = Math.max(lastColIndex, startColIndex, endColIndex);\n            var selectedColumns_2 = [];\n            for (var i = currentStarColIndex; i <= currentEndColIndex; i++) {\n                selectedColumns_2.push(i);\n            }\n            var selectedDataItems = dataItems.slice(currentStartRowIndex, currentEndRowIndex + 1);\n            selectedDataItems.forEach(function (currentItem) {\n                var itemId = idGetter(currentItem);\n                selectionState[itemId] = cell ? selectedColumns_2.slice() : true;\n            });\n        }\n    }\n    return selectionState;\n};\n/** @hidden */\nvar HAS_RELATIVE_STACKING_CONTEXT = hasRelativeStackingContext();\n/** @hidden */\nexport var relativeContextElement = function (element) {\n    if (!element || !HAS_RELATIVE_STACKING_CONTEXT) {\n        return null;\n    }\n    var node = element.parentElement;\n    while (node) {\n        if (window.getComputedStyle(node).transform !== 'none') {\n            return node;\n        }\n        node = node.parentElement;\n    }\n};\n/** @hidden */\nexport var getOffset = function (offsetParent) {\n    if (offsetParent && offsetParent.ownerDocument) {\n        if (offsetParent !== offsetParent.ownerDocument.body) {\n            var rect = offsetParent.getBoundingClientRect();\n            return {\n                left: rect.left - offsetParent.scrollLeft,\n                top: rect.top - offsetParent.scrollTop\n            };\n        }\n    }\n    return { left: 0, top: 0 };\n};\n/** @hidden */\nexport var getSelectionOptions = function (selectable) {\n    var enabled = selectable ?\n        (typeof selectable.enabled === 'boolean' ? selectable.enabled : true) :\n        false;\n    var drag = selectable ? Boolean(selectable.drag) : false;\n    var mode = selectable && selectable.mode ? selectable.mode : 'multiple';\n    var cell = Boolean(selectable && selectable.cell);\n    return { enabled: enabled, drag: drag, mode: mode, cell: cell };\n};\n","import { canUseDOM } from './canUseDOM';\n/** @hidden */\nexport var hasRelativeStackingContext = function (elementSource) {\n    if (!canUseDOM) {\n        return false;\n    }\n    // Component need to pass element to make sure document owner is correct.\n    // This however might be performance hit if checked for example on each drag event.\n    var currentDocument = elementSource ? elementSource.ownerDocument : document;\n    if (!currentDocument || !currentDocument.body) {\n        return false;\n    }\n    var top = 10;\n    var parent = currentDocument.createElement('div');\n    parent.style.transform = 'matrix(10, 0, 0, 10, 0, 0)';\n    parent.innerHTML = \"<div style=\\\"position: fixed; top: \" + top + \"px;\\\">child</div>\";\n    currentDocument.body.appendChild(parent);\n    var isDifferent = parent.children[0].getBoundingClientRect().top !== top;\n    currentDocument.body.removeChild(parent);\n    return isDifferent;\n};\n","import { generateNavigatableId } from '../../navigation/utils';\nimport { ColumnDefaultProps } from '../ColumnProps';\nfunction nextColumn(columns, current) {\n    var currentDepth = columns[current].depth;\n    var next = null;\n    for (var index = current + 1; index < columns.length; index++) {\n        if (columns[index].depth === currentDepth) {\n            next = columns[index];\n            break;\n        }\n    }\n    return next;\n}\nvar getColumnWidth = function (column) {\n    var width = column.width ? parseFloat(column.width.toString()) : 0;\n    if (!width && column.children && column.children.length) {\n        width = column.children.reduce(function (currentSum, child) { return getColumnWidth(child) + currentSum; }, 0);\n    }\n    return width;\n};\n/**\n * @hidden\n */\nexport function mapColumns(columns) {\n    var columnsMap = [[]];\n    var maxDepth = 0;\n    // set colspans, get maxdepth\n    for (var q = columns.length - 1; q >= 0; q--) {\n        maxDepth = Math.max(maxDepth, columns[q].depth);\n        columns[q].colSpan = columns[q].colSpan || 1;\n        if (columns[q].parentIndex !== -1) {\n            columns[columns[q].parentIndex].colSpan =\n                (columns[columns[q].parentIndex].colSpan || 0) + columns[q].colSpan;\n        }\n    }\n    var colIndexByLevel = [];\n    var rowSpan = 1;\n    // set rowspan, kFirst, index AND create columnsMap\n    columns.forEach(function (column, i) {\n        columnsMap[column.depth] = columnsMap[column.depth] || [];\n        var needKFirst = false;\n        if (columnsMap[column.depth].length === 0) {\n            if (rowSpan <= 1) {\n                rowSpan = 1 + (column.children.length > 0 ? 0 : maxDepth - column.depth);\n            }\n            else {\n                rowSpan--;\n                needKFirst = true;\n            }\n        }\n        column.rowSpan = 1 + (column.children.length > 0 ? 0 : maxDepth - column.depth);\n        column.kFirst = needKFirst;\n        column.index = columnsMap[column.depth].length;\n        columnsMap[column.depth].push(i);\n        column.ariaColumnIndex = colIndexByLevel[column.depth] ? colIndexByLevel[column.depth] + 1 : 1;\n        for (var ci = column.depth; ci < column.depth + column.rowSpan; ci++) {\n            colIndexByLevel[ci] = (colIndexByLevel[ci] || 0) + column.colSpan;\n        }\n    });\n    var stickyLeftWidth = new Array(columnsMap.length).fill(0);\n    var width = 0;\n    // set left AND create stickyLeftWidth\n    columns.forEach(function (column) {\n        if (column.locked) {\n            column.left = stickyLeftWidth[column.depth];\n            width = getColumnWidth(column);\n            if (column.children.length === 0) {\n                for (var i = column.depth; i < stickyLeftWidth.length; i++) {\n                    stickyLeftWidth[i] += width;\n                }\n            }\n            else {\n                stickyLeftWidth[column.depth] += width;\n            }\n        }\n    });\n    var stickyRightWidth = new Array(columnsMap.length).fill(0);\n    // set right, rightBorder AND create stickyRightWidth\n    for (var i = columns.length - 1; i >= 0; i--) {\n        var column = columns[i];\n        if (column.locked) {\n            column.right = stickyRightWidth[column.depth];\n            width = getColumnWidth(column);\n            if (column.children.length === 0) {\n                for (var j = column.depth; j < stickyRightWidth.length; j++) {\n                    stickyRightWidth[j] += width;\n                }\n            }\n            else {\n                stickyRightWidth[column.depth] += width;\n            }\n            var next = nextColumn(columns, i);\n            column.rightBorder = !(next && next.locked);\n        }\n    }\n    return columnsMap;\n}\n/**\n * @hidden\n */\nexport function readColumns(elements, idInfo, depth) {\n    if (depth === void 0) { depth = 0; }\n    var columns = [];\n    if (!elements || !elements.length) {\n        return [];\n    }\n    elements.forEach(function (columnProps) {\n        var children = readColumns(columnProps.children || [], idInfo, depth + 1);\n        columns.push(Object.assign({}, { depth: depth }, ColumnDefaultProps, columnProps, {\n            id: columnProps.id ? columnProps.id : generateNavigatableId(\"\" + idInfo.prevId++, idInfo.idPrefix, 'column'),\n            declarationIndex: columns.length,\n            children: children,\n            rowSpan: 0,\n            colSpan: 0,\n            isAccessible: true\n        }));\n    });\n    var comparator = function (a, b) {\n        return a.orderIndex === b.orderIndex ?\n            a.declarationIndex - b.declarationIndex :\n            ((a.orderIndex || 0) - (b.orderIndex || 0));\n    };\n    columns.sort(comparator);\n    if (depth === 0) {\n        var ret_1 = [];\n        var flat_1 = function (cols, pIndex) {\n            return cols.forEach(function (c) {\n                c.parentIndex = pIndex;\n                flat_1(c.children, ret_1.push(c) - 1);\n            });\n        };\n        flat_1(columns, -1);\n        return ret_1;\n    }\n    return columns;\n}\n/**\n * @hidden\n */\nexport function isRtl(element) {\n    return Boolean(element && getComputedStyle(element).direction === 'rtl');\n}\n/**\n * @hidden\n */\nexport function getIndex(event, parent) {\n    if (!parent || !event || !event.originalEvent) {\n        return -1;\n    }\n    var target = parent.ownerDocument ? parent.ownerDocument.elementFromPoint(event.clientX, event.originalEvent.clientY) : null;\n    while (target && target.parentElement !== parent) {\n        target = target.parentElement;\n    }\n    var children = parent.children;\n    for (var i = 0; i < children.length; i++) {\n        if (children[i] === target) {\n            return i;\n        }\n    }\n    return -1;\n}\n","var __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})();\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nvar dots = '...';\n/**\n * @hidden\n */\nvar PagerNumericButtons = /** @class */ (function (_super) {\n    __extends(PagerNumericButtons, _super);\n    function PagerNumericButtons() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.handlePageChange = function (e, page) {\n            e.preventDefault();\n            _this.props.pageChange(page, e);\n        };\n        _this.handleSelectPageChange = function (e) {\n            e.preventDefault();\n            _this.props.pageChange(e.target.value, e);\n        };\n        return _this;\n    }\n    PagerNumericButtons.prototype.render = function () {\n        var _this = this;\n        var prevDots = this.start > 1 && this.renderDots(this.start - 1);\n        var postDots = this.end < this.props.totalPages && this.renderDots(this.end + 1);\n        var prevOptionDots = this.start > 1 && this.renderOptionDots(this.start - 1);\n        var postOptionDots = this.end < this.props.totalPages && this.renderOptionDots(this.end + 1);\n        var buttons = [];\n        for (var idx = this.start; idx <= this.end; idx++) {\n            buttons.push(idx);\n        }\n        var numerics = buttons.map(function (page) { return (React.createElement(\"li\", { key: page },\n            React.createElement(\"a\", { href: \"#\", onClick: function (e) { return _this.handlePageChange(e, page); }, className: classNames('k-link', {\n                    'k-state-selected': _this.props.currentPage === page\n                }) }, page))); });\n        var options = buttons.map(function (page) { return (React.createElement(\"option\", { key: page, className: classNames('k-link') }, page)); });\n        return (React.createElement(\"div\", { className: \"k-pager-numbers-wrap\" },\n            React.createElement(\"select\", { className: \"k-dropdown\", value: this.props.currentPage, onChange: function (e) { return _this.handleSelectPageChange(e); } },\n                prevOptionDots,\n                options,\n                postOptionDots),\n            React.createElement(\"ul\", { className: \"k-pager-numbers k-reset\" },\n                prevDots,\n                numerics,\n                postDots)));\n    };\n    PagerNumericButtons.prototype.renderDots = function (page) {\n        var _this = this;\n        return (React.createElement(\"li\", null,\n            React.createElement(\"a\", { className: \"k-link\", onClick: function (e) { return _this.handlePageChange(e, page); }, href: \"#\" }, dots)));\n    };\n    PagerNumericButtons.prototype.renderOptionDots = function (page) {\n        return (React.createElement(\"option\", { className: \"k-link\", value: page }, dots));\n    };\n    Object.defineProperty(PagerNumericButtons.prototype, \"end\", {\n        get: function () {\n            return Math.min((this.start + this.props.buttonCount) - 1, this.props.totalPages);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(PagerNumericButtons.prototype, \"start\", {\n        get: function () {\n            var page = this.props.currentPage;\n            var buttonCount = this.props.buttonCount;\n            if (page > buttonCount) {\n                var reminder = (page % buttonCount);\n                return (reminder === 0) ? (page - buttonCount) + 1 : (page - reminder) + 1;\n            }\n            return 1;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    return PagerNumericButtons;\n}(React.Component));\nexport { PagerNumericButtons };\n","var _a;\n/**\n * @hidden\n */\nexport var pagerInfo = 'pager.info';\n/**\n * @hidden\n */\nexport var pagerFirstPage = 'pager.firstPage';\n/**\n * @hidden\n */\nexport var pagerPreviousPage = 'pager.previousPage';\n/**\n * @hidden\n */\nexport var pagerNextPage = 'pager.nextPage';\n/**\n * @hidden\n */\nexport var pagerLastPage = 'pager.lastPage';\n/**\n * @hidden\n */\nexport var pagerItemPerPage = 'pager.itemsPerPage';\n/**\n * @hidden\n */\nexport var pagerPage = 'pager.page';\n/**\n * @hidden\n */\nexport var pagerOf = 'pager.of';\n/**\n * @hidden\n */\nexport var pagerTotalPages = 'pager.totalPages';\n/**\n * @hidden\n */\nexport var filterEqOperator = 'filter.eqOperator';\n/**\n * @hidden\n */\nexport var filterNotEqOperator = 'filter.notEqOperator';\n/**\n * @hidden\n */\nexport var filterIsNullOperator = 'filter.isNullOperator';\n/**\n * @hidden\n */\nexport var filterIsNotNullOperator = 'filter.isNotNullOperator';\n/**\n * @hidden\n */\nexport var filterIsEmptyOperator = 'filter.isEmptyOperator';\n/**\n * @hidden\n */\nexport var filterIsNotEmptyOperator = 'filter.isNotEmptyOperator';\n/**\n * @hidden\n */\nexport var filterStartsWithOperator = 'filter.startsWithOperator';\n/**\n * @hidden\n */\nexport var filterContainsOperator = 'filter.containsOperator';\n/**\n * @hidden\n */\nexport var filterNotContainsOperator = 'filter.notContainsOperator';\n/**\n * @hidden\n */\nexport var filterEndsWithOperator = 'filter.endsWithOperator';\n/**\n * @hidden\n */\nexport var filterGteOperator = 'filter.gteOperator';\n/**\n * @hidden\n */\nexport var filterGtOperator = 'filter.gtOperator';\n/**\n * @hidden\n */\nexport var filterLteOperator = 'filter.lteOperator';\n/**\n * @hidden\n */\nexport var filterLtOperator = 'filter.ltOperator';\n/**\n * @hidden\n */\nexport var filterIsTrue = 'filter.isTrue';\n/**\n * @hidden\n */\nexport var filterIsFalse = 'filter.isFalse';\n/**\n * @hidden\n */\nexport var filterAfterOrEqualOperator = 'filter.afterOrEqualOperator';\n/**\n * @hidden\n */\nexport var filterAfterOperator = 'filter.afterOperator';\n/**\n * @hidden\n */\nexport var filterBeforeOperator = 'filter.beforeOperator';\n/**\n * @hidden\n */\nexport var filterBeforeOrEqualOperator = 'filter.beforeOrEqualOperator';\n/**\n * @hidden\n */\nexport var filterAndLogic = 'filter.andLogic';\n/**\n * @hidden\n */\nexport var filterOrLogic = 'filter.orLogic';\n/**\n * @hidden\n */\nexport var filterAddExpression = 'filter.addExpression';\n/**\n * @hidden\n */\nexport var filterAddGroup = 'filter.addGroup';\n/**\n * @hidden\n */\nexport var filterClose = 'filter.close';\n/**\n * @hidden\n */\nexport var columnMenuFilterClearButton = 'columnMenu.filterClearButton';\n/**\n * @hidden\n */\nexport var columnMenuFilterSubmitButton = 'columnMenu.filterSubmitButton';\n/**\n * @hidden\n */\nexport var columnMenuFilterTitle = 'columnMenu.filterTitle';\n/**\n * @hidden\n */\nexport var columnMenuSortAscending = 'columnMenu.sortAscending';\n/**\n * @hidden\n */\nexport var columnMenuSortDescending = 'columnMenu.sortDescending';\n/**\n * @hidden\n */\nexport var columnMenuFilterEqOperator = 'columnMenu.filterEqOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterNotEqOperator = 'columnMenu.filterNotEqOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterIsNullOperator = 'columnMenu.filterIsNullOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterIsNotNullOperator = 'columnMenu.filterIsNotNullOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterIsEmptyOperator = 'columnMenu.filterIsEmptyOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterIsNotEmptyOperator = 'columnMenu.filterIsNotEmptyOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterStartsWithOperator = 'columnMenu.filterStartsWithOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterContainsOperator = 'columnMenu.filterContainsOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterNotContainsOperator = 'columnMenu.filterNotContainsOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterEndsWithOperator = 'columnMenu.filterEndsWithOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterGteOperator = 'columnMenu.filterGteOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterGtOperator = 'columnMenu.filterGtOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterLteOperator = 'columnMenu.filterLteOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterLtOperator = 'columnMenu.filterLtOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterIsTrue = 'columnMenu.filterIsTrue';\n/**\n * @hidden\n */\nexport var columnMenuFilterAfterOrEqualOperator = 'columnMenu.filterAfterOrEqualOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterAfterOperator = 'columnMenu.filterAfterOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterBeforeOperator = 'columnMenu.filterBeforeOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterBeforeOrEqualOperator = 'columnMenu.filterBeforeOrEqualOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterAndLogic = 'columnMenu.filterAndLogic';\n/**\n * @hidden\n */\nexport var columnMenuFilterOrLogic = 'columnMenu.filterOrLogic';\n/**\n * @hidden\n */\nexport var sortAriaLabel = 'sort.ariaLabel';\n/**\n * @hidden\n */\nexport var filterAriaLabel = 'filter.ariaLabel';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n    _a[pagerItemPerPage] = 'items per page',\n    _a[pagerInfo] = '{0} - {1} of {2} items',\n    _a[pagerFirstPage] = 'Go to the first page',\n    _a[pagerPreviousPage] = 'Go to the previous page',\n    _a[pagerNextPage] = 'Go to the next page',\n    _a[pagerLastPage] = 'Go to the last page',\n    _a[pagerPage] = 'Page',\n    _a[pagerOf] = 'Of',\n    _a[pagerTotalPages] = '{0}',\n    _a[sortAriaLabel] = 'Sortable',\n    _a[filterAriaLabel] = 'Filter',\n    _a[filterEqOperator] = 'Is equal to',\n    _a[filterNotEqOperator] = 'Is not equal to',\n    _a[filterIsNullOperator] = 'Is null',\n    _a[filterIsNotNullOperator] = 'Is not null',\n    _a[filterIsEmptyOperator] = 'Is empty',\n    _a[filterIsNotEmptyOperator] = 'Is not empty',\n    _a[filterStartsWithOperator] = 'Starts with',\n    _a[filterContainsOperator] = 'Contains',\n    _a[filterNotContainsOperator] = 'Does not contain',\n    _a[filterEndsWithOperator] = 'Ends with',\n    _a[filterGteOperator] = 'Is greater than or equal to',\n    _a[filterGtOperator] = 'Is greater than',\n    _a[filterLteOperator] = 'Is less than or equal to',\n    _a[filterLtOperator] = 'Is less than',\n    _a[filterIsTrue] = 'Is true',\n    _a[filterIsFalse] = 'Is false',\n    _a[filterAfterOrEqualOperator] = 'Is after or equal to',\n    _a[filterAfterOperator] = 'Is after',\n    _a[filterBeforeOperator] = 'Is before',\n    _a[filterBeforeOrEqualOperator] = 'Is before or equal to',\n    _a[filterAndLogic] = 'And',\n    _a[filterOrLogic] = 'Or',\n    _a[filterAddExpression] = 'Add Expression',\n    _a[filterAddGroup] = 'Add Group',\n    _a[filterClose] = 'Close',\n    _a[columnMenuFilterClearButton] = 'Clear',\n    _a[columnMenuFilterSubmitButton] = 'Filter',\n    _a[columnMenuFilterTitle] = 'Filter',\n    _a[columnMenuSortAscending] = 'Sort Ascending',\n    _a[columnMenuSortDescending] = 'Sort Descending',\n    _a[columnMenuFilterEqOperator] = 'Is equal to',\n    _a[columnMenuFilterNotEqOperator] = 'Is not equal to',\n    _a[columnMenuFilterIsNullOperator] = 'Is null',\n    _a[columnMenuFilterIsNotNullOperator] = 'Is not null',\n    _a[columnMenuFilterIsEmptyOperator] = 'Is empty',\n    _a[columnMenuFilterIsNotEmptyOperator] = 'Is not empty',\n    _a[columnMenuFilterStartsWithOperator] = 'Starts with',\n    _a[columnMenuFilterContainsOperator] = 'Contains',\n    _a[columnMenuFilterNotContainsOperator] = 'Does not contain',\n    _a[columnMenuFilterEndsWithOperator] = 'Ends with',\n    _a[columnMenuFilterGteOperator] = 'Is greater than or equal to',\n    _a[columnMenuFilterGtOperator] = 'Is greater than',\n    _a[columnMenuFilterLteOperator] = 'Is less than or equal to',\n    _a[columnMenuFilterLtOperator] = 'Is less than',\n    _a[columnMenuFilterIsTrue] = 'Is true',\n    _a[columnMenuFilterAfterOrEqualOperator] = 'Is after or equal to',\n    _a[columnMenuFilterAfterOperator] = 'Is after',\n    _a[columnMenuFilterBeforeOperator] = 'Is before',\n    _a[columnMenuFilterBeforeOrEqualOperator] = 'Is before or equal to',\n    _a[columnMenuFilterAndLogic] = 'And',\n    _a[columnMenuFilterOrLogic] = 'Or',\n    _a);\n","var __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})();\nimport * as React from 'react';\nimport { registerForLocalization, provideLocalizationService, provideIntlService } from '@progress/kendo-react-intl';\nimport { messages, pagerOf, pagerPage, pagerTotalPages } from './../messages';\n/**\n * @hidden\n */\nvar PagerInput = /** @class */ (function (_super) {\n    __extends(PagerInput, _super);\n    function PagerInput() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this._text = undefined;\n        _this.onChange = function (e) {\n            var text = _this._text = e.target.value.replace(/\\D/g, '');\n            _this.forceUpdate();\n            if (text) {\n                _this.props.pageChange(parseInt(text, 10), e);\n            }\n        };\n        _this.value = function () {\n            var value = _this._text === undefined ? _this.props.currentPage.toString() : _this._text;\n            _this._text = undefined;\n            return value;\n        };\n        return _this;\n    }\n    PagerInput.prototype.render = function () {\n        var _this = this;\n        var intlService = provideIntlService(this);\n        var localizationService = provideLocalizationService(this);\n        var pageMessage = this.props.messagesMap ? this.props.messagesMap(pagerPage) :\n            ({ messageKey: pagerPage, defaultMessage: messages[pagerPage] });\n        var ofMessage = this.props.messagesMap ? this.props.messagesMap(pagerOf) :\n            ({ messageKey: pagerOf, defaultMessage: messages[pagerOf] });\n        var totalPagesMessage = this.props.messagesMap ? this.props.messagesMap(pagerTotalPages) :\n            ({ messageKey: pagerTotalPages, defaultMessage: messages[pagerTotalPages] });\n        return (React.createElement(\"span\", { className: \"k-pager-input k-label\" },\n            localizationService.toLanguageString(pageMessage.messageKey, pageMessage.defaultMessage),\n            React.createElement(\"input\", { className: \"k-textbox\", value: this.value(), onBlur: function () { return _this.forceUpdate(); }, onChange: this.onChange }), localizationService.toLanguageString(ofMessage.messageKey, ofMessage.defaultMessage) + \" \" + intlService\n            .format(localizationService.toLanguageString(totalPagesMessage.messageKey, totalPagesMessage.defaultMessage), [\n            this.props.totalPages\n        ])));\n    };\n    return PagerInput;\n}(React.Component));\nexport { PagerInput };\nregisterForLocalization(PagerInput);\n","var __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})();\nimport * as React from 'react';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, pagerItemPerPage } from './../messages';\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\n/**\n * @hidden\n */\nvar PagerPageSizes = /** @class */ (function (_super) {\n    __extends(PagerPageSizes, _super);\n    function PagerPageSizes() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.pageSizeChange = function (e) {\n            if (_this.props.pageChange) {\n                _this.props.pageChange({ skip: 0, take: parseInt(e.target.value, 10) }, e);\n            }\n        };\n        return _this;\n    }\n    PagerPageSizes.prototype.render = function () {\n        var _this = this;\n        var sizes = this.props.pageSizes.slice();\n        if (sizes.filter(function (s) { return s === _this.props.pageSize; }).length === 0) {\n            sizes.unshift(this.props.pageSize);\n        }\n        var itemPerPageMessage = this.props.messagesMap ? this.props.messagesMap(pagerItemPerPage) :\n            ({ messageKey: pagerItemPerPage, defaultMessage: messages[pagerItemPerPage] });\n        return (React.createElement(\"span\", { className: \"k-pager-sizes k-label\" },\n            React.createElement(DropDownList, { value: this.props.pageSize, data: sizes, onChange: this.pageSizeChange }),\n            provideLocalizationService(this).toLanguageString(itemPerPageMessage.messageKey, itemPerPageMessage.defaultMessage)));\n    };\n    return PagerPageSizes;\n}(React.Component));\nexport { PagerPageSizes };\nregisterForLocalization(PagerPageSizes);\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n    name: '@progress/kendo-react-data-tools',\n    productName: 'KendoReact',\n    productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n    publishDate: 1642516407,\n    version: '',\n    licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var __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})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { PagerNumericButtons } from './PagerNumericButtons';\nimport { PagerInput } from './PagerInput';\nimport { PagerPageSizes } from './PagerPageSizes';\nimport { messages, pagerFirstPage, pagerLastPage, pagerNextPage, pagerPreviousPage, pagerInfo } from '../messages';\nimport { registerForIntl, registerForLocalization, provideLocalizationService, provideIntlService } from '@progress/kendo-react-intl';\nimport { classNames } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\n/**\n * @hidden\n */\nvar RESPONSIVE_BREAKPOINT_MEDIUM = 600;\n/**\n * @hidden\n */\nvar RESPONSIVE_BREAKPOINT_LARGE = 768;\nvar Pager = /** @class */ (function (_super) {\n    __extends(Pager, _super);\n    function Pager(props) {\n        var _this = _super.call(this, props) || this;\n        _this._element = null;\n        _this.changePage = function (page, event) {\n            if (_this.props.onPageChange && page > 0 && page <= _this.totalPages) {\n                _this.props.onPageChange({\n                    target: _this,\n                    skip: (page - 1) * _this.props.take,\n                    take: _this.props.take,\n                    syntheticEvent: event,\n                    nativeEvent: event.nativeEvent\n                });\n            }\n        };\n        _this.onWindowResize = function () {\n            var element = _this.element;\n            if (!element || !_this.props.responsive) {\n                return;\n            }\n            var width = element.offsetWidth;\n            if (width < RESPONSIVE_BREAKPOINT_MEDIUM) {\n                element.classList.remove('k-pager-md');\n                element.classList.add('k-pager-sm');\n            }\n            else if (width >= RESPONSIVE_BREAKPOINT_MEDIUM && width < RESPONSIVE_BREAKPOINT_LARGE) {\n                element.classList.add('k-pager-md');\n                element.classList.remove('k-pager-sm');\n            }\n            else {\n                element.classList.remove('k-pager-md');\n                element.classList.remove('k-pager-sm');\n            }\n        };\n        validatePackage(packageMetadata);\n        return _this;\n    }\n    Object.defineProperty(Pager.prototype, \"element\", {\n        /**\n         * Returns the HTML element of the Pager component.\n         */\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    Pager.prototype.componentDidMount = function () {\n        window.addEventListener('resize', this.onWindowResize);\n        this.onWindowResize();\n    };\n    /**\n     * @hidden\n     */\n    Pager.prototype.componentWillUnmount = function () {\n        window.removeEventListener('resize', this.onWindowResize);\n    };\n    /**\n     * @hidden\n     */\n    Pager.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, skip = _a.skip, take = _a.take, total = _a.total, pageSizes = _a.pageSizes, messagesMap = _a.messagesMap;\n        var localizationService = provideLocalizationService(this);\n        var intlService = provideIntlService(this);\n        var currentPage = Math.floor(skip / take) + 1;\n        var changer = this.props.type === 'numeric' ?\n            (React.createElement(PagerNumericButtons, { buttonCount: this.props.buttonCount || 0, totalPages: this.totalPages, currentPage: currentPage, pageChange: this.changePage })) : (React.createElement(PagerInput, { currentPage: currentPage, totalPages: this.totalPages, pageChange: this.changePage, messagesMap: messagesMap }));\n        var firstPageMessage = messagesMap ? messagesMap(pagerFirstPage) :\n            ({ messageKey: pagerFirstPage, defaultMessage: messages[pagerFirstPage] });\n        var previousPageMessage = messagesMap ? messagesMap(pagerPreviousPage) :\n            ({ messageKey: pagerPreviousPage, defaultMessage: messages[pagerPreviousPage] });\n        var nextPageMessage = messagesMap ? messagesMap(pagerNextPage) :\n            ({ messageKey: pagerNextPage, defaultMessage: messages[pagerNextPage] });\n        var lastPageMessage = messagesMap ? messagesMap(pagerLastPage) :\n            ({ messageKey: pagerLastPage, defaultMessage: messages[pagerLastPage] });\n        var infoMessage = messagesMap ? messagesMap(pagerInfo) :\n            ({ messageKey: pagerInfo, defaultMessage: messages[pagerInfo] });\n        var first, prev, next, last;\n        if (this.props.previousNext) {\n            first = this.renderButton(1, 'k-link k-pager-nav k-pager-first' + (currentPage === 1 ? ' k-state-disabled' : ''), localizationService.toLanguageString(firstPageMessage.messageKey, firstPageMessage.defaultMessage), 'k-icon k-i-arrow-end-left');\n            prev = this.renderButton(currentPage - 1, 'k-link k-pager-nav' + (currentPage === 1 ? ' k-state-disabled' : ''), localizationService.toLanguageString(previousPageMessage.messageKey, previousPageMessage.defaultMessage), 'k-icon k-i-arrow-60-left');\n            next = this.renderButton(currentPage + 1, 'k-link k-pager-nav' + (currentPage >= this.totalPages ? ' k-state-disabled' : ''), localizationService.toLanguageString(nextPageMessage.messageKey, nextPageMessage.defaultMessage), 'k-icon k-i-arrow-60-right');\n            last = this.renderButton(this.totalPages, 'k-link k-pager-nav k-pager-last' + (currentPage >= this.totalPages ? ' k-state-disabled' : ''), localizationService.toLanguageString(lastPageMessage.messageKey, lastPageMessage.defaultMessage), 'k-icon k-i-arrow-end-right');\n        }\n        var pagerPageSizes = pageSizes && (React.createElement(PagerPageSizes, { pageChange: this.props.onPageChange, pageSize: take, pageSizes: pageSizes, messagesMap: messagesMap }));\n        var info = this.props.info && (React.createElement(\"div\", { className: \"k-pager-info k-label\" }, intlService\n            .format(localizationService.toLanguageString(infoMessage.messageKey, infoMessage.defaultMessage), [\n            Math.min(skip + 1, total),\n            Math.min(skip + take, total),\n            total\n        ])));\n        return (React.createElement(\"div\", { className: classNames('k-pager-wrap k-pager k-widget', this.props.className), style: this.props.style, role: \"navigation\", ref: function (element) { return _this._element = element; } },\n            first,\n            prev,\n            changer,\n            next,\n            last,\n            pagerPageSizes,\n            info));\n    };\n    Pager.prototype.renderButton = function (page, className, title, icon) {\n        var _this = this;\n        return (React.createElement(\"a\", { onClick: function (e) {\n                e.preventDefault();\n                _this.changePage(page, e);\n            }, href: \"#\", className: className, title: title },\n            React.createElement(\"span\", { className: icon })));\n    };\n    Object.defineProperty(Pager.prototype, \"totalPages\", {\n        get: function () {\n            return Math.ceil((this.props.total || 0) / this.props.take);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    Pager.propTypes = {\n        className: PropTypes.string,\n        style: PropTypes.object,\n        total: PropTypes.number.isRequired,\n        skip: PropTypes.number.isRequired,\n        take: PropTypes.number.isRequired,\n        buttonCount: PropTypes.number,\n        info: PropTypes.bool,\n        type: PropTypes.oneOf(['numeric', 'input']),\n        pageSizes: PropTypes.arrayOf(PropTypes.number),\n        previousNext: PropTypes.bool,\n        onPageChange: PropTypes.func,\n        messagesMap: PropTypes.func\n    };\n    /**\n     * @hidden\n     */\n    Pager.defaultProps = {\n        buttonCount: 10,\n        info: true,\n        type: 'numeric'\n    };\n    return Pager;\n}(React.Component));\nexport { Pager };\nregisterForIntl(Pager);\nregisterForLocalization(Pager);\n","import * as React from 'react';\n/**\n * @hidden\n */\nexport var TableKeyboardNavigationContext = React.createContext(undefined);\nTableKeyboardNavigationContext.displayName = 'KendoReactTableKeyboardNavigationContext';\n","var getRatio = function (element, target) {\n    var elementRect = element.getBoundingClientRect();\n    var targetRect = target.getBoundingClientRect();\n    var top = Math.max(targetRect.top, elementRect.top);\n    var left = Math.max(targetRect.left, elementRect.left);\n    var right = Math.min(targetRect.left + targetRect.width, elementRect.left + elementRect.width);\n    var bottom = Math.min(targetRect.top + targetRect.height, elementRect.top + elementRect.height);\n    var width = right - left;\n    var height = bottom - top;\n    if (left < right && top < bottom) {\n        var targetArea = targetRect.width * targetRect.height;\n        var entryArea = elementRect.width * elementRect.height;\n        var intersectionArea = width * height;\n        var intersectionRatio = intersectionArea / (targetArea + entryArea - intersectionArea);\n        return Number(intersectionRatio.toFixed(4));\n    }\n    return 0;\n};\n/** @hidden */\nexport var intersect = function (element, candidates) {\n    var max = 0;\n    var result = null;\n    candidates.forEach(function (candidate) {\n        if (candidate && element) {\n            var ration = getRatio(element, candidate);\n            if (ration > max) {\n                max = ration;\n                result = candidate;\n            }\n        }\n    });\n    return result;\n};\n","import { intersect } from \"./algorithms\";\nimport { getWindow, autoScrollVelocity, scrollableViewPort, getScrollableParent, isPointerInsideContainer, getDocument } from \"./utils\";\n/** @hidden */\nexport var DRAG_AND_DROP_DISPATCH_ACTION;\n(function (DRAG_AND_DROP_DISPATCH_ACTION) {\n    DRAG_AND_DROP_DISPATCH_ACTION[\"POINTER_DOWN\"] = \"pointerdown\";\n    DRAG_AND_DROP_DISPATCH_ACTION[\"POINTER_MOVE\"] = \"pointermove\";\n    DRAG_AND_DROP_DISPATCH_ACTION[\"POINTER_UP\"] = \"pointerup\";\n    DRAG_AND_DROP_DISPATCH_ACTION[\"POINTER_CANCEL\"] = \"pointercancel\";\n    DRAG_AND_DROP_DISPATCH_ACTION[\"MOUSE_DOWN\"] = \"mousedown\";\n    DRAG_AND_DROP_DISPATCH_ACTION[\"MOUSE_MOVE\"] = \"mousemove\";\n    DRAG_AND_DROP_DISPATCH_ACTION[\"MOUSE_UP\"] = \"mouseup\";\n    DRAG_AND_DROP_DISPATCH_ACTION[\"CONTEXT_MENU\"] = \"contextmenu\";\n    DRAG_AND_DROP_DISPATCH_ACTION[\"TOUCH_START\"] = \"touchstart\";\n    DRAG_AND_DROP_DISPATCH_ACTION[\"TOUCH_MOVE\"] = \"touchmove\";\n    DRAG_AND_DROP_DISPATCH_ACTION[\"TOUCH_END\"] = \"touchend\";\n    DRAG_AND_DROP_DISPATCH_ACTION[\"TOUCH_CANCEL\"] = \"touchcancel\";\n    DRAG_AND_DROP_DISPATCH_ACTION[\"SCROLL\"] = \"scroll\";\n    DRAG_AND_DROP_DISPATCH_ACTION[\"START\"] = \"KENDO_DRAG_AND_DROP_START\";\n    DRAG_AND_DROP_DISPATCH_ACTION[\"MOVE\"] = \"KENDO_DRAG_AND_DROP_MOVE\";\n    DRAG_AND_DROP_DISPATCH_ACTION[\"END\"] = \"KENDO_DRAG_AND_DROP_END\";\n    DRAG_AND_DROP_DISPATCH_ACTION[\"CANCEL\"] = \"KENDO_DRAG_AND_DROP_CANCEL\";\n})(DRAG_AND_DROP_DISPATCH_ACTION || (DRAG_AND_DROP_DISPATCH_ACTION = {}));\nvar isTouchEvent = function (event) { return /^touch/.test(event.type); };\nvar isScrollEvent = function (event) { return /^(scroll)/.test(event.type); };\n/** @hidden */\nexport var normalizeEvent = function (event, state) { return (isTouchEvent(event)\n    ? ({\n        pageX: event.changedTouches[0].pageX,\n        pageY: event.changedTouches[0].pageY,\n        clientX: event.changedTouches[0].clientX,\n        clientY: event.changedTouches[0].clientY,\n        scrollX: state.scrollOffset.x,\n        scrollY: state.scrollOffset.y,\n        offsetX: state.offset.x,\n        offsetY: state.offset.y,\n        type: event.type,\n        originalEvent: event,\n        isTouch: true,\n        altKey: false,\n        ctrlKey: false,\n        shiftKey: false,\n        metaKey: false\n    })\n    : isScrollEvent(event)\n        ? ({\n            pageX: state.pageOffset.x,\n            pageY: state.pageOffset.y,\n            clientX: state.clientOffset.x,\n            clientY: state.clientOffset.y,\n            scrollX: state.scrollOffset.x,\n            scrollY: state.scrollOffset.y,\n            offsetX: state.offset.x,\n            offsetY: state.offset.y,\n            type: event.type,\n            originalEvent: event,\n            altKey: false,\n            ctrlKey: false,\n            shiftKey: false,\n            metaKey: false\n        })\n        : ({\n            pageX: event.pageX,\n            pageY: event.pageY,\n            clientX: event.clientX,\n            clientY: event.clientY,\n            offsetX: event.offsetX,\n            offsetY: event.offsetY,\n            scrollX: state.scrollOffset.x,\n            scrollY: state.scrollOffset.y,\n            type: event.type,\n            ctrlKey: event.ctrlKey,\n            shiftKey: event.shiftKey,\n            altKey: event.altKey,\n            metaKey: event.metaKey,\n            originalEvent: event\n        })); };\nvar noop = function () { };\n/** @hidden */\nexport var dispatchDragAndDrop = function (state, action, callbacks) {\n    if (callbacks === void 0) { callbacks = {}; }\n    var _a = callbacks.onIsPressedChange, onIsPressedChange = _a === void 0 ? noop : _a, _b = callbacks.onIsScrollingChange, onIsScrollingChange = _b === void 0 ? noop : _b, _c = callbacks.onVelocityChange, onVelocityChange = _c === void 0 ? noop : _c, _d = callbacks.onOffsetChange, onOffsetChange = _d === void 0 ? noop : _d, _e = callbacks.onPageOffsetChange, onPageOffsetChange = _e === void 0 ? noop : _e, _f = callbacks.onClientOffsetChange, onClientOffsetChange = _f === void 0 ? noop : _f, _g = callbacks.onScrollOffsetChange, onScrollOffsetChange = _g === void 0 ? noop : _g, _h = callbacks.onInitialScrollOffsetChange, onInitialScrollOffsetChange = _h === void 0 ? noop : _h;\n    var drag = action.payload;\n    var element = drag.element;\n    var hint = drag.hint;\n    var autoScrollDirection = state.autoScrollDirection;\n    var overrideScrollableParent = state.scrollableParent;\n    var event = normalizeEvent(action.event, state);\n    switch (event.type) {\n        case DRAG_AND_DROP_DISPATCH_ACTION.POINTER_DOWN:\n            if (event.type === DRAG_AND_DROP_DISPATCH_ACTION.POINTER_DOWN\n                && (!event.originalEvent.isPrimary\n                    || event.originalEvent.button !== 0)) {\n                break;\n            }\n        // In rare cases where the `which` attribute is available in the mouse event\n        // we check if the `left button` is explicitly clicked:\n        // https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/which#return_value\n        case DRAG_AND_DROP_DISPATCH_ACTION.MOUSE_DOWN:\n            if (event.type === DRAG_AND_DROP_DISPATCH_ACTION.MOUSE_DOWN\n                && (event.originalEvent.which\n                    && event.originalEvent.which > 1)\n                || state.ignoreMouse) {\n                break;\n            }\n        case DRAG_AND_DROP_DISPATCH_ACTION.TOUCH_START:\n            if (event.type === DRAG_AND_DROP_DISPATCH_ACTION.TOUCH_START\n                && event.originalEvent.touches.length !== 1) {\n                break;\n            }\n        case DRAG_AND_DROP_DISPATCH_ACTION.START: {\n            var scrollableParent_1 = overrideScrollableParent || getScrollableParent(action.payload.element);\n            onInitialScrollOffsetChange(scrollableParent_1 instanceof Window\n                ? { x: scrollableParent_1.scrollX, y: scrollableParent_1.scrollY }\n                : { x: scrollableParent_1.scrollLeft, y: scrollableParent_1.scrollTop });\n            onClientOffsetChange({\n                x: event.clientX,\n                y: event.clientY\n            });\n            onPageOffsetChange({\n                x: event.pageX,\n                y: event.pageY\n            });\n            onOffsetChange({\n                x: event.offsetX,\n                y: event.offsetY\n            });\n            onIsPressedChange(true);\n            if (drag.onPress) {\n                drag.onPress(event);\n            }\n            break;\n        }\n        case DRAG_AND_DROP_DISPATCH_ACTION.SCROLL:\n            if (event.type === DRAG_AND_DROP_DISPATCH_ACTION.SCROLL && !state.pressed) {\n                break;\n            }\n            var scrollableParent = overrideScrollableParent || getScrollableParent(element);\n            var scrollOffset = scrollableParent instanceof Window\n                ? { x: scrollableParent.scrollX, y: scrollableParent.scrollY }\n                : { x: scrollableParent.scrollLeft, y: scrollableParent.scrollTop };\n            event.scrollX = scrollOffset.x - state.initialScrollOffset.x;\n            event.scrollY = scrollOffset.y - state.initialScrollOffset.y;\n            onScrollOffsetChange({\n                x: event.scrollX,\n                y: event.scrollY\n            });\n        case DRAG_AND_DROP_DISPATCH_ACTION.POINTER_MOVE:\n            if (event.type === DRAG_AND_DROP_DISPATCH_ACTION.POINTER_MOVE && !event.originalEvent.isPrimary) {\n                break;\n            }\n        case DRAG_AND_DROP_DISPATCH_ACTION.MOUSE_MOVE:\n        case DRAG_AND_DROP_DISPATCH_ACTION.TOUCH_MOVE:\n            if (event.type === DRAG_AND_DROP_DISPATCH_ACTION.TOUCH_MOVE && event.originalEvent.touches.length !== 1) {\n                break;\n            }\n        case DRAG_AND_DROP_DISPATCH_ACTION.MOVE: {\n            if (state.pressed) {\n                if (state.autoScroll && event.originalEvent.type !== 'scroll') {\n                    if (element) {\n                        var document_1 = getDocument(element);\n                        var scrollableParent_2 = overrideScrollableParent || getScrollableParent(document_1.elementFromPoint(event.clientX, event.clientY));\n                        var newVelocity = autoScrollVelocity(event.clientX, event.clientY, scrollableViewPort(scrollableParent_2, getWindow(element)));\n                        onVelocityChange({\n                            x: (autoScrollDirection && autoScrollDirection.horizontal === false) ? 0 : newVelocity.x,\n                            y: (autoScrollDirection && autoScrollDirection.vertical === false) ? 0 : newVelocity.y\n                        });\n                        onIsScrollingChange(newVelocity.y !== 0 || newVelocity.x !== 0);\n                    }\n                }\n                if (!state.drag && drag.onDragStart) {\n                    drag.onDragStart(event);\n                }\n                if (drag.onDrag) {\n                    drag.onDrag(event);\n                }\n                var dropElement_1 = intersect(hint || element, state.drops.map(function (drop) { return drop && drop.element; }).filter(function (d) { return d !== (hint || element); }));\n                var drop = state.drops.find(function (drop) { return drop.element === dropElement_1; });\n                if (drop\n                    && dropElement_1\n                    && isPointerInsideContainer(event.clientX, event.clientY, overrideScrollableParent || getScrollableParent(dropElement_1))\n                    && dropElement_1 !== element) {\n                    if ((state.drop && state.drop.element) !== dropElement_1) {\n                        if (state.drop && state.drop.onDragLeave) {\n                            state.drop.onDragLeave(event);\n                        }\n                        if (drop.onDragEnter) {\n                            drop.onDragEnter(event);\n                        }\n                    }\n                    else {\n                        if (drop.onDragOver) {\n                            drop.onDragOver(event);\n                        }\n                    }\n                }\n                else if (state.drop && state.drop.onDragLeave) {\n                    state.drop.onDragLeave(event);\n                }\n            }\n            onClientOffsetChange({\n                x: event.clientX,\n                y: event.clientY\n            });\n            onPageOffsetChange({\n                x: event.pageX,\n                y: event.pageY\n            });\n            break;\n        }\n        case DRAG_AND_DROP_DISPATCH_ACTION.POINTER_UP:\n            if (event.type === DRAG_AND_DROP_DISPATCH_ACTION.POINTER_UP && !event.originalEvent.isPrimary) {\n                break;\n            }\n        case DRAG_AND_DROP_DISPATCH_ACTION.MOUSE_UP:\n        // the last finger has been lifted, and the user is not doing gesture.\n        // there might be a better way to handle this.\n        case DRAG_AND_DROP_DISPATCH_ACTION.TOUCH_END:\n            if (event.type === DRAG_AND_DROP_DISPATCH_ACTION.TOUCH_END && event.originalEvent.touches.length !== 1) {\n                break;\n            }\n        case DRAG_AND_DROP_DISPATCH_ACTION.END: {\n            onIsPressedChange(false);\n            onIsScrollingChange(false);\n            onScrollOffsetChange({ x: 0, y: 0 });\n            if (drag.onRelease) {\n                drag.onRelease(event);\n            }\n            if (state.drop && state.drop.onDrop) {\n                state.drop.onDrop(event);\n            }\n            if (state.drag && drag.onDragEnd) {\n                drag.onDragEnd(event);\n            }\n            break;\n        }\n        case DRAG_AND_DROP_DISPATCH_ACTION.POINTER_CANCEL:\n        case DRAG_AND_DROP_DISPATCH_ACTION.CONTEXT_MENU:\n        case DRAG_AND_DROP_DISPATCH_ACTION.TOUCH_CANCEL:\n        case DRAG_AND_DROP_DISPATCH_ACTION.CANCEL: {\n            onIsPressedChange(false);\n            onIsScrollingChange(false);\n            onScrollOffsetChange({ x: 0, y: 0 });\n            if (drag.onDragEnd) {\n                drag.onDragEnd(event);\n            }\n            if (state.drop && state.drop.onDragLeave) {\n                state.drop.onDragLeave(event);\n            }\n            break;\n        }\n        default:\n            break;\n    }\n};\n","var detectBrowser = function () {\n    var ua = window && window.navigator.userAgent;\n    if (!ua) {\n        return false;\n    }\n    var browser = false;\n    var match = [];\n    var browserRxs = {\n        edge: /(edge)[ \\/]([\\w.]+)/i,\n        webkit: /(chrome|crios)[ \\/]([\\w.]+)/i,\n        safari: /(webkit)[ \\/]([\\w.]+)/i,\n        opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n        msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n        mozilla: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n    };\n    for (var agent in browserRxs) {\n        if (browserRxs.hasOwnProperty(agent)) {\n            match = ua.match(browserRxs[agent]);\n            if (match) {\n                browser = {};\n                browser[agent] = true;\n                browser[match[1].toLowerCase().split(\" \")[0].split(\"/\")[0]] = true;\n                browser.version = parseInt(document.DOCUMENT_NODE || match[2], 10);\n                break;\n            }\n        }\n    }\n    return browser;\n};\n/** @hidden */\nexport var getDocument = function (element) {\n    return element ? element.ownerDocument || window.document : window.document;\n};\n/** @hidden */\nexport var getWindow = function (element) {\n    var document = getDocument(element);\n    return document\n        ? document.defaultView || window\n        : window;\n};\n/** @hidden */\nexport var scrollableRoot = function (element) {\n    var support = { browser: detectBrowser() };\n    var document = getDocument(element);\n    return (support.browser.edge || support.browser.safari) ? document.body : document.documentElement;\n};\n/** @hidden */\nexport var isScrollable = function (el) {\n    if (el && el.className && typeof (el.className) === 'string' && el.className.indexOf('k-auto-scrollable') > -1) {\n        return true;\n    }\n    var overflow = window.getComputedStyle(el, 'overflow').overflow;\n    return overflow.indexOf('auto') > -1 || overflow.indexOf('scroll') > -1;\n};\n/** @hidden */\nexport var getScrollableParent = function (el) {\n    var root = scrollableRoot(el);\n    if (!el || el === document.body || el === document.documentElement) {\n        return root;\n    }\n    var parent = el;\n    while (parent\n        && parent !== document.body\n        && parent.nodeType !== Node.DOCUMENT_FRAGMENT_NODE\n        && parent.nodeType !== Node.DOCUMENT_NODE\n        && !isScrollable(parent)) {\n        parent = parent.parentNode;\n    }\n    if (parent && (parent === document.body || parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE)) {\n        return root;\n    }\n    return parent;\n};\n/** @hidden */\nexport var autoScrollVelocity = function (mouseX, mouseY, rect) {\n    var velocity = { x: 0, y: 0 };\n    var AUTO_SCROLL_AREA = 50;\n    if (mouseX - rect.left < AUTO_SCROLL_AREA) {\n        velocity.x = -(AUTO_SCROLL_AREA - (mouseX - rect.left));\n    }\n    else if (rect.right - mouseX < AUTO_SCROLL_AREA) {\n        velocity.x = AUTO_SCROLL_AREA - (rect.right - mouseX);\n    }\n    if (mouseY - rect.top < AUTO_SCROLL_AREA) {\n        velocity.y = -(AUTO_SCROLL_AREA - (mouseY - rect.top));\n    }\n    else if (rect.bottom - mouseY < AUTO_SCROLL_AREA) {\n        velocity.y = AUTO_SCROLL_AREA - (rect.bottom - mouseY);\n    }\n    return velocity;\n};\n/** @hidden */\nexport var scrollableViewPort = function (el, window) {\n    var root = scrollableRoot(el);\n    if (el === root) {\n        return {\n            top: root.scrollTop,\n            left: root.scrollLeft,\n            bottom: root.scrollTop + window.innerHeight,\n            right: root.scrollLeft + window.innerWidth\n        };\n    }\n    else {\n        var rect = el.getBoundingClientRect();\n        return {\n            bottom: rect.top + rect.height,\n            right: rect.left + rect.width,\n            left: rect.left,\n            top: rect.top\n        };\n    }\n};\n/** @hidden */\nexport var isPointerInsideContainer = function (x, y, container) {\n    var rect = container.getBoundingClientRect();\n    return (rect.top <= y &&\n        rect.left <= x &&\n        y <= rect.bottom &&\n        x <= rect.right);\n};\n","import { scrollableRoot } from './utils';\n/** @hidden */\nexport var autoScroll = function (scrollableParent, vel) {\n    if (!scrollableParent) {\n        return;\n    }\n    var yIsScrollable;\n    var xIsScrollable;\n    var isRootNode = scrollableParent === scrollableRoot(scrollableParent);\n    if (isRootNode) {\n        yIsScrollable = document.body.scrollHeight > window.innerHeight;\n        xIsScrollable = document.body.scrollWidth > window.innerWidth;\n    }\n    else {\n        yIsScrollable = scrollableParent.offsetHeight <= scrollableParent.scrollHeight;\n        xIsScrollable = scrollableParent.offsetWidth <= scrollableParent.scrollWidth;\n    }\n    var yDelta = scrollableParent.scrollTop + vel.y;\n    var yInBounds = yIsScrollable && yDelta > 0 && yDelta < scrollableParent.scrollHeight;\n    var xDelta = scrollableParent.scrollLeft + vel.x;\n    var xInBounds = xIsScrollable && xDelta > 0 && xDelta < scrollableParent.scrollWidth;\n    if (yInBounds) {\n        scrollableParent.scrollTop += vel.y;\n    }\n    else if (yIsScrollable && yDelta < 0) {\n        scrollableParent.scrollTop = 0;\n    }\n    if (xInBounds) {\n        scrollableParent.scrollLeft += vel.x;\n    }\n    else if (xIsScrollable && xDelta < 0) {\n        scrollableParent.scrollLeft = 0;\n    }\n};\n","import * as React from 'react';\n/**\n * @hidden\n */\nexport var useInheritedState = function (context, defaultValue) {\n    var _a = React.useContext(context), contextValue = _a[0], contextSetter = _a[1];\n    var _b = React.useState(defaultValue), localValue = _b[0], localSetter = _b[1];\n    var value = contextValue !== undefined ? contextValue : localValue;\n    var handleValueChange = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        contextValue !== undefined\n            ? contextSetter.apply(void 0, args) : localSetter(args[0]);\n    };\n    return [\n        value,\n        handleValueChange\n    ];\n};\n","import * as React from 'react';\nimport { noop } from '../../noop';\n/**\n * @hidden\n */\nexport var DragContext = React.createContext([\n    undefined,\n    noop\n]);\n/**\n * @hidden\n */\nexport var DropContext = React.createContext([\n    undefined,\n    noop\n]);\n/**\n * @hidden\n */\nexport var DragsContext = React.createContext([[], noop, noop]);\n/**\n * @hidden\n */\nexport var DropsContext = React.createContext([[], noop, noop]);\n","import * as React from 'react';\nimport { useDraggable } from './hooks';\n/**\n * Represents the KendoReact Draggable component.\n *\n * Accepts properties of type [DraggableProps]({% slug api_common_draggableprops %}),\n * and returns an object of type [DraggableHandle]({% slug api_common_draggablehandle %}) when the `ref` is obtained.\n */\nexport var Draggable = React.forwardRef(function (props, ref) {\n    var childRef = React.useRef(null);\n    var target = React.useRef(null);\n    var getElement = React.useCallback(function () { return childRef.current && childRef.current.element\n        ? childRef.current.element\n        : childRef.current; }, [childRef]);\n    React.useImperativeHandle(target, function () { return ({ element: getElement() || null }); });\n    React.useImperativeHandle(ref, function () { return target.current; });\n    React.useImperativeHandle(props.childRef, function () { return childRef.current; });\n    var handlePress = React.useCallback(function (event) {\n        if (!props.onPress) {\n            return;\n        }\n        props.onPress({\n            element: getElement(),\n            target: target.current,\n            event: event\n        });\n    }, [getElement, props.onPress]);\n    var handleRelease = React.useCallback(function (event) {\n        if (!props.onRelease) {\n            return;\n        }\n        props.onRelease({\n            element: getElement(),\n            target: target.current,\n            event: event\n        });\n    }, [getElement, props.onRelease]);\n    var handleDragStart = React.useCallback(function (event) {\n        if (!props.onDragStart) {\n            return;\n        }\n        props.onDragStart({\n            element: getElement(),\n            target: target.current,\n            event: event\n        });\n    }, [props, getElement]);\n    var handleDrag = React.useCallback(function (event) {\n        if (!props.onDrag) {\n            return;\n        }\n        props.onDrag({\n            element: getElement(),\n            target: target.current,\n            event: event\n        });\n    }, [getElement, props.onDrag]);\n    var handleDragEnd = React.useCallback(function (event) {\n        if (!props.onDragEnd) {\n            return;\n        }\n        props.onDragEnd({\n            element: getElement(),\n            target: target.current,\n            event: event\n        });\n    }, [getElement, props.onDragEnd]);\n    useDraggable(childRef, {\n        onPress: handlePress,\n        onRelease: handleRelease,\n        onDragStart: handleDragStart,\n        onDrag: handleDrag,\n        onDragEnd: handleDragEnd\n    }, {\n        mouseOnly: props.mouseOnly,\n        autoScroll: props.autoScroll,\n        hint: props.hint,\n        scrollContainer: props.scrollContainer\n    });\n    return props.children\n        ? (React.cloneElement(React.Children.only(props.children), { ref: childRef }))\n        : null;\n});\nDraggable.displayName = 'KendoReactDraggable';\n","import * as React from 'react';\nimport { dispatchDragAndDrop, autoScroll as autoScrollElement, getScrollableParent } from '@progress/kendo-draggable-common';\nimport { noop } from '../noop';\nimport { useInheritedState } from '../hooks/useInheritedState';\nimport { DragContext, DropContext, DragsContext, DropsContext } from '../drag-n-drop/context';\nvar IGNORE_MOUSE_TIMEOUT = 2000;\n/**\n * Represents the KendoReact `useDraggable` hook.\n * Use it to attach `drag` events to a native HTML DOM elements, or custom React Components.\n *\n * For more information, refer to the [KendoReact Draggable]({% slug draggable_drag-and-drop %}) article.\n *\n * @param ref - The `ref` of the HTML Element or React Component which will enable the `draggable` functionality.\n * @param callbacks - A collection of callbacks, called by the `useDraggable` hook when a specific action occurs.\n * @param options - Additional configuration of the `useDraggable` hook.\n */\nexport function useDraggable(ref, callbacks, options) {\n    if (options === void 0) { options = {}; }\n    var _a = callbacks.onPress, onPress = _a === void 0 ? noop : _a, _b = callbacks.onRelease, onRelease = _b === void 0 ? noop : _b, _c = callbacks.onDragStart, onDragStart = _c === void 0 ? noop : _c, _d = callbacks.onDrag, onDrag = _d === void 0 ? noop : _d, _e = callbacks.onDragEnd, onDragEnd = _e === void 0 ? noop : _e;\n    var _f = options.hint, hint = _f === void 0 ? null : _f, _g = options.mouseOnly, mouseOnly = _g === void 0 ? false : _g, _h = options.autoScroll, autoScroll = _h === void 0 ? true : _h, _j = options.scrollContainer, scrollContainer = _j === void 0 ? null : _j;\n    var _k = React.useState(false), pressed = _k[0], setPressed = _k[1];\n    var _l = React.useState(false), scrolling = _l[0], setScrolling = _l[1];\n    var drop = useInheritedState(DropContext)[0];\n    var _m = useInheritedState(DragContext), drag = _m[0], setDrag = _m[1];\n    var drops = React.useContext(DropsContext)[0];\n    var _o = React.useContext(DragsContext), drags = _o[0], registerDrag = _o[1], deregisterDrag = _o[2];\n    var velocity = React.useRef({ x: 0, y: 0 });\n    var scrollInterval = React.useRef();\n    var ignoreMouse = React.useRef(false);\n    var restoreMouseTimeout = React.useRef();\n    var scrollable = React.useRef(null);\n    var unmount = React.useRef(false);\n    var offset = React.useRef({ x: 0, y: 0 });\n    var pageOffset = React.useRef({ x: 0, y: 0 });\n    var clientOffset = React.useRef({ x: 0, y: 0 });\n    var initialClientOffset = React.useRef({ x: 0, y: 0 });\n    var scrollOffset = React.useRef({ x: 0, y: 0 });\n    var initialScrollOffset = React.useRef({ x: 0, y: 0 });\n    var supportPointerEvent = Boolean(window && (typeof window !== 'undefined') && window.PointerEvent);\n    var pointers = !mouseOnly && supportPointerEvent;\n    var getElement = React.useCallback(function () { return ref.current && ref.current.element\n        ? ref.current.element\n        : ref.current; }, [ref]);\n    var getHintElement = React.useCallback(function () { return hint && hint.current && hint.current.element\n        ? hint.current.element\n        : hint\n            ? hint.current\n            : null; }, [hint]);\n    var getScrollContainer = React.useCallback(function () { return scrollContainer && scrollContainer.current && scrollContainer.current.element\n        ? scrollContainer.current.element\n        : scrollContainer\n            ? scrollContainer.current\n            : null; }, [scrollContainer]);\n    var getAutoScrollContainer = React.useCallback(function () { return typeof autoScroll === 'object' && autoScroll.boundaryElementRef\n        && autoScroll.boundaryElementRef.current && autoScroll.boundaryElementRef.current.element\n        ? autoScroll.boundaryElementRef.current.element\n        : typeof autoScroll === 'object' && autoScroll.boundaryElementRef && autoScroll.boundaryElementRef.current\n            ? autoScroll.boundaryElementRef.current\n            : null; }, [autoScroll]);\n    var target = React.useRef(null);\n    React.useImperativeHandle(target, function () { return ({\n        element: getElement(),\n        hint: getHintElement(),\n        onPress: handlePress,\n        onDragStart: handleDragStart,\n        onDrag: handleDrag,\n        onDragEnd: handleDragEnd,\n        onRelease: handleRelease,\n        data: ref.current\n    }); });\n    var getDocument = React.useCallback(function () {\n        var element = getElement();\n        return element ? element.ownerDocument || document : document;\n    }, [getElement]);\n    var getWindow = React.useCallback(function () {\n        var document = getDocument();\n        return document\n            ? document.defaultView || window\n            : window;\n    }, [getDocument]);\n    var getState = React.useCallback(function () { return ({\n        drag: drag ? drag.current : null,\n        drop: drop ? drop.current : null,\n        drags: drags.map(function (d) { return d.current; }),\n        drops: drops.map(function (d) { return d.current; }),\n        pressed: pressed,\n        ignoreMouse: ignoreMouse.current,\n        scrollOffset: scrollOffset.current,\n        offset: offset.current,\n        pageOffset: pageOffset.current,\n        initialScrollOffset: initialScrollOffset.current,\n        clientOffset: clientOffset.current,\n        initialClientOffset: initialClientOffset.current,\n        velocity: velocity.current,\n        autoScroll: Boolean(typeof autoScroll === 'object' ? autoScroll.enabled !== false : autoScroll),\n        scrollableParent: getAutoScrollContainer(),\n        autoScrollDirection: typeof autoScroll === 'object' ? autoScroll.direction : { horizontal: true, vertical: true },\n        isScrolling: scrolling\n    }); }, [drag, drop, drags, drops, pressed, autoScroll, getAutoScrollContainer, scrolling]);\n    var handlePressedChange = React.useCallback(function (value) {\n        setPressed(value);\n    }, []);\n    var handleScrollingChange = React.useCallback(function (value) {\n        setScrolling(value);\n    }, []);\n    var handleVelocityChange = React.useCallback(function (value) {\n        velocity.current = value;\n    }, []);\n    var handleOffsetChange = React.useCallback(function (value) {\n        offset.current = value;\n    }, []);\n    var handleClientOffsetChange = React.useCallback(function (value) {\n        clientOffset.current = value;\n    }, []);\n    var handlePageOffsetChange = React.useCallback(function (value) {\n        pageOffset.current = value;\n    }, []);\n    var handleInitialClientOffsetChange = React.useCallback(function (value) {\n        initialClientOffset.current = value;\n    }, []);\n    var handleScrollOffsetChange = React.useCallback(function (value) {\n        scrollOffset.current = value;\n    }, []);\n    var handleInitialScrollOffsetChange = React.useCallback(function (value) {\n        initialScrollOffset.current = value;\n    }, []);\n    // Drag Events\n    var handlePress = React.useCallback(function (event) {\n        onPress(event);\n    }, [onPress]);\n    var handleRelease = React.useCallback(function (event) {\n        onRelease(event);\n    }, [onRelease]);\n    var handleDragStart = React.useCallback(function (event) {\n        setDrag(target, { target: ref.current, event: event });\n        onDragStart(event);\n    }, [setDrag, ref, onDragStart]);\n    var handleDrag = React.useCallback(function (event) {\n        onDrag(event);\n    }, [onDrag]);\n    var handleDragEnd = React.useCallback(function (event) {\n        if (unmount.current) {\n            return;\n        }\n        setDrag(null, { target: ref.current, event: event });\n        onDragEnd(event);\n    }, [onDragEnd, setDrag, ref]);\n    var dispatchDragEvent = React.useCallback(function (event) {\n        dispatchDragAndDrop(getState(), { event: event, payload: target.current }, {\n            onVelocityChange: handleVelocityChange,\n            onOffsetChange: handleOffsetChange,\n            onClientOffsetChange: handleClientOffsetChange,\n            onPageOffsetChange: handlePageOffsetChange,\n            onInitialClientOffsetChange: handleInitialClientOffsetChange,\n            onScrollOffsetChange: handleScrollOffsetChange,\n            onInitialScrollOffsetChange: handleInitialScrollOffsetChange,\n            onIsPressedChange: handlePressedChange,\n            onIsScrollingChange: handleScrollingChange\n        });\n    }, [\n        getState,\n        handleVelocityChange,\n        handleOffsetChange,\n        handlePageOffsetChange,\n        handleClientOffsetChange,\n        handleInitialClientOffsetChange,\n        handleInitialScrollOffsetChange,\n        handlePressedChange,\n        handleScrollOffsetChange,\n        handleScrollingChange\n    ]);\n    // Pointer Events\n    var handlePointerDown = React.useCallback(function (event) {\n        dispatchDragEvent(event);\n    }, [dispatchDragEvent]);\n    var handlePointerMove = React.useCallback(function (event) {\n        dispatchDragEvent(event);\n    }, [dispatchDragEvent]);\n    var handlePointerCancel = React.useCallback(function (event) {\n        dispatchDragEvent(event);\n    }, [dispatchDragEvent]);\n    var handlePointerUp = React.useCallback(function (event) {\n        dispatchDragEvent(event);\n    }, [dispatchDragEvent]);\n    // Mouse Events\n    var handleMouseDown = React.useCallback(function (event) {\n        dispatchDragEvent(event);\n    }, [dispatchDragEvent]);\n    var handleMouseMove = React.useCallback(function (event) {\n        dispatchDragEvent(event);\n    }, [dispatchDragEvent]);\n    var handleMouseUp = React.useCallback(function (event) {\n        dispatchDragEvent(event);\n    }, [dispatchDragEvent]);\n    var handleContextMenu = React.useCallback(function (event) {\n        event.preventDefault();\n        dispatchDragEvent(event);\n    }, [dispatchDragEvent]);\n    // Touch Events\n    var handleTouchStart = React.useCallback(function (event) {\n        event.preventDefault();\n        dispatchDragEvent(event);\n    }, [dispatchDragEvent]);\n    var handleTouchMove = React.useCallback(function (event) {\n        event.preventDefault();\n        dispatchDragEvent(event);\n    }, [dispatchDragEvent]);\n    var handleTouchEnd = React.useCallback(function (event) {\n        if (event.touches.length === 0 && event.changedTouches.length === 1) {\n            var currentWindow = getWindow();\n            ignoreMouse.current = true;\n            restoreMouseTimeout.current = currentWindow.setTimeout(function () { ignoreMouse.current = false; }, IGNORE_MOUSE_TIMEOUT);\n        }\n        dispatchDragEvent(event);\n    }, [dispatchDragEvent, getWindow]);\n    var handleScroll = React.useCallback(function (event) {\n        dispatchDragEvent(event);\n    }, [dispatchDragEvent]);\n    // Misc\n    var prerequisites = React.useCallback(function () {\n        var element = getElement();\n        if (element) {\n            var initialTouchAction_1 = element.style.touchAction;\n            element.style.touchAction = 'none';\n            return function () {\n                element.style.touchAction = initialTouchAction_1;\n            };\n        }\n    }, [getElement]);\n    var register = React.useCallback(function () {\n        registerDrag(target);\n        return function () {\n            deregisterDrag(target);\n        };\n    }, [deregisterDrag, registerDrag]);\n    var init = function () {\n        var window = getWindow();\n        var element = getElement();\n        var document = getDocument();\n        if (pointers) {\n            if (element) {\n                scrollable.current = getScrollableParent(element);\n                if (scrollable.current) {\n                    scrollable.current.addEventListener('scroll', handleScroll, { passive: true });\n                }\n                element.addEventListener('pointerdown', handlePointerDown, { passive: true });\n            }\n            if (pressed) {\n                document.addEventListener('pointermove', handlePointerMove);\n                document.addEventListener('pointerup', handlePointerUp, true);\n                document.addEventListener('contextmenu', handleContextMenu);\n                document.addEventListener('pointercancel', handlePointerCancel, { passive: true });\n            }\n        }\n        else {\n            // Hacky-hacky iOS Safari\n            window.addEventListener('touchmove', noop, { capture: false, passive: false });\n            if (element) {\n                element.addEventListener('mousedown', handleMouseDown, { passive: true });\n                if (!mouseOnly) {\n                    element.addEventListener('touchstart', handleTouchStart, { passive: true });\n                    if (pressed) {\n                        element.addEventListener('touchmove', handleTouchMove, { passive: true });\n                        element.addEventListener('touchend', handleTouchEnd, { passive: true });\n                    }\n                }\n            }\n            if (pressed) {\n                document.addEventListener('mousemove', handleMouseMove, { passive: true });\n                document.addEventListener('mouseup', handleMouseUp, { passive: true });\n            }\n        }\n        return function () {\n            if (scrollable.current) {\n                scrollable.current.removeEventListener('scroll', handleScroll);\n            }\n            if (element) {\n                element.removeEventListener('pointerdown', handlePointerDown);\n                element.removeEventListener('mousedown', handleMouseDown);\n                element.removeEventListener('touchstart', handleTouchStart);\n                element.removeEventListener('touchmove', handleTouchMove);\n                element.removeEventListener('touchend', handleTouchEnd);\n            }\n            document.removeEventListener('pointermove', handlePointerMove);\n            document.removeEventListener('pointerup', handlePointerUp, true);\n            document.removeEventListener('contextmenu', handleContextMenu);\n            document.removeEventListener('pointercancel', handlePointerCancel);\n            document.removeEventListener('mousemove', handleMouseMove);\n            document.removeEventListener('mouseup', handleMouseUp);\n            window.removeEventListener('touchmove', noop);\n            window.clearTimeout(restoreMouseTimeout.current);\n        };\n    };\n    React.useEffect(function () {\n        var window = getWindow();\n        if (scrolling) {\n            var scrollableParent_1 = getScrollContainer()\n                || getScrollableParent(document.elementFromPoint(clientOffset.current.x, clientOffset.current.y));\n            window.clearInterval(scrollInterval.current);\n            scrollInterval.current = window.setInterval(function () {\n                autoScrollElement(scrollableParent_1, { x: velocity.current.x, y: velocity.current.y });\n            }, 50);\n        }\n        return function () {\n            window.clearInterval(scrollInterval.current);\n        };\n    }, [getElement, getScrollContainer, getWindow, scrolling]);\n    React.useEffect(prerequisites, [prerequisites]);\n    React.useEffect(init, [\n        pressed,\n        getWindow,\n        getElement,\n        getDocument,\n        mouseOnly,\n        pointers,\n        handleContextMenu,\n        handleMouseDown,\n        handleMouseMove,\n        handleMouseUp,\n        handlePointerCancel,\n        handlePointerDown,\n        handlePointerMove,\n        handlePointerUp,\n        handleTouchEnd,\n        handleTouchMove,\n        handleTouchStart,\n        handleScroll\n    ]);\n    React.useEffect(function () {\n        return function () {\n            unmount.current = true;\n        };\n    }, []);\n    React.useLayoutEffect(register, [register]);\n}\n","var __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};\nimport * as React from 'react';\nimport { Draggable } from '@progress/kendo-react-common';\nimport { closestTagName, getColumnIndex, getOffset, getRowIndex, getSelectionOptions, relativeContextElement } from './utils';\nimport { TABLE_PREVENT_SELECTION_ELEMENT } from './constants';\n/** @hidden */\nexport var TableSelection = function (props) {\n    var onRelease = props.onRelease, childRef = props.childRef;\n    var _a = getSelectionOptions(props.selectable), selectionEnabled = _a.enabled, selectionDrag = _a.drag, selectionMode = _a.mode, selectionCell = _a.cell;\n    var draggableRef = React.useRef(null);\n    var overlayElementRef = React.useRef(null);\n    var dragStartRef = React.useRef({ clientX: 0, clientY: 0 });\n    var _b = React.useState(null), overlaySettings = _b[0], setOverlaySettings = _b[1];\n    var offsetParentRef = React.useRef();\n    var isDraggedRef = React.useRef(false);\n    var isPreventedRef = React.useRef(false);\n    var onPressHandler = React.useCallback(function (eventData) {\n        var event = eventData.event;\n        isPreventedRef.current = event.originalEvent.target.hasAttribute(TABLE_PREVENT_SELECTION_ELEMENT);\n        if (isPreventedRef.current || !draggableRef.current) {\n            return;\n        }\n        offsetParentRef.current = relativeContextElement(draggableRef.current.element);\n        dragStartRef.current = {\n            clientY: event.clientY,\n            clientX: event.clientX\n        };\n    }, []);\n    var onDragHandler = React.useCallback(function (eventData) {\n        var event = eventData.event;\n        var _a = dragStartRef.current, clientX = _a.clientX, clientY = _a.clientY;\n        if (isPreventedRef.current) {\n            return;\n        }\n        if (!selectionDrag || selectionMode === 'single') {\n            return;\n        }\n        if (Math.abs(clientY - event.clientY) > 5 || Math.abs(clientX - event.clientX) > 5) {\n            isDraggedRef.current = true;\n        }\n        if (isDraggedRef.current) {\n            var offset = getOffset(offsetParentRef.current);\n            setOverlaySettings({\n                top: Math.min(clientY, event.clientY) - offset.top,\n                left: Math.min(clientX, event.clientX) - offset.left,\n                width: Math.abs(event.clientX - clientX),\n                height: Math.abs(event.clientY - clientY)\n            });\n        }\n    }, [setOverlaySettings, selectionDrag, selectionMode]);\n    var onReleaseHandler = React.useCallback(function (eventData) {\n        var event = eventData.event;\n        var _a = dragStartRef.current, clientX = _a.clientX, clientY = _a.clientY;\n        if (isPreventedRef.current || !draggableRef.current) {\n            return;\n        }\n        var currentDocument = draggableRef.current.element && draggableRef.current.element.ownerDocument;\n        if (!currentDocument) {\n            return;\n        }\n        if (!isDraggedRef.current) {\n            var startElement = currentDocument.elementFromPoint(clientX, clientY);\n            if (!startElement) {\n                return;\n            }\n            var tdElement = closestTagName(startElement, 'TD');\n            var trElement = closestTagName(startElement, 'TR');\n            var colIndex = getColumnIndex(tdElement);\n            var rowIndex = getRowIndex(trElement);\n            if (tdElement && trElement && rowIndex !== undefined && colIndex !== undefined) {\n                onRelease({\n                    nativeEvent: event.originalEvent,\n                    startRowIndex: rowIndex,\n                    startColIndex: colIndex,\n                    endRowIndex: rowIndex,\n                    endColIndex: colIndex,\n                    altKey: event.altKey,\n                    shiftKey: event.shiftKey,\n                    ctrlKey: event.ctrlKey,\n                    metaKey: event.metaKey,\n                    mode: selectionMode,\n                    cell: selectionCell,\n                    isDrag: false\n                });\n            }\n        }\n        else {\n            var top_1 = Math.min(clientY, event.clientY);\n            var left = Math.min(clientX, event.clientX);\n            var bottom = Math.max(clientY, event.clientY);\n            var right = Math.max(clientX, event.clientX);\n            var overlayElement = overlayElementRef.current;\n            if (!overlayElement) {\n                return;\n            }\n            overlayElement.style.visibility = 'hidden';\n            var startElement = currentDocument.elementFromPoint(left, top_1);\n            var endElement = currentDocument.elementFromPoint(right, bottom);\n            overlayElement.style.visibility = '';\n            if (!startElement || !endElement) {\n                return;\n            }\n            var startTdElement = closestTagName(startElement, 'TD');\n            var startTrElement = closestTagName(startTdElement, 'TR');\n            var endTdElement = closestTagName(endElement, 'TD');\n            var endTrElement = closestTagName(endTdElement, 'TR');\n            var startColIndex = getColumnIndex(startTdElement);\n            var startRowIndex = getRowIndex(startTrElement);\n            var endColIndex = getColumnIndex(endTdElement);\n            var endRowIndex = getRowIndex(endTrElement);\n            if (startColIndex !== undefined &&\n                startRowIndex !== undefined &&\n                endColIndex !== undefined &&\n                endRowIndex !== undefined) {\n                onRelease({\n                    nativeEvent: event.originalEvent,\n                    startRowIndex: startRowIndex,\n                    startColIndex: startColIndex,\n                    endRowIndex: endRowIndex,\n                    endColIndex: endColIndex,\n                    altKey: event.altKey,\n                    shiftKey: event.shiftKey,\n                    ctrlKey: event.ctrlKey,\n                    metaKey: event.metaKey,\n                    mode: selectionMode,\n                    cell: selectionCell,\n                    isDrag: true\n                });\n            }\n        }\n        setOverlaySettings(null);\n        isDraggedRef.current = false;\n        dragStartRef.current = { clientX: 0, clientY: 0 };\n    }, [setOverlaySettings, selectionMode, selectionCell, onRelease]);\n    if (!selectionEnabled) {\n        return (React.cloneElement(React.Children.only(props.children), { ref: childRef }));\n    }\n    return (React.createElement(React.Fragment, null,\n        React.createElement(Draggable, { onPress: onPressHandler, onDrag: onDragHandler, onRelease: onReleaseHandler, ref: draggableRef, childRef: childRef }, props.children),\n        overlaySettings &&\n            React.createElement(\"div\", { ref: overlayElementRef, style: __assign({}, overlaySettings, { position: 'fixed' }), className: 'k-marquee k-marquee-color' })));\n};\n","var __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})();\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport { canUseDOM } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar DropClue = /** @class */ (function (_super) {\n    __extends(DropClue, _super);\n    function DropClue(props) {\n        var _this = _super.call(this, props) || this;\n        _this.state = {\n            height: 0,\n            visible: false,\n            left: 0,\n            top: 0\n        };\n        _this.hiddenElementRef = React.createRef();\n        return _this;\n    }\n    DropClue.prototype.render = function () {\n        var hiddenElement = this.hiddenElementRef.current;\n        var dropClue = this.state.visible && canUseDOM && createPortal((React.createElement(\"div\", { className: \"k-grouping-dropclue\", style: {\n                zIndex: 10000,\n                display: 'block',\n                top: this.state.top + 'px',\n                left: this.state.left + 'px',\n                height: this.state.height + 'px'\n            } })), (hiddenElement && hiddenElement.ownerDocument ?\n            hiddenElement.ownerDocument.body :\n            document.body));\n        return (React.createElement(React.Fragment, null,\n            dropClue,\n            React.createElement(\"div\", { ref: this.hiddenElementRef, style: { display: 'none' } })));\n    };\n    return DropClue;\n}(React.PureComponent));\nexport { DropClue };\n","var __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})();\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport { canUseDOM } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar DragClue = /** @class */ (function (_super) {\n    __extends(DragClue, _super);\n    function DragClue(props) {\n        var _this = _super.call(this, props) || this;\n        _this.elementRef = React.createRef();\n        _this.state = {\n            visible: false,\n            top: 0,\n            left: 0,\n            innerText: '',\n            status: 'k-i-cancel'\n        };\n        _this.hiddenElementRef = React.createRef();\n        return _this;\n    }\n    Object.defineProperty(DragClue.prototype, \"element\", {\n        get: function () {\n            return this.elementRef.current;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    DragClue.prototype.render = function () {\n        var hiddenElement = this.hiddenElementRef.current;\n        var dragClue = this.state.visible && canUseDOM && createPortal((React.createElement(\"div\", { ref: this.elementRef, className: \"k-header k-drag-clue\", style: {\n                display: 'block',\n                position: 'absolute',\n                zIndex: 20000,\n                padding: '8px 12px',\n                top: this.state.top + 'px',\n                left: this.state.left + 'px'\n            } },\n            React.createElement(\"span\", { className: 'k-icon k-drag-status ' + this.state.status + ' k-icon-with-modifier' },\n                React.createElement(\"span\", { className: \"k-icon k-icon-modifier\" })),\n            this.state.innerText)), (hiddenElement && hiddenElement.ownerDocument ?\n            hiddenElement.ownerDocument.body :\n            document.body));\n        return (React.createElement(React.Fragment, null,\n            dragClue,\n            React.createElement(\"div\", { ref: this.hiddenElementRef, style: { display: 'none' } })));\n    };\n    return DragClue;\n}(React.PureComponent));\nexport { DragClue };\n","import * as PropTypes from 'prop-types';\n/**\n * @hidden\n */\nexport var GridColumn = function (_) { return null; };\n/**\n * @hidden\n */\nGridColumn.displayName = 'KendoReactGridColumn';\n/**\n * @hidden\n */\nGridColumn.defaultProps = {\n    filterable: true,\n    editable: true,\n    sortable: true,\n    resizable: true,\n    reorderable: true,\n    groupable: true\n};\n/**\n * @hidden\n */\nGridColumn.propTypes = {\n    field: PropTypes.string,\n    title: PropTypes.string,\n    editable: PropTypes.bool,\n    sortable: PropTypes.oneOfType([\n        PropTypes.bool,\n        PropTypes.shape({\n            allowUnsort: PropTypes.bool\n        })\n    ]),\n    cell: PropTypes.any,\n    filterCell: PropTypes.any,\n    filterTitle: PropTypes.string,\n    filterable: PropTypes.bool,\n    filter: PropTypes.oneOf(['text', 'numeric', 'boolean', 'date']),\n    editor: PropTypes.oneOf(['text', 'numeric', 'boolean', 'date']),\n    width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n    minResizableWidth: PropTypes.number,\n    headerCell: PropTypes.any,\n    footerCell: PropTypes.any,\n    headerSelectionValue: PropTypes.bool,\n    format: PropTypes.string,\n    headerClassName: PropTypes.string,\n    className: PropTypes.string,\n    reorderable: PropTypes.bool,\n    resizable: PropTypes.bool,\n    orderIndex: PropTypes.number,\n    groupable: PropTypes.bool,\n    columnMenu: PropTypes.any,\n    locked: PropTypes.bool\n};\n","var __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};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\n/**\n * @hidden\n */\nexport function getNestedValue(fieldName, dataItem) {\n    var path = (fieldName || '').split('.');\n    var data = dataItem;\n    path.forEach(function (p) {\n        data = data ? data[p] : undefined;\n    });\n    return data;\n}\n/**\n * @hidden\n */\nexport function flatData(output, input, footer, dataIndex, groupDefined, field, level) {\n    if (level === void 0) { level = 0; }\n    var maxLevel = level;\n    for (var i = 0; i < input.length; i++) {\n        if (!groupDefined || input[i].value === undefined || input[i].items === undefined) {\n            output[output.length] = {\n                dataIndex: dataIndex.index,\n                dataItem: input[i],\n                rowType: 'data',\n                level: level,\n                expanded: field === undefined || getNestedValue(field, input[i])\n            };\n            dataIndex.index++;\n            continue;\n        }\n        maxLevel = Math.max(maxLevel, level + 1);\n        var expanded = field === undefined ||\n            getNestedValue(field, input[i]) === undefined ||\n            getNestedValue(field, input[i]);\n        // header\n        output[output.length] = {\n            dataIndex: -1,\n            dataItem: input[i],\n            level: level,\n            rowType: 'groupHeader',\n            expanded: expanded\n        };\n        // children\n        if (expanded) {\n            maxLevel = Math.max(flatData(output, input[i].items, footer, dataIndex, groupDefined, field, level + 1), maxLevel);\n        }\n        // footer\n        if (footer === 'always' || (expanded && footer === 'visible')) {\n            output[output.length] = {\n                dataIndex: -1,\n                dataItem: input[i],\n                rowType: 'groupFooter',\n                level: level,\n                expanded: expanded\n            };\n        }\n    }\n    return maxLevel;\n}\nvar eventKeys = [\n    'sortChange',\n    'filterChange',\n    'groupChange',\n    'pageChange',\n    'expandChange',\n    'selectionChange',\n    'headerSelectionChange',\n    'rowClick',\n    'itemChange',\n    'dataStateChange',\n    'columnResize',\n    'columnReorder'\n];\nvar deprecatedHandlerMessage = function (oldKey, newKey) { return (\"The \" + oldKey + \" event handler property is deprecated, \" +\n    (\"use https://www.telerik.com/kendo-react-ui/components/grid/api/GridProps/#toc-\" + newKey + \" instead\")); };\n/**\n * @hidden\n */\nexport function checkPropCompatibility(props) {\n    for (var index = 0; index < eventKeys.length; index++) {\n        var eventKey = eventKeys[index];\n        if (props[eventKey] !== undefined) {\n            var newKey = 'on' + eventKey.charAt(0).toUpperCase() + eventKey.slice(1);\n            console.warn(deprecatedHandlerMessage(eventKey, newKey));\n        }\n    }\n}\nimport { GridColumn } from '../GridColumn';\nimport { tableKeyboardNavigationTools as navigationTools } from '@progress/kendo-react-data-tools';\n/**\n * @hidden\n */\nexport function readColumns(elements, oldColumns, idInfo, depth) {\n    if (depth === void 0) { depth = 0; }\n    var columns = [];\n    if (!elements) {\n        return [];\n    }\n    if (elements && elements.length === undefined) {\n        elements = [elements];\n    }\n    elements.forEach(function (columnProps, index) {\n        columnProps = columnProps.props ? columnProps.props : columnProps;\n        var oldColumn = oldColumns[index] || null;\n        var children = readColumns(columnProps.children, oldColumn && oldColumn.children || [], idInfo, depth + 1);\n        columns.push(Object.assign({ depth: depth }, GridColumn.defaultProps, (children.length) ? { cell: function () { return null; }, filterCell: function () { return null; } } : {}, oldColumn ? { width: oldColumn.width, orderIndex: oldColumn.orderIndex } : {}, columnProps, {\n            id: columnProps.id ? columnProps.id : navigationTools.generateNavigatableId(\"\" + idInfo.prevId++, idInfo.idPrefix, 'column'),\n            declarationIndex: columns.length,\n            children: children,\n            rowSpan: 0,\n            colSpan: 0,\n            isAccessible: true\n        }));\n    });\n    var comparator = function (a, b) {\n        return a.orderIndex === b.orderIndex ?\n            a.declarationIndex - b.declarationIndex :\n            ((a.orderIndex || 0) - (b.orderIndex || 0));\n    };\n    columns.sort(comparator);\n    if (depth === 0) {\n        var ret_1 = [];\n        var flat_1 = function (cols, pIndex) {\n            return cols.forEach(function (c) {\n                c.parentIndex = pIndex;\n                flat_1(c.children, ret_1.push(c) - 1);\n            });\n        };\n        flat_1(columns, -1);\n        return ret_1;\n    }\n    return columns;\n}\n/**\n * @hidden\n */\nexport function autoGenerateColumns(data, group, expandField, idInfo) {\n    var propData = [];\n    if (Array.isArray(data)) {\n        propData = data;\n    }\n    else if (data) {\n        propData = data.data;\n    }\n    var columns = [];\n    if (propData.length > 0) {\n        var itemForColumnsGen = propData[0];\n        if (group) {\n            for (var i = 0; i < group.length; i++) {\n                itemForColumnsGen = itemForColumnsGen.items && itemForColumnsGen.items[0];\n            }\n        }\n        var fields = Object.getOwnPropertyNames(itemForColumnsGen);\n        fields.forEach(function (field) {\n            if (field !== expandField) {\n                columns.push(Object.assign({\n                    id: navigationTools.generateNavigatableId(\"\" + idInfo.prevId++, idInfo.idPrefix, 'column'),\n                    declarationIndex: -1,\n                    parentIndex: -1,\n                    depth: 0,\n                    colSpan: 0,\n                    rowSpan: 0,\n                    index: 0,\n                    left: 0,\n                    right: 0,\n                    rightBorder: false,\n                    children: [],\n                    ariaColumnIndex: 0,\n                    isAccessible: true\n                }, GridColumn.defaultProps, { field: field }));\n            }\n        });\n    }\n    return columns;\n}\nvar hasParentFooterCell = function (columns, column) {\n    var parent = columns[column.parentIndex];\n    while (parent) {\n        if (parent.footerCell) {\n            return true;\n        }\n        parent = columns[parent.parentIndex];\n    }\n    return false;\n};\n/**\n * @hidden\n */\nexport var footerColumns = function (columns) {\n    return columns.filter(function (column) {\n        if (hasParentFooterCell(columns, column)) {\n            return false;\n        }\n        return Boolean(column.footerCell) || !(column.children && column.children.length > 0);\n    });\n};\n/**\n * @hidden\n */\nexport var sanitizeColumns = function (columns) {\n    columns.sort(function (a, b) {\n        return a.declarationIndex - b.declarationIndex;\n    });\n    return columns.map(function (column) {\n        var declarationIndex = column.declarationIndex, parentIndex = column.parentIndex, depth = column.depth, colSpan = column.colSpan, rowSpan = column.rowSpan, index = column.index, kFirst = column.kFirst, children = column.children, props = __rest(column, [\"declarationIndex\", \"parentIndex\", \"depth\", \"colSpan\", \"rowSpan\", \"index\", \"kFirst\", \"children\"]);\n        return children.length ? __assign({ children: sanitizeColumns(children) }, props) : props;\n    });\n};\n","import * as React from 'react';\nimport { KEYBOARD_NAV_DATA_ID, KEYBOARD_NAV_DATA_LEVEL } from './constants';\nimport { TableKeyboardNavigationContext } from './TableKeyboardNavigationContext';\n/**\n * @hidden\n */\nexport var useTableKeyboardNavigation = function (elementId, navigatable) {\n    var _a;\n    var navigationContext = React.useContext(TableKeyboardNavigationContext);\n    if (!navigationContext || !elementId || navigatable === false) {\n        return {};\n    }\n    return _a = {\n            tabIndex: navigationContext && navigationContext.activeId && navigationContext.activeId === elementId ? 0 : -1\n        },\n        _a[KEYBOARD_NAV_DATA_LEVEL] = navigationContext.level,\n        _a[KEYBOARD_NAV_DATA_ID] = elementId,\n        _a;\n};\n","var __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};\nimport * as React from 'react';\nimport { getNestedValue } from './../utils';\nimport { guid } from '@progress/kendo-react-common';\nimport { useTableKeyboardNavigation } from '@progress/kendo-react-data-tools';\n/**\n * @hidden\n */\nexport var GridSelectionCell = function (props) {\n    var handleOnChange = React.useCallback(function (syntheticEvent) {\n        if (props.selectionChange) {\n            props.selectionChange({ syntheticEvent: syntheticEvent });\n        }\n    }, [props.selectionChange]);\n    var inputId = React.useMemo(function () { return guid(); }, []);\n    var selectedValue = getNestedValue(props.field, props.dataItem);\n    var navigationAttributes = useTableKeyboardNavigation(props.id);\n    var defaultRendering = props.rowType !== 'groupHeader' ? (React.createElement(\"td\", __assign({ colSpan: props.colSpan, style: props.style, className: props.className, \"aria-colindex\": props.ariaColumnIndex, role: 'gridcell' }, navigationAttributes),\n        React.createElement(\"input\", { checked: typeof selectedValue === 'boolean' && selectedValue, id: inputId, type: \"checkbox\", className: \"k-checkbox\", onChange: handleOnChange }),\n        React.createElement(\"label\", { className: \"k-checkbox-label\", htmlFor: inputId }))) : null;\n    return props.render ?\n        props.render.call(undefined, defaultRendering, props) :\n        defaultRendering;\n};\n","var __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};\nimport * as React from 'react';\nimport { getNestedValue } from './../utils';\nimport { useTableKeyboardNavigation } from '@progress/kendo-react-data-tools';\nimport { Keys } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nexport var GridHierarchyCell = function (props) {\n    var defaultRendering = null;\n    var expanded = getNestedValue(props.field, props.dataItem);\n    var navigationAttributes = useTableKeyboardNavigation(props.id);\n    var onKeyDownHandler = React.useCallback(function (event) {\n        if (event.isDefaultPrevented()) {\n            return;\n        }\n        if (event.keyCode === Keys.enter && props.onChange) {\n            event.preventDefault();\n            props.onChange({\n                dataItem: props.dataItem,\n                dataIndex: props.dataIndex,\n                syntheticEvent: event,\n                field: props.field,\n                value: !expanded\n            });\n        }\n    }, [props.dataItem, props.dataIndex, props.field, props.onChange, expanded]);\n    if (props.rowType === 'groupFooter') {\n        defaultRendering = React.createElement(\"td\", __assign({ className: \"k-hierarchy-cell\" }, navigationAttributes));\n    }\n    else if (props.rowType !== 'groupHeader') {\n        var className = expanded ? 'k-icon k-i-minus' : 'k-icon k-i-plus';\n        defaultRendering = (React.createElement(\"td\", __assign({ className: \"k-hierarchy-cell\", onKeyDown: onKeyDownHandler, \"aria-expanded\": expanded ? 'true' : 'false', role: 'gridcell', \"aria-colindex\": props.ariaColumnIndex }, navigationAttributes),\n            React.createElement(\"a\", { onClick: function (e) {\n                    e.preventDefault();\n                    if (props.onChange) {\n                        props.onChange({\n                            dataItem: props.dataItem,\n                            dataIndex: props.dataIndex,\n                            syntheticEvent: e,\n                            field: props.field,\n                            value: !expanded\n                        });\n                    }\n                }, className: className, href: \"#\", tabIndex: -1 })));\n    }\n    return props.render ?\n        props.render.call(undefined, defaultRendering, props) :\n        defaultRendering;\n};\n","import { TABLE_COL_INDEX_ATTRIBUTE, TABLE_PREVENT_SELECTION_ELEMENT, TABLE_ROW_INDEX_ATTRIBUTE } from '@progress/kendo-react-data-tools';\n/** The attribute required by the Grid selection on Grid `tr` elements. */\nexport var GRID_ROW_INDEX_ATTRIBUTE = TABLE_ROW_INDEX_ATTRIBUTE;\n/** The attribute required by the Grid selection on Grid `td` elements. */\nexport var GRID_COL_INDEX_ATTRIBUTE = TABLE_COL_INDEX_ATTRIBUTE;\n/** Attribute which disable selection start from this element. */\nexport var GRID_PREVENT_SELECTION_ELEMENT = TABLE_PREVENT_SELECTION_ELEMENT;\n","var __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};\nimport * as React from 'react';\nimport { getNestedValue } from './../utils';\nimport { NumericTextBox } from '@progress/kendo-react-inputs';\nimport { DatePicker } from '@progress/kendo-react-dateinputs';\nimport { guid, classNames } from '@progress/kendo-react-common';\nimport { useTableKeyboardNavigation } from '@progress/kendo-react-data-tools';\nimport { GRID_COL_INDEX_ATTRIBUTE } from '../constants';\n/**\n * @hidden\n */\nexport var GridEditCell = function (props) {\n    var _a, _b, _c, _d, _e;\n    var data = getNestedValue(props.field, props.dataItem);\n    var defaultRendering = null;\n    var editCellClasses = classNames('k-grid-edit-cell', (_a = {},\n        _a['k-state-selected'] = props.isSelected,\n        _a), props.className);\n    var inputId = React.useMemo(function () { return guid(); }, []);\n    var navigationAttributes = useTableKeyboardNavigation(props.id);\n    var handleOnChange = React.useCallback(function (syntheticEvent) {\n        if (props.onChange) {\n            var value = syntheticEvent.target.type === 'checkbox' ?\n                syntheticEvent.target.checked :\n                syntheticEvent.target.value;\n            props.onChange({\n                dataItem: props.dataItem,\n                dataIndex: props.dataIndex,\n                field: props.field,\n                syntheticEvent: syntheticEvent,\n                value: value\n            });\n        }\n    }, [props.onChange, props.dataItem, props.dataIndex, props.field]);\n    var inputChange = React.useCallback(function (e) {\n        if (props.onChange) {\n            props.onChange({\n                dataItem: props.dataItem,\n                dataIndex: props.dataIndex,\n                field: props.field,\n                syntheticEvent: e.syntheticEvent,\n                value: e.value\n            });\n        }\n    }, [props.onChange, props.dataItem, props.dataIndex, props.field]);\n    switch (props.editor) {\n        case 'numeric':\n            defaultRendering = (React.createElement(\"td\", __assign({ colSpan: props.colSpan, style: props.style, className: editCellClasses, \"aria-colindex\": props.ariaColumnIndex, \"aria-selected\": props.isSelected }, (_b = {}, _b[GRID_COL_INDEX_ATTRIBUTE] = props.columnIndex, _b), { role: 'gridcell' }, navigationAttributes),\n                React.createElement(NumericTextBox, { width: \"100%\", value: (data === undefined) ? null : data, onChange: inputChange })));\n            break;\n        case 'date':\n            defaultRendering = (React.createElement(\"td\", __assign({ colSpan: props.colSpan, style: props.style, className: editCellClasses, \"aria-colindex\": props.ariaColumnIndex, \"aria-selected\": props.isSelected }, (_c = {}, _c[GRID_COL_INDEX_ATTRIBUTE] = props.columnIndex, _c), { role: 'gridcell' }, navigationAttributes),\n                React.createElement(DatePicker, { width: \"100%\", value: data, onChange: inputChange })));\n            break;\n        case 'boolean':\n            defaultRendering = (React.createElement(\"td\", __assign({ colSpan: props.colSpan, style: props.style, className: editCellClasses, \"aria-colindex\": props.ariaColumnIndex, \"aria-selected\": props.isSelected }, (_d = {}, _d[GRID_COL_INDEX_ATTRIBUTE] = props.columnIndex, _d), { role: 'gridcell' }, navigationAttributes),\n                React.createElement(\"input\", { checked: data || false, id: inputId, type: \"checkbox\", className: \"k-checkbox\", onChange: handleOnChange }),\n                React.createElement(\"label\", { className: \"k-checkbox-label\", htmlFor: inputId })));\n            break;\n        default:\n            defaultRendering = (React.createElement(\"td\", __assign({ colSpan: props.colSpan, style: props.style, className: editCellClasses, \"aria-colindex\": props.ariaColumnIndex, \"aria-selected\": props.isSelected }, (_e = {}, _e[GRID_COL_INDEX_ATTRIBUTE] = props.columnIndex, _e), { role: 'gridcell' }, navigationAttributes),\n                React.createElement(\"input\", { style: { width: '100%' }, className: \"k-textbox\", value: data || '', onChange: handleOnChange })));\n    }\n    return props.render ?\n        props.render.call(undefined, defaultRendering, props) :\n        defaultRendering;\n};\n","var __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 __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};\nimport * as React from 'react';\nimport { classNames, getScrollbarWidth } from '@progress/kendo-react-common';\nimport { isRtl, tableKeyboardNavigationHeaderAttributes } from '@progress/kendo-react-data-tools';\n/**\n * @hidden\n */\nvar Header = /** @class */ (function (_super) {\n    __extends(Header, _super);\n    function Header() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.elementRef = React.createRef();\n        _this.headerWrap = null;\n        _this.table = null;\n        _this.syncScroll = false;\n        _this.scrollbarWidth = getScrollbarWidth();\n        _this.onScroll = function (_event) {\n            if (_this.syncScroll) {\n                _this.syncScroll = false;\n                return;\n            }\n            if (!_this.headerWrap) {\n                return;\n            }\n            var scrollLeft = _this.headerWrap.scrollLeft;\n            var scrollableDataElement = _this.props.scrollableDataElement();\n            if (scrollableDataElement && scrollableDataElement.scrollLeft !== scrollLeft) {\n                scrollableDataElement.scrollLeft = scrollLeft;\n            }\n        };\n        return _this;\n    }\n    Object.defineProperty(Header.prototype, \"element\", {\n        get: function () {\n            return this.elementRef.current;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Header.prototype.componentDidMount = function () {\n        var rtl = isRtl(this.element);\n        if (this.props.columnResize) {\n            this.props.columnResize.setIsRtl(rtl);\n        }\n        this.forceUpdate();\n    };\n    /**\n     *\n     * @param scrollLeft - Scrolls to the left (in pixels).\n     */\n    Header.prototype.setScrollLeft = function (scrollLeft) {\n        if (this.headerWrap && this.headerWrap.scrollLeft !== scrollLeft) {\n            this.syncScroll = true;\n            this.headerWrap.scrollLeft = scrollLeft;\n        }\n    };\n    /**\n     *\n     * @param width - Scrolls the width (in pixels).\n     */\n    Header.prototype.setWidth = function (width) {\n        if (this.table) {\n            this.table.style.width = width + 'px';\n        }\n    };\n    Header.prototype.render = function () {\n        var _this = this;\n        if (!this.props.staticHeaders) {\n            return (React.createElement(\"thead\", __assign({ role: \"presentation\", className: classNames('k-grid-header', { 'k-grid-draggable-header': this.props.draggable }) }, tableKeyboardNavigationHeaderAttributes),\n                this.props.headerRow,\n                this.props.filterRow));\n        }\n        return (React.createElement(\"div\", { ref: this.elementRef, className: classNames('k-grid-header', { 'k-grid-draggable-header': this.props.draggable }), role: \"presentation\" },\n            React.createElement(\"div\", { ref: function (div) { _this.headerWrap = div; }, className: \"k-grid-header-wrap\", style: this.scrollbarWidth ? {} : { borderWidth: 0 }, onScroll: this.onScroll, role: \"presentation\" },\n                React.createElement(\"table\", { ref: function (table) { _this.table = table; }, role: \"presentation\" },\n                    React.createElement(\"colgroup\", { ref: function (e) { _this.props.columnResize.colGroupHeader = e; }, role: \"presentation\" }, this.props.cols),\n                    React.createElement(\"thead\", __assign({ role: \"presentation\" }, tableKeyboardNavigationHeaderAttributes),\n                        this.props.headerRow,\n                        this.props.filterRow)))));\n    };\n    return Header;\n}(React.Component));\nexport { Header };\n","var __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})();\nimport * as React from 'react';\nimport { Draggable } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar ColumnResizer = /** @class */ (function (_super) {\n    __extends(ColumnResizer, _super);\n    function ColumnResizer() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        /**\n         * @hidden\n         */\n        _this.onDrag = function (data) {\n            _this.isDragged = true;\n            var element = _this.draggable && _this.draggable.element;\n            if (element) {\n                _this.props.resize(data.event, element, false);\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.onRelease = function (data) {\n            if (!_this.isDragged) {\n                return;\n            }\n            var element = _this.draggable && _this.draggable.element;\n            if (element) {\n                _this.props.resize(data.event, element, true);\n            }\n            _this.isDragged = false;\n        };\n        /**\n         * @hidden\n         */\n        _this.onDoubleClick = function (event) {\n            if (_this.isDragged) {\n                return;\n            }\n            var element = _this.draggable && _this.draggable.element;\n            if (element) {\n                _this.props.autofit(event, element);\n            }\n        };\n        return _this;\n    }\n    ColumnResizer.prototype.render = function () {\n        var _this = this;\n        return (React.createElement(Draggable, { onPress: function (e) { e.event.originalEvent.stopPropagation(); }, onDrag: this.onDrag, onRelease: this.onRelease, ref: function (component) { _this.draggable = component; } },\n            React.createElement(\"span\", { className: \"k-column-resizer\", style: { touchAction: 'none' }, draggable: false, onDoubleClick: this.onDoubleClick })));\n    };\n    return ColumnResizer;\n}(React.Component));\nexport { ColumnResizer };\n","var __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})();\nimport * as React from 'react';\nimport { Draggable } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar ColumnDraggable = /** @class */ (function (_super) {\n    __extends(ColumnDraggable, _super);\n    function ColumnDraggable() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        /**\n         * @hidden\n         */\n        _this.onPress = function (data) {\n            var element = _this.draggable && _this.draggable.element;\n            if (element && _this.props.pressHandler) {\n                _this.props.pressHandler(data.event, element);\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.onDrag = function (data) {\n            var element = _this.draggable && _this.draggable.element;\n            if (element && _this.props.dragHandler) {\n                _this.props.dragHandler(data.event, element);\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.onRelease = function (data) {\n            var element = _this.draggable && _this.draggable.element;\n            if (element && _this.props.releaseHandler) {\n                _this.props.releaseHandler(data.event);\n            }\n        };\n        return _this;\n    }\n    ColumnDraggable.prototype.render = function () {\n        var _this = this;\n        return (React.createElement(Draggable, { onPress: this.onPress, onDrag: this.onDrag, onRelease: this.onRelease, hint: this.props.dragClue, autoScroll: { boundaryElementRef: this.props.headerRef, direction: { horizontal: true, vertical: false } }, scrollContainer: this.props.containerRef || undefined, ref: function (component) { _this.draggable = component; } },\n            React.createElement(\"tr\", { style: { touchAction: 'none' }, role: \"row\", \"aria-rowindex\": this.props.ariaRowIndex }, this.props.children)));\n    };\n    return ColumnDraggable;\n}(React.PureComponent));\nexport { ColumnDraggable };\n","var __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 __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};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport { Popup } from '@progress/kendo-react-popup';\n/**\n * The GridColumnMenuWrapper component.\n */\nvar GridColumnMenuWrapper = /** @class */ (function (_super) {\n    __extends(GridColumnMenuWrapper, _super);\n    function GridColumnMenuWrapper() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        /** @hidden */\n        _this.state = {\n            show: false\n        };\n        /** @hidden */\n        _this.blurTimeout = undefined;\n        /** @hidden */\n        _this.blur = function () {\n            clearTimeout(_this.blurTimeout);\n            _this.blurTimeout = window.setTimeout(function () { _this.closeMenu(); });\n        };\n        /** @hidden */\n        _this.focus = function () {\n            clearTimeout(_this.blurTimeout);\n        };\n        /** @hidden */\n        _this.anchorClick = function () {\n            _this.setState({ show: !_this.state.show }, function () { return _this.state.show && _this._content && _this._content.focus(); });\n        };\n        /** @hidden */\n        _this.closeMenu = function () {\n            _this.setState({ show: false });\n        };\n        return _this;\n    }\n    GridColumnMenuWrapper.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, ColumnMenu = _a.columnMenu, others = __rest(_a, [\"columnMenu\"]);\n        return (React.createElement(React.Fragment, null,\n            React.createElement(\"div\", { className: 'k-grid-column-menu k-grid-filter', ref: function (e) { return _this._anchor = e; }, onClick: this.anchorClick },\n                React.createElement(\"span\", { className: 'k-icon k-i-more-vertical' })),\n            React.createElement(Popup, { anchor: this._anchor, show: this.state.show },\n                React.createElement(\"div\", { ref: function (e) { return _this._content = e; }, className: 'k-grid-columnmenu-popup', tabIndex: 0, onBlur: this.blur, onFocus: this.focus, style: { outline: 'none' } }, ColumnMenu && (React.createElement(ColumnMenu, __assign({}, others, { onCloseMenu: this.closeMenu })))))));\n    };\n    return GridColumnMenuWrapper;\n}(React.Component));\nexport { GridColumnMenuWrapper };\n","var __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 __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};\nimport * as React from 'react';\nimport { GridColumnMenuWrapper } from '../columnMenu/GridColumnMenuWrapper';\n/**\n * @example\n * ```jsx\n * class App extends React.PureComponent {\n *    state = {\n *        details: false,\n *        data: [\n *               { foo: 'A1', bar: 'B1', b1: 1, b2:2 },\n *               { foo: 'A2', bar: 'B2', b1: 3, b2:4 },\n *               { foo: 'A3', bar: 'B2', b1: 5, b2:6 }\n *           ]\n *    };\n *\n *    CustomHeaderCell = (props) =>\n *        <span>\n *            {props.title || props.field + ' '}\n *            <button onClick={() => this.setState({ barDetails: !this.state.barDetails })}>\n *                {this.state.barDetails ? 'collapse' : 'expand'}\n *            </button>\n *            {props.children}\n *        </span>\n *\n *    render() {\n *        return (\n *            <Grid\n *                style={{ height: '420px' }}\n *                data={this.state.data}\n *                reorderable={true}\n *            >\n *                <GridColumn field=\"foo\" />\n *                <GridColumn field=\"bar\" headerCell={this.CustomHeaderCell}>\n *                    {this.state.barDetails && [\n *                        <GridColumn field=\"b1\" />,\n *                        <GridColumn field=\"b2\" />\n *                    ]}\n *                </GridColumn>\n *            </Grid>\n *        );\n *    }\n * }\n *\n * ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nvar GridHeaderCell = /** @class */ (function (_super) {\n    __extends(GridHeaderCell, _super);\n    function GridHeaderCell() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @hidden\n     */\n    GridHeaderCell.prototype.render = function () {\n        var columnMenuWrapperProps = this.props.columnMenuWrapperProps;\n        var clickProps = this.props.onClick ? {\n            onClick: this.props.onClick\n        } : {};\n        var defaultRendering = (React.createElement(\"span\", { className: 'k-cell-inner' },\n            React.createElement(\"span\", __assign({ className: 'k-link' }, clickProps),\n                React.createElement(\"span\", { className: 'k-column-title' }, this.props.title || this.props.field || '\\u00A0'),\n                this.props.children),\n            columnMenuWrapperProps.columnMenu && React.createElement(GridColumnMenuWrapper, __assign({}, columnMenuWrapperProps))));\n        if (this.props.render) {\n            return this.props.render.call(undefined, defaultRendering, this.props);\n        }\n        return defaultRendering;\n    };\n    return GridHeaderCell;\n}(React.Component));\nexport { GridHeaderCell };\n","var __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};\nimport * as React from 'react';\nimport { useTableKeyboardNavigation } from '../navigation/hooks';\n/**\n * @hidden\n */\nexport var HeaderThElement = function (props) {\n    var ariaSort = props.ariaSort, colSpan = props.colSpan, rowSpan = props.rowSpan, className = props.className, style = props.style, columnId = props.columnId, onKeyDown = props.onKeyDown, navigatable = props.navigatable, ariaColumnIndex = props.ariaColumnIndex, ariaLabel = props.ariaLabel, role = props.role, ariaSelected = props.ariaSelected;\n    var navigationAttributes = useTableKeyboardNavigation(columnId, navigatable);\n    return (React.createElement(\"th\", __assign({ \"aria-sort\": ariaSort, \"aria-label\": ariaLabel, \"aria-colindex\": ariaColumnIndex, \"aria-selected\": ariaSelected, \n        // TODO: Enable this with React 18. Currently throws warnings\n        // aria-description={ariaDescription}\n        colSpan: colSpan, rowSpan: rowSpan, className: className, style: style, onKeyDown: onKeyDown, role: role }, navigationAttributes), props.children));\n};\nHeaderThElement.displayName = 'KendoReactHeaderThElement';\n","var __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 __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};\nimport * as React from 'react';\nimport { normalize } from '../interfaces/GridSortSettings';\nimport { ColumnResizer } from '../drag/ColumnResizer';\nimport { ColumnDraggable } from '../drag/ColumnDraggable';\nimport { GridHeaderCell } from './GridHeaderCell';\nimport { classNames, Keys } from '@progress/kendo-react-common';\nimport { HeaderThElement } from '@progress/kendo-react-data-tools';\nimport { registerForLocalization, provideLocalizationService as intl } from '@progress/kendo-react-intl';\nimport { messages, sortAriaLabel } from '../messages';\n/**\n * @hidden\n */\nvar sortSeqMap = {\n    true: { 'asc': 'desc', 'desc': '', '': 'asc' },\n    false: { 'asc': 'desc', 'desc': 'asc', '': 'asc' }\n};\n/**\n * @hidden\n */\nvar ariaSortMap = {\n    'none': 'none',\n    'asc': 'ascending',\n    'desc': 'descending'\n};\n/**\n * @hidden\n */\nvar HeaderRow = /** @class */ (function (_super) {\n    __extends(HeaderRow, _super);\n    function HeaderRow(props) {\n        var _this = _super.call(this, props) || this;\n        _this.serviceIndex = 0;\n        _this.index = -1;\n        _this.cellKeyDown = function (event, column) {\n            if (event.isDefaultPrevented()) {\n                return;\n            }\n            if (event.keyCode === Keys.enter) {\n                _this.cellClick(event, column);\n            }\n        };\n        _this.cells = function (rowIndexes) { return rowIndexes.map(function (columnIndex) {\n            var column = _this.props.columns[columnIndex];\n            var sortable = _this.props.sortable && column.sortable;\n            var sortIndex = _this.props.sort ? _this.props.sort.findIndex(function (s) { return s.field === column.field; }) : -1;\n            var sortDir = sortIndex >= 0 ? ((_this.props.sort)[sortIndex].dir || 'none') : 'none';\n            var columnMenu = (column.columnMenu === null) ? null : (column.columnMenu || _this.props.columnMenu);\n            var className = classNames({\n                'k-first': column.kFirst,\n                'k-filterable': Boolean(columnMenu),\n                'k-header': true,\n                'k-grid-header-sticky': column.locked,\n                'k-sorted': _this.props.sort && _this.props.sort.some(function (descriptor) { return descriptor.field === column.field; })\n            }, column.headerClassName);\n            var style = column.left !== undefined\n                ? !_this.props.isRtl\n                    ? { left: column.left, right: column.right }\n                    : { left: column.right, right: column.left }\n                : {};\n            var sortLabel = intl(_this).toLanguageString(sortAriaLabel, messages[sortAriaLabel]);\n            var ariaAttrs = column.isAccessible ? {\n                ariaSort: ariaSortMap[sortDir],\n                role: 'columnheader',\n                ariaColumnIndex: column.ariaColumnIndex,\n                ariaSelected: false,\n                ariaDescription: sortable ? sortLabel : ''\n            } : {\n                'role': 'presentation'\n            };\n            var columnMenuWrapperProps = {\n                column: {\n                    field: column.field,\n                    filter: column.filter\n                },\n                sortable: sortable && _this.props.sortable,\n                sort: _this.props.sort,\n                onSortChange: _this.props.sortChange,\n                filter: _this.props.filter,\n                filterable: _this.props.filterable && column.filterable,\n                filterOperators: _this.props.filterOperators,\n                onFilterChange: _this.props.filterChange,\n                group: _this.props.group,\n                groupable: _this.props.groupable,\n                onGroupChange: _this.props.groupChange,\n                columnMenu: columnMenu\n            };\n            var headerCellProps = {\n                field: column.field,\n                onClick: sortable && (function (e) { return _this.cellClick(e, column); }) || undefined,\n                selectionChange: _this.props.selectionChange,\n                title: column.title,\n                selectionValue: column.headerSelectionValue,\n                render: _this.props.cellRender,\n                children: _this.sortIcon(sortIndex),\n                columnMenuWrapperProps: columnMenuWrapperProps\n            };\n            var key = (column.declarationIndex >= 0) ? ++_this.index : --_this.serviceIndex;\n            return (React.createElement(HeaderThElement, __assign({}, ariaAttrs, { key: key, colSpan: column.colSpan, rowSpan: column.rowSpan, className: className, style: style, columnId: column.id, navigatable: column.navigatable, onKeyDown: sortable && (function (e) { return _this.cellKeyDown(e, column); }) || undefined }),\n                column.headerCell ? React.createElement(column.headerCell, __assign({}, headerCellProps)) : React.createElement(GridHeaderCell, __assign({}, headerCellProps)),\n                _this.props.columnResize && _this.props.columnResize.resizable && column.resizable &&\n                    React.createElement(ColumnResizer, { key: 2, resize: function (e, element, end) {\n                            return _this.props.columnResize &&\n                                _this.props.columnResize.dragHandler(e, column, element, end);\n                        }, autofit: function (e) {\n                            return _this.props.columnResize &&\n                                _this.props.columnResize.dblClickHandler(e, [column.id]);\n                        } })));\n        }); };\n        _this.cellClick = _this.cellClick.bind(_this);\n        return _this;\n    }\n    HeaderRow.prototype.cellClick = function (e, column) {\n        e.preventDefault();\n        if (!this.props.sortChange) {\n            return;\n        }\n        var _a = normalize(this.props.sortable || false, column.sortable || false), allowUnsort = _a.allowUnsort, mode = _a.mode;\n        var oldDescriptor = (this.props.sort || []).filter(function (d) { return d.field === column.field; })[0];\n        var dir = sortSeqMap[allowUnsort][oldDescriptor && oldDescriptor.dir || ''];\n        var newDescriptor = (mode === 'single') ?\n            [] : (this.props.sort || []).filter(function (d) { return d.field !== column.field; });\n        if (dir !== '' && column.field) {\n            newDescriptor.push({ field: column.field, dir: dir });\n        }\n        this.props.sortChange(newDescriptor, e);\n    };\n    HeaderRow.prototype.sortIcon = function (sortIndex) {\n        if (!this.props.sort) {\n            return null;\n        }\n        return sortIndex >= 0 && [\n            React.createElement(\"span\", { key: 1, className: 'k-icon k-i-sort-' + this.props.sort[sortIndex].dir + '-sm' }),\n            this.props.sort.length > 1 && React.createElement(\"span\", { key: 2, className: \"k-sort-order\" }, sortIndex + 1)\n        ];\n    };\n    HeaderRow.prototype.render = function () {\n        var _this = this;\n        this.serviceIndex = 0;\n        this.index = -1;\n        return this.props.columnsMap.map(function (rowIndexes, i) {\n            return _this.props.pressHandler && (React.createElement(ColumnDraggable, { key: i, pressHandler: _this.props.pressHandler, dragHandler: _this.props.dragHandler, releaseHandler: _this.props.releaseHandler, ariaRowIndex: i + 1, dragClue: _this.props.dragClue, headerRef: _this.props.headerRef, containerRef: _this.props.containerRef }, _this.cells(rowIndexes))) || React.createElement(\"tr\", { role: \"row\", \"aria-rowindex\": i + 1 }, _this.cells(rowIndexes));\n        });\n    };\n    return HeaderRow;\n}(React.Component));\nexport { HeaderRow };\nregisterForLocalization(HeaderRow);\n","/**\n * @hidden\n */\nexport var normalize = function () {\n    var settings = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        settings[_i] = arguments[_i];\n    }\n    return Object.assign.apply(Object, [{ allowUnsort: true, mode: 'single' }].concat(settings));\n};\n","var __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})();\nimport * as React from 'react';\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\nimport { NumericTextBox } from '@progress/kendo-react-inputs';\nimport { DatePicker } from '@progress/kendo-react-dateinputs';\nimport { messages, filterClearButton, filterChooseOperator } from '../messages';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { cellBoolDropdownChange, cellInputChange, cellOperatorChange } from '../filterCommon';\nvar GridFilterCell = /** @class */ (function (_super) {\n    __extends(GridFilterCell, _super);\n    function GridFilterCell(props) {\n        var _this = _super.call(this, props) || this;\n        _this.renderOperatorEditor = function (localization) {\n            if (_this.props.filterType === 'boolean') {\n                return;\n            }\n            var value = _this.props.operators.find(function (item) { return item.operator === _this.props.operator; }) || null;\n            return (React.createElement(DropDownList, { value: value, onChange: _this.operatorChange, className: \"k-dropdown-operator\", iconClassName: \"k-i-filter k-icon\", data: _this.props.operators, textField: \"text\", title: localization.toLanguageString(filterChooseOperator, messages[filterChooseOperator]), popupSettings: {\n                    width: ''\n                } }));\n        };\n        _this.inputChange = _this.inputChange.bind(_this);\n        _this.clear = _this.clear.bind(_this);\n        _this.operatorChange = _this.operatorChange.bind(_this);\n        _this.boolDropdownChange = _this.boolDropdownChange.bind(_this);\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    GridFilterCell.prototype.render = function () {\n        var localizationService = provideLocalizationService(this);\n        var defaultRendering = (React.createElement(\"div\", { className: \"k-filtercell\" },\n            React.createElement(\"div\", { className: \"k-filtercell-wrapper\" },\n                this.filterComponent(this.props.filterType, this.props.value, this.props.booleanValues),\n                React.createElement(\"div\", { className: \"k-filtercell-operator\" },\n                    this.renderOperatorEditor(localizationService),\n                    React.createElement(\"button\", { className: \n                        /* button is always visible if there is either value or operator */\n                        (!(this.props.value === null || this.props.value === '') || this.props.operator) ?\n                            'k-button k-button-icon k-clear-button-visible' :\n                            'k-button k-button-icon', title: localizationService.toLanguageString(filterClearButton, messages[filterClearButton]), type: \"button\", onClick: this.clear },\n                        React.createElement(\"span\", { className: \"k-icon k-i-filter-clear\" }))))));\n        if (this.props.render) {\n            return this.props.render.call(undefined, defaultRendering, this.props);\n        }\n        return defaultRendering;\n    };\n    GridFilterCell.prototype.inputChange = function (value, e) {\n        cellInputChange(value, e, this.props);\n    };\n    GridFilterCell.prototype.operatorChange = function (event) {\n        cellOperatorChange(event, this.props.value, this.props.onChange);\n    };\n    GridFilterCell.prototype.boolDropdownChange = function (event) {\n        cellBoolDropdownChange(event, this.props.onChange);\n    };\n    GridFilterCell.prototype.clear = function (e) {\n        e.preventDefault();\n        this.props.onChange({ value: '', operator: '', syntheticEvent: e });\n    };\n    GridFilterCell.prototype.filterComponent = function (filterType, value, booleanValues) {\n        var _this = this;\n        switch (filterType) {\n            case 'numeric':\n                return (React.createElement(NumericTextBox, { value: value, onChange: function (e) { _this.inputChange(e.value, e.syntheticEvent); }, title: this.props.title }));\n            case 'date':\n                return (React.createElement(DatePicker, { value: value, onChange: function (e) { _this.inputChange(e.value, e.syntheticEvent); }, title: this.props.title }));\n            case 'boolean':\n                var noFilterSet_1 = function (filter) { return filter === null || filter === undefined; };\n                return (React.createElement(DropDownList, { onChange: this.boolDropdownChange, value: booleanValues.find(function (item) { return item.operator === (noFilterSet_1(value) ? '' : value); }), data: booleanValues, textField: \"text\", title: this.props.title }));\n            default: return (React.createElement(\"input\", { className: \"k-textbox\", value: value || '', onChange: function (e) { _this.inputChange(e.target.value, e); }, title: this.props.title }));\n        }\n    };\n    return GridFilterCell;\n}(React.Component));\nexport { GridFilterCell };\nregisterForLocalization(GridFilterCell);\n","var __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 __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};\nimport * as React from 'react';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { GridFilterCell } from '../cells/GridFilterCell';\nimport { operatorMap, booleanFilterValues, getFilterType } from '../filterCommon';\nimport { tableKeyboardNavigationTools as navigationTools, HeaderThElement } from '@progress/kendo-react-data-tools';\nimport { filterAriaLabel, messages } from '../messages';\n/**\n * @hidden\n */\nexport var FILTER_ROW_CLASS = 'k-filter-row';\n/**\n *\n * @hidden\n */\nvar FilterRow = /** @class */ (function (_super) {\n    __extends(FilterRow, _super);\n    function FilterRow() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    FilterRow.prototype.headerCellClassName = function (field, locked) {\n        var result = \"\" + (locked ? 'k-grid-header-sticky' : '');\n        if (this.props.sort &&\n            this.props.sort.filter(function (descriptor) { return descriptor.field === field; }).length > 0) {\n            result += ' k-sorted';\n        }\n        return result;\n    };\n    FilterRow.prototype.setFilter = function (value, operator, field, e) {\n        if (!this.props.filterChange) {\n            return;\n        }\n        var filters = [];\n        if (value !== '' && value !== null || operator !== '') {\n            filters.push({\n                field: field,\n                operator: operator,\n                value: value\n            });\n        }\n        if (this.props.filter && this.props.filter.filters) {\n            var oldFilters = this.props.filter.filters || [];\n            oldFilters.forEach(function (filter) {\n                var descriptor = filter;\n                if (descriptor && descriptor.field !== field) {\n                    filters.push(descriptor);\n                }\n            });\n        }\n        var logic = this.props.filter && this.props.filter.logic ? this.props.filter.logic : 'and';\n        this.props.filterChange(filters.length > 0 ? { logic: logic, filters: filters } : null, e);\n    };\n    FilterRow.prototype.render = function () {\n        var _this = this;\n        var intl = provideLocalizationService(this);\n        var oldFilters = this.props.filter && this.props.filter.filters || [];\n        var activeFilter = function (field) {\n            if (field === undefined) {\n                return;\n            }\n            var currentFilters = oldFilters.filter(function (filter) { return filter.field === field; });\n            return currentFilters.length ? currentFilters[0] : undefined;\n        };\n        var serviceIndex = 0, index = -1;\n        var filterCells = this.props.columns.filter(function (c) { return c.children.length === 0; })\n            .map(function (column) {\n            var filterType = getFilterType(column.filter);\n            var currentActiveFilter = activeFilter(column.field);\n            var filterCellProps = column.filterable && {\n                render: _this.props.cellRender,\n                field: column.field,\n                title: column.filterTitle,\n                value: currentActiveFilter ? currentActiveFilter.value : filterType === 'text' ? '' : null,\n                operator: currentActiveFilter && currentActiveFilter.operator,\n                operators: operatorMap(_this.props.filterOperators[filterType] || [], intl),\n                booleanValues: operatorMap(booleanFilterValues, intl),\n                filterType: filterType,\n                onChange: function (e) { _this.setFilter(e.value, e.operator, column.field, e.syntheticEvent); }\n            };\n            var key = (column.declarationIndex >= 0) ? ++index : --serviceIndex;\n            var ariaAttrs = {\n                ariaLabel: column.filterable ? intl.toLanguageString(filterAriaLabel, messages[filterAriaLabel]) : undefined,\n                ariaColumnIndex: column.ariaColumnIndex\n            };\n            var style = column.left !== undefined\n                ? !_this.props.isRtl\n                    ? { left: column.left, right: column.right }\n                    : { left: column.right, right: column.left }\n                : {};\n            return (React.createElement(HeaderThElement, __assign({ key: key, columnId: navigationTools.getFilterColumnId(column.id), navigatable: column.navigatable, style: style, className: _this.headerCellClassName(column.field, column.locked) || undefined }, ariaAttrs), filterCellProps && (column.filterCell ?\n                React.createElement(column.filterCell, __assign({}, filterCellProps)) :\n                React.createElement(GridFilterCell, __assign({}, filterCellProps)))));\n        });\n        return React.createElement(\"tr\", { className: FILTER_ROW_CLASS, \"aria-rowindex\": this.props.ariaRowIndex, role: \"row\" }, filterCells);\n    };\n    return FilterRow;\n}(React.Component));\nexport { FilterRow };\nregisterForLocalization(FilterRow);\n","var __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})();\nimport * as React from 'react';\nimport { Draggable } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar GroupingIndicator = /** @class */ (function (_super) {\n    __extends(GroupingIndicator, _super);\n    function GroupingIndicator() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        /**\n         * @hidden\n         */\n        _this.onPress = function (data) {\n            var element = _this.draggable && _this.draggable.element;\n            if (element && _this.props.onPress) {\n                _this.props.onPress(data.event, element);\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.onDrag = function (data) {\n            var element = _this.draggable && _this.draggable.element;\n            if (element && _this.props.onDrag) {\n                _this.props.onDrag(data.event, element);\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.onRelease = function (data) {\n            var element = _this.draggable && _this.draggable.element;\n            if (element && _this.props.onRelease) {\n                _this.props.onRelease(data.event);\n            }\n        };\n        _this.sortChange = function (event) {\n            event.preventDefault();\n            if (_this.props.onSortChange) {\n                var sort = (_this.props.dir === 'asc') ? 'desc' : 'asc';\n                _this.props.onSortChange(event, sort);\n            }\n        };\n        _this.groupRemove = function (event) {\n            event.preventDefault();\n            if (_this.props.onRemove) {\n                _this.props.onRemove(event);\n            }\n        };\n        return _this;\n    }\n    GroupingIndicator.prototype.render = function () {\n        var _this = this;\n        return (React.createElement(Draggable, { onPress: this.onPress, onDrag: this.onDrag, onRelease: this.onRelease, ref: function (component) { _this.draggable = component; } },\n            React.createElement(\"div\", { className: \"k-indicator-container\", style: { touchAction: 'none' } },\n                React.createElement(\"div\", { className: \"k-group-indicator\" },\n                    React.createElement(\"a\", { className: \"k-link\", href: \"#\", tabIndex: -1, onClick: this.sortChange },\n                        React.createElement(\"span\", { className: 'k-icon k-i-sort-' + this.props.dir + '-sm' }),\n                        this.props.title),\n                    React.createElement(\"a\", { className: \"k-button k-button-icon k-flat\", tabIndex: -1, onClick: this.groupRemove },\n                        React.createElement(\"span\", { className: \"k-icon k-i-group-delete\" }))))));\n    };\n    return GroupingIndicator;\n}(React.Component));\nexport { GroupingIndicator };\n","var __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})();\nimport * as React from 'react';\nimport { GroupingIndicator } from '../drag/GroupingIndicator';\nimport { registerForLocalization, provideLocalizationService as intl } from '@progress/kendo-react-intl';\nimport { messages, groupPanelEmpty as messageKey } from './../messages';\n/**\n * @hidden\n */\nvar GroupPanel = /** @class */ (function (_super) {\n    __extends(GroupPanel, _super);\n    function GroupPanel() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.onGroupRemove = function (event, index) {\n            var newGroups = _this.props.group.slice();\n            newGroups.splice(index, 1);\n            _this.props.groupChange(newGroups, event);\n        };\n        _this.onGroupSortChange = function (event, index, groupDesc, dir) {\n            var group = Object.assign({}, groupDesc, { dir: dir });\n            var newGroups = _this.props.group.slice();\n            newGroups.splice(index, 1, group);\n            _this.props.groupChange(newGroups, event);\n        };\n        return _this;\n    }\n    GroupPanel.prototype.render = function () {\n        var _this = this;\n        var groupsProp = this.props.group || [];\n        var groups = groupsProp.map(function (groupDesc, index) { return (React.createElement(GroupingIndicator, { key: index, dir: groupDesc.dir || 'asc', title: _this.props.resolveTitle(groupDesc.field), onRemove: function (event) {\n                _this.onGroupRemove(event, index);\n            }, onSortChange: function (event, dir) {\n                _this.onGroupSortChange(event, index, groupDesc, dir);\n            }, onPress: _this.props.pressHandler, onDrag: _this.props.dragHandler, onRelease: _this.props.releaseHandler })); });\n        return (React.createElement(\"div\", { ref: this.props.refCallback, className: \"k-grouping-header k-grouping-header-flex\" },\n            groups,\n            React.createElement(\"div\", { className: \"k-indicator-container\" },\n                !groups.length && intl(this).toLanguageString(messageKey, messages[messageKey]),\n                \"\\u00A0\")));\n    };\n    return GroupPanel;\n}(React.Component));\nexport { GroupPanel };\nregisterForLocalization(GroupPanel);\n","var __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})();\nimport { getScrollbarWidth } from '@progress/kendo-react-common';\nimport * as React from 'react';\n/**\n * @hidden\n */\nvar Footer = /** @class */ (function (_super) {\n    __extends(Footer, _super);\n    function Footer() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.footerWrap = null;\n        _this.table = null;\n        _this.scrollbarWidth = getScrollbarWidth();\n        return _this;\n    }\n    Footer.prototype.componentDidMount = function () {\n        this.setState({});\n    };\n    /**\n     *\n     * @param scrollLeft - Scrolls to the left (in pixels).\n     */\n    Footer.prototype.setScrollLeft = function (scrollLeft) {\n        if (this.footerWrap) {\n            this.footerWrap.scrollLeft = scrollLeft;\n        }\n    };\n    /**\n     *\n     * @param width - Scrolls the width (in pixels).\n     */\n    Footer.prototype.setWidth = function (width) {\n        if (this.table) {\n            this.table.style.width = width + 'px';\n        }\n    };\n    Footer.prototype.render = function () {\n        var _this = this;\n        if (!this.props.staticHeaders) {\n            return (React.createElement(\"tfoot\", { className: \"k-grid-footer\" }, this.props.row));\n        }\n        return (React.createElement(\"div\", { className: \"k-grid-footer\", role: \"presentation\" },\n            React.createElement(\"div\", { ref: function (div) { _this.footerWrap = div; }, className: \"k-grid-footer-wrap\", style: this.scrollbarWidth ? {} : { borderWidth: 0 }, role: \"presentation\" },\n                React.createElement(\"table\", { ref: function (table) { _this.table = table; }, role: \"presentation\" },\n                    React.createElement(\"colgroup\", { ref: function (e) { _this.props.columnResize.colGroupFooter = e; }, role: \"presentation\" }, this.props.cols),\n                    React.createElement(\"tfoot\", { role: \"presentation\" }, this.props.row)))));\n    };\n    return Footer;\n}(React.Component));\nexport { Footer };\n","import * as React from 'react';\n/**\n * @hidden\n */\nvar VirtualScroll = /** @class */ (function () {\n    function VirtualScroll(cached) {\n        this.containerHeight = 0;\n        this.topCacheCount = 0; // 4;\n        this.attendedSkip = 0; // -4;\n        this.propsSkip = 0;\n        this.total = 0;\n        this.scrollableVirtual = false;\n        this.realSkip = 0;\n        this.pageSize = 0;\n        this.heightContainer = null;\n        this.fixedScroll = false;\n        this.askedSkip = undefined;\n        this.containerRef = React.createRef();\n        this.prevScrollPos = 0;\n        this.tableTranslate = 0;\n        this.scrollSyncing = false;\n        if (cached) {\n            this.topCacheCount = 4;\n            this.attendedSkip = -this.topCacheCount;\n        }\n        this.scrollHandler = this.scrollHandler.bind(this);\n    }\n    Object.defineProperty(VirtualScroll.prototype, \"container\", {\n        get: function () {\n            return this.containerRef.current;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(VirtualScroll.prototype, \"rowHeights\", {\n        /**\n         * @return - The row heights in an array.\n         */\n        get: function () {\n            var result = [];\n            var allRows = this.tableBody && this.tableBody.children || [];\n            var accumulate = 0;\n            for (var i = 0; i < allRows.length; i++) {\n                if (allRows[i].className.indexOf('k-grouping-row') > -1) {\n                    accumulate += allRows[i].scrollHeight;\n                    continue;\n                }\n                if (allRows[i].className.indexOf('k-detail-row') > -1) {\n                    result[result.length - 1].line += allRows[i].scrollHeight;\n                }\n                else {\n                    result.push({\n                        line: allRows[i].scrollHeight,\n                        acc: accumulate\n                    });\n                    accumulate = 0;\n                }\n            }\n            return result;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    VirtualScroll.prototype.changePage = function (skip, e) {\n        this.attendedSkip = skip - this.topCacheCount;\n        this.PageChange({\n            skip: Math.max(0, skip - this.topCacheCount),\n            take: this.pageSize\n        }, e);\n    };\n    VirtualScroll.prototype.translate = function (dY) {\n        this.tableTranslate = dY;\n        if (this.scrollableVirtual && this.table) {\n            this.table.style.transform = 'translateY(' + dY + 'px)';\n        }\n    };\n    VirtualScroll.prototype.syncScroll = function () {\n        if (!this.scrollableVirtual || !this.container) {\n            return;\n        }\n        this.syncTimeout = null;\n        var scrollTop = this.container.scrollTop;\n        var containerHeight = this.containerHeight; // = this.container.scrollHeight;\n        var rowHeights = this.rowHeights;\n        var percentage = (scrollTop - this.tableTranslate) / rowHeights[0].line;\n        var targetFloorScrollPosition = Math.floor((containerHeight) * (this.propsSkip + percentage) / this.total);\n        if (this.container.scrollTop !== (this.prevScrollPos = targetFloorScrollPosition)) {\n            this.scrollSyncing = true;\n            this.container.scrollTop = (this.prevScrollPos = targetFloorScrollPosition);\n        }\n        this.translate(this.tableTranslate + targetFloorScrollPosition - scrollTop);\n    };\n    VirtualScroll.prototype.reset = function () {\n        this.scrollSyncing = true;\n        if (this.fixedScroll) {\n            return;\n        }\n        if (this.container) {\n            this.container.scrollTop = 0;\n        }\n        this.translate(0);\n    };\n    VirtualScroll.prototype.localScrollUp = function (e) {\n        if (!this.container) {\n            return;\n        }\n        var heights = this.rowHeights;\n        var scrollTop = this.container.scrollTop;\n        var targetTranslate = this.tableTranslate;\n        var rowsCount = 0;\n        var additionalOnTop = scrollTop - targetTranslate;\n        if (additionalOnTop > 0) {\n            return;\n        }\n        while ((rowsCount < this.topCacheCount + this.attendedSkip - this.realSkip)\n            && this.propsSkip - rowsCount > 0 &&\n            !(targetTranslate + (heights[heights.length - 1 - rowsCount].line + heights[heights.length - 1 - rowsCount].acc) + additionalOnTop <= scrollTop)) {\n            targetTranslate -= heights[heights.length - 1 - rowsCount].line +\n                heights[heights.length - 1 - rowsCount].acc;\n            rowsCount++;\n        }\n        if (rowsCount === 0 && this.topCacheCount === 0 && this.attendedSkip > 0) {\n            // allows local scrolling up, when top caching is disabled\n            // for variable heights 'topCacheCount' should be atleast 1 to avoid flickering\n            targetTranslate = Math.max(targetTranslate - heights[0].line, 0);\n            rowsCount = 1;\n        }\n        if (this.propsSkip - rowsCount <= 0 && targetTranslate > scrollTop) {\n            this.translate(0);\n            this.changePage(0, e);\n            this.container.scrollTop = 0;\n            return;\n        }\n        if (targetTranslate > scrollTop) {\n            targetTranslate = scrollTop;\n            // need to handle these cases\n            // if the item height is not available:\n            //    floor the translate to beginning of the item in absolute value\n        }\n        if (targetTranslate !== this.tableTranslate) {\n            this.translate(targetTranslate);\n            this.changePage(this.propsSkip - rowsCount, e);\n        }\n    };\n    VirtualScroll.prototype.localScrollDown = function (e) {\n        if (!this.container) {\n            return;\n        }\n        var heights = this.rowHeights;\n        var scrollTop = this.container.scrollTop;\n        var targetTranslate = this.tableTranslate;\n        var rowsCount = 0;\n        while (rowsCount < heights.length - this.topCacheCount &&\n            !(targetTranslate + heights[rowsCount].line + heights[rowsCount].acc > scrollTop)) {\n            targetTranslate += heights[rowsCount].line + heights[rowsCount].acc;\n            rowsCount++;\n        }\n        if (rowsCount >= heights.length - this.topCacheCount && this.propsSkip + rowsCount >= this.total) {\n            this.translate(targetTranslate);\n            this.changePage(this.total - 1, e);\n        }\n        else if (targetTranslate !== this.tableTranslate) {\n            this.translate(targetTranslate);\n            this.changePage(this.propsSkip + rowsCount, e);\n        }\n    };\n    VirtualScroll.prototype.scrollNonStrict = function (e) {\n        var floatRowIndex = this.total * this.prevScrollPos / (this.containerHeight);\n        var rowIndex = Math.floor(floatRowIndex);\n        if (rowIndex >= this.total) {\n            rowIndex = this.total - 1;\n        }\n        var rowpercentage = Math.min(floatRowIndex - rowIndex, 1);\n        var microAdjust = 0;\n        var rowIndexOffset = rowIndex - this.propsSkip;\n        var heights = this.rowHeights;\n        if (rowIndexOffset >= 0 && rowIndexOffset <= 1) {\n            microAdjust = -((heights[0].line + heights[0].acc) * rowpercentage);\n        }\n        else if (rowIndexOffset === -1) {\n            microAdjust = -((heights[heights.length - 1].line + heights[heights.length - 1].acc) * rowpercentage);\n        }\n        this.translate(microAdjust + this.containerHeight * floatRowIndex / this.total);\n        this.changePage(rowIndex, e);\n    };\n    VirtualScroll.prototype.scrollHandler = function (e) {\n        if (!this.scrollableVirtual) {\n            return;\n        }\n        if (this.scrollSyncing || !this.container || !this.table) {\n            this.scrollSyncing = false;\n            return;\n        }\n        var grid = this;\n        clearTimeout(this.syncTimeout);\n        this.syncTimeout = window.setTimeout(function () { grid.syncScroll(); }, 200);\n        var scrollTop = this.container.scrollTop;\n        var prev = this.prevScrollPos;\n        this.prevScrollPos = scrollTop;\n        if (this.askedSkip !== undefined) {\n            this.translate(this.containerHeight * this.askedSkip / this.total);\n            this.changePage(this.askedSkip, e);\n            this.prevScrollPos = scrollTop;\n            this.askedSkip = undefined;\n            return;\n        }\n        if (scrollTop - prev < 0 && scrollTop > this.tableTranslate - this.table.scrollHeight / 10) {\n            this.localScrollUp(e);\n        }\n        else if (scrollTop - prev > 0 && scrollTop < this.tableTranslate + this.table.scrollHeight * 2 / 3) {\n            this.localScrollDown(e);\n        }\n        else {\n            this.scrollNonStrict(e);\n        }\n        this.prevScrollPos = scrollTop;\n    };\n    return VirtualScroll;\n}());\nexport { VirtualScroll };\n","// offsetWidth() is slowly transition to reporting double instead of integet in all browsers\n// during this process (which is a bit back-and-forth) we need to make sure we are working across all browsers and versions\nvar OFFSET_ROUND = 1;\n/**\n * @hidden\n */\nvar ColumnResize = /** @class */ (function () {\n    function ColumnResize(triggerResize) {\n        var _this = this;\n        /**\n         * The settings for resizing the Grid.\n         */\n        this.resizable = false;\n        this.isRtl = false;\n        this.setIsRtl = function (isRtl) {\n            _this.isRtl = isRtl;\n        };\n        this.dragHandler = function (event, column, dragCue, end) {\n            var e = event.originalEvent;\n            if (!end) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n            }\n            var tdElement = dragCue.parentElement;\n            if (!tdElement || !tdElement.parentElement) {\n                return;\n            }\n            var oldWidth = tdElement.clientWidth;\n            var newWidth = oldWidth;\n            if (_this.isRtl) {\n                newWidth += (dragCue.getBoundingClientRect().right - (dragCue.offsetWidth / 2)) - event.clientX;\n            }\n            else {\n                newWidth += event.clientX - dragCue.getBoundingClientRect().left - (dragCue.offsetWidth / 2);\n            }\n            if (!end && Math.abs(newWidth - oldWidth) < 1) {\n                return;\n            }\n            _this.fixateInitialWidths(tdElement.parentElement.clientWidth);\n            _this.setWidths(column, Math.floor(newWidth) / oldWidth);\n            var index = _this.columns.filter(function (c) { return !c.children.length; }).findIndex(function (c) { return c.id === column.id; });\n            _this.onResize(index, oldWidth, newWidth, e, end, column.id);\n        };\n        this.dblClickHandler = function (event, columnIds) {\n            var columns = _this.columns.filter(function (c) { return columnIds.indexOf(c.id) > -1; });\n            if (!_this.colGroupMain || !columns.length) {\n                return;\n            }\n            var leafsForAdjust = {};\n            var stack = columns;\n            while (stack.length > 0) {\n                var currentCol = stack.pop();\n                if (!currentCol) {\n                    break;\n                }\n                if (currentCol.children.length) {\n                    stack.push.apply(stack, currentCol.children);\n                }\n                else {\n                    leafsForAdjust[currentCol.id] = currentCol;\n                }\n            }\n            var leafs = _this.columns.filter(function (c) { return !c.children.length; });\n            var indexesForAdjust = [];\n            leafs.forEach(function (currentColumn, index) {\n                if (leafsForAdjust[currentColumn.id]) {\n                    indexesForAdjust.push(index);\n                }\n            });\n            var tables = [_this.colGroupMain.parentElement];\n            var colgroups = [_this.colGroupMain];\n            if (_this.colGroupHeader) {\n                tables.push(_this.colGroupHeader.parentElement);\n                colgroups.push(_this.colGroupHeader);\n            }\n            if (_this.colGroupFooter) {\n                tables.push(_this.colGroupFooter.parentElement);\n                colgroups.push(_this.colGroupFooter);\n            }\n            tables.forEach(function (table) { return table.classList.add('k-autofitting'); });\n            var maxWidths = [];\n            colgroups.forEach(function (colgroup) {\n                indexesForAdjust.forEach(function (columnIndex) {\n                    if (colgroup.children[columnIndex]) {\n                        colgroup.children[columnIndex].width = '';\n                        maxWidths[columnIndex] = Math.max(maxWidths[columnIndex] || 0, colgroup.children[columnIndex].offsetWidth + OFFSET_ROUND);\n                    }\n                });\n            });\n            colgroups.forEach(function (colgroup) {\n                indexesForAdjust.forEach(function (columnIndex) {\n                    if (colgroup.children[columnIndex]) {\n                        colgroup.children[columnIndex].width = maxWidths[columnIndex] + 'px';\n                        leafs[columnIndex].width = maxWidths[columnIndex];\n                    }\n                });\n            });\n            tables.forEach(function (table) { return table.classList.remove('k-autofitting'); });\n            _this.onResize(indexesForAdjust[0], 0, 0, event, true, columnIds[0]);\n        };\n        this.updateColElements = function (affectedColumns) {\n            var leafColumns = _this.columns.filter(function (c) { return !c.children.length; });\n            var difference = 1e-10;\n            var _loop_1 = function (i) {\n                var currentColumn = affectedColumns[i];\n                var colIndex = leafColumns.findIndex(function (c) { return c.id === currentColumn.id; });\n                var currentColumnFloatWidth = parseFloat((currentColumn.width || 0).toString());\n                var currentColumnFloorWidth = Math.floor(currentColumnFloatWidth);\n                difference += currentColumnFloatWidth - currentColumnFloorWidth;\n                var currentWidth = currentColumnFloorWidth + Math.floor(difference);\n                difference -= Math.floor(difference);\n                if (_this.colGroupMain && _this.colGroupMain.children[colIndex]) {\n                    _this.colGroupMain.children[colIndex].width = currentWidth + 'px';\n                }\n                if (_this.colGroupHeader && _this.colGroupHeader.children[colIndex]) {\n                    // static headers\n                    _this.colGroupHeader.children[colIndex].width = currentWidth + 'px';\n                }\n                if (_this.colGroupFooter && _this.colGroupFooter.children[colIndex]) {\n                    // static footers\n                    _this.colGroupFooter.children[colIndex].width = currentWidth + 'px';\n                }\n            };\n            for (var i = 0; i < affectedColumns.length; i++) {\n                _loop_1(i);\n            }\n        };\n        this.onResize = triggerResize;\n    }\n    ColumnResize.prototype.fixateInitialWidths = function (width) {\n        var columns = this.columns.filter(function (c) { return !c.children.length; });\n        var remainingCount = 0;\n        var cols = this.colGroupMain ? this.colGroupMain.children : [];\n        for (var i = 0; i < cols.length; i++) {\n            if (cols[i].width) {\n                width -= parseFloat(cols[i].width);\n            }\n            else {\n                remainingCount++;\n            }\n        }\n        if (remainingCount === 0) {\n            return;\n        }\n        var perCol = Math.floor(width / remainingCount);\n        for (var i = 0; i < cols.length; i++) {\n            var col = cols[i];\n            if (!col.width) {\n                col.width = perCol;\n                columns[i].width = perCol.toString();\n                if (this.colGroupHeader) {\n                    this.colGroupHeader.children[i].width = perCol;\n                }\n                if (this.colGroupFooter) {\n                    this.colGroupFooter.children[i].width = perCol;\n                }\n            }\n        }\n    };\n    ColumnResize.prototype.setWidths = function (column, coef) {\n        var indexInOriginal = this.columns.findIndex(function (c) { return c.id === column.id; });\n        var toAdjust = [];\n        var more = column.children.length;\n        for (var i = indexInOriginal + 1; more > 0 && i < this.columns.length; i++, more--) {\n            var cc = this.columns[i];\n            if (!cc.children.length) {\n                toAdjust.push(cc);\n            }\n            else {\n                more += cc.children.length;\n            }\n        }\n        if (toAdjust.length === 0) {\n            toAdjust.push(column);\n        }\n        toAdjust.forEach(function (colToAdjust) {\n            var targetWidth = colToAdjust.width ? parseFloat(colToAdjust.width.toString()) * coef : 0;\n            var min = colToAdjust.minResizableWidth === undefined ? 10 : colToAdjust.minResizableWidth;\n            if (targetWidth < min) {\n                targetWidth = min;\n            }\n            colToAdjust.width = targetWidth;\n        });\n        this.updateColElements(toAdjust);\n        return toAdjust;\n    };\n    return ColumnResize;\n}());\nexport { ColumnResize };\n","import * as React from 'react';\nimport { getIndex } from '@progress/kendo-react-data-tools';\n/**\n * @hidden\n */\nvar CommonDragLogic = /** @class */ (function () {\n    function CommonDragLogic(columnReorder, groupReorder, columnToGroup) {\n        var _this = this;\n        this.refDragElementClue = React.createRef();\n        this.refDropElementClue = React.createRef();\n        this.reorderable = false;\n        this.groupable = false;\n        this.startColumn = -1;\n        this.startGroup = -1;\n        this.currentColumn = -1;\n        this.currentGroup = -1;\n        this.groupPanelDivElement = null;\n        this.refGroupPanelDiv = function (e) {\n            _this.groupPanelDivElement = e;\n        };\n        this.pressHandler = function (event, element) {\n            var startColumn = _this.getColumnIndex(event, element);\n            _this.startGroup = _this.getGroupIndex(event);\n            if (startColumn >= 0) {\n                var col = _this.columns[startColumn];\n                if (col.reorderable && _this.reorderable || col.groupable && _this.groupable) {\n                    _this.startColumn = startColumn;\n                }\n            }\n        };\n        this.dragHandler = function (event, element) {\n            if (!event.isTouch) {\n                event.originalEvent.preventDefault();\n            }\n            event.originalEvent.stopPropagation();\n            if (_this.startColumn === -1 && _this.startGroup === -1) {\n                return;\n            }\n            _this.currentColumn = _this.getColumnIndex(event, element);\n            _this.currentGroup = _this.getGroupIndex(event);\n            if (_this.groupPanelDivElement && _this.startGroup >= 0) {\n                _this.currentGroup = Math.min(_this.currentGroup, _this.groupPanelDivElement.children.length - 2);\n            }\n            var invalidIndex = !_this.isValid();\n            if (invalidIndex) {\n                _this.currentColumn = -1;\n                _this.currentGroup = -1;\n            }\n            var targetElement = (_this.currentColumn >= 0) ?\n                element.children[_this.columns[_this.currentColumn].index] :\n                _this.groupPanelDivElement && _this.groupPanelDivElement.children[_this.currentGroup];\n            _this.updateDragElementClue(event, element, targetElement, invalidIndex);\n            _this.updateDropElementClue(event, element, targetElement, invalidIndex);\n        };\n        this.releaseHandler = function (event) {\n            var prevColumnIndex = _this.startColumn;\n            var nextColumnIndex = _this.currentColumn;\n            var prevGroupIndex = _this.startGroup;\n            var nextGroupIndex = _this.currentGroup;\n            event.originalEvent.preventDefault();\n            if (_this.dropElementClue) {\n                _this.dropElementClue.setState({ visible: false });\n            }\n            if (_this.dragElementClue) {\n                _this.dragElementClue.setState({ visible: false });\n            }\n            var isValid = _this.isValid();\n            _this.startColumn = _this.startGroup = _this.currentColumn = _this.currentGroup = -1;\n            if (!isValid) {\n                return;\n            }\n            if (prevColumnIndex >= 0 && nextColumnIndex >= 0) {\n                _this.columnReorder(prevColumnIndex, nextColumnIndex, event.originalEvent);\n            }\n            else if (prevGroupIndex >= 0 && nextGroupIndex >= 0) {\n                _this.groupReorder(prevGroupIndex, nextGroupIndex, event.originalEvent);\n            }\n            else if (prevColumnIndex >= 0 && nextGroupIndex >= 0) {\n                _this.columnToGroup(prevColumnIndex, nextGroupIndex, event.originalEvent);\n            }\n        };\n        this.columnReorder = columnReorder;\n        this.groupReorder = groupReorder;\n        this.columnToGroup = columnToGroup;\n    }\n    Object.defineProperty(CommonDragLogic.prototype, \"dragClueRef\", {\n        get: function () {\n            return this.refDragElementClue;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(CommonDragLogic.prototype, \"dropClueRef\", {\n        get: function () {\n            return this.refDropElementClue;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(CommonDragLogic.prototype, \"dragElementClue\", {\n        get: function () {\n            return this.refDragElementClue.current;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(CommonDragLogic.prototype, \"dropElementClue\", {\n        get: function () {\n            return this.refDropElementClue.current;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    CommonDragLogic.prototype.getColumnIndex = function (event, parent) {\n        if (!parent || (parent.parentElement === this.groupPanelDivElement)) {\n            return -1;\n        }\n        var index = getIndex(event, parent);\n        if (index === -1) {\n            return -1;\n        }\n        var _loop_1 = function (i) {\n            if (parent.parentNode.children[i] === parent) {\n                return { value: this_1.columns.findIndex(function (c) { return ((c.index === index) && (c.depth === i)); }) };\n            }\n        };\n        var this_1 = this;\n        for (var i = 0; i < parent.parentNode.children.length; i++) {\n            var state_1 = _loop_1(i);\n            if (typeof state_1 === \"object\")\n                return state_1.value;\n        }\n        return -1;\n    };\n    CommonDragLogic.prototype.getGroupIndex = function (event) {\n        return getIndex(event, this.groupPanelDivElement);\n    };\n    CommonDragLogic.prototype.isValid = function () {\n        if (this.startGroup >= 0) {\n            // group can be moved into group only\n            return this.currentGroup >= 0 && this.currentGroup !== this.startGroup;\n        }\n        if (this.startColumn === -1) {\n            return false;\n        }\n        if (this.currentGroup >= 0) {\n            // column to group is possible\n            return this.columns[this.startColumn].groupable === true && this.groupable === true;\n        }\n        // reorder is possible\n        return this.reorderable === true &&\n            this.currentColumn >= 0 &&\n            this.currentColumn !== this.startColumn &&\n            this.columns[this.startColumn].reorderable === true &&\n            this.columns[this.currentColumn].parentIndex === this.columns[this.startColumn].parentIndex;\n    };\n    CommonDragLogic.prototype.updateDragElementClue = function (event, element, targetElement, invalidIndex) {\n        if (!this.dragElementClue) {\n            return;\n        }\n        var innerText = this.startColumn >= 0 ?\n            element.children[this.columns[this.startColumn].index].innerText :\n            element.innerText;\n        this.dragElementClue.setState({\n            visible: true,\n            top: (event.pageY + 10),\n            left: event.pageX,\n            innerText: innerText,\n            status: (invalidIndex || !targetElement) ? 'k-i-cancel' : 'k-i-add'\n        });\n    };\n    CommonDragLogic.prototype.updateDropElementClue = function (event, element, targetElement, invalidIndex) {\n        if (!this.dropElementClue) {\n            return;\n        }\n        if (invalidIndex || !targetElement) {\n            this.dropElementClue.setState({ visible: false });\n            return;\n        }\n        var rect = targetElement.getBoundingClientRect();\n        var left = rect.left + event.pageX - event.clientX - 6;\n        if (this.currentColumn > this.startColumn || this.currentGroup > this.startGroup && this.startGroup !== -1) {\n            left += rect.width;\n        }\n        var top = rect.top + event.pageY - event.clientY;\n        this.dropElementClue.setState({\n            visible: true,\n            top: top,\n            left: left,\n            height: (this.currentColumn >= 0) ? element.clientHeight : rect.height\n        });\n    };\n    return CommonDragLogic;\n}());\nexport { CommonDragLogic };\n","var __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};\nimport * as React from 'react';\nimport { getNestedValue } from './../utils';\nimport { useInternationalization } from '@progress/kendo-react-intl';\nimport { useTableKeyboardNavigation } from '@progress/kendo-react-data-tools';\nimport { GRID_COL_INDEX_ATTRIBUTE } from '../constants';\nimport { classNames } from '@progress/kendo-react-common';\nexport var GridCell = function (props) {\n    var _a;\n    var defaultRendering = null;\n    var intl = useInternationalization();\n    var navigationAttributes = useTableKeyboardNavigation(props.id);\n    if (props.rowType === 'groupFooter') {\n        defaultRendering = React.createElement(\"td\", { className: props.className });\n    }\n    else if (props.field !== undefined && props.rowType !== 'groupHeader') {\n        var data = getNestedValue(props.field, props.dataItem);\n        var dataAsString = '';\n        if (data !== undefined && data !== null) {\n            dataAsString = props.format ?\n                intl.format(props.format, data) :\n                data.toString();\n        }\n        var className = classNames(props.className, { 'k-state-selected': props.isSelected });\n        defaultRendering = (React.createElement(\"td\", __assign({ colSpan: props.colSpan, style: props.style, className: className, role: 'gridcell', \"aria-colindex\": props.ariaColumnIndex, \"aria-selected\": props.isSelected }, (_a = {}, _a[GRID_COL_INDEX_ATTRIBUTE] = props.columnIndex, _a), navigationAttributes), dataAsString));\n    }\n    return props.render ?\n        props.render.call(undefined, defaultRendering, props) :\n        defaultRendering;\n};\n","var __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};\nimport { Keys } from '@progress/kendo-react-common';\nimport { useTableKeyboardNavigation } from '@progress/kendo-react-data-tools';\nimport * as React from 'react';\n/**\n * @hidden\n */\nexport var GridGroupCell = function (props) {\n    var defaultRendering = null;\n    var columnIndex = props.columnIndex, level = props.level, columnsCount = props.columnsCount, rowType = props.rowType, dataItem = props.dataItem, field = props.field, onChange = props.onChange, expanded = props.expanded, render = props.render, dataIndex = props.dataIndex, ariaColumnIndex = props.ariaColumnIndex;\n    var definedField = field || '';\n    var navigationAttributes = useTableKeyboardNavigation(props.id);\n    var onKeyDownHandler = React.useCallback(function (event) {\n        if (event.isDefaultPrevented()) {\n            return;\n        }\n        if (event.keyCode === Keys.enter && onChange) {\n            event.preventDefault();\n            onChange({\n                dataItem: dataItem,\n                dataIndex: dataIndex,\n                syntheticEvent: event,\n                field: undefined,\n                value: !expanded\n            });\n        }\n    }, [expanded, onChange, dataItem, dataIndex]);\n    if (columnIndex === undefined || level === undefined || columnIndex < level ||\n        columnsCount === undefined || rowType !== 'groupHeader' || dataItem[definedField] === undefined) {\n        defaultRendering = (React.createElement(\"td\", { style: props.style, key: 'g' + columnIndex, className: \"k-group-cell\", role: \"presentation\" }));\n    }\n    else if (columnIndex <= level) {\n        defaultRendering = (React.createElement(\"td\", __assign({ style: props.style, key: 'g-colspan', colSpan: columnsCount - columnIndex, role: 'gridcell', \"aria-selected\": false, \"aria-expanded\": expanded, \"aria-colindex\": ariaColumnIndex, onKeyDown: onKeyDownHandler }, navigationAttributes),\n            React.createElement(\"p\", { className: \"k-reset\" },\n                React.createElement(\"a\", { onClick: function (e) {\n                        e.preventDefault();\n                        if (onChange) {\n                            onChange({\n                                dataItem: dataItem,\n                                dataIndex: dataIndex,\n                                syntheticEvent: e,\n                                field: undefined,\n                                value: !expanded\n                            });\n                        }\n                    }, href: \"#\", tabIndex: -1, className: expanded ? 'k-i-collapse k-icon' : 'k-i-expand k-icon' }),\n                ((dataItem[definedField] instanceof Date) && dataItem[definedField].toString) ?\n                    dataItem[definedField].toString() :\n                    dataItem[definedField])));\n    }\n    return render ?\n        render.call(undefined, defaultRendering, props) :\n        defaultRendering;\n};\n","var __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 __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};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { GRID_ROW_INDEX_ATTRIBUTE } from '../constants';\n/**\n * The component for each of the items in the `data` property which the Grid renders.\n */\nvar GridRow = /** @class */ (function (_super) {\n    __extends(GridRow, _super);\n    function GridRow() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @hidden\n     */\n    GridRow.prototype.render = function () {\n        var _a;\n        var className = classNames({\n            'k-grouping-row': this.props.rowType === 'groupHeader',\n            'k-group-footer': this.props.rowType === 'groupFooter',\n            'k-master-row': this.props.rowType !== 'groupHeader' &&\n                this.props.rowType !== 'groupFooter',\n            'k-alt': this.props.rowType !== 'groupHeader' &&\n                this.props.rowType !== 'groupFooter' &&\n                this.props.isAltRow,\n            'k-state-selected': this.props.isSelected,\n            'k-grid-edit-row': this.props.isInEdit\n        });\n        var defaultRendering = (React.createElement(\"tr\", __assign({ onClick: this.props.onClick, onDoubleClick: this.props.onDoubleClick, className: className, style: {\n                height: this.props.rowHeight ? this.props.rowHeight + 'px' : '',\n                visibility: this.props.isHidden ? 'hidden' : ''\n            }, role: \"row\", \"aria-rowindex\": this.props.ariaRowIndex }, (_a = {}, _a[GRID_ROW_INDEX_ATTRIBUTE] = this.props.rowType === 'data' ? this.props.dataIndex : undefined, _a)), this.props.children));\n        return this.props.render ?\n            this.props.render.call(undefined, defaultRendering, this.props) :\n            defaultRendering;\n    };\n    return GridRow;\n}(React.Component));\nexport { GridRow };\n","var __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 __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};\nimport * as React from 'react';\nimport { guid } from '@progress/kendo-react-common';\nimport { GridColumnMenuWrapper } from '../columnMenu/GridColumnMenuWrapper';\n/**\n * @hidden\n */\nvar GridHeaderSelectionCell = /** @class */ (function (_super) {\n    __extends(GridHeaderSelectionCell, _super);\n    function GridHeaderSelectionCell() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this._inputId = guid();\n        return _this;\n    }\n    GridHeaderSelectionCell.prototype.render = function () {\n        var _this = this;\n        var columnMenuWrapperProps = this.props.columnMenuWrapperProps;\n        var defaultRendering = [\n            (React.createElement(\"input\", { key: 0, checked: this.props.selectionValue, id: this._inputId, type: \"checkbox\", className: \"k-checkbox\", onChange: function (e) {\n                    return _this.props.selectionChange({\n                        field: _this.props.field,\n                        syntheticEvent: e\n                    });\n                } })),\n            (React.createElement(\"label\", { key: 1, className: \"k-checkbox-label\", htmlFor: this._inputId })),\n            columnMenuWrapperProps.columnMenu && React.createElement(GridColumnMenuWrapper, __assign({}, columnMenuWrapperProps))\n        ];\n        return this.props.render ?\n            this.props.render.call(undefined, defaultRendering, this.props) :\n            defaultRendering;\n    };\n    return GridHeaderSelectionCell;\n}(React.Component));\nexport { GridHeaderSelectionCell };\n","var __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})();\nimport * as React from 'react';\nimport { registerForLocalization, provideLocalizationService as intl } from '@progress/kendo-react-intl';\nimport { messages, noRecords } from './messages';\n/* eslint-disable max-len */\n/**\n * Represents the GridNoRecords component. The component is rendered when the `data` property of the Grid is empty or `null`.\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n *     render() {\n *         return (\n *             <Grid data={[]}>\n *                 <GridNoRecords>\n *                     There is no data available\n *                 </GridNoRecords>\n *                 <GridColumn field=\"id\" />\n *                 <GridColumn field=\"name\" />\n *             </Grid>\n *         );\n *     }\n * }\n * ReactDOM.render(\n *     <App />,\n *     document.querySelector('my-app')\n * );\n * ```\n */\n// tslint:enable:max-line-length\nvar GridNoRecords = /** @class */ (function (_super) {\n    __extends(GridNoRecords, _super);\n    function GridNoRecords() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @hidden\n     */\n    GridNoRecords.prototype.render = function () {\n        return this.props.children || intl(this).toLanguageString(noRecords, messages[noRecords]);\n    };\n    /**\n     * @hidden\n     */\n    GridNoRecords.displayName = 'KendoReactGridNoRecords';\n    return GridNoRecords;\n}(React.Component));\nexport { GridNoRecords };\nregisterForLocalization(GridNoRecords);\n","var __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 __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};\nimport * as React from 'react';\nimport { footerColumns } from './../utils';\n/**\n * @hidden\n */\nvar FooterRow = /** @class */ (function (_super) {\n    __extends(FooterRow, _super);\n    function FooterRow() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this._element = null;\n        _this.renderCell = function (column, index) {\n            var tdProps = {\n                colSpan: column.colSpan !== 1 ? column.colSpan : undefined,\n                style: column.left !== undefined\n                    ? !_this.props.isRtl\n                        ? { left: column.left, right: column.right }\n                        : { left: column.right, right: column.left }\n                    : {},\n                className: column.locked && column.left !== undefined ? 'k-grid-footer-sticky' : ''\n            };\n            var cellProps = __assign({ field: column.field, ariaColumnIndex: column.ariaColumnIndex }, tdProps);\n            return (column.footerCell && React.createElement(column.footerCell, __assign({}, cellProps, { key: index }))) || (React.createElement(\"td\", __assign({ key: index }, tdProps, { role: 'columnfooter', \"aria-selected\": false, \"aria-colindex\": column.ariaColumnIndex })));\n        };\n        return _this;\n    }\n    Object.defineProperty(FooterRow.prototype, \"element\", {\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    FooterRow.prototype.render = function () {\n        return React.createElement(\"tr\", { role: \"row\", \"aria-rowindex\": this.props.ariaRowIndex }, footerColumns(this.props.columns).map(this.renderCell));\n    };\n    return FooterRow;\n}(React.Component));\nexport { FooterRow };\n","import canUseDOM from './canUseDOM';\nvar size;\nexport default function scrollbarSize(recalc) {\n  if (!size && size !== 0 || recalc) {\n    if (canUseDOM) {\n      var scrollDiv = document.createElement('div');\n      scrollDiv.style.position = 'absolute';\n      scrollDiv.style.top = '-9999px';\n      scrollDiv.style.width = '50px';\n      scrollDiv.style.height = '50px';\n      scrollDiv.style.overflow = 'scroll';\n      document.body.appendChild(scrollDiv);\n      size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n      document.body.removeChild(scrollDiv);\n    }\n  }\n\n  return size;\n}","/**\n * @hidden\n */\nexport var packageMetadata = {\n    name: '@progress/kendo-react-grid',\n    productName: 'KendoReact',\n    productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n    publishDate: 1642516975,\n    version: '',\n    licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var __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};\nimport { useTableKeyboardNavigation } from '@progress/kendo-react-data-tools';\nimport * as React from 'react';\n/** @hidden */\nexport var GridDetailCell = function (props) {\n    var colSpan = props.colSpan, ariaColIndex = props.ariaColIndex, dataItem = props.dataItem, dataIndex = props.dataIndex, id = props.id;\n    var navigationAttributes = useTableKeyboardNavigation(id);\n    return (React.createElement(\"td\", __assign({ className: \"k-detail-cell\", colSpan: colSpan, \"aria-colindex\": ariaColIndex, role: 'gridcell' }, navigationAttributes),\n        React.createElement(props.detail, { dataItem: dataItem, dataIndex: dataIndex })));\n};\n","var __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};\nimport { useTableKeyboardNavigation } from '@progress/kendo-react-data-tools';\nimport * as React from 'react';\n/** @hidden */\nexport var GridDetailHierarchyCell = function (props) {\n    var navigationAttributes = useTableKeyboardNavigation(props.id);\n    return (React.createElement(\"td\", __assign({ className: \"k-hierarchy-cell\" }, navigationAttributes)));\n};\n","var __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 __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};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { dispatchEvent, classNames, getter, guid, setScrollbarWidth, canUseDOM } from '@progress/kendo-react-common';\nimport { tableColumnsVirtualization, Pager, mapColumns, isRtl, tableKeyboardNavigation, TableKeyboardNavigationContext, tableKeyboardNavigationScopeAttributes, tableKeyboardNavigationTools as navigationTools, tableKeyboardNavigationBodyAttributes, getSelectionOptions, TableSelection, DropClue, DragClue } from '@progress/kendo-react-data-tools';\nimport { GridSelectionCell } from './cells/GridSelectionCell';\nimport { GridHierarchyCell } from './cells/GridHierarchyCell';\nimport { GridEditCell } from './cells/GridEditCell';\nimport { Header } from './header/Header';\nimport { HeaderRow } from './header/HeaderRow';\nimport { FilterRow } from './header/FilterRow';\nimport { GroupPanel } from './header/GroupPanel';\nimport { Footer } from './footer/Footer';\nimport { VirtualScroll } from './VirtualScroll';\nimport { ColumnResize } from './drag/ColumnResize';\nimport { CommonDragLogic } from './drag/CommonDragLogic';\nimport { getNestedValue, flatData, readColumns, autoGenerateColumns, sanitizeColumns } from './utils/index';\nimport { GridCell } from './cells/GridCell';\nimport { GridGroupCell } from './cells/GridGroupCell';\nimport { GridRow } from './rows/GridRow';\nimport { GridHeaderSelectionCell } from './header/GridHeaderSelectionCell';\nimport { GridNoRecords } from './GridNoRecords';\nimport { operators } from './filterCommon';\nimport { FooterRow } from './footer/FooterRow';\nimport { normalize } from './paging/GridPagerSettings';\nimport { pagerMessagesMap } from './messages';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from './package-metadata';\nimport { GridDetailCell } from './cells/GridDetailCell';\nimport { GridDetailHierarchyCell } from './cells/GridDetailHierarchyCell';\n/**\n * Represents the [KendoReact Grid component]({% slug overview_grid %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n *    constructor(props) {\n *        super(props);\n *        this.state = {\n *            data: [\n *                { 'foo': 'A1', 'bar': 'B1' },\n *                { 'foo': 'A2', 'bar': 'B2' },\n *                { 'foo': 'A3', 'bar': 'B2' }\n *            ]\n *        };\n *    }\n *    render() {\n *        return (\n *            <Grid\n *                data={this.state.data}\n *                reorderable={true}\n *            >\n *                <GridColumn field=\"foo\" />\n *                <GridColumn field=\"bar\" />\n *            </Grid>\n *        );\n *    }\n * }\n * ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nvar Grid = /** @class */ (function (_super) {\n    __extends(Grid, _super);\n    function Grid(props) {\n        var _this = _super.call(this, props) || this;\n        _this._columns = [];\n        _this._columnsMap = [[]];\n        _this.contextStateRef = { current: undefined };\n        _this.navigationStateRef = { current: undefined };\n        _this.wrapperScrollTop = 0;\n        _this.headerRef = React.createRef();\n        _this.element = null;\n        _this.tableElement = null;\n        _this._footer = null;\n        _this.forceUpdateTimeout = undefined;\n        _this.isRtl = false;\n        _this._gridId = guid();\n        /**\n         * Method to allow the scroll to be set to a specific row index.\n         *\n         * @param options - Object, containing the rowIndex to which is going to be scrolled.\n         */\n        _this.scrollIntoView = function (options) {\n            if (!_this.vs.container || _this.props.scrollable === 'none') {\n                return;\n            }\n            var rowIndex = options.rowIndex;\n            if (_this.props.scrollable === 'virtual') {\n                _this.vs.askedSkip = rowIndex;\n                _this.vs.container.scroll(0, Math.round(_this.vs.askedSkip / _this.vs.total * _this.vs.container.scrollHeight));\n            }\n            else if (_this.element) {\n                var selectedRow = rowIndex < 1\n                    ? _this.element.querySelector(\"tbody > tr:nth-child(\" + 1 + \")\")\n                    : _this.element.querySelector(\"tbody > tr:nth-child(\" + rowIndex + \")\");\n                if (selectedRow) {\n                    selectedRow.scrollIntoView(true);\n                }\n            }\n        };\n        /**\n         * Method to fit columns according to their content.\n         *\n         * @param columnIds - Array of column ids to be fitted.\n         */\n        _this.fitColumns = function (columnIds) {\n            _this.columnResize.dblClickHandler(null, columnIds);\n        };\n        _this.scrollHandler = function (event) {\n            if (event.target !== event.currentTarget) {\n                return;\n            }\n            clearTimeout(_this.forceUpdateTimeout);\n            var scrollLeft = event.currentTarget.scrollLeft;\n            var scrollTop = event.currentTarget.scrollTop;\n            if (_this.props.columnVirtualization && (!_this.vs.scrollableVirtual || scrollTop === _this.wrapperScrollTop)) {\n                _this.forceUpdateTimeout = window.setTimeout(function () { _this.forceUpdate(); }, 0);\n            }\n            if (_this._header) {\n                _this._header.setScrollLeft(scrollLeft);\n            }\n            if (_this._footer) {\n                _this._footer.setScrollLeft(scrollLeft);\n            }\n            if (_this.vs) {\n                _this.vs.scrollHandler(event);\n            }\n            dispatchEvent(_this.props.onScroll, event, _this, undefined);\n            _this.wrapperScrollTop = scrollTop;\n        };\n        _this.onKeyDown = function (event) {\n            tableKeyboardNavigation.onKeyDown(event, {\n                contextStateRef: _this.contextStateRef,\n                navigationStateRef: _this.navigationStateRef,\n                onNavigationAction: _this.onNavigationAction\n            });\n            if (_this.props.onKeyDown) {\n                var _a = getSelectionOptions(_this.props.selectable), mode = _a.mode, cell = _a.cell;\n                _this.props.onKeyDown.call(undefined, __assign({ dataItems: _this.getLeafDataItems(), mode: mode,\n                    cell: cell, componentId: _this._gridId, selectedField: _this.props.selectedField }, _this.getArguments(event)));\n            }\n        };\n        _this.onFocus = function (event) {\n            tableKeyboardNavigation.onFocus(event, {\n                contextStateRef: _this.contextStateRef\n            });\n        };\n        _this.onNavigationAction = function (options) {\n            if (_this.props.onNavigationAction) {\n                _this.props.onNavigationAction.call(undefined, __assign({ focusElement: options.focusElement }, _this.getArguments(options.event)));\n            }\n        };\n        _this.rowClick = function (e, item) {\n            if (_this.props.onRowClick && e.target.nodeName === 'TD') {\n                _this.props.onRowClick.call(undefined, __assign({ dataItem: item.dataItem }, _this.getArguments(e)));\n            }\n        };\n        _this.rowDblClick = function (e, item) {\n            if (_this.props.onRowDoubleClick && e.target.nodeName === 'TD') {\n                _this.props.onRowDoubleClick.call(undefined, __assign({ dataItem: item.dataItem }, _this.getArguments(e)));\n            }\n        };\n        _this.itemChange = function (event) {\n            var itemChange = _this.props.onItemChange;\n            if (event.field === _this.props.expandField || _this.props.group && event.field === undefined) {\n                var expandChange = _this.props.onExpandChange;\n                if (expandChange) {\n                    expandChange.call(undefined, __assign({}, _this.getArguments(event.syntheticEvent), { dataItem: event.dataItem, dataIndex: event.dataIndex, value: event.value }));\n                }\n                return;\n            }\n            if (itemChange) {\n                itemChange.call(undefined, __assign({}, _this.getArguments(event.syntheticEvent), { dataItem: event.dataItem, field: event.field, value: event.value }));\n            }\n        };\n        _this.onHeaderSelectionChange = function (event) {\n            if (_this.props.onHeaderSelectionChange) {\n                _this.props.onHeaderSelectionChange.call(undefined, {\n                    field: event.field,\n                    nativeEvent: event.syntheticEvent && event.syntheticEvent.nativeEvent,\n                    syntheticEvent: event.syntheticEvent,\n                    target: _this,\n                    dataItems: _this.getLeafDataItems(),\n                    selectedField: _this.props.selectedField\n                });\n            }\n        };\n        _this.selectionRelease = function (event) {\n            if (_this.props.onSelectionChange) {\n                var selectionEvent = __assign({ syntheticEvent: undefined, target: _this, selectedField: _this.props.selectedField || '', componentId: _this._gridId, dataItems: _this.getLeafDataItems(), dataItem: null }, event);\n                _this.props.onSelectionChange.call(undefined, selectionEvent);\n            }\n        };\n        _this.pageChange = function (page, syntheticEvent) {\n            _this.raiseDataEvent(_this.props.onPageChange, { page: page }, { skip: page.skip, take: page.take }, syntheticEvent);\n        };\n        _this.pagerPageChange = function (event) {\n            _this.pageChange({ skip: event.skip, take: event.take }, event.syntheticEvent);\n        };\n        _this.sortChange = function (sort, syntheticEvent) {\n            _this.raiseDataEvent(_this.props.onSortChange, { sort: sort }, { sort: sort }, syntheticEvent);\n        };\n        _this.filterChange = function (filter, syntheticEvent) {\n            _this.raiseDataEvent(_this.props.onFilterChange, { filter: filter }, { filter: filter, skip: 0 }, syntheticEvent);\n        };\n        _this.groupChange = function (groups, event) {\n            var syntheticEvent = event.nativeEvent ?\n                event : { nativeEvent: event.nativeEvent || event.originalEvent };\n            _this.raiseDataEvent(_this.props.onGroupChange, { group: groups }, { group: groups, skip: 0 }, syntheticEvent);\n        };\n        _this.onResize = function (index, newWidth, oldWidth, nativeEvent, end, targetId) {\n            _this.resetTableWidth();\n            if (_this.props.onColumnResize) {\n                _this.props.onColumnResize.call(undefined, {\n                    columns: _this.columns,\n                    nativeEvent: nativeEvent,\n                    targetColumnId: targetId,\n                    index: index,\n                    newWidth: newWidth,\n                    oldWidth: oldWidth,\n                    end: end,\n                    target: _this\n                });\n            }\n        };\n        _this.resolveTitle = function (field) {\n            var column = _this._columns.find(function (c) { return c.field === field; });\n            var title = column && (column.title || column.field);\n            return title === undefined ? field : title;\n        };\n        _this.getLeafDataItems = function () {\n            return _this._data.filter(function (item) { return item.rowType === 'data'; }).map(function (item) { return item.dataItem; });\n        };\n        validatePackage(packageMetadata);\n        var groupable = _this.props.groupable === true ||\n            (typeof _this.props.groupable === 'object') && _this.props.groupable.enabled !== false;\n        _this.vs = new VirtualScroll(groupable || props.rowHeight === undefined || props.rowHeight === 0);\n        _this.dragLogic = new CommonDragLogic(_this.columnReorder.bind(_this), _this.groupReorder.bind(_this), _this.columnToGroup.bind(_this));\n        _this.columnResize = new ColumnResize(_this.onResize);\n        tableKeyboardNavigation.onConstructor({\n            navigatable: Boolean(props.navigatable),\n            contextStateRef: _this.contextStateRef,\n            navigationStateRef: _this.navigationStateRef,\n            idPrefix: _this._gridId\n        });\n        return _this;\n    }\n    Object.defineProperty(Grid.prototype, \"columns\", {\n        /* eslint-disable max-len */\n        /**\n         * A getter of the current columns. Gets the current column width or current columns, or any other [`GridColumnProps`]({% slug api_grid_gridcolumnprops %}) for each defined column. Can be used on each Grid instance. To obtain the instance of the rendered Grid, use the `ref` callback. The following example demonstrates how to reorder the columns by dragging their handlers and check the properties afterwards. You can check the result in the browser console.\n         *\n         * @example\n         * ```jsx\n         * class App extends React.Component {\n         *     constructor(props) {\n         *         super(props);\n         *         this.state = {\n         *             data: [\n         *                 { 'foo': 'A1', 'bar': 'B1' },\n         *                 { 'foo': 'A2', 'bar': 'B2' },\n         *                 { 'foo': 'A3', 'bar': 'B2' }\n         *             ]\n         *         };\n         *         this.grid = null;\n         *     }\n         *     render() {\n         *         return (\n         *             <div>\n         *                 <Grid\n         *                     data={this.state.data}\n         *                     reorderable={true}\n         *                     ref={(g) => { this.grid = g; }}\n         *                 >\n         *                     <GridColumn field=\"foo\" />\n         *                     <GridColumn field=\"bar\" />\n         *                 </Grid>\n         *                 <button onClick={() => console.log(JSON.stringify(this.grid.columns))}>\n         *                     log current properties into browser console.\n         *                 </button>\n         *             </div>\n         *         );\n         *     }\n         * }\n         * ReactDOM.render(<App />, document.querySelector('my-app'));\n         * ```\n         */\n        // tslint:enable:max-line-length\n        get: function () {\n            var shuffledColumns = this._columns.filter(function (q) { return q.declarationIndex >= 0 && q.parentIndex === -1; });\n            return sanitizeColumns(shuffledColumns);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Grid.prototype, \"document\", {\n        get: function () {\n            if (!canUseDOM) {\n                return;\n            }\n            // useful only for user actions\n            return (this.element && this.element.ownerDocument) || document;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Grid.prototype, \"_header\", {\n        get: function () {\n            return this.headerRef.current;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    Grid.prototype.componentDidMount = function () {\n        setScrollbarWidth();\n        var rtl = isRtl(this.element);\n        this.isRtl = rtl;\n        tableKeyboardNavigation.onComponentDidMount({\n            scope: this.element || undefined,\n            contextStateRef: this.contextStateRef,\n            navigationStateRef: this.navigationStateRef\n        });\n        if (this.isRtl) {\n            this.forceUpdate();\n        }\n    };\n    /**\n     * @hidden\n     */\n    Grid.prototype.getSnapshotBeforeUpdate = function () {\n        tableKeyboardNavigation.onGetSnapshotBeforeUpdate({\n            document: this.document,\n            contextStateRef: this.contextStateRef,\n            navigationStateRef: this.navigationStateRef\n        });\n        return null;\n    };\n    /**\n     * @hidden\n     */\n    Grid.prototype.componentDidUpdate = function () {\n        setScrollbarWidth();\n        tableKeyboardNavigation.onComponentDidUpdate({\n            scope: this.element || undefined,\n            contextStateRef: this.contextStateRef,\n            navigationStateRef: this.navigationStateRef\n        });\n    };\n    /**\n     * @hidden\n     */\n    Grid.prototype.componentWillUnmount = function () {\n        clearTimeout(this.forceUpdateTimeout);\n        this.columnResize.columns = [];\n        this.dragLogic.columns = [];\n        this._columns = [];\n    };\n    /**\n     * @hidden\n     */\n    Grid.prototype.render = function () {\n        var _this = this;\n        var total = this.props.total || 0;\n        var idPrefix = navigationTools.getIdPrefix(this.navigationStateRef);\n        var propsData = [];\n        if (Array.isArray(this.props.data)) {\n            propsData = this.props.data;\n            total = total || this.props.data.length;\n        }\n        else if (this.props.data) {\n            propsData = this.props.data.data;\n            total = total || this.props.data.total;\n        }\n        var groupable = this.props.groupable === true ||\n            (typeof this.props.groupable === 'object') && this.props.groupable.enabled !== false;\n        this.columnResize.resizable = this.props.resizable || false;\n        this.dragLogic.reorderable = this.props.reorderable || false;\n        this.dragLogic.groupable = groupable;\n        var tableUserSelect = this.props.selectable && this.props.selectable.drag ? 'none' : undefined;\n        if (total !== this.vs.total) {\n            this.vs.reset();\n            this.vs = new VirtualScroll(groupable || this.props.rowHeight === undefined || this.props.rowHeight === 0);\n            this.vs.table = this.tableElement;\n        }\n        this.vs.fixedScroll = this.props.fixedScroll || false;\n        this.vs.PageChange = this.pageChange;\n        this.vs.realSkip = this.props.skip || 0;\n        this.vs.pageSize = (this.props.take !== undefined ? this.props.take : this.props.pageSize) || 0;\n        this.vs.scrollableVirtual = (this.props.scrollable === 'virtual');\n        this.vs.total = total;\n        this.vs.propsSkip = (this.props.skip || 0) + (this.props.scrollable === 'virtual' ?\n            this.vs.topCacheCount + (this.vs.attendedSkip - (this.props.skip || 0)) : 0);\n        if (this.props.rowHeight !== undefined && this.props.rowHeight > 0 && !groupable) {\n            this.vs.containerHeight = Math.min(1533915, this.props.rowHeight * (total || 0));\n        }\n        else {\n            this.vs.containerHeight = 1533915;\n        }\n        var groupingFooter = (typeof this.props.groupable === 'object') && this.props.groupable.footer || 'none';\n        this._data = [];\n        var resolvedGroupsCount = flatData(this._data, propsData, groupingFooter, { index: this.props.skip || 0 }, this.props.group !== undefined, this.props.expandField);\n        var children = React.Children.toArray(this.props.children);\n        this.initColumns(children.filter(function (child) { return child &&\n            child.type.displayName === 'KendoReactGridColumn'; }), resolvedGroupsCount);\n        var toolbar = children.filter(function (child) { return child &&\n            child.type.displayName === 'KendoReactGridToolbar'; });\n        var noRecords = children.filter(function (child) { return child &&\n            child.type.displayName === 'KendoReactGridNoRecords'; });\n        var leafColumns = this._columns.filter(function (c) { return c.children.length === 0; });\n        var groupingPanel = groupable && (React.createElement(GroupPanel, { group: this.props.group || [], groupChange: this.groupChange, pressHandler: this.dragLogic.pressHandler, dragHandler: this.dragLogic.dragHandler, releaseHandler: this.dragLogic.releaseHandler, refCallback: this.dragLogic.refGroupPanelDiv, resolveTitle: this.resolveTitle }));\n        var header = (React.createElement(Header, { columnResize: this.columnResize, staticHeaders: this.props.scrollable !== 'none', scrollableDataElement: function () { return _this.vs.container; }, draggable: this.props.reorderable || groupable, ref: this.headerRef, headerRow: React.createElement(HeaderRow, { sort: this.props.sort, sortable: this.props.sortable, sortChange: this.sortChange, group: this.props.group || [], groupable: groupable, groupChange: this.groupChange, filter: this.props.filter, filterable: this.props.filterable, filterOperators: this.props.filterOperators || operators, filterChange: this.filterChange, columnMenu: this.props.columnMenu, selectionChange: this.onHeaderSelectionChange, columns: this._columns, columnResize: this.columnResize, pressHandler: this.dragLogic.pressHandler, dragHandler: this.dragLogic.dragHandler, releaseHandler: this.dragLogic.releaseHandler, columnsMap: this._columnsMap, cellRender: this.props.headerCellRender, isRtl: this.isRtl, dragClue: this.dragLogic.dragClueRef, headerRef: this.headerRef, containerRef: this.vs.containerRef }), filterRow: this.props.filterable && React.createElement(FilterRow, { columns: this._columns, filter: this.props.filter, filterOperators: this.props.filterOperators || operators, filterChange: this.filterChange, sort: this.props.sort, cellRender: this.props.filterCellRender, isRtl: this.isRtl, ariaRowIndex: this._columnsMap.length + 1 }) || undefined, cols: leafColumns.map(function (column, index) { return (React.createElement(\"col\", { key: index.toString(), width: column.width !== undefined ?\n                    Math.floor(parseFloat(column.width.toString())) + 'px' : undefined })); }) }));\n        var scrollLeft = this.vs && this.vs.container && this.vs.container.scrollLeft || 0;\n        var tableWidth = parseFloat(((this.props.style || {}).width || '').toString());\n        var _a = tableColumnsVirtualization({\n            enabled: this.props.columnVirtualization,\n            columns: leafColumns,\n            tableViewPortWidth: tableWidth,\n            scrollLeft: scrollLeft\n        }), colSpans = _a.colSpans, isColHidden = _a.hiddenColumns;\n        var dataRow = function (item, rowId, rowDataIndex) {\n            var isInEdit = false;\n            var selectedValue = _this.props.selectedField ? getNestedValue(_this.props.selectedField, item.dataItem) : undefined;\n            return {\n                row: leafColumns.map(function (column, columnIndex) {\n                    if (isColHidden[columnIndex]) {\n                        return null;\n                    }\n                    var className = \"\" + (column.className ? column.className + ' ' : '')\n                        + (\"\" + (column.locked ? 'k-grid-content-sticky' : ''));\n                    var style = column.left !== undefined\n                        ? !_this.isRtl\n                            ? { left: column.left, right: column.right }\n                            : { left: column.right, right: column.left }\n                        : {};\n                    var cellProps = {\n                        id: navigationTools.generateNavigatableId(rowId + \"-\" + String(columnIndex), idPrefix),\n                        colSpan: colSpans[columnIndex],\n                        dataItem: item.dataItem,\n                        field: column.field,\n                        editor: column.editor,\n                        format: column.format,\n                        className: className,\n                        render: _this.props.cellRender,\n                        onChange: _this.itemChange,\n                        selectionChange: (_this.props.onSelectionChange) ?\n                            (function (e) { _this.selectionChange({ event: e, dataItem: item.dataItem, dataIndex: rowDataIndex, columnIndex: columnIndex }); }) :\n                            undefined,\n                        columnIndex: columnIndex,\n                        columnsCount: leafColumns.length,\n                        rowType: item.rowType,\n                        level: item.level,\n                        expanded: item.expanded,\n                        dataIndex: item.dataIndex,\n                        style: style,\n                        ariaColumnIndex: column.ariaColumnIndex,\n                        isSelected: Array.isArray(selectedValue) && selectedValue.indexOf(columnIndex) > -1\n                    };\n                    var currentColumnIsInEdit = false;\n                    if (column.editable && _this.props.editField) {\n                        var inEdit = getNestedValue(_this.props.editField, item.dataItem);\n                        if (inEdit === true || inEdit === column.field) {\n                            isInEdit = true;\n                            currentColumnIsInEdit = true;\n                        }\n                    }\n                    if (column.cell) {\n                        return React.createElement(column.cell, __assign({ key: columnIndex }, cellProps));\n                    }\n                    return currentColumnIsInEdit\n                        ? React.createElement(GridEditCell, __assign({ key: columnIndex }, cellProps))\n                        : React.createElement(GridCell, __assign({ key: columnIndex }, cellProps));\n                }),\n                isInEdit: isInEdit,\n                isSelected: typeof selectedValue === 'boolean' && selectedValue\n            };\n        };\n        var hiddenRows = 0;\n        if (this.props.scrollable === 'virtual') {\n            for (var i = 0; i < this.vs.topCacheCount + this.vs.attendedSkip - (this.props.skip || 0); i++) {\n                var item = this._data.shift();\n                if (item) {\n                    this._data.push(item);\n                    hiddenRows++;\n                    if (item.rowType === 'groupHeader') {\n                        i--;\n                    }\n                }\n                else {\n                    break;\n                }\n            }\n        }\n        var hidden = function (index) {\n            return (index >= _this._data.length - hiddenRows);\n        };\n        var absoluteDataIndex = this.vs.propsSkip || 0;\n        var body = [];\n        var rowIndexStart = this._columnsMap.length + (this.props.filterable ? 1 : 0) + 1;\n        var currentAriaRowIndex;\n        if (this._data.length) {\n            var dataIndex_1 = -1;\n            var detailRowCount_1 = 0;\n            this._data.forEach(function (item, rowIndex) {\n                if (item.rowType === 'data') {\n                    absoluteDataIndex++;\n                    dataIndex_1++;\n                }\n                var isAlt = absoluteDataIndex % 2 === 0;\n                var dataItemKey = _this.props.dataItemKey && getter(_this.props.dataItemKey)(item.dataItem);\n                var absoluteIndex = rowIndex + (_this.vs.propsSkip || 0);\n                var rowId = dataItemKey ? dataItemKey : 'ai' + absoluteIndex;\n                var detailRowId = rowId + '_1';\n                var gridRow = dataRow(item, rowId, dataIndex_1);\n                currentAriaRowIndex = absoluteIndex + rowIndexStart + detailRowCount_1;\n                body.push((React.createElement(GridRow, { key: rowId, dataItem: item.dataItem, isAltRow: isAlt, isInEdit: gridRow.isInEdit, rowType: item.rowType, isHidden: hidden(rowIndex), onClick: function (e) { return _this.rowClick(e, item); }, onDoubleClick: function (e) { return _this.rowDblClick(e, item); }, selectedField: _this.props.selectedField, rowHeight: _this.props.rowHeight, render: _this.props.rowRender, ariaRowIndex: currentAriaRowIndex, dataIndex: dataIndex_1, isSelected: gridRow.isSelected }, gridRow.row)));\n                if (_this.props.detail && item.rowType === 'data' && item.expanded) {\n                    var detailColspan = (leafColumns.length\n                        - (_this.props.expandField ? 1 : 0)\n                        - (_this.props.group ? _this.props.group.length : 0)) || 1;\n                    detailRowCount_1++;\n                    currentAriaRowIndex = absoluteIndex + rowIndexStart + detailRowCount_1;\n                    body.push((React.createElement(\"tr\", { key: detailRowId, className: isAlt ? 'k-detail-row k-alt' : 'k-detail-row', style: { visibility: hidden(rowIndex) ? 'hidden' : '' }, role: \"row\", \"aria-rowindex\": currentAriaRowIndex },\n                        _this.props.group && _this.props.group.map(function (group, idx) {\n                            return (React.createElement(GridGroupCell, { id: '', dataIndex: item.dataIndex, field: group.field, dataItem: item.dataItem, key: idx, style: {}, ariaColumnIndex: 1 + idx, isSelected: false }));\n                        }),\n                        _this.props.expandField &&\n                            React.createElement(GridDetailHierarchyCell, { id: navigationTools.generateNavigatableId(detailRowId + \"-dhcell\", idPrefix) }),\n                        React.createElement(GridDetailCell, { dataItem: item.dataItem, dataIndex: item.dataIndex, colSpan: detailColspan, ariaColIndex: 2 + (_this.props.group ? _this.props.group.length : 0), detail: _this.props.detail, id: navigationTools.generateNavigatableId(detailRowId + \"-dcell\", idPrefix) }))));\n                }\n            });\n        }\n        else {\n            body.push((React.createElement(\"tr\", { key: \"no-records\", className: \"k-grid-norecords\", \"aria-rowindex\": rowIndexStart },\n                React.createElement(\"td\", { colSpan: leafColumns.length }, noRecords.length ? noRecords : React.createElement(GridNoRecords, null)))));\n        }\n        var pagerProps = __assign({ className: 'k-grid-pager', onPageChange: this.pagerPageChange, total: total, skip: this.vs.propsSkip || 0, take: (this.props.take !== undefined ? this.props.take : this.props.pageSize) || 10, messagesMap: pagerMessagesMap }, (normalize(this.props.pageable || {})));\n        var pager = this.props.pager ? React.createElement(this.props.pager, __assign({}, pagerProps)) : React.createElement(Pager, __assign({}, pagerProps));\n        var sorted = function (field) {\n            return _this.props.sort && _this.props.sort.filter(function (descriptor) { return descriptor.field === field; }).length > 0;\n        };\n        var footer = this._columns.some(function (c) { return Boolean(c.footerCell); }) ? (React.createElement(Footer, { columnResize: this.columnResize, staticHeaders: this.props.scrollable !== 'none', ref: function (f) { return _this._footer = f; }, row: React.createElement(FooterRow, { columns: this._columns, isRtl: this.isRtl, ariaRowIndex: currentAriaRowIndex + 1 }), cols: leafColumns.map(function (column, index) { return (React.createElement(\"col\", { key: index.toString(), width: column.width !== undefined ?\n                    Math.floor(parseFloat(column.width.toString())) + 'px' : undefined })); }) })) : null;\n        var colGroups = (React.createElement(\"colgroup\", { ref: function (c) {\n                _this.columnResize.colGroupMain = c;\n            }, role: \"presentation\" }, leafColumns.map(function (column, index) { return (React.createElement(\"col\", { key: index.toString(), className: sorted(column.field) ? 'k-sorted' : undefined, width: column.width !== undefined ?\n                Math.floor(parseFloat(column.width.toString())) + 'px' : undefined })); })));\n        var enableDragClues = this.dragLogic.reorderable || this.dragLogic.groupable;\n        if (this.props.scrollable === 'none') {\n            return (React.createElement(TableKeyboardNavigationContext.Provider, { value: this.contextStateRef.current },\n                React.createElement(\"div\", __assign({ style: this.props.style, className: classNames('k-widget k-grid', this.props.className), \"aria-colcount\": leafColumns.length, \"aria-rowcount\": total, ref: function (el) { _this.element = el; }, onKeyDown: this.onKeyDown, onFocus: this.onFocus }, tableKeyboardNavigationScopeAttributes),\n                    toolbar,\n                    groupingPanel,\n                    React.createElement(TableSelection, { selectable: this.props.selectable, onRelease: this.selectionRelease, childRef: function (table) {\n                            _this.vs.table = table;\n                            _this.tableElement = table;\n                            _this.resetTableWidth();\n                        } },\n                        React.createElement(\"table\", { style: { userSelect: tableUserSelect } },\n                            colGroups,\n                            header,\n                            React.createElement(\"tbody\", __assign({}, tableKeyboardNavigationBodyAttributes), body),\n                            footer)),\n                    this.props.pageable && pager,\n                    enableDragClues && (React.createElement(React.Fragment, null,\n                        React.createElement(DropClue, { ref: this.dragLogic.refDropElementClue }),\n                        React.createElement(DragClue, { ref: this.dragLogic.refDragElementClue }))))));\n        }\n        var wrapperStyle = this.props.style || {};\n        if (this.props.scrollable === 'virtual') {\n            // Set the default height for vs if not existing.\n            if (!wrapperStyle.height) {\n                wrapperStyle = Object.assign({}, wrapperStyle, { height: '450px' });\n            }\n        }\n        return (React.createElement(TableKeyboardNavigationContext.Provider, { value: this.contextStateRef.current },\n            React.createElement(\"div\", __assign({ style: wrapperStyle, className: classNames('k-widget k-grid', {\n                    'k-grid-virtual': this.props.scrollable === 'virtual'\n                }, this.props.className), ref: function (el) {\n                    _this.element = el;\n                    _this.resetTableWidth();\n                }, role: \"grid\", \"aria-colcount\": leafColumns.length, \"aria-rowcount\": total, onKeyDown: this.onKeyDown, onFocus: this.onFocus }, tableKeyboardNavigationScopeAttributes),\n                toolbar,\n                groupingPanel,\n                header,\n                React.createElement(\"div\", { className: \"k-grid-container\", role: \"presentation\" },\n                    React.createElement(\"div\", { ref: this.vs.containerRef, className: \"k-grid-content k-virtual-content\", onScroll: this.scrollHandler, role: \"presentation\" },\n                        React.createElement(\"div\", { style: { 'position': 'relative' }, role: \"presentation\" },\n                            React.createElement(TableSelection, { selectable: this.props.selectable, onRelease: this.selectionRelease, childRef: function (table) {\n                                    _this.vs.table = table;\n                                    _this.tableElement = table;\n                                } },\n                                React.createElement(\"table\", { className: 'k-grid-table', role: \"presentation\", style: { userSelect: tableUserSelect } },\n                                    colGroups,\n                                    React.createElement(\"tbody\", __assign({ ref: function (tableBody) {\n                                            _this.vs.tableBody = tableBody;\n                                        }, role: \"presentation\" }, tableKeyboardNavigationBodyAttributes), body)))),\n                        React.createElement(\"div\", { className: \"k-height-container\", role: \"presentation\" },\n                            React.createElement(\"div\", { style: this.props.scrollable === 'virtual' ?\n                                    { 'height': (this.vs.containerHeight) + 'px' } : {} })))),\n                footer,\n                this.props.pageable && pager,\n                enableDragClues && (React.createElement(React.Fragment, null,\n                    React.createElement(DropClue, { ref: this.dragLogic.refDropElementClue }),\n                    React.createElement(DragClue, { ref: this.dragLogic.refDragElementClue }))))));\n    };\n    Grid.prototype.selectionChange = function (options) {\n        if (this.props.onSelectionChange) {\n            var event_1 = options.event, dataItem = options.dataItem, dataIndex = options.dataIndex, columnIndex = options.columnIndex;\n            var _a = getSelectionOptions(this.props.selectable), mode = _a.mode, cell = _a.cell;\n            var selectionEvent = __assign({}, this.getArguments(event_1.syntheticEvent), { dataItem: dataItem, startColIndex: columnIndex, endColIndex: columnIndex, startRowIndex: dataIndex, endRowIndex: dataIndex, dataItems: this.getLeafDataItems(), altKey: false, ctrlKey: false, shiftKey: false, metaKey: false, mode: mode,\n                cell: cell, isDrag: false, componentId: this._gridId, selectedField: this.props.selectedField || '' });\n            this.props.onSelectionChange.call(undefined, selectionEvent);\n        }\n    };\n    Grid.prototype.raiseDataEvent = function (handler, data, moreData, syntheticEvent) {\n        var dataStateChange = this.props.onDataStateChange;\n        if (handler) {\n            handler.call(undefined, __assign({}, this.getArguments(syntheticEvent), data));\n        }\n        else if (dataStateChange) {\n            dataStateChange.call(undefined, __assign({}, this.getArguments(syntheticEvent), { dataState: __assign({}, this.getDataState(), moreData) }));\n        }\n    };\n    Grid.prototype.columnReorder = function (prev, next, nativeEvent) {\n        var _this = this;\n        var _a;\n        var depth = this._columns[prev].depth;\n        var end = function (index) {\n            do {\n                index++;\n            } while (index < _this._columns.length && _this._columns[index].depth > depth);\n            return index;\n        };\n        var spliced = this._columns.splice(prev, end(prev) - prev);\n        (_a = this._columns).splice.apply(_a, [prev < next ? end(next - spliced.length) : next, 0].concat(spliced));\n        this._columns.filter(function (q) { return q.declarationIndex >= 0; }).forEach(function (c, i) { return c.orderIndex = i; });\n        var eventColumnProps = this.columns;\n        this.forceUpdate();\n        if (this.props.onColumnReorder) {\n            this.props.onColumnReorder.call(undefined, {\n                target: this,\n                columns: eventColumnProps,\n                nativeEvent: nativeEvent\n            });\n        }\n    };\n    Grid.prototype.groupReorder = function (prevIndex, nextIndex, nativeEvent) {\n        if (this.props.group === undefined) {\n            return;\n        }\n        var group = this.props.group.slice();\n        group.splice.apply(group, [nextIndex, 0].concat(group.splice(prevIndex, 1)));\n        this.groupChange(group, nativeEvent);\n    };\n    Grid.prototype.columnToGroup = function (columnIndex, groupIndex, nativeEvent) {\n        var field = this._columns[columnIndex].field;\n        if (!field) {\n            return;\n        }\n        var group = (this.props.group || []).slice();\n        group.splice(groupIndex, 0, { field: field });\n        this.groupChange(group, nativeEvent);\n    };\n    Grid.prototype.resetTableWidth = function () {\n        var totalWidth = 0;\n        if (!this.columnResize.colGroupMain) {\n            return;\n        }\n        var colElements = this.columnResize.colGroupMain.children;\n        for (var i = 0; i < colElements.length; i++) {\n            var width = colElements[i].width;\n            if (!width) {\n                return;\n            }\n            totalWidth += parseFloat(width.toString());\n        }\n        totalWidth = Math.round(totalWidth);\n        if (this._header) {\n            this._header.setWidth(totalWidth);\n        }\n        if (this._footer) {\n            this._footer.setWidth(totalWidth);\n        }\n        if (this.vs.table) {\n            this.vs.table.style.width = totalWidth + 'px';\n        }\n    };\n    Grid.prototype.initColumns = function (columnElements, groupCount) {\n        var _this = this;\n        var idPrefix = navigationTools.getIdPrefix(this.navigationStateRef);\n        this._columns = readColumns(columnElements, this.columns, { prevId: 0, idPrefix: idPrefix });\n        if (this._columns.length === 0) {\n            this._columns = autoGenerateColumns(this.props.data, this.props.group, this.props.expandField, { prevId: 0, idPrefix: idPrefix });\n        }\n        if (this.props.selectedField) {\n            this._columns.filter(function (c) { return c.field === _this.props.selectedField; }).forEach(function (c) {\n                c.width = c.width || '50px';\n                c.cell = c.cell || GridSelectionCell;\n                c.headerCell = c.headerCell || GridHeaderSelectionCell;\n            });\n        }\n        var defaultServiceProps = {\n            id: '',\n            resizable: true,\n            width: '32px',\n            title: ' ',\n            declarationIndex: -1,\n            orderIndex: -1,\n            children: [],\n            parentIndex: -1,\n            depth: 0,\n            colSpan: 0,\n            rowSpan: 0,\n            left: 0,\n            right: 0,\n            index: 0,\n            rightBorder: false,\n            ariaColumnIndex: 0,\n            isAccessible: true\n        };\n        var columnIndexOffset = 0;\n        if (this.props.expandField && (this.props.onExpandChange) && this.props.detail) {\n            this._columns.unshift(__assign({}, defaultServiceProps, { cell: GridHierarchyCell, field: this.props.expandField, headerClassName: 'k-hierarchy-cell k-header', id: navigationTools.generateNavigatableId(\"\" + this._columns.length, idPrefix, 'column') }));\n            columnIndexOffset++;\n        }\n        for (var i = 0; i < groupCount; i++) {\n            this._columns.unshift(__assign({}, defaultServiceProps, { isAccessible: false, cell: GridGroupCell, field: 'value' }));\n            columnIndexOffset++;\n        }\n        this._columns.slice(columnIndexOffset).forEach(function (c) { return c.parentIndex >= 0 && (c.parentIndex += columnIndexOffset); });\n        this._columnsMap = mapColumns(this._columns);\n        this.columnResize.columns = this._columns;\n        this.dragLogic.columns = this._columns;\n    };\n    Grid.prototype.getDataState = function () {\n        return {\n            filter: this.props.filter,\n            sort: this.props.sort,\n            skip: this.props.skip,\n            take: (this.props.take !== undefined ? this.props.take : this.props.pageSize),\n            group: this.props.group\n        };\n    };\n    Grid.prototype.getArguments = function (syntheticEvent) {\n        return {\n            nativeEvent: syntheticEvent && syntheticEvent.nativeEvent,\n            syntheticEvent: syntheticEvent,\n            target: this\n        };\n    };\n    /**\n     * @hidden\n     */\n    Grid.displayName = 'KendoReactGrid';\n    /**\n     * @hidden\n     */\n    Grid.defaultProps = {\n    // never use this\n    };\n    /**\n     * @hidden\n     */\n    Grid.propTypes = {\n        data: PropTypes.oneOfType([\n            PropTypes.array,\n            PropTypes.shape({\n                data: PropTypes.array,\n                total: PropTypes.number\n            })\n        ]),\n        sortable: PropTypes.oneOfType([\n            PropTypes.bool,\n            PropTypes.shape({\n                mode: PropTypes.oneOf(['single', 'multiple']),\n                allowUnsort: PropTypes.bool\n            })\n        ]),\n        onSortChange: PropTypes.func,\n        sort: PropTypes.array,\n        filterable: PropTypes.bool,\n        filter: PropTypes.any,\n        onFilterChange: PropTypes.func,\n        pageable: PropTypes.oneOfType([\n            PropTypes.bool,\n            PropTypes.shape({\n                buttonCount: PropTypes.number,\n                info: PropTypes.bool,\n                type: PropTypes.oneOf(['numeric', 'input']),\n                pageSizes: PropTypes.oneOfType([PropTypes.bool, PropTypes.arrayOf(PropTypes.number)]),\n                previousNext: PropTypes.bool\n            })\n        ]),\n        pageSize: PropTypes.number,\n        onPageChange: PropTypes.func,\n        total: PropTypes.number,\n        skip: PropTypes.number,\n        take: PropTypes.number,\n        fixedScroll: PropTypes.bool,\n        onExpandChange: PropTypes.func,\n        expandField: PropTypes.string,\n        selectedField: PropTypes.string,\n        onSelectionChange: PropTypes.func,\n        onHeaderSelectionChange: PropTypes.func,\n        resizable: PropTypes.bool,\n        reorderable: PropTypes.bool,\n        group: PropTypes.any,\n        groupable: PropTypes.oneOfType([\n            PropTypes.bool,\n            PropTypes.shape({\n                enabled: PropTypes.bool,\n                footer: PropTypes.oneOf(['always', 'visible', 'none'])\n            })\n        ]),\n        onGroupChange: PropTypes.func,\n        onRowClick: PropTypes.func,\n        onRowDoubleClick: PropTypes.func,\n        onItemChange: PropTypes.func,\n        editField: PropTypes.string,\n        scrollable: PropTypes.oneOf(['none', 'scrollable', 'virtual']),\n        rowHeight: PropTypes.number,\n        detail: PropTypes.any,\n        style: PropTypes.object,\n        onDataStateChange: PropTypes.func,\n        onColumnResize: PropTypes.func,\n        onColumnReorder: PropTypes.func,\n        dataItemKey: PropTypes.string,\n        navigatable: PropTypes.bool\n    };\n    /** @hidden */\n    Grid.contextType = TableKeyboardNavigationContext;\n    return Grid;\n}(React.Component));\nexport { Grid };\n","/**\n * @hidden\n */\nexport function tableColumnsVirtualization(args) {\n    var enabled = args.enabled, _a = args.columns, columns = _a === void 0 ? [] : _a, tableViewPortWidth = args.tableViewPortWidth, scrollLeft = args.scrollLeft;\n    var colSpans = columns.map(function () { return 1; });\n    var hiddenColumns = columns.map(function () { return false; });\n    if (!enabled) {\n        return { colSpans: colSpans, hiddenColumns: hiddenColumns };\n    }\n    var widths = columns.map(function (c) { return parseFloat((c.width || '').toString()) || 10; });\n    var widthOfHiddenColumns = 0;\n    for (var i = 0; i < columns.length; i++) {\n        if (columns[i].locked) {\n            continue;\n        }\n        var considerNext = (i < widths.length - 1) ? widths[i + 1] : 0;\n        if (widthOfHiddenColumns + widths[i] + considerNext < scrollLeft) {\n            hiddenColumns[i] = true;\n            widthOfHiddenColumns += widths[i];\n        }\n        else {\n            break;\n        }\n    }\n    var totalWidth = widths.reduce(function (acc, current) { return acc + current; }, 0);\n    widthOfHiddenColumns = 0;\n    for (var i = columns.length - 1; i >= 0; i--) {\n        if (columns[i].locked) {\n            continue;\n        }\n        if (widthOfHiddenColumns + 2 * widths[i] < totalWidth - tableViewPortWidth - scrollLeft) {\n            hiddenColumns[i] = true;\n            widthOfHiddenColumns += widths[i];\n        }\n        else {\n            break;\n        }\n    }\n    var hiddenCols = hiddenColumns.slice();\n    var hidden = function (value) { return value; };\n    var lastVisible = hiddenCols.lastIndexOf(false);\n    var anyHidden = hiddenCols.some(hidden);\n    var allHidden = hiddenCols.every(hidden);\n    var hiddenSeqLength;\n    var updateIndex;\n    while (anyHidden && hiddenCols.length && (lastVisible !== -1 || allHidden)) {\n        if (lastVisible < hiddenCols.length - 1) {\n            hiddenSeqLength = allHidden ? hiddenCols.length : hiddenCols.length - lastVisible - 1;\n            updateIndex = hiddenCols.length - hiddenSeqLength;\n            if (updateIndex === 0) {\n                updateIndex = hiddenSeqLength - 1;\n            }\n            hiddenColumns[updateIndex] = false;\n            colSpans[updateIndex] = hiddenSeqLength;\n            hiddenCols.splice(lastVisible + 1, hiddenSeqLength);\n        }\n        while (hiddenCols.length && !hiddenCols[hiddenCols.length - 1]) {\n            hiddenCols.pop();\n        }\n        lastVisible = hiddenCols.lastIndexOf(false);\n        anyHidden = hiddenCols.some(hidden);\n        allHidden = hiddenCols.every(hidden);\n    }\n    return { colSpans: colSpans, hiddenColumns: hiddenColumns };\n}\n","/**\n * @hidden\n */\nvar normalizeSettings = function (_a) {\n    var _b = _a.buttonCount, buttonCount = _b === void 0 ? 10 : _b, _c = _a.info, info = _c === void 0 ? true : _c, _d = _a.type, type = _d === void 0 ? 'numeric' : _d, _e = _a.pageSizes, pageSizes = _e === void 0 ? undefined : _e, _f = _a.previousNext, previousNext = _f === void 0 ? true : _f;\n    return ({\n        buttonCount: buttonCount,\n        info: info,\n        pageSizes: pageSizes === true ? [5, 10, 20] : (pageSizes || undefined),\n        previousNext: previousNext,\n        type: type\n    });\n};\n/**\n * @hidden\n */\nexport var normalize = function (settings) {\n    return normalizeSettings(settings === true ? {} : settings);\n};\n","import useUpdatedRef from './useUpdatedRef';\nimport { useEffect } from 'react';\n\n/**\n * Attach a callback that fires when a component unmounts\n *\n * @param fn Handler to run when the component unmounts\n * @category effects\n */\nexport default function useWillUnmount(fn) {\n  const onUnmount = useUpdatedRef(fn);\n  useEffect(() => () => onUnmount.current(), []);\n}","import { useRef } from 'react';\n\n/**\n * Returns a ref that is immediately updated with the new value\n *\n * @param value The Ref value\n * @category refs\n */\nexport default function useUpdatedRef(value) {\n  const valueRef = useRef(value);\n  valueRef.current = value;\n  return valueRef;\n}","import ownerDocument from './ownerDocument';\n/**\n * Returns the actively focused element safely.\n *\n * @param doc the document to check\n */\n\nexport default function activeElement(doc) {\n  if (doc === void 0) {\n    doc = ownerDocument();\n  }\n\n  // Support: IE 9 only\n  // IE9 throws an \"Unspecified error\" accessing document.activeElement from an <iframe>\n  try {\n    var active = doc.activeElement; // IE11 returns a seemingly empty object in some cases when accessing\n    // document.activeElement from an <iframe>\n\n    if (!active || !active.nodeName) return null;\n    return active;\n  } catch (e) {\n    /* ie throws if no active element */\n    return doc.body;\n  }\n}","import isDocument from './isDocument';\nexport default function isWindow(node) {\n  if ('window' in node && node.window === node) return node;\n  if (isDocument(node)) return node.defaultView || false;\n  return false;\n}","export default function isDocument(element) {\n  return 'nodeType' in element && element.nodeType === document.DOCUMENT_NODE;\n}","import isWindow from 'dom-helpers/isWindow';\nimport ownerDocument from 'dom-helpers/ownerDocument';\n\nfunction isBody(node) {\n  return node && node.tagName.toLowerCase() === 'body';\n}\n\nfunction bodyIsOverflowing(node) {\n  var doc = isWindow(node) ? ownerDocument() : ownerDocument(node);\n  var win = isWindow(node) || doc.defaultView;\n  return doc.body.clientWidth < win.innerWidth;\n}\n\nexport default function isOverflowing(container) {\n  var win = isWindow(container);\n  return win || isBody(container) ? bodyIsOverflowing(container) : container.scrollHeight > container.clientHeight;\n}","var BLACKLIST = ['template', 'script', 'style'];\n\nvar isHidable = function isHidable(_ref) {\n  var nodeType = _ref.nodeType,\n      tagName = _ref.tagName;\n  return nodeType === 1 && BLACKLIST.indexOf(tagName.toLowerCase()) === -1;\n};\n\nvar siblings = function siblings(container, exclude, cb) {\n  [].forEach.call(container.children, function (node) {\n    if (exclude.indexOf(node) === -1 && isHidable(node)) {\n      cb(node);\n    }\n  });\n};\n\nexport function ariaHidden(hide, node) {\n  if (!node) return;\n\n  if (hide) {\n    node.setAttribute('aria-hidden', 'true');\n  } else {\n    node.removeAttribute('aria-hidden');\n  }\n}\nexport function hideSiblings(container, _ref2) {\n  var dialog = _ref2.dialog,\n      backdrop = _ref2.backdrop;\n  siblings(container, [dialog, backdrop], function (node) {\n    return ariaHidden(true, node);\n  });\n}\nexport function showSiblings(container, _ref3) {\n  var dialog = _ref3.dialog,\n      backdrop = _ref3.backdrop;\n  siblings(container, [dialog, backdrop], function (node) {\n    return ariaHidden(false, node);\n  });\n}","import addClass from 'dom-helpers/addClass';\nimport removeClass from 'dom-helpers/removeClass';\nimport css from 'dom-helpers/css';\nimport getScrollbarSize from 'dom-helpers/scrollbarSize';\nimport isOverflowing from './isOverflowing';\nimport { ariaHidden, hideSiblings, showSiblings } from './manageAriaHidden';\n\nfunction findIndexOf(arr, cb) {\n  var idx = -1;\n  arr.some(function (d, i) {\n    if (cb(d, i)) {\n      idx = i;\n      return true;\n    }\n\n    return false;\n  });\n  return idx;\n}\n\n/**\n * Proper state management for containers and the modals in those containers.\n *\n * @internal Used by the Modal to ensure proper styling of containers.\n */\nvar ModalManager = /*#__PURE__*/function () {\n  function ModalManager(_temp) {\n    var _ref = _temp === void 0 ? {} : _temp,\n        _ref$hideSiblingNodes = _ref.hideSiblingNodes,\n        hideSiblingNodes = _ref$hideSiblingNodes === void 0 ? true : _ref$hideSiblingNodes,\n        _ref$handleContainerO = _ref.handleContainerOverflow,\n        handleContainerOverflow = _ref$handleContainerO === void 0 ? true : _ref$handleContainerO;\n\n    this.hideSiblingNodes = void 0;\n    this.handleContainerOverflow = void 0;\n    this.modals = void 0;\n    this.containers = void 0;\n    this.data = void 0;\n    this.scrollbarSize = void 0;\n    this.hideSiblingNodes = hideSiblingNodes;\n    this.handleContainerOverflow = handleContainerOverflow;\n    this.modals = [];\n    this.containers = [];\n    this.data = [];\n    this.scrollbarSize = getScrollbarSize();\n  }\n\n  var _proto = ModalManager.prototype;\n\n  _proto.isContainerOverflowing = function isContainerOverflowing(modal) {\n    var data = this.data[this.containerIndexFromModal(modal)];\n    return data && data.overflowing;\n  };\n\n  _proto.containerIndexFromModal = function containerIndexFromModal(modal) {\n    return findIndexOf(this.data, function (d) {\n      return d.modals.indexOf(modal) !== -1;\n    });\n  };\n\n  _proto.setContainerStyle = function setContainerStyle(containerState, container) {\n    var style = {\n      overflow: 'hidden'\n    }; // we are only interested in the actual `style` here\n    // because we will override it\n\n    containerState.style = {\n      overflow: container.style.overflow,\n      paddingRight: container.style.paddingRight\n    };\n\n    if (containerState.overflowing) {\n      // use computed style, here to get the real padding\n      // to add our scrollbar width\n      style.paddingRight = parseInt(css(container, 'paddingRight') || '0', 10) + this.scrollbarSize + \"px\";\n    }\n\n    css(container, style);\n  };\n\n  _proto.removeContainerStyle = function removeContainerStyle(containerState, container) {\n    Object.assign(container.style, containerState.style);\n  };\n\n  _proto.add = function add(modal, container, className) {\n    var modalIdx = this.modals.indexOf(modal);\n    var containerIdx = this.containers.indexOf(container);\n\n    if (modalIdx !== -1) {\n      return modalIdx;\n    }\n\n    modalIdx = this.modals.length;\n    this.modals.push(modal);\n\n    if (this.hideSiblingNodes) {\n      hideSiblings(container, modal);\n    }\n\n    if (containerIdx !== -1) {\n      this.data[containerIdx].modals.push(modal);\n      return modalIdx;\n    }\n\n    var data = {\n      modals: [modal],\n      // right now only the first modal of a container will have its classes applied\n      classes: className ? className.split(/\\s+/) : [],\n      overflowing: isOverflowing(container)\n    };\n\n    if (this.handleContainerOverflow) {\n      this.setContainerStyle(data, container);\n    }\n\n    data.classes.forEach(addClass.bind(null, container));\n    this.containers.push(container);\n    this.data.push(data);\n    return modalIdx;\n  };\n\n  _proto.remove = function remove(modal) {\n    var modalIdx = this.modals.indexOf(modal);\n\n    if (modalIdx === -1) {\n      return;\n    }\n\n    var containerIdx = this.containerIndexFromModal(modal);\n    var data = this.data[containerIdx];\n    var container = this.containers[containerIdx];\n    data.modals.splice(data.modals.indexOf(modal), 1);\n    this.modals.splice(modalIdx, 1); // if that was the last modal in a container,\n    // clean up the container\n\n    if (data.modals.length === 0) {\n      data.classes.forEach(removeClass.bind(null, container));\n\n      if (this.handleContainerOverflow) {\n        this.removeContainerStyle(data, container);\n      }\n\n      if (this.hideSiblingNodes) {\n        showSiblings(container, modal);\n      }\n\n      this.containers.splice(containerIdx, 1);\n      this.data.splice(containerIdx, 1);\n    } else if (this.hideSiblingNodes) {\n      // otherwise make sure the next top modal is visible to a SR\n      var _data$modals = data.modals[data.modals.length - 1],\n          backdrop = _data$modals.backdrop,\n          dialog = _data$modals.dialog;\n      ariaHidden(false, dialog);\n      ariaHidden(false, backdrop);\n    }\n  };\n\n  _proto.isTopModal = function isTopModal(modal) {\n    return !!this.modals.length && this.modals[this.modals.length - 1] === modal;\n  };\n\n  return ModalManager;\n}();\n\nexport default ModalManager;","import ownerDocument from 'dom-helpers/ownerDocument';\nimport { useState, useEffect } from 'react';\nexport var resolveContainerRef = function resolveContainerRef(ref) {\n  var _ref;\n\n  if (typeof document === 'undefined') return null;\n  if (ref == null) return ownerDocument().body;\n  if (typeof ref === 'function') ref = ref();\n  if (ref && 'current' in ref) ref = ref.current;\n  if ((_ref = ref) != null && _ref.nodeType) return ref || null;\n  return null;\n};\nexport default function useWaitForDOMRef(ref, onResolved) {\n  var _useState = useState(function () {\n    return resolveContainerRef(ref);\n  }),\n      resolvedRef = _useState[0],\n      setRef = _useState[1];\n\n  if (!resolvedRef) {\n    var earlyRef = resolveContainerRef(ref);\n    if (earlyRef) setRef(earlyRef);\n  }\n\n  useEffect(function () {\n    if (onResolved && resolvedRef) {\n      onResolved(resolvedRef);\n    }\n  }, [onResolved, resolvedRef]);\n  useEffect(function () {\n    var nextRef = resolveContainerRef(ref);\n\n    if (nextRef !== resolvedRef) {\n      setRef(nextRef);\n    }\n  }, [ref, resolvedRef]);\n  return resolvedRef;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\n\n/* eslint-disable @typescript-eslint/no-use-before-define, react/prop-types */\nimport activeElement from 'dom-helpers/activeElement';\nimport contains from 'dom-helpers/contains';\nimport canUseDOM from 'dom-helpers/canUseDOM';\nimport listen from 'dom-helpers/listen';\nimport PropTypes from 'prop-types';\nimport React, { useState, useRef, useCallback, useImperativeHandle, forwardRef, useEffect } from 'react';\nimport ReactDOM from 'react-dom';\nimport useMounted from '@restart/hooks/useMounted';\nimport useWillUnmount from '@restart/hooks/useWillUnmount';\nimport usePrevious from '@restart/hooks/usePrevious';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport ModalManager from './ModalManager';\nimport useWaitForDOMRef from './useWaitForDOMRef';\nvar manager;\n\nfunction getManager() {\n  if (!manager) manager = new ModalManager();\n  return manager;\n}\n\nfunction useModalManager(provided) {\n  var modalManager = provided || getManager();\n  var modal = useRef({\n    dialog: null,\n    backdrop: null\n  });\n  return Object.assign(modal.current, {\n    add: function add(container, className) {\n      return modalManager.add(modal.current, container, className);\n    },\n    remove: function remove() {\n      return modalManager.remove(modal.current);\n    },\n    isTopModal: function isTopModal() {\n      return modalManager.isTopModal(modal.current);\n    },\n    setDialogRef: useCallback(function (ref) {\n      modal.current.dialog = ref;\n    }, []),\n    setBackdropRef: useCallback(function (ref) {\n      modal.current.backdrop = ref;\n    }, [])\n  });\n}\n\nvar Modal = /*#__PURE__*/forwardRef(function (_ref, ref) {\n  var _ref$show = _ref.show,\n      show = _ref$show === void 0 ? false : _ref$show,\n      _ref$role = _ref.role,\n      role = _ref$role === void 0 ? 'dialog' : _ref$role,\n      className = _ref.className,\n      style = _ref.style,\n      children = _ref.children,\n      _ref$backdrop = _ref.backdrop,\n      backdrop = _ref$backdrop === void 0 ? true : _ref$backdrop,\n      _ref$keyboard = _ref.keyboard,\n      keyboard = _ref$keyboard === void 0 ? true : _ref$keyboard,\n      onBackdropClick = _ref.onBackdropClick,\n      onEscapeKeyDown = _ref.onEscapeKeyDown,\n      transition = _ref.transition,\n      backdropTransition = _ref.backdropTransition,\n      _ref$autoFocus = _ref.autoFocus,\n      autoFocus = _ref$autoFocus === void 0 ? true : _ref$autoFocus,\n      _ref$enforceFocus = _ref.enforceFocus,\n      enforceFocus = _ref$enforceFocus === void 0 ? true : _ref$enforceFocus,\n      _ref$restoreFocus = _ref.restoreFocus,\n      restoreFocus = _ref$restoreFocus === void 0 ? true : _ref$restoreFocus,\n      restoreFocusOptions = _ref.restoreFocusOptions,\n      renderDialog = _ref.renderDialog,\n      _ref$renderBackdrop = _ref.renderBackdrop,\n      renderBackdrop = _ref$renderBackdrop === void 0 ? function (props) {\n    return /*#__PURE__*/React.createElement(\"div\", props);\n  } : _ref$renderBackdrop,\n      providedManager = _ref.manager,\n      containerRef = _ref.container,\n      containerClassName = _ref.containerClassName,\n      onShow = _ref.onShow,\n      _ref$onHide = _ref.onHide,\n      onHide = _ref$onHide === void 0 ? function () {} : _ref$onHide,\n      onExit = _ref.onExit,\n      onExited = _ref.onExited,\n      onExiting = _ref.onExiting,\n      onEnter = _ref.onEnter,\n      onEntering = _ref.onEntering,\n      onEntered = _ref.onEntered,\n      rest = _objectWithoutPropertiesLoose(_ref, [\"show\", \"role\", \"className\", \"style\", \"children\", \"backdrop\", \"keyboard\", \"onBackdropClick\", \"onEscapeKeyDown\", \"transition\", \"backdropTransition\", \"autoFocus\", \"enforceFocus\", \"restoreFocus\", \"restoreFocusOptions\", \"renderDialog\", \"renderBackdrop\", \"manager\", \"container\", \"containerClassName\", \"onShow\", \"onHide\", \"onExit\", \"onExited\", \"onExiting\", \"onEnter\", \"onEntering\", \"onEntered\"]);\n\n  var container = useWaitForDOMRef(containerRef);\n  var modal = useModalManager(providedManager);\n  var isMounted = useMounted();\n  var prevShow = usePrevious(show);\n\n  var _useState = useState(!show),\n      exited = _useState[0],\n      setExited = _useState[1];\n\n  var lastFocusRef = useRef(null);\n  useImperativeHandle(ref, function () {\n    return modal;\n  }, [modal]);\n\n  if (canUseDOM && !prevShow && show) {\n    lastFocusRef.current = activeElement();\n  }\n\n  if (!transition && !show && !exited) {\n    setExited(true);\n  } else if (show && exited) {\n    setExited(false);\n  }\n\n  var handleShow = useEventCallback(function () {\n    modal.add(container, containerClassName);\n    removeKeydownListenerRef.current = listen(document, 'keydown', handleDocumentKeyDown);\n    removeFocusListenerRef.current = listen(document, 'focus', // the timeout is necessary b/c this will run before the new modal is mounted\n    // and so steals focus from it\n    function () {\n      return setTimeout(handleEnforceFocus);\n    }, true);\n\n    if (onShow) {\n      onShow();\n    } // autofocus after onShow to not trigger a focus event for previous\n    // modals before this one is shown.\n\n\n    if (autoFocus) {\n      var currentActiveElement = activeElement(document);\n\n      if (modal.dialog && currentActiveElement && !contains(modal.dialog, currentActiveElement)) {\n        lastFocusRef.current = currentActiveElement;\n        modal.dialog.focus();\n      }\n    }\n  });\n  var handleHide = useEventCallback(function () {\n    modal.remove();\n    removeKeydownListenerRef.current == null ? void 0 : removeKeydownListenerRef.current();\n    removeFocusListenerRef.current == null ? void 0 : removeFocusListenerRef.current();\n\n    if (restoreFocus) {\n      var _lastFocusRef$current;\n\n      // Support: <=IE11 doesn't support `focus()` on svg elements (RB: #917)\n      (_lastFocusRef$current = lastFocusRef.current) == null ? void 0 : _lastFocusRef$current.focus == null ? void 0 : _lastFocusRef$current.focus(restoreFocusOptions);\n      lastFocusRef.current = null;\n    }\n  }); // TODO: try and combine these effects: https://github.com/react-bootstrap/react-overlays/pull/794#discussion_r409954120\n  // Show logic when:\n  //  - show is `true` _and_ `container` has resolved\n\n  useEffect(function () {\n    if (!show || !container) return;\n    handleShow();\n  }, [show, container,\n  /* should never change: */\n  handleShow]); // Hide cleanup logic when:\n  //  - `exited` switches to true\n  //  - component unmounts;\n\n  useEffect(function () {\n    if (!exited) return;\n    handleHide();\n  }, [exited, handleHide]);\n  useWillUnmount(function () {\n    handleHide();\n  }); // --------------------------------\n\n  var handleEnforceFocus = useEventCallback(function () {\n    if (!enforceFocus || !isMounted() || !modal.isTopModal()) {\n      return;\n    }\n\n    var currentActiveElement = activeElement();\n\n    if (modal.dialog && currentActiveElement && !contains(modal.dialog, currentActiveElement)) {\n      modal.dialog.focus();\n    }\n  });\n  var handleBackdropClick = useEventCallback(function (e) {\n    if (e.target !== e.currentTarget) {\n      return;\n    }\n\n    onBackdropClick == null ? void 0 : onBackdropClick(e);\n\n    if (backdrop === true) {\n      onHide();\n    }\n  });\n  var handleDocumentKeyDown = useEventCallback(function (e) {\n    if (keyboard && e.keyCode === 27 && modal.isTopModal()) {\n      onEscapeKeyDown == null ? void 0 : onEscapeKeyDown(e);\n\n      if (!e.defaultPrevented) {\n        onHide();\n      }\n    }\n  });\n  var removeFocusListenerRef = useRef();\n  var removeKeydownListenerRef = useRef();\n\n  var handleHidden = function handleHidden() {\n    setExited(true);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    onExited == null ? void 0 : onExited.apply(void 0, args);\n  };\n\n  var Transition = transition;\n\n  if (!container || !(show || Transition && !exited)) {\n    return null;\n  }\n\n  var dialogProps = _extends({\n    role: role,\n    ref: modal.setDialogRef,\n    // apparently only works on the dialog role element\n    'aria-modal': role === 'dialog' ? true : undefined\n  }, rest, {\n    style: style,\n    className: className,\n    tabIndex: -1\n  });\n\n  var dialog = renderDialog ? renderDialog(dialogProps) : /*#__PURE__*/React.createElement(\"div\", dialogProps, /*#__PURE__*/React.cloneElement(children, {\n    role: 'document'\n  }));\n\n  if (Transition) {\n    dialog = /*#__PURE__*/React.createElement(Transition, {\n      appear: true,\n      unmountOnExit: true,\n      \"in\": !!show,\n      onExit: onExit,\n      onExiting: onExiting,\n      onExited: handleHidden,\n      onEnter: onEnter,\n      onEntering: onEntering,\n      onEntered: onEntered\n    }, dialog);\n  }\n\n  var backdropElement = null;\n\n  if (backdrop) {\n    var BackdropTransition = backdropTransition;\n    backdropElement = renderBackdrop({\n      ref: modal.setBackdropRef,\n      onClick: handleBackdropClick\n    });\n\n    if (BackdropTransition) {\n      backdropElement = /*#__PURE__*/React.createElement(BackdropTransition, {\n        appear: true,\n        \"in\": !!show\n      }, backdropElement);\n    }\n  }\n\n  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/ReactDOM.createPortal( /*#__PURE__*/React.createElement(React.Fragment, null, backdropElement, dialog), container));\n});\nvar propTypes = {\n  /**\n   * Set the visibility of the Modal\n   */\n  show: PropTypes.bool,\n\n  /**\n   * A DOM element, a `ref` to an element, or function that returns either. The Modal is appended to it's `container` element.\n   *\n   * For the sake of assistive technologies, the container should usually be the document body, so that the rest of the\n   * page content can be placed behind a virtual backdrop as well as a visual one.\n   */\n  container: PropTypes.any,\n\n  /**\n   * A callback fired when the Modal is opening.\n   */\n  onShow: PropTypes.func,\n\n  /**\n   * A callback fired when either the backdrop is clicked, or the escape key is pressed.\n   *\n   * The `onHide` callback only signals intent from the Modal,\n   * you must actually set the `show` prop to `false` for the Modal to close.\n   */\n  onHide: PropTypes.func,\n\n  /**\n   * Include a backdrop component.\n   */\n  backdrop: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['static'])]),\n\n  /**\n   * A function that returns the dialog component. Useful for custom\n   * rendering. **Note:** the component should make sure to apply the provided ref.\n   *\n   * ```js static\n   * renderDialog={props => <MyDialog {...props} />}\n   * ```\n   */\n  renderDialog: PropTypes.func,\n\n  /**\n   * A function that returns a backdrop component. Useful for custom\n   * backdrop rendering.\n   *\n   * ```js\n   *  renderBackdrop={props => <MyBackdrop {...props} />}\n   * ```\n   */\n  renderBackdrop: PropTypes.func,\n\n  /**\n   * A callback fired when the escape key, if specified in `keyboard`, is pressed.\n   *\n   * If preventDefault() is called on the keyboard event, closing the modal will be cancelled.\n   */\n  onEscapeKeyDown: PropTypes.func,\n\n  /**\n   * A callback fired when the backdrop, if specified, is clicked.\n   */\n  onBackdropClick: PropTypes.func,\n\n  /**\n   * A css class or set of classes applied to the modal container when the modal is open,\n   * and removed when it is closed.\n   */\n  containerClassName: PropTypes.string,\n\n  /**\n   * Close the modal when escape key is pressed\n   */\n  keyboard: PropTypes.bool,\n\n  /**\n   * A `react-transition-group@2.0.0` `<Transition/>` component used\n   * to control animations for the dialog component.\n   */\n  transition: PropTypes.elementType,\n\n  /**\n   * A `react-transition-group@2.0.0` `<Transition/>` component used\n   * to control animations for the backdrop components.\n   */\n  backdropTransition: PropTypes.elementType,\n\n  /**\n   * When `true` The modal will automatically shift focus to itself when it opens, and\n   * replace it to the last focused element when it closes. This also\n   * works correctly with any Modal children that have the `autoFocus` prop.\n   *\n   * Generally this should never be set to `false` as it makes the Modal less\n   * accessible to assistive technologies, like screen readers.\n   */\n  autoFocus: PropTypes.bool,\n\n  /**\n   * When `true` The modal will prevent focus from leaving the Modal while open.\n   *\n   * Generally this should never be set to `false` as it makes the Modal less\n   * accessible to assistive technologies, like screen readers.\n   */\n  enforceFocus: PropTypes.bool,\n\n  /**\n   * When `true` The modal will restore focus to previously focused element once\n   * modal is hidden\n   */\n  restoreFocus: PropTypes.bool,\n\n  /**\n   * Options passed to focus function when `restoreFocus` is set to `true`\n   *\n   * @link  https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus#Parameters\n   */\n  restoreFocusOptions: PropTypes.shape({\n    preventScroll: PropTypes.bool\n  }),\n\n  /**\n   * Callback fired before the Modal transitions in\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * Callback fired as the Modal begins to transition in\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * Callback fired after the Modal finishes transitioning in\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * Callback fired right before the Modal transitions out\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * Callback fired as the Modal begins to transition out\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * Callback fired after the Modal finishes transitioning out\n   */\n  onExited: PropTypes.func,\n\n  /**\n   * A ModalManager instance used to track and manage the state of open\n   * Modals. Useful when customizing how modals interact within a container\n   */\n  manager: PropTypes.instanceOf(ModalManager)\n};\nModal.displayName = 'Modal';\nModal.propTypes = propTypes;\nexport default Object.assign(Modal, {\n  Manager: ModalManager\n});","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport css from 'dom-helpers/css';\nimport qsa from 'dom-helpers/querySelectorAll';\nimport getScrollbarSize from 'dom-helpers/scrollbarSize';\nimport ModalManager from 'react-overlays/ModalManager';\nvar Selector = {\n  FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n  STICKY_CONTENT: '.sticky-top',\n  NAVBAR_TOGGLER: '.navbar-toggler'\n};\n\nvar BootstrapModalManager = /*#__PURE__*/function (_ModalManager) {\n  _inheritsLoose(BootstrapModalManager, _ModalManager);\n\n  function BootstrapModalManager() {\n    return _ModalManager.apply(this, arguments) || this;\n  }\n\n  var _proto = BootstrapModalManager.prototype;\n\n  _proto.adjustAndStore = function adjustAndStore(prop, element, adjust) {\n    var _css;\n\n    var actual = element.style[prop]; // TODO: DOMStringMap and CSSStyleDeclaration aren't strictly compatible\n    // @ts-ignore\n\n    element.dataset[prop] = actual;\n    css(element, (_css = {}, _css[prop] = parseFloat(css(element, prop)) + adjust + \"px\", _css));\n  };\n\n  _proto.restore = function restore(prop, element) {\n    var value = element.dataset[prop];\n\n    if (value !== undefined) {\n      var _css2;\n\n      delete element.dataset[prop];\n      css(element, (_css2 = {}, _css2[prop] = value, _css2));\n    }\n  };\n\n  _proto.setContainerStyle = function setContainerStyle(containerState, container) {\n    var _this = this;\n\n    _ModalManager.prototype.setContainerStyle.call(this, containerState, container);\n\n    if (!containerState.overflowing) return;\n    var size = getScrollbarSize();\n    qsa(container, Selector.FIXED_CONTENT).forEach(function (el) {\n      return _this.adjustAndStore('paddingRight', el, size);\n    });\n    qsa(container, Selector.STICKY_CONTENT).forEach(function (el) {\n      return _this.adjustAndStore('marginRight', el, -size);\n    });\n    qsa(container, Selector.NAVBAR_TOGGLER).forEach(function (el) {\n      return _this.adjustAndStore('marginRight', el, size);\n    });\n  };\n\n  _proto.removeContainerStyle = function removeContainerStyle(containerState, container) {\n    var _this2 = this;\n\n    _ModalManager.prototype.removeContainerStyle.call(this, containerState, container);\n\n    qsa(container, Selector.FIXED_CONTENT).forEach(function (el) {\n      return _this2.restore('paddingRight', el);\n    });\n    qsa(container, Selector.STICKY_CONTENT).forEach(function (el) {\n      return _this2.restore('marginRight', el);\n    });\n    qsa(container, Selector.NAVBAR_TOGGLER).forEach(function (el) {\n      return _this2.restore('marginRight', el);\n    });\n  };\n\n  return BootstrapModalManager;\n}(ModalManager);\n\nexport { BootstrapModalManager as default };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"children\"];\n\nvar _fadeStyles;\n\nimport classNames from 'classnames';\nimport React, { useCallback } from 'react';\nimport Transition, { ENTERED, ENTERING } from 'react-transition-group/Transition';\nimport transitionEndListener from './transitionEndListener';\nimport triggerBrowserReflow from './triggerBrowserReflow';\nvar defaultProps = {\n  in: false,\n  timeout: 300,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false\n};\nvar fadeStyles = (_fadeStyles = {}, _fadeStyles[ENTERING] = 'show', _fadeStyles[ENTERED] = 'show', _fadeStyles);\nvar Fade = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var className = _ref.className,\n      children = _ref.children,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  var handleEnter = useCallback(function (node) {\n    triggerBrowserReflow(node);\n    if (props.onEnter) props.onEnter(node);\n  }, [props]);\n  return /*#__PURE__*/React.createElement(Transition, _extends({\n    ref: ref,\n    addEndListener: transitionEndListener\n  }, props, {\n    onEnter: handleEnter\n  }), function (status, innerProps) {\n    return /*#__PURE__*/React.cloneElement(children, _extends({}, innerProps, {\n      className: classNames('fade', className, children.props.className, fadeStyles[status])\n    }));\n  });\n});\nFade.defaultProps = defaultProps;\nFade.displayName = 'Fade';\nexport default Fade;","import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('modal-body');","import React from 'react';\nvar ModalContext = /*#__PURE__*/React.createContext({\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  onHide: function onHide() {}\n});\nexport default ModalContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"contentClassName\", \"centered\", \"size\", \"children\", \"scrollable\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar ModalDialog = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      contentClassName = _ref.contentClassName,\n      centered = _ref.centered,\n      size = _ref.size,\n      children = _ref.children,\n      scrollable = _ref.scrollable,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'modal');\n  var dialogClass = bsPrefix + \"-dialog\";\n  return /*#__PURE__*/React.createElement(\"div\", _extends({}, props, {\n    ref: ref,\n    className: classNames(dialogClass, className, size && bsPrefix + \"-\" + size, centered && dialogClass + \"-centered\", scrollable && dialogClass + \"-scrollable\")\n  }), /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(bsPrefix + \"-content\", contentClassName)\n  }, children));\n});\nModalDialog.displayName = 'ModalDialog';\nexport default ModalDialog;","import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('modal-footer');","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"label\", \"onClick\", \"className\"];\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nvar propTypes = {\n  label: PropTypes.string.isRequired,\n  onClick: PropTypes.func\n};\nvar defaultProps = {\n  label: 'Close'\n};\nvar CloseButton = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var label = _ref.label,\n      onClick = _ref.onClick,\n      className = _ref.className,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  return /*#__PURE__*/React.createElement(\"button\", _extends({\n    ref: ref,\n    type: \"button\",\n    className: classNames('close', className),\n    onClick: onClick\n  }, props), /*#__PURE__*/React.createElement(\"span\", {\n    \"aria-hidden\": \"true\"\n  }, \"\\xD7\"), /*#__PURE__*/React.createElement(\"span\", {\n    className: \"sr-only\"\n  }, label));\n});\nCloseButton.displayName = 'CloseButton';\nCloseButton.propTypes = propTypes;\nCloseButton.defaultProps = defaultProps;\nexport default CloseButton;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"closeLabel\", \"closeButton\", \"onHide\", \"className\", \"children\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport CloseButton from './CloseButton';\nimport ModalContext from './ModalContext';\nvar defaultProps = {\n  closeLabel: 'Close',\n  closeButton: false\n};\nvar ModalHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      closeLabel = _ref.closeLabel,\n      closeButton = _ref.closeButton,\n      onHide = _ref.onHide,\n      className = _ref.className,\n      children = _ref.children,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'modal-header');\n  var context = useContext(ModalContext);\n  var handleClick = useEventCallback(function () {\n    if (context) context.onHide();\n    if (onHide) onHide();\n  });\n  return /*#__PURE__*/React.createElement(\"div\", _extends({\n    ref: ref\n  }, props, {\n    className: classNames(className, bsPrefix)\n  }), children, closeButton && /*#__PURE__*/React.createElement(CloseButton, {\n    label: closeLabel,\n    onClick: handleClick\n  }));\n});\nModalHeader.displayName = 'ModalHeader';\nModalHeader.defaultProps = defaultProps;\nexport default ModalHeader;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport classNames from 'classnames';\nexport default (function (className) {\n  return /*#__PURE__*/React.forwardRef(function (p, ref) {\n    return /*#__PURE__*/React.createElement(\"div\", _extends({}, p, {\n      ref: ref,\n      className: classNames(p.className, className)\n    }));\n  });\n});","import createWithBsPrefix from './createWithBsPrefix';\nimport divWithClassName from './divWithClassName';\nvar DivStyledAsH4 = divWithClassName('h4');\nexport default createWithBsPrefix('modal-title', {\n  Component: DivStyledAsH4\n});","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _excluded = [\"bsPrefix\", \"className\", \"style\", \"dialogClassName\", \"contentClassName\", \"children\", \"dialogAs\", \"aria-labelledby\", \"aria-describedby\", \"aria-label\", \"show\", \"animation\", \"backdrop\", \"keyboard\", \"onEscapeKeyDown\", \"onShow\", \"onHide\", \"container\", \"autoFocus\", \"enforceFocus\", \"restoreFocus\", \"restoreFocusOptions\", \"onEntered\", \"onExit\", \"onExiting\", \"onEnter\", \"onEntering\", \"onExited\", \"backdropClassName\", \"manager\"];\nimport classNames from 'classnames';\nimport addEventListener from 'dom-helpers/addEventListener';\nimport canUseDOM from 'dom-helpers/canUseDOM';\nimport ownerDocument from 'dom-helpers/ownerDocument';\nimport removeEventListener from 'dom-helpers/removeEventListener';\nimport getScrollbarSize from 'dom-helpers/scrollbarSize';\nimport useCallbackRef from '@restart/hooks/useCallbackRef';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport useWillUnmount from '@restart/hooks/useWillUnmount';\nimport transitionEnd from 'dom-helpers/transitionEnd';\nimport React, { useCallback, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport BaseModal from 'react-overlays/Modal';\nimport warning from 'warning';\nimport BootstrapModalManager from './BootstrapModalManager';\nimport Fade from './Fade';\nimport ModalBody from './ModalBody';\nimport ModalContext from './ModalContext';\nimport ModalDialog from './ModalDialog';\nimport ModalFooter from './ModalFooter';\nimport ModalHeader from './ModalHeader';\nimport ModalTitle from './ModalTitle';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar manager;\nvar defaultProps = {\n  show: false,\n  backdrop: true,\n  keyboard: true,\n  autoFocus: true,\n  enforceFocus: true,\n  restoreFocus: true,\n  animation: true,\n  dialogAs: ModalDialog\n};\n/* eslint-disable no-use-before-define, react/no-multi-comp */\n\nfunction DialogTransition(props) {\n  return /*#__PURE__*/React.createElement(Fade, _extends({}, props, {\n    timeout: null\n  }));\n}\n\nfunction BackdropTransition(props) {\n  return /*#__PURE__*/React.createElement(Fade, _extends({}, props, {\n    timeout: null\n  }));\n}\n/* eslint-enable no-use-before-define */\n\n\nvar Modal = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      style = _ref.style,\n      dialogClassName = _ref.dialogClassName,\n      contentClassName = _ref.contentClassName,\n      children = _ref.children,\n      Dialog = _ref.dialogAs,\n      ariaLabelledby = _ref['aria-labelledby'],\n      ariaDescribedby = _ref['aria-describedby'],\n      ariaLabel = _ref['aria-label'],\n      show = _ref.show,\n      animation = _ref.animation,\n      backdrop = _ref.backdrop,\n      keyboard = _ref.keyboard,\n      onEscapeKeyDown = _ref.onEscapeKeyDown,\n      onShow = _ref.onShow,\n      onHide = _ref.onHide,\n      container = _ref.container,\n      autoFocus = _ref.autoFocus,\n      enforceFocus = _ref.enforceFocus,\n      restoreFocus = _ref.restoreFocus,\n      restoreFocusOptions = _ref.restoreFocusOptions,\n      onEntered = _ref.onEntered,\n      onExit = _ref.onExit,\n      onExiting = _ref.onExiting,\n      onEnter = _ref.onEnter,\n      onEntering = _ref.onEntering,\n      onExited = _ref.onExited,\n      backdropClassName = _ref.backdropClassName,\n      propsManager = _ref.manager,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  var _useState = useState({}),\n      modalStyle = _useState[0],\n      setStyle = _useState[1];\n\n  var _useState2 = useState(false),\n      animateStaticModal = _useState2[0],\n      setAnimateStaticModal = _useState2[1];\n\n  var waitingForMouseUpRef = useRef(false);\n  var ignoreBackdropClickRef = useRef(false);\n  var removeStaticModalAnimationRef = useRef(null); // TODO: what's this type\n\n  var _useCallbackRef = useCallbackRef(),\n      modal = _useCallbackRef[0],\n      setModalRef = _useCallbackRef[1];\n\n  var handleHide = useEventCallback(onHide);\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'modal');\n  useImperativeHandle(ref, function () {\n    return {\n      get _modal() {\n        process.env.NODE_ENV !== \"production\" ? warning(false, 'Accessing `_modal` is not supported and will be removed in a future release') : void 0;\n        return modal;\n      }\n\n    };\n  }, [modal]);\n  var modalContext = useMemo(function () {\n    return {\n      onHide: handleHide\n    };\n  }, [handleHide]);\n\n  function getModalManager() {\n    if (propsManager) return propsManager;\n    if (!manager) manager = new BootstrapModalManager();\n    return manager;\n  }\n\n  function updateDialogStyle(node) {\n    if (!canUseDOM) return;\n    var containerIsOverflowing = getModalManager().isContainerOverflowing(modal);\n    var modalIsOverflowing = node.scrollHeight > ownerDocument(node).documentElement.clientHeight;\n    setStyle({\n      paddingRight: containerIsOverflowing && !modalIsOverflowing ? getScrollbarSize() : undefined,\n      paddingLeft: !containerIsOverflowing && modalIsOverflowing ? getScrollbarSize() : undefined\n    });\n  }\n\n  var handleWindowResize = useEventCallback(function () {\n    if (modal) {\n      updateDialogStyle(modal.dialog);\n    }\n  });\n  useWillUnmount(function () {\n    removeEventListener(window, 'resize', handleWindowResize);\n\n    if (removeStaticModalAnimationRef.current) {\n      removeStaticModalAnimationRef.current();\n    }\n  }); // We prevent the modal from closing during a drag by detecting where the\n  // the click originates from. If it starts in the modal and then ends outside\n  // don't close.\n\n  var handleDialogMouseDown = function handleDialogMouseDown() {\n    waitingForMouseUpRef.current = true;\n  };\n\n  var handleMouseUp = function handleMouseUp(e) {\n    if (waitingForMouseUpRef.current && modal && e.target === modal.dialog) {\n      ignoreBackdropClickRef.current = true;\n    }\n\n    waitingForMouseUpRef.current = false;\n  };\n\n  var handleStaticModalAnimation = function handleStaticModalAnimation() {\n    setAnimateStaticModal(true);\n    removeStaticModalAnimationRef.current = transitionEnd(modal.dialog, function () {\n      setAnimateStaticModal(false);\n    });\n  };\n\n  var handleStaticBackdropClick = function handleStaticBackdropClick(e) {\n    if (e.target !== e.currentTarget) {\n      return;\n    }\n\n    handleStaticModalAnimation();\n  };\n\n  var handleClick = function handleClick(e) {\n    if (backdrop === 'static') {\n      handleStaticBackdropClick(e);\n      return;\n    }\n\n    if (ignoreBackdropClickRef.current || e.target !== e.currentTarget) {\n      ignoreBackdropClickRef.current = false;\n      return;\n    }\n\n    onHide == null ? void 0 : onHide();\n  };\n\n  var handleEscapeKeyDown = function handleEscapeKeyDown(e) {\n    if (!keyboard && backdrop === 'static') {\n      // Call preventDefault to stop modal from closing in react-overlays,\n      // then play our animation.\n      e.preventDefault();\n      handleStaticModalAnimation();\n    } else if (keyboard && onEscapeKeyDown) {\n      onEscapeKeyDown(e);\n    }\n  };\n\n  var handleEnter = function handleEnter(node, isAppearing) {\n    if (node) {\n      node.style.display = 'block';\n      updateDialogStyle(node);\n    }\n\n    onEnter == null ? void 0 : onEnter(node, isAppearing);\n  };\n\n  var handleExit = function handleExit(node) {\n    removeStaticModalAnimationRef.current == null ? void 0 : removeStaticModalAnimationRef.current();\n    onExit == null ? void 0 : onExit(node);\n  };\n\n  var handleEntering = function handleEntering(node, isAppearing) {\n    onEntering == null ? void 0 : onEntering(node, isAppearing); // FIXME: This should work even when animation is disabled.\n\n    addEventListener(window, 'resize', handleWindowResize);\n  };\n\n  var handleExited = function handleExited(node) {\n    if (node) node.style.display = ''; // RHL removes it sometimes\n\n    onExited == null ? void 0 : onExited(node); // FIXME: This should work even when animation is disabled.\n\n    removeEventListener(window, 'resize', handleWindowResize);\n  };\n\n  var renderBackdrop = useCallback(function (backdropProps) {\n    return /*#__PURE__*/React.createElement(\"div\", _extends({}, backdropProps, {\n      className: classNames(bsPrefix + \"-backdrop\", backdropClassName, !animation && 'show')\n    }));\n  }, [animation, backdropClassName, bsPrefix]);\n\n  var baseModalStyle = _extends({}, style, modalStyle); // Sets `display` always block when `animation` is false\n\n\n  if (!animation) {\n    baseModalStyle.display = 'block';\n  }\n\n  var renderDialog = function renderDialog(dialogProps) {\n    return /*#__PURE__*/React.createElement(\"div\", _extends({\n      role: \"dialog\"\n    }, dialogProps, {\n      style: baseModalStyle,\n      className: classNames(className, bsPrefix, animateStaticModal && bsPrefix + \"-static\"),\n      onClick: backdrop ? handleClick : undefined,\n      onMouseUp: handleMouseUp,\n      \"aria-label\": ariaLabel,\n      \"aria-labelledby\": ariaLabelledby,\n      \"aria-describedby\": ariaDescribedby\n    }), /*#__PURE__*/React.createElement(Dialog, _extends({}, props, {\n      onMouseDown: handleDialogMouseDown,\n      className: dialogClassName,\n      contentClassName: contentClassName\n    }), children));\n  };\n\n  return /*#__PURE__*/React.createElement(ModalContext.Provider, {\n    value: modalContext\n  }, /*#__PURE__*/React.createElement(BaseModal, {\n    show: show,\n    ref: setModalRef,\n    backdrop: backdrop,\n    container: container,\n    keyboard: true // Always set true - see handleEscapeKeyDown\n    ,\n    autoFocus: autoFocus,\n    enforceFocus: enforceFocus,\n    restoreFocus: restoreFocus,\n    restoreFocusOptions: restoreFocusOptions,\n    onEscapeKeyDown: handleEscapeKeyDown,\n    onShow: onShow,\n    onHide: onHide,\n    onEnter: handleEnter,\n    onEntering: handleEntering,\n    onEntered: onEntered,\n    onExit: handleExit,\n    onExiting: onExiting,\n    onExited: handleExited,\n    manager: getModalManager(),\n    containerClassName: bsPrefix + \"-open\",\n    transition: animation ? DialogTransition : undefined,\n    backdropTransition: animation ? BackdropTransition : undefined,\n    renderBackdrop: renderBackdrop,\n    renderDialog: renderDialog\n  }));\n});\nModal.displayName = 'Modal';\nModal.defaultProps = defaultProps;\nModal.Body = ModalBody;\nModal.Header = ModalHeader;\nModal.Title = ModalTitle;\nModal.Footer = ModalFooter;\nModal.Dialog = ModalDialog;\nModal.TRANSITION_DURATION = 300;\nModal.BACKDROP_TRANSITION_DURATION = 150;\nexport default Modal;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"as\", \"className\", \"type\", \"tooltip\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nvar propTypes = {\n  /**\n   * Specify whether the feedback is for valid or invalid fields\n   *\n   * @type {('valid'|'invalid')}\n   */\n  type: PropTypes.string,\n\n  /** Display feedback as a tooltip. */\n  tooltip: PropTypes.bool,\n  as: PropTypes.elementType\n};\nvar Feedback = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n  var _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'div' : _ref$as,\n      className = _ref.className,\n      _ref$type = _ref.type,\n      type = _ref$type === void 0 ? 'valid' : _ref$type,\n      _ref$tooltip = _ref.tooltip,\n      tooltip = _ref$tooltip === void 0 ? false : _ref$tooltip,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classNames(className, type + \"-\" + (tooltip ? 'tooltip' : 'feedback'))\n  }));\n});\nFeedback.displayName = 'Feedback';\nFeedback.propTypes = propTypes;\nexport default Feedback;","import React from 'react'; // TODO\n\nvar FormContext = /*#__PURE__*/React.createContext({\n  controlId: undefined\n});\nexport default FormContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"id\", \"bsPrefix\", \"bsCustomPrefix\", \"className\", \"type\", \"isValid\", \"isInvalid\", \"isStatic\", \"as\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormCheckInput = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var id = _ref.id,\n      bsPrefix = _ref.bsPrefix,\n      bsCustomPrefix = _ref.bsCustomPrefix,\n      className = _ref.className,\n      _ref$type = _ref.type,\n      type = _ref$type === void 0 ? 'checkbox' : _ref$type,\n      _ref$isValid = _ref.isValid,\n      isValid = _ref$isValid === void 0 ? false : _ref$isValid,\n      _ref$isInvalid = _ref.isInvalid,\n      isInvalid = _ref$isInvalid === void 0 ? false : _ref$isInvalid,\n      isStatic = _ref.isStatic,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'input' : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  var _useContext = useContext(FormContext),\n      controlId = _useContext.controlId,\n      custom = _useContext.custom;\n\n  var _ref2 = custom ? [bsCustomPrefix, 'custom-control-input'] : [bsPrefix, 'form-check-input'],\n      prefix = _ref2[0],\n      defaultPrefix = _ref2[1];\n\n  bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    ref: ref,\n    type: type,\n    id: id || controlId,\n    className: classNames(className, bsPrefix, isValid && 'is-valid', isInvalid && 'is-invalid', isStatic && 'position-static')\n  }));\n});\nFormCheckInput.displayName = 'FormCheckInput';\nexport default FormCheckInput;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"bsCustomPrefix\", \"className\", \"htmlFor\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormCheckLabel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      bsCustomPrefix = _ref.bsCustomPrefix,\n      className = _ref.className,\n      htmlFor = _ref.htmlFor,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  var _useContext = useContext(FormContext),\n      controlId = _useContext.controlId,\n      custom = _useContext.custom;\n\n  var _ref2 = custom ? [bsCustomPrefix, 'custom-control-label'] : [bsPrefix, 'form-check-label'],\n      prefix = _ref2[0],\n      defaultPrefix = _ref2[1];\n\n  bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n  return /*#__PURE__*/React.createElement(\"label\", _extends({}, props, {\n    ref: ref,\n    htmlFor: htmlFor || controlId,\n    className: classNames(className, bsPrefix)\n  }));\n});\nFormCheckLabel.displayName = 'FormCheckLabel';\nexport default FormCheckLabel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"id\", \"bsPrefix\", \"bsCustomPrefix\", \"inline\", \"disabled\", \"isValid\", \"isInvalid\", \"feedbackTooltip\", \"feedback\", \"className\", \"style\", \"title\", \"type\", \"label\", \"children\", \"custom\", \"as\"];\nimport classNames from 'classnames';\nimport all from 'prop-types-extra/lib/all';\nimport React, { useContext, useMemo } from 'react';\nimport Feedback from './Feedback';\nimport FormCheckInput from './FormCheckInput';\nimport FormCheckLabel from './FormCheckLabel';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormCheck = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var id = _ref.id,\n      bsPrefix = _ref.bsPrefix,\n      bsCustomPrefix = _ref.bsCustomPrefix,\n      _ref$inline = _ref.inline,\n      inline = _ref$inline === void 0 ? false : _ref$inline,\n      _ref$disabled = _ref.disabled,\n      disabled = _ref$disabled === void 0 ? false : _ref$disabled,\n      _ref$isValid = _ref.isValid,\n      isValid = _ref$isValid === void 0 ? false : _ref$isValid,\n      _ref$isInvalid = _ref.isInvalid,\n      isInvalid = _ref$isInvalid === void 0 ? false : _ref$isInvalid,\n      _ref$feedbackTooltip = _ref.feedbackTooltip,\n      feedbackTooltip = _ref$feedbackTooltip === void 0 ? false : _ref$feedbackTooltip,\n      feedback = _ref.feedback,\n      className = _ref.className,\n      style = _ref.style,\n      _ref$title = _ref.title,\n      title = _ref$title === void 0 ? '' : _ref$title,\n      _ref$type = _ref.type,\n      type = _ref$type === void 0 ? 'checkbox' : _ref$type,\n      label = _ref.label,\n      children = _ref.children,\n      propCustom = _ref.custom,\n      _ref$as = _ref.as,\n      as = _ref$as === void 0 ? 'input' : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  var custom = type === 'switch' ? true : propCustom;\n\n  var _ref2 = custom ? [bsCustomPrefix, 'custom-control'] : [bsPrefix, 'form-check'],\n      prefix = _ref2[0],\n      defaultPrefix = _ref2[1];\n\n  bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n\n  var _useContext = useContext(FormContext),\n      controlId = _useContext.controlId;\n\n  var innerFormContext = useMemo(function () {\n    return {\n      controlId: id || controlId,\n      custom: custom\n    };\n  }, [controlId, custom, id]);\n  var hasLabel = custom || label != null && label !== false && !children;\n  var input = /*#__PURE__*/React.createElement(FormCheckInput, _extends({}, props, {\n    type: type === 'switch' ? 'checkbox' : type,\n    ref: ref,\n    isValid: isValid,\n    isInvalid: isInvalid,\n    isStatic: !hasLabel,\n    disabled: disabled,\n    as: as\n  }));\n  return /*#__PURE__*/React.createElement(FormContext.Provider, {\n    value: innerFormContext\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    style: style,\n    className: classNames(className, bsPrefix, custom && \"custom-\" + type, inline && bsPrefix + \"-inline\")\n  }, children || /*#__PURE__*/React.createElement(React.Fragment, null, input, hasLabel && /*#__PURE__*/React.createElement(FormCheckLabel, {\n    title: title\n  }, label), (isValid || isInvalid) && /*#__PURE__*/React.createElement(Feedback, {\n    type: isValid ? 'valid' : 'invalid',\n    tooltip: feedbackTooltip\n  }, feedback))));\n});\nFormCheck.displayName = 'FormCheck';\nFormCheck.Input = FormCheckInput;\nFormCheck.Label = FormCheckLabel;\nexport default FormCheck;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"id\", \"bsPrefix\", \"bsCustomPrefix\", \"className\", \"isValid\", \"isInvalid\", \"lang\", \"as\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormFileInput = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var id = _ref.id,\n      bsPrefix = _ref.bsPrefix,\n      bsCustomPrefix = _ref.bsCustomPrefix,\n      className = _ref.className,\n      isValid = _ref.isValid,\n      isInvalid = _ref.isInvalid,\n      lang = _ref.lang,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'input' : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  var _useContext = useContext(FormContext),\n      controlId = _useContext.controlId,\n      custom = _useContext.custom;\n\n  var type = 'file';\n\n  var _ref2 = custom ? [bsCustomPrefix, 'custom-file-input'] : [bsPrefix, 'form-control-file'],\n      prefix = _ref2[0],\n      defaultPrefix = _ref2[1];\n\n  bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    ref: ref,\n    id: id || controlId,\n    type: type,\n    lang: lang,\n    className: classNames(className, bsPrefix, isValid && 'is-valid', isInvalid && 'is-invalid')\n  }));\n});\nFormFileInput.displayName = 'FormFileInput';\nexport default FormFileInput;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"bsCustomPrefix\", \"className\", \"htmlFor\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormFileLabel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      bsCustomPrefix = _ref.bsCustomPrefix,\n      className = _ref.className,\n      htmlFor = _ref.htmlFor,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  var _useContext = useContext(FormContext),\n      controlId = _useContext.controlId,\n      custom = _useContext.custom;\n\n  var _ref2 = custom ? [bsCustomPrefix, 'custom-file-label'] : [bsPrefix, 'form-file-label'],\n      prefix = _ref2[0],\n      defaultPrefix = _ref2[1];\n\n  bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n  return /*#__PURE__*/React.createElement(\"label\", _extends({}, props, {\n    ref: ref,\n    htmlFor: htmlFor || controlId,\n    className: classNames(className, bsPrefix),\n    \"data-browse\": props['data-browse']\n  }));\n});\nFormFileLabel.displayName = 'FormFileLabel';\nexport default FormFileLabel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"id\", \"bsPrefix\", \"bsCustomPrefix\", \"disabled\", \"isValid\", \"isInvalid\", \"feedbackTooltip\", \"feedback\", \"className\", \"style\", \"label\", \"children\", \"custom\", \"lang\", \"data-browse\", \"as\", \"inputAs\"];\nimport classNames from 'classnames';\nimport React, { useContext, useMemo } from 'react';\nimport all from 'prop-types-extra/lib/all';\nimport Feedback from './Feedback';\nimport FormFileInput from './FormFileInput';\nimport FormFileLabel from './FormFileLabel';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormFile = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var id = _ref.id,\n      bsPrefix = _ref.bsPrefix,\n      bsCustomPrefix = _ref.bsCustomPrefix,\n      _ref$disabled = _ref.disabled,\n      disabled = _ref$disabled === void 0 ? false : _ref$disabled,\n      _ref$isValid = _ref.isValid,\n      isValid = _ref$isValid === void 0 ? false : _ref$isValid,\n      _ref$isInvalid = _ref.isInvalid,\n      isInvalid = _ref$isInvalid === void 0 ? false : _ref$isInvalid,\n      _ref$feedbackTooltip = _ref.feedbackTooltip,\n      feedbackTooltip = _ref$feedbackTooltip === void 0 ? false : _ref$feedbackTooltip,\n      feedback = _ref.feedback,\n      className = _ref.className,\n      style = _ref.style,\n      label = _ref.label,\n      children = _ref.children,\n      custom = _ref.custom,\n      lang = _ref.lang,\n      dataBrowse = _ref['data-browse'],\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'div' : _ref$as,\n      _ref$inputAs = _ref.inputAs,\n      inputAs = _ref$inputAs === void 0 ? 'input' : _ref$inputAs,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  var _ref2 = custom ? [bsCustomPrefix, 'custom'] : [bsPrefix, 'form-file'],\n      prefix = _ref2[0],\n      defaultPrefix = _ref2[1];\n\n  bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n  var type = 'file';\n\n  var _useContext = useContext(FormContext),\n      controlId = _useContext.controlId;\n\n  var innerFormContext = useMemo(function () {\n    return {\n      controlId: id || controlId,\n      custom: custom\n    };\n  }, [controlId, custom, id]);\n  var hasLabel = label != null && label !== false && !children;\n  var input = /*#__PURE__*/React.createElement(FormFileInput, _extends({}, props, {\n    ref: ref,\n    isValid: isValid,\n    isInvalid: isInvalid,\n    disabled: disabled,\n    as: inputAs,\n    lang: lang\n  }));\n  return /*#__PURE__*/React.createElement(FormContext.Provider, {\n    value: innerFormContext\n  }, /*#__PURE__*/React.createElement(Component, {\n    style: style,\n    className: classNames(className, bsPrefix, custom && \"custom-\" + type)\n  }, children || /*#__PURE__*/React.createElement(React.Fragment, null, custom ? /*#__PURE__*/React.createElement(React.Fragment, null, input, hasLabel && /*#__PURE__*/React.createElement(FormFileLabel, {\n    \"data-browse\": dataBrowse\n  }, label)) : /*#__PURE__*/React.createElement(React.Fragment, null, hasLabel && /*#__PURE__*/React.createElement(FormFileLabel, null, label), input), (isValid || isInvalid) && /*#__PURE__*/React.createElement(Feedback, {\n    type: isValid ? 'valid' : 'invalid',\n    tooltip: feedbackTooltip\n  }, feedback))));\n});\nFormFile.displayName = 'FormFile';\nFormFile.Input = FormFileInput;\nFormFile.Label = FormFileLabel;\nexport default FormFile;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"bsCustomPrefix\", \"type\", \"size\", \"htmlSize\", \"id\", \"className\", \"isValid\", \"isInvalid\", \"plaintext\", \"readOnly\", \"custom\", \"as\"];\nimport classNames from 'classnames';\nimport all from 'prop-types-extra/lib/all';\nimport React, { useContext } from 'react';\nimport warning from 'warning';\nimport Feedback from './Feedback';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormControl = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      bsCustomPrefix = _ref.bsCustomPrefix,\n      type = _ref.type,\n      size = _ref.size,\n      htmlSize = _ref.htmlSize,\n      id = _ref.id,\n      className = _ref.className,\n      _ref$isValid = _ref.isValid,\n      isValid = _ref$isValid === void 0 ? false : _ref$isValid,\n      _ref$isInvalid = _ref.isInvalid,\n      isInvalid = _ref$isInvalid === void 0 ? false : _ref$isInvalid,\n      plaintext = _ref.plaintext,\n      readOnly = _ref.readOnly,\n      custom = _ref.custom,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'input' : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  var _useContext = useContext(FormContext),\n      controlId = _useContext.controlId;\n\n  var _ref2 = custom ? [bsCustomPrefix, 'custom'] : [bsPrefix, 'form-control'],\n      prefix = _ref2[0],\n      defaultPrefix = _ref2[1];\n\n  bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n  var classes;\n\n  if (plaintext) {\n    var _classes;\n\n    classes = (_classes = {}, _classes[bsPrefix + \"-plaintext\"] = true, _classes);\n  } else if (type === 'file') {\n    var _classes2;\n\n    classes = (_classes2 = {}, _classes2[bsPrefix + \"-file\"] = true, _classes2);\n  } else if (type === 'range') {\n    var _classes3;\n\n    classes = (_classes3 = {}, _classes3[bsPrefix + \"-range\"] = true, _classes3);\n  } else if (Component === 'select' && custom) {\n    var _classes4;\n\n    classes = (_classes4 = {}, _classes4[bsPrefix + \"-select\"] = true, _classes4[bsPrefix + \"-select-\" + size] = size, _classes4);\n  } else {\n    var _classes5;\n\n    classes = (_classes5 = {}, _classes5[bsPrefix] = true, _classes5[bsPrefix + \"-\" + size] = size, _classes5);\n  }\n\n  process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !id, '`controlId` is ignored on `<FormControl>` when `id` is specified.') : void 0;\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    type: type,\n    size: htmlSize,\n    ref: ref,\n    readOnly: readOnly,\n    id: id || controlId,\n    className: classNames(className, classes, isValid && \"is-valid\", isInvalid && \"is-invalid\")\n  }));\n});\nFormControl.displayName = 'FormControl';\nexport default Object.assign(FormControl, {\n  Feedback: Feedback\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"children\", \"controlId\", \"as\"];\nimport classNames from 'classnames';\nimport React, { useMemo } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormGroup = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      children = _ref.children,\n      controlId = _ref.controlId,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'div' : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-group');\n  var context = useMemo(function () {\n    return {\n      controlId: controlId\n    };\n  }, [controlId]);\n  return /*#__PURE__*/React.createElement(FormContext.Provider, {\n    value: context\n  }, /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classNames(className, bsPrefix)\n  }), children));\n});\nFormGroup.displayName = 'FormGroup';\nexport default FormGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"as\", \"bsPrefix\", \"column\", \"srOnly\", \"className\", \"htmlFor\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport warning from 'warning';\nimport Col from './Col';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n  column: false,\n  srOnly: false\n};\nvar FormLabel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'label' : _ref$as,\n      bsPrefix = _ref.bsPrefix,\n      column = _ref.column,\n      srOnly = _ref.srOnly,\n      className = _ref.className,\n      htmlFor = _ref.htmlFor,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  var _useContext = useContext(FormContext),\n      controlId = _useContext.controlId;\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-label');\n  var columnClass = 'col-form-label';\n  if (typeof column === 'string') columnClass = columnClass + \" \" + columnClass + \"-\" + column;\n  var classes = classNames(className, bsPrefix, srOnly && 'sr-only', column && columnClass);\n  process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !htmlFor, '`controlId` is ignored on `<FormLabel>` when `htmlFor` is specified.') : void 0;\n  htmlFor = htmlFor || controlId;\n  if (column) return /*#__PURE__*/React.createElement(Col, _extends({\n    ref: ref,\n    as: \"label\",\n    className: classes,\n    htmlFor: htmlFor\n  }, props));\n  return (\n    /*#__PURE__*/\n    // eslint-disable-next-line jsx-a11y/label-has-for, jsx-a11y/label-has-associated-control\n    React.createElement(Component, _extends({\n      ref: ref,\n      className: classes,\n      htmlFor: htmlFor\n    }, props))\n  );\n});\nFormLabel.displayName = 'FormLabel';\nFormLabel.defaultProps = defaultProps;\nexport default FormLabel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"as\", \"muted\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormText = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'small' : _ref$as,\n      muted = _ref.muted,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-text');\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classNames(className, bsPrefix, muted && 'text-muted')\n  }));\n});\nFormText.displayName = 'FormText';\nexport default FormText;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport FormCheck from './FormCheck';\nvar Switch = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  return /*#__PURE__*/React.createElement(FormCheck, _extends({}, props, {\n    ref: ref,\n    type: \"switch\"\n  }));\n});\nSwitch.displayName = 'Switch';\nSwitch.Input = FormCheck.Input;\nSwitch.Label = FormCheck.Label;\nexport default Switch;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"inline\", \"className\", \"validated\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport FormCheck from './FormCheck';\nimport FormFile from './FormFile';\nimport FormControl from './FormControl';\nimport FormGroup from './FormGroup';\nimport FormLabel from './FormLabel';\nimport FormText from './FormText';\nimport Switch from './Switch';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport createWithBsPrefix from './createWithBsPrefix';\nvar FormRow = createWithBsPrefix('form-row');\nvar defaultProps = {\n  inline: false\n};\nvar FormImpl = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      inline = _ref.inline,\n      className = _ref.className,\n      validated = _ref.validated,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'form' : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form');\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classNames(className, validated && 'was-validated', inline && bsPrefix + \"-inline\")\n  }));\n});\nFormImpl.displayName = 'Form';\nFormImpl.defaultProps = defaultProps;\nFormImpl.Row = FormRow;\nFormImpl.Group = FormGroup;\nFormImpl.Control = FormControl;\nFormImpl.Check = FormCheck;\nFormImpl.File = FormFile;\nFormImpl.Switch = Switch;\nFormImpl.Label = FormLabel;\nFormImpl.Text = FormText;\nexport default FormImpl;","export enum FormMode {\r\n    New,\r\n    Edit,\r\n    Transfer,\r\n    Merge,\r\n    Delete,\r\n    Error,\r\n    None\r\n  }\r\n\r\n  export interface IDropDownValue {\r\n    id: string;\r\n    text: string;\r\n  }\r\n  \r\n  // export interface IVendorDropDownValue {\r\n  //   id: string;\r\n  //   text: string;\r\n  // }\r\n  // export interface IProductDropDownValue {\r\n  //   id: string;\r\n  //   text: string;\r\n  // }\r\n","import React, { useState, useEffect, useRef } from 'react';\r\nimport messageService from '../../../services/AnnouncementService';\r\nimport IMessage from '../../../model/IAnnouncement'\r\nimport { Grid, GridColumn, GridFilterChangeEvent, GridToolbar, GridColumn as Column, \r\n  GridColumnMenuFilter,\r\n  GridColumnMenuCheckboxFilter,\r\n  GridColumnMenuProps,\r\n } from '@progress/kendo-react-grid';\r\nimport { filterBy, CompositeFilterDescriptor, } from \"@progress/kendo-data-query\";\r\nimport { Modal, Button, Dropdown, Form, Row, DropdownButton } from 'react-bootstrap';\r\nimport 'ag-grid-community/dist/styles/ag-grid.css';\r\nimport 'ag-grid-community/dist/styles/ag-theme-alpine.css';\r\nimport { FormMode } from '../../../services/Utility'\r\nimport axios from \"axios\";\r\nimport Moment from 'moment';\r\n\r\nexport default function AnnouncementManage() {\r\n\r\n  const mountedRef = useRef(true);\r\n  const [gridApi, setGridApi] = useState(null);\r\n  const [gridColumnApi, setGridColumnApi] = useState([]);\r\n  const [rowData, setRowData] = useState<IMessage[]>([]);\r\n\r\n  const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n  const [formValue, setFormValue] = useState<IMessage>({\r\n    description: '',\r\n    effectiveDate: new Date(),\r\n    expirationDate: new Date(),\r\n    isActive: true\r\n  });\r\n\r\n  const initialFilter: CompositeFilterDescriptor = {\r\n    logic: \"and\",\r\n    filters: [],\r\n  };\r\n  const [filter, setFilter] = useState(initialFilter);\r\n\r\n  const handleChange = (event: any) => {\r\n    const target = event.target //as HTMLSelectElement\r\n    const value = target.type === 'checkbox' ? target.checked : target.value\r\n    setFormValue({ ...formValue, [target.name]: value });\r\n  };\r\n\r\n  const post = (event: any) => {\r\n    let message: IMessage = {\r\n      description: formValue.description,\r\n      effectiveDate: formValue.effectiveDate,\r\n      expirationDate: formValue.expirationDate,\r\n      isActive: formValue.isActive,\r\n    };\r\n    messageService.post(message).then(response => {\r\n      // Display Success message\r\n    })\r\n    event.preventDefault();\r\n  }\r\n\r\n  const onFormAction = (messageId: number, actionType: FormMode) => {\r\n    setErrors({\r\n      descriptionError: '',\r\n      effectiveDateError: '',\r\n      expirationDateError: ''\r\n  });\r\n    switch (actionType) {\r\n      case FormMode.New:\r\n        setFormMode(FormMode.New)\r\n        let resetMessage: IMessage = {\r\n          description: '',\r\n          effectiveDate: new Date(),\r\n          expirationDate: new Date(),\r\n          isActive: false,\r\n        };\r\n      setFormValue(resetMessage)\r\n        //Clear Existing vlues\r\n        break;\r\n      case FormMode.Edit:\r\n        setFormMode(FormMode.Edit)\r\n        messageService.getById(messageId).then(response => {\r\n          setFormValue(response.data)\r\n        })\r\n        break;\r\n      case FormMode.Delete:\r\n        setFormMode(FormMode.Delete)\r\n        messageService.getById(messageId).then(response => {\r\n          setFormValue(response.data)\r\n        })\r\n        break;\r\n      default: {\r\n        setFormMode(FormMode.None)\r\n        break;\r\n      }\r\n    }\r\n  }\r\n\r\n  const onSave = (event: any, actionType: FormMode) => {\r\n    let message: IMessage = {\r\n      id: formValue.id,\r\n      description: formValue.description,\r\n      effectiveDate: formValue.effectiveDate,\r\n      expirationDate: formValue.expirationDate,\r\n      isActive: formValue.isActive,\r\n    };\r\n    switch (actionType) {\r\n      case FormMode.New:\r\n        event.preventDefault();\r\n        if (validate()) {\r\n          message.isActive = true\r\n          messageService.post(message).then(response => {\r\n            getAnnouncementData();\r\n            setFormMode(FormMode.None)\r\n          })\r\n        }\r\n\r\n        //Clear Existing vlues\r\n        break;\r\n      case FormMode.Edit:\r\n        event.preventDefault();\r\n        if (validate()) {\r\n          messageService.edit(message).then(response => {\r\n            getAnnouncementData();\r\n            setFormMode(FormMode.None)\r\n          })\r\n        }\r\n        break;\r\n      case FormMode.Delete:\r\n        setFormMode(FormMode.Delete)\r\n        messageService.delete(Number(formValue.id)).then(response => {\r\n          getAnnouncementData();\r\n          setFormMode(FormMode.None)\r\n        })\r\n        break;\r\n      default: {\r\n        setFormMode(FormMode.None)\r\n        break;\r\n      }\r\n    }\r\n  }\r\n\r\n  const getAnnouncementData = () => {\r\n    messageService.getData().then(response => {\r\n      setRowData(response.data)\r\n    })\r\n  }\r\n  useEffect(() => {\r\n    const CancelToken = axios.CancelToken;\r\n    const source = CancelToken.source();\r\n    getAnnouncementData();\r\n    //return () => {  source.cancel();    };\r\n     return () => { mountedRef.current = false }\r\n  }, []);\r\n\r\n  const [errors, setErrors] = useState({\r\n    descriptionError: '',\r\n    effectiveDateError: '',\r\n    expirationDateError: ''\r\n  })\r\n  const validate = () => {\r\n    let error = {\r\n      descriptionError: '',\r\n      effectiveDateError: '',\r\n      expirationDateError: ''\r\n    };\r\n\r\n    if (formMode == FormMode.New || formMode == FormMode.Edit) {\r\n      if (!formValue.description) { error.descriptionError = \"Description is required\"; }\r\n      if (!formValue.effectiveDate) { error.effectiveDateError = \"Effective date is required\"; }\r\n      if (!formValue.expirationDate) { error.expirationDateError = \"Expiration date is required\"; }\r\n      if (Moment(formValue.expirationDate).format('YYYY-MM-DD') < Moment(formValue.effectiveDate).format('YYYY-MM-DD')) { error.expirationDateError = \"Expiration date must not be less than effective date.\" }\r\n\r\n      setErrors(error);\r\n      if (error.descriptionError || error.effectiveDateError || error.expirationDateError) {\r\n        return false;\r\n      }\r\n    }\r\n    return true;\r\n  };\r\n\r\n  const ColumnMenuFilter = (props: GridColumnMenuProps) => {\r\n    return (\r\n      <div>\r\n        <GridColumnMenuFilter {...props} expanded={true} />\r\n      </div>\r\n    );\r\n  };\r\n\r\n \r\n  \r\n  \r\n\r\n  const GridColumnButton = (props: any) => {\r\n    return (\r\n      <td style={{ overflow: 'visible' }}>\r\n\r\n        <DropdownButton\r\n            menuAlign=\"right\"\r\n            title={<i className='fas fa-bars'></i>}\r\n            id=\"dropdown-menu-align-right\"\r\n            size=\"sm\"\r\n            variant=\"outline-primary\"\r\n            className=\"menu-bars\"\r\n        >\r\n            <Dropdown.Item onClick={() => { onFormAction(props.dataItem?.id, FormMode.Edit) }}>Edit</Dropdown.Item>\r\n            <Dropdown.Item onClick={() => { onFormAction(props.dataItem?.id, FormMode.Delete) }}>Delete</Dropdown.Item>\r\n        </DropdownButton>\r\n\r\n      </td>)\r\n  }\r\n\r\n  const GridDescriptionCell = (props: any) => {\r\n    return (\r\n      <td>\r\n        <div className=\"d-flex\">\r\n          <i className=\"far fa-comment-alt mr-3 text-blue-gray\" style={{\"fontSize\" : \"30px\"}}></i>\r\n          <div>\r\n            {props.dataItem.description}\r\n          </div>\r\n        </div>\r\n      </td>\r\n    )\r\n  }\r\n\r\n  const GridDateCell = (props: any) => {\r\n    {Moment.locale('en')}\r\n    return (\r\n      <td>\r\n        \r\n        {Moment(props.dataItem.effectiveDate).format('MMM D')} to {Moment(props.dataItem.expirationDate).format('MMM D, YYYY')}\r\n      </td>\r\n    )\r\n  }\r\n  const GridActiveCell = (props: any) => {\r\n    \r\n    return (\r\n      <td>\r\n        {props.dataItem.isActive}\r\n      </td>\r\n    )\r\n\r\n    // if (props.dataItem.IsActive == \"True\") {\r\n    //   return (\r\n    //     <td className=\"text-success\">\r\n    //       Active\r\n    //     </td>\r\n    //   )\r\n    // } else {\r\n    //   return (\r\n      \r\n    //     <td>\r\n    //       Inactive\r\n    //     </td>\r\n    //   )\r\n    // }\r\n    \r\n  }\r\n\r\n  return (\r\n    <div className=\"announcement-page\">\r\n      <Modal size=\"lg\" animation={false} show={formMode == FormMode.Edit || formMode == FormMode.New} onHide={() => { setFormMode(FormMode.None) }}>\r\n        <Modal.Header closeButton className=\"bg-primary text-white\">\r\n          <Modal.Title>{formMode == FormMode.Edit ? \"Edit\" : \"Add\"} Announcement</Modal.Title>\r\n        </Modal.Header>\r\n        <Modal.Body>\r\n          <Form>\r\n            <input type=\"hidden\" name=\"id\" value={formValue.id ?? ''} onChange={handleChange} />\r\n            <Row>\r\n              <Form.Group controlId=\"description\" className=\"col-sm-12\">\r\n                <Form.Label>Announcement</Form.Label>\r\n                <Form.Control as=\"textarea\" rows={5} name=\"description\" value={formValue.description ?? ''} onChange={handleChange} />\r\n                <Form.Text className=\"text-danger\">{errors.descriptionError}</Form.Text>\r\n              </Form.Group>\r\n              <Form.Group controlId=\"effectiveDate\" className=\"col-sm-4\">\r\n                <Form.Label>Effective</Form.Label>\r\n                <Form.Control type=\"date\" name=\"effectiveDate\"  value={Moment(formValue.effectiveDate).format('YYYY-MM-DD') ?? ''} onChange={handleChange} />\r\n                <Form.Text className=\"text-danger\">{errors.effectiveDateError}</Form.Text>\r\n              </Form.Group>\r\n              <Form.Group controlId=\"expirationDate\" className=\"col-sm-4\">\r\n                <Form.Label>Expires</Form.Label>\r\n                <Form.Control type=\"date\" name=\"expirationDate\" value={Moment(formValue.expirationDate).format('YYYY-MM-DD') ?? ''} onChange={handleChange} />\r\n                <Form.Text className=\"text-danger\">{errors.expirationDateError}</Form.Text>\r\n              </Form.Group>\r\n              <Form.Group hidden={formMode == FormMode.New} controlId=\"isActive\" className=\"col-sm-4 mt-sm-5 mt-0 text-left text-sm-right\">\r\n                <Form.Check type=\"checkbox\" name=\"isActive\" label=\"Active\" checked={formValue?.isActive} onChange={handleChange} />\r\n                {/* <Form.Text className=\"text-danger\">{errors.expirationDateError}</Form.Text> */}\r\n              </Form.Group>\r\n            </Row>\r\n          </Form>\r\n        </Modal.Body>\r\n        <Modal.Footer>\r\n          <Button variant=\"secondary\" onClick={() => { setFormMode(FormMode.None) }}>Close</Button>\r\n          <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Save</Button>\r\n        </Modal.Footer>\r\n      </Modal>\r\n\r\n      <Modal\r\n        show={formMode == FormMode.Delete}\r\n        onHide={() => { setFormMode(FormMode.None) }}\r\n        animation={false}\r\n        backdrop=\"static\"\r\n        keyboard={false}>\r\n\r\n        <Modal.Header closeButton className=\"bg-primary text-white\">\r\n          <Modal.Title>Delete Message</Modal.Title>\r\n        </Modal.Header>\r\n        <Modal.Body>\r\n          Are you sure you want to delete the message?\r\n        </Modal.Body>\r\n        <Modal.Footer>\r\n          <Button variant=\"secondary\" onClick={(e) => { setFormMode(FormMode.None) }}>Cancel</Button>\r\n          <Button variant=\"primary\" onClick={(e) => { onSave(e, formMode) }}>Delete</Button>\r\n        </Modal.Footer>\r\n      </Modal>\r\n      <div className=\"text-right mb-2 mt-2\">\r\n        <Button type=\"button\" variant=\"primary\" onClick={(e) => { onFormAction(0, FormMode.New) }}>\r\n          <i className=\"fas fa-plus\"></i>\r\n        </Button>\r\n      </div>\r\n      <Grid data={filterBy(rowData, filter)}\r\n        filter={filter}\r\n        filterable={false}\r\n        pageable={true}\r\n        sortable={true}\r\n        scrollable={\"none\"}\r\n        onFilterChange={(e: GridFilterChangeEvent) => setFilter(e.filter)}\r\n      >\r\n\r\n        <GridColumn field=\"description\" title=\"Announcements\" cell={GridDescriptionCell} columnMenu={ColumnMenuFilter} />\r\n        <GridColumn field=\"effectiveDate\" title=\"Effective\" cell={GridDateCell} columnMenu={ColumnMenuFilter} width={225} />\r\n        <GridColumn field=\"isActive\" title=\"Active\" columnMenu={ColumnMenuFilter} />\r\n        <GridColumn field=\"AnnouncementId\" filterable={false} title=\" \" className=\"text-right\" cell={GridColumnButton} width={60} />\r\n      </Grid>\r\n    </div>\r\n  )\r\n}\r\n\r\n","import React, { useState, useEffect, useContext } from 'react';\r\nimport announcementService from '../../services/AnnouncementService';\r\nimport IAnnouncement from '../../model/IAnnouncement'\r\nimport AdminManageIcon from './AdminManageIcon'\r\nimport { ErrorContext, IErrorContext } from '../../services/AppContext';\r\n\r\nexport default function AnnouncementDisplay() {\r\n  const [announcementData, setAnnouncementData] = useState<IAnnouncement[]>([]);\r\n  const { errorMessages , setErrorMessages } = useContext<IErrorContext>(ErrorContext);\r\n\r\n  useEffect(() => {\r\n    announcementService.getRecent().then(response => {\r\n    setAnnouncementData(response.data)  \r\n  }).catch((e) =>{\r\n    setErrorMessages([...errorMessages, 'Data did not load correctly. Try to refresh the page. ' + e])\r\n  })\r\n }, []);\r\n\r\n let annNo = announcementData.length;\r\n if (announcementData.length > 0) {\r\n  return (\r\n    <div className=\"card mb-4 shadow-sm\">\r\n        <div className=\"card-header bg-warning\">\r\n            <div className=\"h3 mb-0 font-weight-normal\">\r\n                Announcements\r\n            </div>\r\n            {/* <AdminManageIcon/> */}\r\n        </div>\r\n        <ul className=\"list-group list-group-flush\">\r\n            {\r\n            announcementData.sort().slice((announcementData.length-3) >= 3 \r\n                                    ?(announcementData.length-3) : 0,\r\n                                    announcementData.length).map(data =>\r\n                <li className=\"list-group-item list-group-item-warning d-flex align-items-top\" key={data.id}><i className=\"far fa-comment-alt fa-2x mr-2\"></i> {data.description}</li>\r\n                )\r\n            }\r\n        </ul>\r\n  </div>\r\n  )\r\n } else {\r\n  return (<></>)\r\n }\r\n  \r\n}\r\n\r\n","export var ARC = \"arc\";\nexport var AXIS_LABEL_CLICK = \"axisLabelClick\";\nexport var BLACK = \"#000\";\nexport var BOTTOM = \"bottom\";\nexport var CENTER = \"center\";\nexport var CIRCLE = \"circle\";\nexport var COORD_PRECISION = 3;\nexport var CROSS = \"cross\";\nexport var DATE = \"date\";\nexport var DEFAULT_FONT = \"12px sans-serif\";\nexport var DEFAULT_HEIGHT = 400;\nexport var DEFAULT_PRECISION = 10;\nexport var DEFAULT_WIDTH = 600;\nexport var END = \"end\";\nexport var FORMAT_REGEX = /\\{\\d+:?/;\nexport var HEIGHT = \"height\";\nexport var HIGHLIGHT_ZINDEX = 100;\nexport var INSIDE = \"inside\";\nexport var INHERIT = \"inherit\";\nexport var LEFT = \"left\";\nexport var MAX_VALUE = Number.MAX_VALUE;\nexport var MIN_VALUE = -Number.MAX_VALUE;\nexport var NONE = \"none\";\nexport var NOTE_CLICK = \"noteClick\";\nexport var NOTE_HOVER = \"noteHover\";\nexport var NOTE_LEAVE = \"noteLeave\";\nexport var OBJECT = \"object\";\nexport var OUTSIDE = \"outside\";\nexport var RIGHT = \"right\";\nexport var ROUNDED_RECT = \"roundedRect\";\nexport var START = \"start\";\nexport var STRING = \"string\";\nexport var TOP = \"top\";\nexport var TRIANGLE = \"triangle\";\nexport var VALUE = \"value\";\nexport var WHITE = \"#fff\";\nexport var WIDTH = \"width\";\nexport var X = \"x\";\nexport var Y = \"y\";\nexport var DEFAULT_SERIES_OPACITY = 1;\n","export default function isArray(value) {\n    return Array.isArray(value);\n}","import isArray from './is-array';\n\nexport default function addClass(element, classes) {\n    var classArray = isArray(classes) ? classes : [ classes ];\n\n    for (var idx = 0; idx < classArray.length; idx++) {\n        var className = classArray[idx];\n        if (element.className.indexOf(className) === -1) {\n            element.className += \" \" + className;\n        }\n    }\n}","var SPACE_REGEX = /\\s+/g;\n\nexport default function removeClass(element, className) {\n    if (element && element.className) {\n        element.className = element.className.replace(className, \"\").replace(SPACE_REGEX, \" \");\n    }\n}","var UNDEFINED = \"undefined\";\n\nexport default function defined(value) {\n    return typeof value !== UNDEFINED;\n}","import { drawing } from '@progress/kendo-drawing';\n\nexport default function alignPathToPixel(path) {\n    var offset = 0.5;\n    if (path.options.stroke && drawing.util.defined(path.options.stroke.width)) {\n        if (path.options.stroke.width % 2 === 0) {\n            offset = 0;\n        }\n    }\n\n    for (var i = 0; i < path.segments.length; i++) {\n        path.segments[i].anchor().round(0).translate(offset, offset);\n    }\n\n    return path;\n}","export default function clockwise(angle1, angle2) {\n    // True if angle2 is clockwise of angle1\n    // assuming angles grow in clock-wise direction\n    // (as in the pie and radar charts)\n    return -angle1.x * angle2.y + angle1.y * angle2.x < 0;\n}","export default function isNumber(value) {\n    return typeof value === \"number\" && !isNaN(value);\n}","import { STRING } from './constants';\n\nexport default function isString(value) {\n    return typeof value === STRING;\n}","import isNumber from './is-number';\nimport isString from './is-string';\n\nexport default function convertableToNumber(value) {\n    return isNumber(value) || (isString(value) && isFinite(value));\n}","export default function isFunction(fn) {\n    return typeof fn === \"function\";\n}","import isFunction from './is-function';\n\nvar OBJECT = \"object\";\nvar UNDEFINED = \"undefined\";\n\nfunction deepExtendOne(destination, source) {\n\n    for (var property in source) {\n        var propValue = source[property];\n        var propType = typeof propValue;\n\n        var propInit = (void 0);\n        if (propType === OBJECT && propValue !== null) {\n            propInit = propValue.constructor;\n        } else {\n            propInit = null;\n        }\n\n        if (propInit && propInit !== Array) {\n\n            if (propValue instanceof Date) {\n                destination[property] = new Date(propValue.getTime());\n            } else if (isFunction(propValue.clone)) {\n                destination[property] = propValue.clone();\n            } else {\n                var destProp = destination[property];\n                if (typeof (destProp) === OBJECT) {\n                    destination[property] = destProp || {};\n                } else {\n                    destination[property] = {};\n                }\n                deepExtendOne(destination[property], propValue);\n            }\n        } else if (propType !== UNDEFINED) {\n            destination[property] = propValue;\n        }\n    }\n\n    return destination;\n}\n\nexport default function deepExtend(destination) {\n    var arguments$1 = arguments;\n\n    var length = arguments.length;\n\n    for (var i = 1; i < length; i++) {\n        deepExtendOne(destination, arguments$1[i]);\n    }\n\n    return destination;\n}","export default function isObject(value) {\n    return typeof value === \"object\";\n}","import isNumber from './is-number';\n\nexport default function styleValue(value) {\n    if (isNumber(value)) {\n        return value + \"px\";\n    }\n    return value;\n}","import isObject from './is-object';\nimport isArray from './is-array';\nimport isString from './is-string';\nimport styleValue from './style-value';\n\nvar SIZE_STYLES_REGEX = /width|height|top|left|bottom|right/i;\n\nfunction isSizeField(field) {\n    return SIZE_STYLES_REGEX.test(field);\n}\n\nexport default function elementStyles(element, styles) {\n    var stylesArray = isString(styles) ? [ styles ] : styles;\n\n    if (isArray(stylesArray)) {\n        var result = {};\n        var style = window.getComputedStyle(element);\n\n        for (var idx = 0; idx < stylesArray.length; idx++) {\n            var field = stylesArray[idx];\n            result[field] = isSizeField(field) ? parseFloat(style[field]) : style[field];\n        }\n\n        return result;\n    } else if (isObject(styles)) {\n        for (var field$1 in styles) {\n            element.style[field$1] = styleValue(styles[field$1]);\n        }\n    }\n}","import { TOP, BOTTOM, LEFT, RIGHT } from './constants';\n\nexport default function getSpacing(value, defaultSpacing) {\n    if ( defaultSpacing === void 0 ) defaultSpacing = 0;\n\n    var spacing = { top: 0, right: 0, bottom: 0, left: 0 };\n\n    if (typeof(value) === \"number\") {\n        spacing[TOP] = spacing[RIGHT] = spacing[BOTTOM] = spacing[LEFT] = value;\n    } else {\n        spacing[TOP] = value[TOP] || defaultSpacing;\n        spacing[RIGHT] = value[RIGHT] || defaultSpacing;\n        spacing[BOTTOM] = value[BOTTOM] || defaultSpacing;\n        spacing[LEFT] = value[LEFT] || defaultSpacing;\n    }\n\n    return spacing;\n}","var current = {\n    compile: function(template) {\n        return template;\n    }\n};\n\nvar TemplateService = function TemplateService () {};\n\nTemplateService.register = function register (userImplementation) {\n    current = userImplementation;\n};\n\nTemplateService.compile = function compile (template, options) {\n    return current.compile(template, options);\n};\n\nexport default TemplateService;\n","import TemplateService from '../services/template-service';\nimport isFunction from './is-function';\n\nexport default function getTemplate(options) {\n    if ( options === void 0 ) options = {};\n\n    var template;\n    if (options.template) {\n        options.template = template = TemplateService.compile(options.template);\n    } else if (isFunction(options.content)) {\n        template = options.content;\n    }\n\n    return template;\n}\n","import { drawing } from '@progress/kendo-drawing';\n\nvar FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\nvar getterCache = {};\n\ngetterCache['undefined'] = function(obj) {\n    return obj;\n};\n\nexport default function getter(field) {\n    if (getterCache[field]) {\n        return getterCache[field];\n    }\n\n    var fields = [];\n    field.replace(FIELD_REGEX, function(match, index, indexAccessor, field) {\n        fields.push(drawing.util.defined(index) ? index : (indexAccessor || field));\n    });\n\n    getterCache[field] = function(obj) {\n        var result = obj;\n        for (var idx = 0; idx < fields.length && result; idx++) {\n            result = result[fields[idx]];\n        }\n\n        return result;\n    };\n\n    return getterCache[field];\n}","export default function grep(array, callback) {\n    var length = array.length;\n    var result = [];\n    for (var idx = 0; idx < length; idx++) {\n        if (callback(array[idx])) {\n            result .push(array[idx]);\n        }\n    }\n\n    return result;\n}","export default function hasClasses(element, classNames) {\n    if (element.className) {\n        var names = classNames.split(\" \");\n        for (var idx = 0; idx < names.length; idx++) {\n            if (element.className.indexOf && element.className.indexOf(names[idx]) !== -1) {\n                return true;\n            }\n        }\n    }\n}\n","// TODO: Remove and replace with Map/WeakMap.\nvar HashMap = function HashMap() {\n    this._map = new Map();\n};\n\nHashMap.prototype.get = function get (key) {\n    return this._map.get(key);\n};\n\nHashMap.prototype.set = function set (key, value) {\n    this._map.set(key, value);\n};\n\nexport default HashMap;\n","export default function inArray(value, array) {\n    if (array) {\n        return array.indexOf(value) !== -1;\n    }\n}","function pow(p) {\n    if (p) {\n        return Math.pow(10, p);\n    }\n\n    return 1;\n}\n\nexport default function round(value, precision) {\n    var power = pow(precision);\n    return Math.round(value * power) / power;\n}","import { drawing } from '@progress/kendo-drawing';\nimport { COORD_PRECISION } from './constants';\n\nexport default function interpolateValue(start, end, progress) {\n    return drawing.util.round(start + (end - start) * progress, COORD_PRECISION);\n}","import deepExtend from './deep-extend';\n\nvar TRIGGER = 'trigger';\n\nvar InstanceObserver = function InstanceObserver(observer, handlers) {\n    this.observer = observer;\n    this.handlerMap = deepExtend({}, this.handlerMap, handlers);\n};\n\nInstanceObserver.prototype.trigger = function trigger (name, args) {\n    var ref = this;\n        var observer = ref.observer;\n        var handlerMap = ref.handlerMap;\n    var isDefaultPrevented;\n    if (handlerMap[name]) {\n        isDefaultPrevented = this.callObserver(handlerMap[name], args);\n    } else if (observer[TRIGGER]) {\n        isDefaultPrevented = this.callObserver(TRIGGER, name, args);\n    }\n\n    return isDefaultPrevented;\n};\n\nInstanceObserver.prototype.callObserver = function callObserver (fnName) {\n        var args = [], len = arguments.length - 1;\n        while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n    return this.observer[fnName].apply(this.observer, args);\n};\n\nInstanceObserver.prototype.requiresHandlers = function requiresHandlers (names) {\n        var this$1 = this;\n\n    if (this.observer.requiresHandlers) {\n        return this.observer.requiresHandlers(names);\n    }\n\n    for (var idx = 0; idx < names.length; idx++) {\n        if (this$1.handlerMap[names[idx]]) {\n            return true;\n        }\n    }\n};\n\nexport default InstanceObserver;","import { drawing } from '@progress/kendo-drawing';\n\nexport default function map(array, callback) {\n    var length = array.length;\n    var result = [];\n    for (var idx = 0; idx < length; idx++) {\n        var value = callback(array[idx]);\n        if (drawing.util.defined(value)) {\n            result.push(value);\n        }\n    }\n    return result;\n}","function matchUserAgent(userAgent) {\n    var browserRxs = {\n        edge: /(edge)[ \\/]([\\w.]+)/i,\n        webkit: /(chrome)[ \\/]([\\w.]+)/i,\n        safari: /(webkit)[ \\/]([\\w.]+)/i,\n        opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n        msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n        mozilla: /(mozilla)(?:.*? rv:([\\w.]+))/i\n    };\n\n    var browser = {};\n\n    for (var agent in browserRxs) {\n        if (browserRxs.hasOwnProperty(agent)) {\n            var match = userAgent.match(browserRxs[agent]);\n            if (match) {\n                browser[agent] = true;\n                browser[match[1].toLowerCase().split(\" \")[0].split(\"/\")[0]] = true;\n                browser.version = parseInt(document.documentMode || match[2], 10);\n\n                break;\n            }\n        }\n    }\n\n    return browser;\n}\n\nvar browser = null;\n\nvar support = {\n    get browser() {\n        if (typeof window === 'undefined' || browser) {\n            return browser;\n        }\n\n        browser = matchUserAgent(window.navigator.userAgent);\n        return browser;\n    }\n};\n\nexport default support;\n","import { support } from '@progress/kendo-drawing';\n\nvar browser = support.browser || {};\n\nexport default function mousewheelDelta(e) {\n    var delta = 0;\n\n    if (e.wheelDelta) {\n        delta = -e.wheelDelta / 120;\n\n        if (browser.webkit) {\n            // Webkit browsers scale the delta by twice the device resolution.\n            // Possibly related to https://bugs.webkit.org/show_bug.cgi?id=196339\n            //\n            // Low device resolutions (e.g. zoom-out to 30%) also behave strangely.\n            delta = delta / (2 * Math.max(window.devicePixelRatio, 0.625));\n        }\n    } else if (e.detail) {\n        delta = e.detail / 3;\n    }\n\n    delta = delta > 0 ? Math.ceil(delta) : Math.floor(delta);\n\n    return delta;\n}\n","var Class = function Class () {};\n\nexport default Class;\n","/* eslint-disable no-console */\n\nexport default function logToConsole(message) {\n    var console = window.console;\n\n    if (typeof(console) != \"undefined\" && console.log) {\n        console.log(message);\n    }\n}","export default function append(first, second) {\n    first.push.apply(first, second);\n    return first;\n}","/* eslint-disable key-spacing,no-multi-spaces,no-param-reassign */\n\nvar literals = {\n    1    : \"i\",       10   : \"x\",       100  : \"c\",\n    2    : \"ii\",      20   : \"xx\",      200  : \"cc\",\n    3    : \"iii\",     30   : \"xxx\",     300  : \"ccc\",\n    4    : \"iv\",      40   : \"xl\",      400  : \"cd\",\n    5    : \"v\",       50   : \"l\",       500  : \"d\",\n    6    : \"vi\",      60   : \"lx\",      600  : \"dc\",\n    7    : \"vii\",     70   : \"lxx\",     700  : \"dcc\",\n    8    : \"viii\",    80   : \"lxxx\",    800  : \"dccc\",\n    9    : \"ix\",      90   : \"xc\",      900  : \"cm\",\n    1000 : \"m\"\n};\n\nexport default function arabicToRoman(n) {\n    var values = [ 1000,\n        900 , 800, 700, 600, 500, 400, 300, 200, 100,\n        90  , 80 , 70 , 60 , 50 , 40 , 30 , 20 , 10 ,\n        9   , 8  , 7  , 6  , 5  , 4  , 3  , 2  , 1 ];\n\n    var roman = \"\";\n    while (n > 0) {\n        if (n < values[0]) {\n            values.shift();\n        } else {\n            roman += literals[values[0]];\n            n -= values[0];\n        }\n    }\n    return roman;\n}\n","export default function createPromise() {\n    var resolveFn, rejectFn;\n    var promise = new Promise(function (resolve, reject) {\n        resolveFn = function (data) {\n            promise._state = \"resolved\";\n            resolve(data);\n            return promise;\n        };\n        rejectFn = function (data) {\n            promise._state = \"rejected\";\n            reject(data);\n\n            return promise;\n        };\n    });\n    promise._state = \"pending\";\n    promise.resolve = resolveFn;\n    promise.reject = rejectFn;\n    promise.state = function () { return promise._state; };\n\n    return promise;\n}\n","var defId = 1;\n\nexport default function definitionId() {\n    return \"kdef\" + defId++;\n}","var DEG_TO_RAD = Math.PI / 180;\nvar MAX_NUM = Number.MAX_VALUE;\nvar MIN_NUM = -Number.MAX_VALUE;\n\nexport { DEG_TO_RAD, MAX_NUM, MIN_NUM };","import { DEG_TO_RAD } from './constants';\n\nexport default function deg(radians) {\n    return radians / DEG_TO_RAD;\n}","var fromCharCode = String.fromCharCode;\n\nexport var BOM = '\\xfe\\xff';\n\n// Encodes a string as UTF-8\nexport function encodeUTF8(input) {\n    var output = \"\";\n\n    for (var i = 0; i < input.length; i++) {\n        var code = input.charCodeAt(i);\n\n        if (0xD800 <= code && code <= 0xDBFF) {\n            var hi = code;\n            var low = input.charCodeAt(++i);\n\n            if (!isNaN(low)) {\n                // Combine high and low surrogate\n                // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt\n                code = (hi - 0xD800) * 0x400 +\n                       (low - 0xDC00) + 0x10000;\n            }\n        }\n\n        if (code < 0x80) {\n            // One byte\n            output += fromCharCode(code);\n        } else if (code < 0x800) {\n            // Two bytes\n            output += fromCharCode(0xC0 | (code >>> 6));\n            output += fromCharCode(0x80 | (code & 0x3f));\n        } else if (code < 0x10000) {\n            // Three bytes\n            output += fromCharCode(0xE0 | (code >>> 12));\n            output += fromCharCode(0x80 | (code >>> 6 & 0x3f));\n            output += fromCharCode(0x80 | (code & 0x3f));\n        } else if (code < 0x10FFFF) {\n            // Four bytes\n            output += fromCharCode(0xF0 | (code >>> 18));\n            output += fromCharCode(0x80 | (code >>> 12 & 0x3f));\n            output += fromCharCode(0x80 | (code >>> 6 & 0x3f));\n            output += fromCharCode(0x80 | (code & 0x3f));\n        }\n    }\n\n    return output;\n}\n\nfunction encodeUnit(codeUnit) {\n    return fromCharCode(codeUnit >> 8) + fromCharCode(codeUnit & 0x00ff);\n}\n\n// Encodes a string as UTF-16 big-endian\nexport function encodeUTF16BE(input) {\n    var output = '';\n\n    for (var i = 0; i < input.length; i++) {\n        var c = input.charCodeAt(i);\n\n        if (c < 0xFFFF) {\n            output += encodeUnit(c);\n        } else {\n            var lead = ((c - 0x10000) >> 10) + 0xD800;\n            var trail = ((c - 0x10000) & 0x3FF) + 0xDC00;\n            output += encodeUnit(lead);\n            output += encodeUnit(trail);\n        }\n    }\n\n    return output;\n}\n","import { encodeUTF8 } from './encode-utf';\n\nvar KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\nexport default function encodeBase64(input) {\n    var output = \"\";\n    var i = 0;\n\n    var utfInput = encodeUTF8(input);\n\n    while (i < utfInput.length) {\n        var chr1 = utfInput.charCodeAt(i++);\n        var chr2 = utfInput.charCodeAt(i++);\n        var chr3 = utfInput.charCodeAt(i++);\n\n        var enc1 = chr1 >> 2;\n        var enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n        var enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n        var enc4 = chr3 & 63;\n\n        if (isNaN(chr2)) {\n            enc3 = enc4 = 64;\n        } else if (isNaN(chr3)) {\n            enc4 = 64;\n        }\n\n        output = output +\n            KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) +\n            KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\n    }\n\n    return output;\n}","import defined from './defined';\n\nexport default function eventCoordinates(e) {\n    if (defined((e.x || {}).location)) {\n        return {\n            x: e.x.location,\n            y: e.y.location\n        };\n    }\n\n    return {\n        x: e.pageX || e.clientX || 0,\n        y: e.pageY || e.clientY || 0\n    };\n}","export default function eventElement(e) {\n    if ( e === void 0 ) e = {};\n\n    return e.touch ? e.touch.initialTouch : e.target;\n}","import defined from './defined';\n\nexport default function isTransparent(color) {\n    return color === \"\" || color === null || color === \"none\" || color === \"transparent\" || !defined(color);\n}","export default function last(array) {\n    if (array) {\n        return array[array.length - 1];\n    }\n}","export default function limitValue(value, min, max) {\n    return Math.max(Math.min(value, max), min);\n}","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n// mergeSort is stable.\nexport default function mergeSort(a, cmp) {\n    if (a.length < 2) {\n        return a.slice();\n    }\n    function merge(a, b) {\n        var r = [], ai = 0, bi = 0, i = 0;\n        while (ai < a.length && bi < b.length) {\n            if (cmp(a[ai], b[bi]) <= 0) {\n                r[i++] = a[ai++];\n            } else {\n                r[i++] = b[bi++];\n            }\n        }\n        if (ai < a.length) {\n            r.push.apply(r, a.slice(ai));\n        }\n        if (bi < b.length) {\n            r.push.apply(r, b.slice(bi));\n        }\n        return r;\n    }\n    return (function sort(a) {\n        if (a.length <= 1) {\n            return a;\n        }\n        var m = Math.floor(a.length / 2);\n        var left = a.slice(0, m);\n        var right = a.slice(m);\n        left = sort(left);\n        right = sort(right);\n        return merge(left, right);\n    })(a);\n}","var now = Date.now || function() {\n    return new Date().getTime();\n};\n\nexport default now;\n","export default function promiseAll(promises) {\n    return Promise.all(promises);\n}","import { DEG_TO_RAD } from './constants';\n\nexport default function rad(degrees) {\n    return degrees * DEG_TO_RAD;\n}\n","import defined from './defined';\n\nexport default function valueOrDefault(value, defaultValue) {\n    return defined(value) ? value : defaultValue;\n}","export default function bindEvents(element, events) {\n    for (var eventName in events) {\n        var eventNames = eventName.trim().split(\" \");\n        for (var idx = 0; idx < eventNames.length; idx++) {\n            element.addEventListener(eventNames[idx], events[eventName], false);\n        }\n    }\n}","export default function elementOffset(element) {\n    var box = element.getBoundingClientRect();\n\n    var documentElement = document.documentElement;\n\n    return {\n        top: box.top + (window.pageYOffset || documentElement.scrollTop) - (documentElement.clientTop || 0),\n        left: box.left + (window.pageXOffset || documentElement.scrollLeft) - (documentElement.clientLeft || 0)\n    };\n}","export default function elementStyles(element, styles) {\n    var result = {};\n    var style = window.getComputedStyle(element) || {};\n    var stylesArray = Array.isArray(styles) ? styles : [ styles ];\n\n    for (var idx = 0; idx < stylesArray.length; idx++) {\n        var field = stylesArray[idx];\n        result[field] = style[field];\n    }\n\n    return result;\n}","import elementStyles from './element-styles';\nimport defined from './defined';\n\nfunction getPixels(value) {\n    if (isNaN(value)) {\n        return value;\n    }\n    return value + \"px\";\n}\n\nexport default function elementSize(element, size) {\n    if (size) {\n        var width = size.width;\n        var height = size.height;\n\n        if (defined(width)) {\n            element.style.width = getPixels(width);\n        }\n\n        if (defined(height)) {\n            element.style.height = getPixels(height);\n        }\n\n    } else {\n        var size$1 = elementStyles(element, [ 'width', 'height' ]);\n\n        return {\n            width: parseInt(size$1.width, 10),\n            height: parseInt(size$1.height, 10)\n        };\n    }\n}","export default function unbindEvents(element, events) {\n    if ( events === void 0 ) events = {};\n\n    for (var name in events) {\n        var eventNames = name.trim().split(\" \");\n        for (var idx = 0; idx < eventNames.length; idx++) {\n            element.removeEventListener(eventNames[idx], events[name], false);\n        }\n    }\n}","import { default as elementStyles } from './element-styles';\n\nexport default function elementPadding(element) {\n    var ref = elementStyles(element, [ \"paddingLeft\", \"paddingTop\" ]);\n    var paddingLeft = ref.paddingLeft;\n    var paddingTop = ref.paddingTop;\n    return {\n        top: parseFloat(paddingTop),\n        left: parseFloat(paddingLeft)\n    };\n}\n","import { Class } from '../common';\nimport defined from '../util/defined';\nimport rad from '../util/rad';\nimport round from '../util/round';\n\nvar Matrix = (function (Class) {\n    function Matrix(a, b, c, d, e, f) {\n        if ( a === void 0 ) a = 0;\n        if ( b === void 0 ) b = 0;\n        if ( c === void 0 ) c = 0;\n        if ( d === void 0 ) d = 0;\n        if ( e === void 0 ) e = 0;\n        if ( f === void 0 ) f = 0;\n\n        Class.call(this);\n\n        this.a = a;\n        this.b = b;\n        this.c = c;\n        this.d = d;\n        this.e = e;\n        this.f = f;\n    }\n\n    if ( Class ) Matrix.__proto__ = Class;\n    Matrix.prototype = Object.create( Class && Class.prototype );\n    Matrix.prototype.constructor = Matrix;\n\n    Matrix.prototype.multiplyCopy = function multiplyCopy (matrix) {\n        return new Matrix(\n            this.a * matrix.a + this.c * matrix.b,\n            this.b * matrix.a + this.d * matrix.b,\n            this.a * matrix.c + this.c * matrix.d,\n            this.b * matrix.c + this.d * matrix.d,\n            this.a * matrix.e + this.c * matrix.f + this.e,\n            this.b * matrix.e + this.d * matrix.f + this.f\n        );\n    };\n\n    Matrix.prototype.invert = function invert () {\n        var ref = this;\n        var a = ref.a;\n        var b = ref.b;\n        var d = ref.c;\n        var e = ref.d;\n        var g = ref.e;\n        var h = ref.f;\n        var det = a * e - b * d;\n\n        if (det === 0) {\n            return null;\n        }\n\n        return new Matrix(e / det, -b / det, -d / det, a / det,\n            (d * h - e * g) / det, (b * g - a * h) / det);\n    };\n\n    Matrix.prototype.clone = function clone () {\n        return new Matrix(this.a, this.b, this.c, this.d, this.e, this.f);\n    };\n\n    Matrix.prototype.equals = function equals (other) {\n        if (!other) {\n            return false;\n        }\n\n        return this.a === other.a && this.b === other.b &&\n            this.c === other.c && this.d === other.d &&\n            this.e === other.e && this.f === other.f;\n    };\n\n    Matrix.prototype.round = function round$1 (precision) {\n        this.a = round(this.a, precision);\n        this.b = round(this.b, precision);\n        this.c = round(this.c, precision);\n        this.d = round(this.d, precision);\n        this.e = round(this.e, precision);\n        this.f = round(this.f, precision);\n\n        return this;\n    };\n\n    Matrix.prototype.toArray = function toArray (precision) {\n        var result = [ this.a, this.b, this.c, this.d, this.e, this.f ];\n\n        if (defined(precision)) {\n            for (var i = 0; i < result.length; i++) {\n                result[i] = round(result[i], precision);\n            }\n        }\n\n        return result;\n    };\n\n    Matrix.prototype.toString = function toString (precision, separator) {\n        if ( separator === void 0 ) separator = \",\";\n\n        return this.toArray(precision).join(separator);\n    };\n\n    Matrix.translate = function translate (x, y) {\n        return new Matrix(1, 0, 0, 1, x, y);\n    };\n\n    Matrix.unit = function unit () {\n        return new Matrix(1, 0, 0, 1, 0, 0);\n    };\n\n    Matrix.rotate = function rotate (angle, x, y) {\n        var matrix = new Matrix();\n        matrix.a = Math.cos(rad(angle));\n        matrix.b = Math.sin(rad(angle));\n        matrix.c = -matrix.b;\n        matrix.d = matrix.a;\n        matrix.e = (x - x * matrix.a + y * matrix.b) || 0;\n        matrix.f = (y - y * matrix.a - x * matrix.b) || 0;\n\n        return matrix;\n    };\n\n    Matrix.scale = function scale (scaleX, scaleY) {\n        return new Matrix(scaleX, 0, 0, scaleY, 0, 0);\n    };\n\n    return Matrix;\n}(Class));\n\nMatrix.IDENTITY = Matrix.unit();\n\nexport default Matrix;\n","import Matrix from '../geometry/matrix';\n\nvar matrixRegexp = /matrix\\((.*)\\)/;\n\nfunction parseMatrix(matrixString) {\n    var match = matrixString.match(matrixRegexp);\n    if (match === null || match.length !== 2) {\n        return Matrix.unit();\n    }\n\n    var members = match[1].split(',').map(function (x) { return parseFloat(x); });\n    return new (Function.prototype.bind.apply( Matrix, [ null ].concat( members) ));\n}\n\nfunction transformMatrix(element) {\n    var transform = getComputedStyle(element).transform;\n\n    if (transform === 'none') {\n        return Matrix.unit();\n    }\n\n    return parseMatrix(transform);\n}\n\nexport default function elementScale(element) {\n    if (!element) {\n        return Matrix.unit();\n    }\n\n    var matrix = transformMatrix(element);\n    var parent = element.parentElement;\n    while (parent) {\n        var parentMatrix = transformMatrix(parent);\n        matrix = matrix.multiplyCopy(parentMatrix);\n        parent = parent.parentElement;\n    }\n\n    matrix.b = matrix.c = matrix.e = matrix.f = 0;\n    return matrix;\n}\n","import { Class } from '../common';\n\nvar LRUCache = (function (Class) {\n    function LRUCache(size) {\n        Class.call(this);\n\n        this._size = size;\n        this._length = 0;\n        this._map = {};\n    }\n\n    if ( Class ) LRUCache.__proto__ = Class;\n    LRUCache.prototype = Object.create( Class && Class.prototype );\n    LRUCache.prototype.constructor = LRUCache;\n\n    LRUCache.prototype.put = function put (key, value) {\n        var map = this._map;\n        var entry = { key: key, value: value };\n\n        map[key] = entry;\n\n        if (!this._head) {\n            this._head = this._tail = entry;\n        } else {\n            this._tail.newer = entry;\n            entry.older = this._tail;\n            this._tail = entry;\n        }\n\n        if (this._length >= this._size) {\n            map[this._head.key] = null;\n            this._head = this._head.newer;\n            this._head.older = null;\n        } else {\n            this._length++;\n        }\n    };\n\n    LRUCache.prototype.get = function get (key) {\n        var entry = this._map[key];\n\n        if (entry) {\n            if (entry === this._head && entry !== this._tail) {\n                this._head = entry.newer;\n                this._head.older = null;\n            }\n\n            if (entry !== this._tail) {\n                if (entry.older) {\n                    entry.older.newer = entry.newer;\n                    entry.newer.older = entry.older;\n                }\n\n                entry.older = this._tail;\n                entry.newer = null;\n\n                this._tail.newer = entry;\n                this._tail = entry;\n            }\n\n            return entry.value;\n        }\n    };\n\n    return LRUCache;\n}(Class));\n\nexport default LRUCache;","var REPLACE_REGEX = /\\r?\\n|\\r|\\t/g;\nvar SPACE = ' ';\n\nfunction normalizeText(text) {\n    return String(text).replace(REPLACE_REGEX, SPACE);\n}\n\nfunction objectKey(object) {\n    var parts = [];\n    for (var key in object) {\n        parts.push(key + object[key]);\n    }\n\n    return parts.sort().join(\"\");\n}\n\n// Computes FNV-1 hash\n// See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function\nfunction hashKey(str) {\n    // 32-bit FNV-1 offset basis\n    // See http://isthe.com/chongo/tech/comp/fnv/#FNV-param\n    var hash = 0x811C9DC5;\n\n    for (var i = 0; i < str.length; ++i) {\n        hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);\n        hash ^= str.charCodeAt(i);\n    }\n\n    return hash >>> 0;\n}\n\nexport { objectKey, hashKey, normalizeText };","import LRUCache from './lru-cache';\nimport { Class } from '../common';\nimport { objectKey, hashKey, normalizeText } from './util';\n\nfunction zeroSize() {\n    return { width: 0, height: 0, baseline: 0 };\n}\n\nvar DEFAULT_OPTIONS = {\n    baselineMarkerSize: 1\n};\n\nvar defaultMeasureBox;\n\nif (typeof document !== \"undefined\") {\n    defaultMeasureBox = document.createElement(\"div\");\n    defaultMeasureBox.style.setProperty(\"position\", \"absolute\", \"important\");\n    defaultMeasureBox.style.setProperty(\"top\", \"-4000px\", \"important\");\n    defaultMeasureBox.style.setProperty(\"width\", \"auto\", \"important\");\n    defaultMeasureBox.style.setProperty(\"height\", \"auto\", \"important\");\n    defaultMeasureBox.style.setProperty(\"padding\", \"0\", \"important\");\n    defaultMeasureBox.style.setProperty(\"margin\", \"0\", \"important\");\n    defaultMeasureBox.style.setProperty(\"border\", \"0\", \"important\");\n    defaultMeasureBox.style.setProperty(\"line-height\", \"normal\", \"important\");\n    defaultMeasureBox.style.setProperty(\"visibility\", \"hidden\", \"important\");\n    defaultMeasureBox.style.setProperty(\"white-space\", \"pre\", \"important\");\n}\n\nvar TextMetrics = (function (Class) {\n    function TextMetrics(options) {\n        Class.call(this);\n\n        this._cache = new LRUCache(1000);\n        this.options = Object.assign({}, DEFAULT_OPTIONS, options);\n    }\n\n    if ( Class ) TextMetrics.__proto__ = Class;\n    TextMetrics.prototype = Object.create( Class && Class.prototype );\n    TextMetrics.prototype.constructor = TextMetrics;\n\n    TextMetrics.prototype.measure = function measure (text, style, options) {\n        if ( options === void 0 ) options = {};\n\n        if (typeof text === 'undefined' || text === null) {\n            return zeroSize();\n        }\n\n        var styleKey = objectKey(style);\n        var cacheKey = hashKey(text + styleKey);\n        var cachedResult = this._cache.get(cacheKey);\n\n        if (cachedResult) {\n            return cachedResult;\n        }\n\n        var size = zeroSize();\n        var measureBox = options.box || defaultMeasureBox;\n        var baselineMarker = this._baselineMarker().cloneNode(false);\n\n        for (var key in style) {\n            var value = style[key];\n            if (typeof value !== \"undefined\") {\n                measureBox.style[key] = value;\n            }\n        }\n\n        var textStr = options.normalizeText !== false ? normalizeText(text) : String(text);\n\n        measureBox.textContent = textStr;\n        measureBox.appendChild(baselineMarker);\n        document.body.appendChild(measureBox);\n\n        if (textStr.length) {\n            size.width = measureBox.offsetWidth - this.options.baselineMarkerSize;\n            size.height = measureBox.offsetHeight;\n            size.baseline = baselineMarker.offsetTop + this.options.baselineMarkerSize;\n        }\n\n        if (size.width > 0 && size.height > 0) {\n            this._cache.put(cacheKey, size);\n        }\n\n        measureBox.parentNode.removeChild(measureBox);\n\n        return size;\n    };\n\n    TextMetrics.prototype._baselineMarker = function _baselineMarker () {\n        var marker = document.createElement(\"div\");\n        marker.style.display = \"inline-block\";\n        marker.style.verticalAlign = \"baseline\";\n        marker.style.width = this.options.baselineMarkerSize + \"px\";\n        marker.style.height = this.options.baselineMarkerSize + \"px\";\n        marker.style.overflow = \"hidden\";\n\n        return marker;\n    };\n\n    return TextMetrics;\n}(Class));\n\nTextMetrics.current = new TextMetrics();\n\nexport default TextMetrics;\n","import TextMetrics from './text-metrics';\n\nexport default function measureText(text, style, measureBox) {\n    return TextMetrics.current.measure(text, style, measureBox);\n}\n","import {\n    drawing,\n    Class,\n    logToConsole\n} from '@progress/kendo-drawing';\n\nvar ref = drawing.util;\nvar append = ref.append;\nvar bindEvents = ref.bindEvents;\nvar defined = ref.defined;\nvar deg = ref.deg;\nvar elementOffset = ref.elementOffset;\nvar elementSize = ref.elementSize;\nvar eventCoordinates = ref.eventCoordinates;\nvar eventElement = ref.eventElement;\nvar hashKey = ref.hashKey;\nvar last = ref.last;\nvar limitValue = ref.limitValue;\nvar objectKey = ref.objectKey;\nvar rad = ref.rad;\nvar round = ref.round;\nvar unbindEvents = ref.unbindEvents;\nvar valueOrDefault = ref.valueOrDefault;\n\nexport {\n    append,\n    bindEvents,\n    Class,\n    defined,\n    deg,\n    elementOffset,\n    elementSize,\n    eventCoordinates,\n    eventElement,\n    hashKey,\n    last,\n    limitValue,\n    logToConsole,\n    objectKey,\n    rad,\n    round,\n    unbindEvents,\n    valueOrDefault\n};\n","import { logToConsole } from '../drawing-utils';\n\nvar FontLoader = function FontLoader () {};\n\nFontLoader.fetchFonts = function fetchFonts (options, fonts, state) {\n        if ( state === void 0 ) state = { depth: 0 };\n\n    var MAX_DEPTH = 5;\n\n    if (!options || state.depth > MAX_DEPTH || !document.fonts) {\n        return;\n    }\n\n    Object.keys(options).forEach(function(key) {\n        var value = options[key];\n        if (key === \"dataSource\" || key[0] === \"$\" || !value) {\n            return;\n        }\n\n        if (key === \"font\") {\n            fonts.push(value);\n        } else if (typeof value === \"object\") {\n            state.depth++;\n            FontLoader.fetchFonts(value, fonts, state);\n            state.depth--;\n        }\n    });\n};\n\nFontLoader.loadFonts = function loadFonts (fonts, callback) {\n    var promises = [];\n\n    if (fonts.length > 0 && document.fonts) {\n        try {\n            promises = fonts.map(function(font) {\n                return document.fonts.load(font);\n            });\n        } catch (e) {\n            // Silence font-loading errors\n            logToConsole(e);\n        }\n\n        Promise.all(promises).then(callback, callback);\n    } else {\n        callback();\n    }\n};\n\nFontLoader.preloadFonts = function preloadFonts (options, callback) {\n    var fonts = [];\n    FontLoader.fetchFonts(options, fonts);\n\n    FontLoader.loadFonts(fonts, callback);\n};\n\nexport default FontLoader;","import deepExtend from './deep-extend';\n\nexport default function setDefaultOptions(type, options) {\n    var proto = type.prototype;\n    if (proto.options) {\n        proto.options = deepExtend({}, proto.options, options);\n    } else {\n        proto.options = options;\n    }\n}","import isObject from './is-object';\nimport isPlainObject from './is-plain-object';\nimport isString from './is-string';\nimport deepExtend from './deep-extend';\nimport setDefaultOptions from './set-default-options';\nimport addClass from './add-class';\nimport removeClass from './remove-class';\n\nvar KICON = 'k-icon';\nvar KI_PREFFIX = 'k-i-';\nvar KSVGICON = 'k-svg-icon';\nvar KSVG_PREFFIX = 'k-svg-i-';\n\nvar HTMLBaseIcon = function HTMLBaseIcon(element, options) {\n    this.element = element;\n    this.options = deepExtend({}, this.options, options);\n\n    this.wrapper();\n};\n\nHTMLBaseIcon.prototype.wrapper = function wrapper () {\n    this.addClasses();\n};\n\nHTMLBaseIcon.prototype.addClasses = function addClasses () {\n};\n\nHTMLBaseIcon.prototype.html = function html () {\n    return this.element.outerHTML;\n};\n\nsetDefaultOptions(HTMLBaseIcon, {\n    name: '',\n    size: 'none',\n    themeColor: 'none',\n    flip: 'default',\n    iconClass: '',\n    stylingOptions: [ 'size', 'themeColor', 'fill' ]\n});\n\nvar HTMLFontIcon = (function (HTMLBaseIcon) {\n    function HTMLFontIcon(element, options) {\n        HTMLBaseIcon.call(this, element, options);\n    }\n\n    if ( HTMLBaseIcon ) HTMLFontIcon.__proto__ = HTMLBaseIcon;\n    HTMLFontIcon.prototype = Object.create( HTMLBaseIcon && HTMLBaseIcon.prototype );\n    HTMLFontIcon.prototype.constructor = HTMLFontIcon;\n\n    HTMLFontIcon.prototype.wrapper = function wrapper () {\n        // Find if there is an existing k-i- class appended to the element.\n        var currentIconClass = this.element.className.split(\" \").find(function (x) { return x.startsWith(KI_PREFFIX); });\n        var className = this.options.icon ? (\"\" + (this.options.icon.startsWith(KI_PREFFIX) ? \"\" : KI_PREFFIX) + (this.options.icon)) : \"\";\n\n        this._className = className;\n\n        addClass(this.element, KICON);\n        removeClass(this.element, currentIconClass); // Remove any existing icons.\n        addClass(this.element, className);\n        addClass(this.element, this.options.iconClass || '');\n\n        HTMLBaseIcon.prototype.wrapper.call(this);\n    };\n\n    return HTMLFontIcon;\n}(HTMLBaseIcon));\n\nsetDefaultOptions(HTMLFontIcon, {\n    name: 'HTMLFontIcon',\n    icon: null\n});\n\nvar HTMLSvgIcon = (function (HTMLBaseIcon) {\n    function HTMLSvgIcon(element, options) {\n        // Ensure that the inner contents of the wrapping span element are always removed for re-rendering purposes.\n        element.innerHTML = \"\";\n\n        HTMLBaseIcon.call(this, element, options);\n    }\n\n    if ( HTMLBaseIcon ) HTMLSvgIcon.__proto__ = HTMLBaseIcon;\n    HTMLSvgIcon.prototype = Object.create( HTMLBaseIcon && HTMLBaseIcon.prototype );\n    HTMLSvgIcon.prototype.constructor = HTMLSvgIcon;\n\n    HTMLSvgIcon.prototype.wrapper = function wrapper () {\n        var icon = this.options.icon;\n        var iconClass = this.options.iconClass;\n        var currentIconClass = this.element.className.split(\" \").find(function (x) { return x.startsWith(KSVG_PREFFIX); });\n\n        if (!icon && iconClass) {\n            // match k-i-(some-icon-name)\n            var regex = /k-i-(\\w+(?:-\\w+)*)/;\n            var iconNameMatch = iconClass.match(regex);\n            if (iconNameMatch) {\n                icon = iconNameMatch[1];\n                iconClass = iconClass.replace(iconNameMatch[0], \"\");\n            }\n        }\n\n        if (isString(icon)) {\n            icon = icon.replace(\"k-i-\", \"\").replace(/-./g, function (x) { return x[1].toUpperCase(); });\n            icon = this.options.svgIcons[icon] || this.options.svgIcons[(icon + \"Icon\")];\n        }\n\n        var className = icon && icon.name ? (\"\" + KSVG_PREFFIX + (icon.name)) : \"\";\n        this._className = className;\n\n        addClass(this.element, KSVGICON);\n        removeClass(this.element, currentIconClass);\n        addClass(this.element, className);\n        addClass(this.element, iconClass || \"\");\n        this.element.setAttribute(\"aria-hidden\", \"true\");\n\n        if (icon && isPlainObject(icon)) {\n            var svgElement = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n            svgElement.setAttribute(\"viewBox\", icon.viewBox || \"\");\n            svgElement.setAttribute(\"focusable\", \"false\");\n            svgElement.innerHTML = icon.content || \"\";\n\n            this.element.appendChild(svgElement);\n        }\n\n        HTMLBaseIcon.prototype.wrapper.call(this);\n    };\n\n    return HTMLSvgIcon;\n}(HTMLBaseIcon));\n\nsetDefaultOptions(HTMLSvgIcon, {\n    name: 'HTMLSvgIcon',\n    icon: null,\n    svgIcons: {}\n});\n\nvar ICON_TYPES = {\n    'svg': HTMLSvgIcon,\n    'font': HTMLFontIcon\n};\n\nexport default function renderIcon(iconElement, iconOptions) {\n    var element = iconElement;\n    var options = iconOptions;\n\n    if (!element\n        || (isObject(element) && !(element instanceof HTMLElement))\n        || isString(element)) {\n        options = element;\n        element = document.createElement(\"span\");\n    }\n\n    if (isString(options)) {\n        options = {\n            icon: options\n        };\n    }\n\n    if (!options.type) {\n        options.type = 'svg';\n    }\n\n    if (!ICON_TYPES[options.type]) {\n        return null;\n    }\n\n    return (new ICON_TYPES[options.type](element, options).html());\n}\n","export default function isPlainObject(value) {\n    return Object.prototype.toString.call(value) === \"[object Object]\";\n}","import { MIN_VALUE, MAX_VALUE } from './constants';\n\nexport default function sparseArrayLimits(arr) {\n    var min = MAX_VALUE;\n    var max = MIN_VALUE;\n\n    for (var idx = 0, length = arr.length; idx < length; idx++) {\n        var value = arr[idx];\n        if (value !== null && isFinite(value)) {\n            min = Math.min(min, value);\n            max = Math.max(max, value);\n        }\n    }\n\n    return {\n        min: min === MAX_VALUE ? undefined : min,\n        max: max === MIN_VALUE ? undefined : max\n    };\n}","export default function find(array, predicate) {\n    for (var i = 0; i < array.length; i++) {\n        var item = array[i];\n        if (predicate(item, i, array)) {\n            return item;\n        }\n    }\n}\n","import { geometry } from '@progress/kendo-drawing';\n\nvar Matrix = geometry.Matrix;\nvar matrixRegexp = /matrix\\((.*)\\)/;\n\nfunction parseMatrix(matrixString) {\n    var match = matrixString.match(matrixRegexp);\n    if (match === null || match.length !== 2) {\n        return Matrix.unit();\n    }\n\n    var members = match[1].split(',').map(function (x) { return parseFloat(x); });\n    return new (Function.prototype.bind.apply( Matrix, [ null ].concat( members) ));\n}\n\nfunction transformMatrix(element) {\n    var transform = getComputedStyle(element).transform;\n\n    if (transform === 'none') {\n        return Matrix.unit();\n    }\n\n    return parseMatrix(transform);\n}\n\nexport default function elementScale(element) {\n    if (!element) {\n        return Matrix.unit();\n    }\n\n    var matrix = transformMatrix(element);\n    var parent = element.parentElement;\n    while (parent) {\n        var parentMatrix = transformMatrix(parent);\n        matrix = matrix.multiplyCopy(parentMatrix);\n        parent = parent.parentElement;\n    }\n\n    matrix.b = matrix.c = matrix.e = matrix.f = 0;\n    return matrix;\n}\n","var namedColors = {\n    aliceblue: \"f0f8ff\", antiquewhite: \"faebd7\", aqua: \"00ffff\",\n    aquamarine: \"7fffd4\", azure: \"f0ffff\", beige: \"f5f5dc\",\n    bisque: \"ffe4c4\", black: \"000000\", blanchedalmond: \"ffebcd\",\n    blue: \"0000ff\", blueviolet: \"8a2be2\", brown: \"a52a2a\",\n    burlywood: \"deb887\", cadetblue: \"5f9ea0\", chartreuse: \"7fff00\",\n    chocolate: \"d2691e\", coral: \"ff7f50\", cornflowerblue: \"6495ed\",\n    cornsilk: \"fff8dc\", crimson: \"dc143c\", cyan: \"00ffff\",\n    darkblue: \"00008b\", darkcyan: \"008b8b\", darkgoldenrod: \"b8860b\",\n    darkgray: \"a9a9a9\", darkgrey: \"a9a9a9\", darkgreen: \"006400\",\n    darkkhaki: \"bdb76b\", darkmagenta: \"8b008b\", darkolivegreen: \"556b2f\",\n    darkorange: \"ff8c00\", darkorchid: \"9932cc\", darkred: \"8b0000\",\n    darksalmon: \"e9967a\", darkseagreen: \"8fbc8f\", darkslateblue: \"483d8b\",\n    darkslategray: \"2f4f4f\", darkslategrey: \"2f4f4f\", darkturquoise: \"00ced1\",\n    darkviolet: \"9400d3\", deeppink: \"ff1493\", deepskyblue: \"00bfff\",\n    dimgray: \"696969\", dimgrey: \"696969\", dodgerblue: \"1e90ff\",\n    firebrick: \"b22222\", floralwhite: \"fffaf0\", forestgreen: \"228b22\",\n    fuchsia: \"ff00ff\", gainsboro: \"dcdcdc\", ghostwhite: \"f8f8ff\",\n    gold: \"ffd700\", goldenrod: \"daa520\", gray: \"808080\",\n    grey: \"808080\", green: \"008000\", greenyellow: \"adff2f\",\n    honeydew: \"f0fff0\", hotpink: \"ff69b4\", indianred: \"cd5c5c\",\n    indigo: \"4b0082\", ivory: \"fffff0\", khaki: \"f0e68c\",\n    lavender: \"e6e6fa\", lavenderblush: \"fff0f5\", lawngreen: \"7cfc00\",\n    lemonchiffon: \"fffacd\", lightblue: \"add8e6\", lightcoral: \"f08080\",\n    lightcyan: \"e0ffff\", lightgoldenrodyellow: \"fafad2\", lightgray: \"d3d3d3\",\n    lightgrey: \"d3d3d3\", lightgreen: \"90ee90\", lightpink: \"ffb6c1\",\n    lightsalmon: \"ffa07a\", lightseagreen: \"20b2aa\", lightskyblue: \"87cefa\",\n    lightslategray: \"778899\", lightslategrey: \"778899\", lightsteelblue: \"b0c4de\",\n    lightyellow: \"ffffe0\", lime: \"00ff00\", limegreen: \"32cd32\",\n    linen: \"faf0e6\", magenta: \"ff00ff\", maroon: \"800000\",\n    mediumaquamarine: \"66cdaa\", mediumblue: \"0000cd\", mediumorchid: \"ba55d3\",\n    mediumpurple: \"9370d8\", mediumseagreen: \"3cb371\", mediumslateblue: \"7b68ee\",\n    mediumspringgreen: \"00fa9a\", mediumturquoise: \"48d1cc\", mediumvioletred: \"c71585\",\n    midnightblue: \"191970\", mintcream: \"f5fffa\", mistyrose: \"ffe4e1\",\n    moccasin: \"ffe4b5\", navajowhite: \"ffdead\", navy: \"000080\",\n    oldlace: \"fdf5e6\", olive: \"808000\", olivedrab: \"6b8e23\",\n    orange: \"ffa500\", orangered: \"ff4500\", orchid: \"da70d6\",\n    palegoldenrod: \"eee8aa\", palegreen: \"98fb98\", paleturquoise: \"afeeee\",\n    palevioletred: \"d87093\", papayawhip: \"ffefd5\", peachpuff: \"ffdab9\",\n    peru: \"cd853f\", pink: \"ffc0cb\", plum: \"dda0dd\",\n    powderblue: \"b0e0e6\", purple: \"800080\", red: \"ff0000\",\n    rosybrown: \"bc8f8f\", royalblue: \"4169e1\", saddlebrown: \"8b4513\",\n    salmon: \"fa8072\", sandybrown: \"f4a460\", seagreen: \"2e8b57\",\n    seashell: \"fff5ee\", sienna: \"a0522d\", silver: \"c0c0c0\",\n    skyblue: \"87ceeb\", slateblue: \"6a5acd\", slategray: \"708090\",\n    slategrey: \"708090\", snow: \"fffafa\", springgreen: \"00ff7f\",\n    steelblue: \"4682b4\", tan: \"d2b48c\", teal: \"008080\",\n    thistle: \"d8bfd8\", tomato: \"ff6347\", turquoise: \"40e0d0\",\n    violet: \"ee82ee\", wheat: \"f5deb3\", white: \"ffffff\",\n    whitesmoke: \"f5f5f5\", yellow: \"ffff00\", yellowgreen: \"9acd32\"\n};\n\nexport default namedColors;","import Class from '../class';\nimport support from '../support';\nimport namedColors from './named-colors';\n\nvar browser = support.browser;\n\nvar matchNamedColor = function (color) {\n    var colorNames = Object.keys(namedColors);\n    colorNames.push(\"transparent\");\n\n    var regexp = new RegExp(\"^(\" + colorNames.join(\"|\") + \")(\\\\W|$)\", \"i\");\n    matchNamedColor = function (color) { return regexp.exec(color); };\n\n    return regexp.exec(color);\n};\n\nvar BaseColor = (function (Class) {\n    function BaseColor() { Class.call(this); }\n\n    if ( Class ) BaseColor.__proto__ = Class;\n    BaseColor.prototype = Object.create( Class && Class.prototype );\n    BaseColor.prototype.constructor = BaseColor;\n    BaseColor.prototype.toHSV = function toHSV () { return this; };\n\n    BaseColor.prototype.toRGB = function toRGB () { return this; };\n\n    BaseColor.prototype.toHex = function toHex (options) { return this.toBytes().toHex(options); };\n\n    BaseColor.prototype.toBytes = function toBytes () { return this; };\n\n    BaseColor.prototype.toCss = function toCss (options) { return \"#\" + this.toHex(options); };\n\n    BaseColor.prototype.toCssRgba = function toCssRgba () {\n        var rgb = this.toBytes();\n        return (\"rgba(\" + (rgb.r) + \", \" + (rgb.g) + \", \" + (rgb.b) + \", \" + (parseFloat((Number(this.a)).toFixed(3))) + \")\");\n    };\n\n    BaseColor.prototype.toDisplay = function toDisplay () {\n        if (browser.msie && browser.version < 9) {\n            return this.toCss(); // no RGBA support; does it support any opacity in colors?\n        }\n        return this.toCssRgba();\n    };\n\n    BaseColor.prototype.equals = function equals (c) {\n        return c === this || ((c !== null && c !== undefined) && this.toCssRgba() === parseColor(c).toCssRgba());\n    };\n\n    BaseColor.prototype.diff = function diff (other) {\n        if (other === null) {\n            return NaN;\n        }\n\n        var c1 = this.toBytes();\n        var c2 = other.toBytes();\n\n        return Math.sqrt(Math.pow((c1.r - c2.r) * 0.30, 2) +\n                         Math.pow((c1.g - c2.g) * 0.59, 2) +\n                         Math.pow((c1.b - c2.b) * 0.11, 2));\n    };\n\n    BaseColor.prototype.clone = function clone () {\n        var c = this.toBytes();\n        if (c === this) {\n            c = new Bytes(c.r, c.g, c.b, c.a);\n        }\n\n        return c;\n    };\n\n    return BaseColor;\n}(Class));\n\nvar RGB = (function (BaseColor) {\n    function RGB(r, g, b, a) {\n        BaseColor.call(this);\n\n        this.r = r;\n        this.g = g;\n        this.b = b;\n        this.a = a;\n    }\n\n    if ( BaseColor ) RGB.__proto__ = BaseColor;\n    RGB.prototype = Object.create( BaseColor && BaseColor.prototype );\n    RGB.prototype.constructor = RGB;\n\n    RGB.prototype.toHSV = function toHSV () {\n        var ref = this;\n        var r = ref.r;\n        var g = ref.g;\n        var b = ref.b;\n        var min = Math.min(r, g, b);\n        var max = Math.max(r, g, b);\n        var delta = max - min;\n        var v = max;\n        var h, s;\n\n        if (delta === 0) {\n            return new HSV(0, 0, v, this.a);\n        }\n\n        if (max !== 0) {\n            s = delta / max;\n            if (r === max) {\n                h = (g - b) / delta;\n            } else if (g === max) {\n                h = 2 + (b - r) / delta;\n            } else {\n                h = 4 + (r - g) / delta;\n            }\n\n            h *= 60;\n            if (h < 0) {\n                h += 360;\n            }\n        } else {\n            s = 0;\n            h = -1;\n        }\n\n        return new HSV(h, s, v, this.a);\n    };\n\n    RGB.prototype.toHSL = function toHSL () {\n        var ref = this;\n        var r = ref.r;\n        var g = ref.g;\n        var b = ref.b;\n        var max = Math.max(r, g, b);\n        var min = Math.min(r, g, b);\n        var h, s, l = (max + min) / 2;\n\n        if (max === min) {\n            h = s = 0;\n        } else {\n            var d = max - min;\n            s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n            switch (max) {\n            case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n            case g: h = (b - r) / d + 2; break;\n            case b: h = (r - g) / d + 4; break;\n            default: break;\n            }\n        }\n\n        return new HSL(h * 60, s * 100, l * 100, this.a);\n    };\n\n    RGB.prototype.toBytes = function toBytes () {\n        return new Bytes(this.r * 255, this.g * 255, this.b * 255, this.a);\n    };\n\n    return RGB;\n}(BaseColor));\n\nvar Bytes = (function (RGB) {\n    function Bytes(r, g, b, a) {\n        RGB.call(this, Math.round(r), Math.round(g), Math.round(b), a);\n    }\n\n    if ( RGB ) Bytes.__proto__ = RGB;\n    Bytes.prototype = Object.create( RGB && RGB.prototype );\n    Bytes.prototype.constructor = Bytes;\n\n    Bytes.prototype.toRGB = function toRGB () {\n        return new RGB(this.r / 255, this.g / 255, this.b / 255, this.a);\n    };\n\n    Bytes.prototype.toHSV = function toHSV () {\n        return this.toRGB().toHSV();\n    };\n\n    Bytes.prototype.toHSL = function toHSL () {\n        return this.toRGB().toHSL();\n    };\n\n    Bytes.prototype.toHex = function toHex (options) {\n        var value = hex(this.r, 2) + hex(this.g, 2) + hex(this.b, 2);\n\n        if (options && options.alpha) {\n            value += hex(Math.round(this.a * 255), 2);\n        }\n\n        return value;\n    };\n\n    Bytes.prototype.toBytes = function toBytes () {\n        return this;\n    };\n\n    return Bytes;\n}(RGB));\n\nfunction hex(n, width, pad) {\n    if ( pad === void 0 ) pad = \"0\";\n\n    var result = n.toString(16);\n    while (width > result.length) {\n        result = pad + result;\n    }\n\n    return result;\n}\n\nvar HSV = (function (BaseColor) {\n    function HSV(h, s, v, a) {\n        BaseColor.call(this);\n\n        this.h = h;\n        this.s = s;\n        this.v = v;\n        this.a = a;\n    }\n\n    if ( BaseColor ) HSV.__proto__ = BaseColor;\n    HSV.prototype = Object.create( BaseColor && BaseColor.prototype );\n    HSV.prototype.constructor = HSV;\n\n    HSV.prototype.toRGB = function toRGB () {\n        var ref = this;\n        var h = ref.h;\n        var s = ref.s;\n        var v = ref.v;\n        var r, g, b;\n\n        if (s === 0) {\n            r = g = b = v;\n        } else {\n            h /= 60;\n\n            var i = Math.floor(h);\n            var f = h - i;\n            var p = v * (1 - s);\n            var q = v * (1 - s * f);\n            var t = v * (1 - s * (1 - f));\n\n            switch (i) {\n            case 0: r = v; g = t; b = p; break;\n            case 1: r = q; g = v; b = p; break;\n            case 2: r = p; g = v; b = t; break;\n            case 3: r = p; g = q; b = v; break;\n            case 4: r = t; g = p; b = v; break;\n            default: r = v; g = p; b = q; break;\n            }\n        }\n\n        return new RGB(r, g, b, this.a);\n    };\n\n    HSV.prototype.toHSL = function toHSL () {\n        return this.toRGB().toHSL();\n    };\n\n    HSV.prototype.toBytes = function toBytes () {\n        return this.toRGB().toBytes();\n    };\n\n    return HSV;\n}(BaseColor));\n\nvar HSL = (function (BaseColor) {\n    function HSL(h, s, l, a) {\n        BaseColor.call(this);\n\n        this.h = h;\n        this.s = s;\n        this.l = l;\n        this.a = a;\n    }\n\n    if ( BaseColor ) HSL.__proto__ = BaseColor;\n    HSL.prototype = Object.create( BaseColor && BaseColor.prototype );\n    HSL.prototype.constructor = HSL;\n\n    HSL.prototype.toRGB = function toRGB () {\n        var h = this.h / 360;\n        var s = this.s / 100;\n        var l = this.l / 100;\n        var r, g, b;\n\n        if (s === 0) {\n            r = g = b = l; // achromatic\n        } else {\n            var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n            var p = 2 * l - q;\n            r = hue2rgb(p, q, h + 1 / 3);\n            g = hue2rgb(p, q, h);\n            b = hue2rgb(p, q, h - 1 / 3);\n        }\n\n        return new RGB(r, g, b, this.a);\n    };\n\n    HSL.prototype.toHSV = function toHSV () {\n        return this.toRGB().toHSV();\n    };\n\n    HSL.prototype.toBytes = function toBytes () {\n        return this.toRGB().toBytes();\n    };\n\n    return HSL;\n}(BaseColor));\n\nfunction hue2rgb(p, q, s) {\n    var t = s;\n\n    if (t < 0) {\n        t += 1;\n    }\n\n    if (t > 1) {\n        t -= 1;\n    }\n\n    if (t < 1 / 6) {\n        return p + (q - p) * 6 * t;\n    }\n\n    if (t < 1 / 2) {\n        return q;\n    }\n\n    if (t < 2 / 3) {\n        return p + (q - p) * (2 / 3 - t) * 6;\n    }\n\n    return p;\n}\n\nfunction alphaFromHex(a) {\n    return parseFloat(parseFloat(parseInt(a, 16) / 255 ).toFixed(3));\n}\n\nexport { RGB, Bytes, HSV, HSL };\n\nexport default function parseColor(value, safe) {\n    var m, ret;\n\n    if (!value || value === \"none\") {\n        return null;\n    }\n\n    if (value instanceof BaseColor) {\n        return value;\n    }\n\n    var color = value.toLowerCase();\n    if ((m = matchNamedColor(color))) {\n        if (m[1] === \"transparent\") {\n            color = new RGB(1, 1, 1, 0);\n        } else {\n            color = parseColor(namedColors[m[1]], safe);\n        }\n        color.match = [ m[1] ];\n        return color;\n    }\n    if ((m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color))) {\n        ret = new Bytes(parseInt(m[1], 16),\n            parseInt(m[2], 16),\n            parseInt(m[3], 16), 1);\n    } else if ((m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color))) {\n        ret = new Bytes(parseInt(m[1] + m[1], 16),\n            parseInt(m[2] + m[2], 16),\n            parseInt(m[3] + m[3], 16), 1);\n    } else if ((m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color))) { // Parse 4 digit hex color\n        ret = new Bytes(parseInt(m[1] + m[1], 16),\n            parseInt(m[2] + m[2], 16),\n            parseInt(m[3] + m[3], 16),\n            alphaFromHex(m[4] + m[4]));\n    } else if ((m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color))) { // Parse 8 digit hex color\n        ret = new Bytes(parseInt(m[1], 16),\n            parseInt(m[2], 16),\n            parseInt(m[3], 16),\n            alphaFromHex(m[4]));\n    } else if ((m = /^rgb\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*\\)/.exec(color))) {\n        ret = new Bytes(parseInt(m[1], 10),\n            parseInt(m[2], 10),\n            parseInt(m[3], 10), 1);\n    } else if ((m = /^rgba\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n        ret = new Bytes(parseInt(m[1], 10),\n            parseInt(m[2], 10),\n            parseInt(m[3], 10), parseFloat(m[4]));\n    } else if ((m = /^rgb\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*\\)/.exec(color))) {\n        ret = new RGB(parseFloat(m[1]) / 100,\n            parseFloat(m[2]) / 100,\n            parseFloat(m[3]) / 100, 1);\n    } else if ((m = /^rgba\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n        ret = new RGB(parseFloat(m[1]) / 100,\n            parseFloat(m[2]) / 100,\n            parseFloat(m[3]) / 100, parseFloat(m[4]));\n    } else if ((m = /^color\\(\\s*srgb\\s*([0-9]*\\.?[0-9]+)\\s+([0-9]*\\.?[0-9]+)\\s+([0-9]*\\.?[0-9]+)\\s*(\\/\\s+([0-9]*\\.?[0-9]+))?\\)/.exec(color))) {\n        ret = new RGB(\n            parseFloat(m[1]),\n            parseFloat(m[2]),\n            parseFloat(m[3]),\n            parseFloat(m[5] || '1'));\n    }\n\n    if (ret) {\n        ret.match = m;\n    } else if (!safe) {\n        throw new Error(\"Cannot parse color: \" + color);\n    }\n\n    return ret;\n}\n","import Class from '../class';\nimport namedColors from './named-colors';\nimport { Bytes, RGB, HSV, HSL } from './parse-color';\n\nvar DARK_TRESHOLD = 180;\n\nvar Color = (function (Class) {\n    function Color(value) {\n        var this$1 = this;\n\n        Class.call(this);\n\n        if (arguments.length === 1) {\n            var formats = Color.formats;\n            var resolvedColor = this.resolveColor(value);\n\n            for (var idx = 0; idx < formats.length; idx++) {\n                var formatRegex = formats[idx].re;\n                var processor = formats[idx].process;\n                var parts = formatRegex.exec(resolvedColor);\n\n                if (parts) {\n                    var channels = processor(parts);\n                    this$1.r = channels[0];\n                    this$1.g = channels[1];\n                    this$1.b = channels[2];\n                }\n            }\n        } else {\n            this.r = arguments[0];\n            this.g = arguments[1];\n            this.b = arguments[2];\n        }\n\n        this.r = this.normalizeByte(this.r);\n        this.g = this.normalizeByte(this.g);\n        this.b = this.normalizeByte(this.b);\n    }\n\n    if ( Class ) Color.__proto__ = Class;\n    Color.prototype = Object.create( Class && Class.prototype );\n    Color.prototype.constructor = Color;\n\n    Color.prototype.toHex = function toHex () {\n        var pad = this.padDigit;\n        var r = this.r.toString(16);\n        var g = this.g.toString(16);\n        var b = this.b.toString(16);\n\n        return \"#\" + pad(r) + pad(g) + pad(b);\n    };\n\n    Color.prototype.resolveColor = function resolveColor (value) {\n        var color = value || \"black\";\n\n        if (color.charAt(0) === \"#\") {\n            color = color.substr(1, 6);\n        }\n\n        color = color.replace(/ /g, \"\");\n        color = color.toLowerCase();\n        color = Color.namedColors[color] || color;\n\n        return color;\n    };\n\n    Color.prototype.normalizeByte = function normalizeByte (value) {\n        if (value < 0 || isNaN(value)) {\n            return 0;\n        }\n\n        return value > 255 ? 255 : value;\n    };\n\n    Color.prototype.padDigit = function padDigit (value) {\n        return (value.length === 1) ? \"0\" + value : value;\n    };\n\n    Color.prototype.brightness = function brightness (value) {\n        var round = Math.round;\n\n        this.r = round(this.normalizeByte(this.r * value));\n        this.g = round(this.normalizeByte(this.g * value));\n        this.b = round(this.normalizeByte(this.b * value));\n\n        return this;\n    };\n\n    Color.prototype.percBrightness = function percBrightness () {\n        return Math.sqrt(0.241 * this.r * this.r + 0.691 * this.g * this.g + 0.068 * this.b * this.b);\n    };\n\n    Color.prototype.isDark = function isDark () {\n        return this.percBrightness() < DARK_TRESHOLD;\n    };\n\n    Color.fromBytes = function fromBytes (r, g, b, a) {\n        return new Bytes(r, g, b, a != null ? a : 1);\n    };\n\n    Color.fromRGB = function fromRGB (r, g, b, a) {\n        return new RGB(r, g, b, a != null ? a : 1);\n    };\n\n    Color.fromHSV = function fromHSV (h, s, v, a) {\n        return new HSV(h, s, v, a != null ? a : 1);\n    };\n\n    Color.fromHSL = function fromHSL (h, s, l, a) {\n        return new HSL(h, s, l, a != null ? a : 1);\n    };\n\n    return Color;\n}(Class));\n\nColor.formats = [ {\n    re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n    process: function(parts) {\n        return [\n            parseInt(parts[1], 10), parseInt(parts[2], 10), parseInt(parts[3], 10)\n        ];\n    }\n}, {\n    re: /^(\\w{2})(\\w{2})(\\w{2})$/,\n    process: function(parts) {\n        return [\n            parseInt(parts[1], 16), parseInt(parts[2], 16), parseInt(parts[3], 16)\n        ];\n    }\n}, {\n    re: /^(\\w{1})(\\w{1})(\\w{1})$/,\n    process: function(parts) {\n        return [\n            parseInt(parts[1] + parts[1], 16),\n            parseInt(parts[2] + parts[2], 16),\n            parseInt(parts[3] + parts[3], 16)\n        ];\n    }\n} ];\n\nColor.namedColors = namedColors;\n\nexport default Color;","import { Color } from '@progress/kendo-drawing';\nimport { WHITE, BLACK } from './constants';\n\nfunction autoTextColor(color) {\n    var isDark = new Color(color).isDark();\n    if (isDark) {\n        return WHITE;\n    }\n\n    return BLACK;\n}\n\nexport default autoTextColor;\n","var DELETED = {};\n\nvar LegacySet = function LegacySet(values) {\n    var this$1 = this;\n\n    this._index = {};\n    this._values = values ? values.slice(0) : [];\n\n    for (var i = 0; i < this._values.length; i++) {\n        this$1._index[this$1._values[i]] = i;\n    }\n};\n\nvar prototypeAccessors = { size: { configurable: true } };\n\nLegacySet.prototype.values = function values () {\n    return this._values.filter(function (item) { return item !== DELETED; });\n};\n\nLegacySet.prototype.has = function has (value) {\n    return this._index[value] !== undefined;\n};\n\nLegacySet.prototype.add = function add (value) {\n    if (!this.has(value)) {\n        this._index[value] = this._values.length;\n        this._values.push(value);\n    }\n};\n\nLegacySet.prototype.delete = function delete$1 (value) {\n    var index = this._index[value];\n    if (index !== undefined) {\n        this._values[index] = DELETED;\n        delete this._index[value];\n    }\n};\n\nLegacySet.prototype.clear = function clear () {\n    this._index = {};\n    this._values = [];\n};\n\nprototypeAccessors.size.get = function () {\n    return this._values.length;\n};\n\nObject.defineProperties( LegacySet.prototype, prototypeAccessors );\n\nvar SetWrapper = function SetWrapper(values) {\n    this._set = new Set(values);\n};\n\nvar prototypeAccessors$1 = { size: { configurable: true } };\n\nSetWrapper.prototype.values = function values () {\n    return Array.from(this._set);\n};\n\nSetWrapper.prototype.has = function has (value) {\n    return this._set.has(value);\n};\n\nSetWrapper.prototype.add = function add (value) {\n    this._set.add(value);\n};\n\nSetWrapper.prototype.delete = function delete$2 (value) {\n    this._set.delete(value);\n};\n\nSetWrapper.prototype.clear = function clear () {\n    this._set.clear();\n};\n\nprototypeAccessors$1.size.get = function () {\n    return this._set.size;\n};\n\nObject.defineProperties( SetWrapper.prototype, prototypeAccessors$1 );\n\n// TODO: Drop LegacySet when removing support for IE10\nvar supportsSet = function () {\n    var supported = false;\n\n    if (typeof Set === 'function') {\n        var set = new Set([1]);\n        supported = set.has(1);\n    }\n\n    return supported;\n};\n\nexport default function createHashSet(values) {\n    if (supportsSet()) {\n        return new SetWrapper(values);\n    }\n\n    return new LegacySet(values);\n}\n","export default function defaultErrorHandler(error) {\n    throw error;\n}\n","var keys = {\n    INSERT: 45,\n    DELETE: 46,\n    BACKSPACE: 8,\n    TAB: 9,\n    ENTER: 13,\n    ESC: 27,\n    LEFT: 37,\n    UP: 38,\n    RIGHT: 39,\n    DOWN: 40,\n    END: 35,\n    HOME: 36,\n    SPACEBAR: 32,\n    PAGEUP: 33,\n    PAGEDOWN: 34,\n    F2: 113,\n    F10: 121,\n    F12: 123,\n    NUMPAD_PLUS: 107,\n    NUMPAD_MINUS: 109,\n    NUMPAD_DOT: 110\n};\n\nexport default keys;\n","import { DEFAULT_PRECISION } from '../../common/constants';\nimport { round } from '../../common';\n\nexport default function autoMajorUnit(min, max) {\n    var diff = round(max - min, DEFAULT_PRECISION - 1);\n\n    if (diff === 0) {\n        if (max === 0) {\n            return 0.1;\n        }\n\n        diff = Math.abs(max);\n    }\n\n    var scale = Math.pow(10, Math.floor(Math.log(diff) / Math.log(10)));\n    var relativeValue = round((diff / scale), DEFAULT_PRECISION);\n    var scaleMultiplier = 1;\n\n    if (relativeValue < 1.904762) {\n        scaleMultiplier = 0.2;\n    } else if (relativeValue < 4.761904) {\n        scaleMultiplier = 0.5;\n    } else if (relativeValue < 9.523809) {\n        scaleMultiplier = 1;\n    } else {\n        scaleMultiplier = 2;\n    }\n\n    return round(scale * scaleMultiplier, DEFAULT_PRECISION);\n}","import { COORD_PRECISION } from '../common/constants';\nimport { Class, rad, round } from '../common';\n\nvar Point = (function (Class) {\n    function Point(x, y) {\n        Class.call(this);\n\n        this.x = x || 0;\n        this.y = y || 0;\n    }\n\n    if ( Class ) Point.__proto__ = Class;\n    Point.prototype = Object.create( Class && Class.prototype );\n    Point.prototype.constructor = Point;\n\n    Point.prototype.clone = function clone () {\n        return new Point(this.x, this.y);\n    };\n\n    Point.prototype.equals = function equals (point) {\n        return point && this.x === point.x && this.y === point.y;\n    };\n\n    Point.prototype.rotate = function rotate (center, degrees) {\n        var theta = rad(degrees);\n        var cosT = Math.cos(theta);\n        var sinT = Math.sin(theta);\n        var cx = center.x;\n        var cy = center.y;\n        var ref = this;\n        var x = ref.x;\n        var y = ref.y;\n\n        this.x = round(\n            cx + (x - cx) * cosT + (y - cy) * sinT,\n            COORD_PRECISION\n        );\n\n        this.y = round(\n            cy + (y - cy) * cosT - (x - cx) * sinT,\n            COORD_PRECISION\n        );\n\n        return this;\n    };\n\n    Point.prototype.multiply = function multiply (a) {\n\n        this.x *= a;\n        this.y *= a;\n\n        return this;\n    };\n\n    Point.prototype.distanceTo = function distanceTo (point) {\n        var dx = this.x - point.x;\n        var dy = this.y - point.y;\n\n        return Math.sqrt(dx * dx + dy * dy);\n    };\n\n    Point.onCircle = function onCircle (center, angle, radius) {\n        var radians = rad(angle);\n\n        return new Point(\n            center.x - radius * Math.cos(radians),\n            center.y - radius * Math.sin(radians)\n        );\n    };\n\n    return Point;\n}(Class));\n\n\nexport default Point;","import { Class } from '../common';\n\nvar HasObservers = (function (Class) {\n    function HasObservers () {\n        Class.apply(this, arguments);\n    }\n\n    if ( Class ) HasObservers.__proto__ = Class;\n    HasObservers.prototype = Object.create( Class && Class.prototype );\n    HasObservers.prototype.constructor = HasObservers;\n\n    HasObservers.prototype.observers = function observers () {\n        this._observers = this._observers || [];\n        return this._observers;\n    };\n\n    HasObservers.prototype.addObserver = function addObserver (element) {\n        if (!this._observers) {\n            this._observers = [ element ];\n        } else {\n            this._observers.push(element);\n        }\n        return this;\n    };\n\n    HasObservers.prototype.removeObserver = function removeObserver (element) {\n        var observers = this.observers();\n        var index = observers.indexOf(element);\n        if (index !== -1) {\n            observers.splice(index, 1);\n        }\n        return this;\n    };\n\n    HasObservers.prototype.trigger = function trigger (methodName, event) {\n        var observers = this._observers;\n\n        if (observers && !this._suspended) {\n            for (var idx = 0; idx < observers.length; idx++) {\n                var observer = observers[idx];\n                if (observer[methodName]) {\n                    observer[methodName](event);\n                }\n            }\n        }\n        return this;\n    };\n\n    HasObservers.prototype.optionsChange = function optionsChange (e) {\n        if ( e === void 0 ) e = {};\n\n        e.element = this;\n        this.trigger(\"optionsChange\", e);\n    };\n\n    HasObservers.prototype.geometryChange = function geometryChange () {\n        this.trigger(\"geometryChange\", {\n            element: this\n        });\n    };\n\n    HasObservers.prototype.suspend = function suspend () {\n        this._suspended = (this._suspended || 0) + 1;\n        return this;\n    };\n\n    HasObservers.prototype.resume = function resume () {\n        this._suspended = Math.max((this._suspended || 0) - 1, 0);\n        return this;\n    };\n\n    HasObservers.prototype._observerField = function _observerField (field, value) {\n        if (this[field]) {\n            this[field].removeObserver(this);\n        }\n        this[field] = value;\n        value.addObserver(this);\n    };\n\n    return HasObservers;\n}(Class));\n\nexport default HasObservers;\n\n","function setAccessor(field) {\n    return function(value) {\n        if (this[field] !== value) {\n            this[field] = value;\n            this.geometryChange();\n        }\n\n        return this;\n    };\n}\n\nfunction getAccessor(field) {\n    return function() {\n        return this[field];\n    };\n}\n\nfunction defineAccessors(fn, fields) {\n    for (var i = 0; i < fields.length; i++) {\n        var name = fields[i];\n        var capitalized = name.charAt(0).toUpperCase() +\n                          name.substring(1, name.length);\n\n        fn[\"set\" + capitalized] = setAccessor(name);\n        fn[\"get\" + capitalized] = getAccessor(name);\n    }\n}\n\nvar withAccessors = function (TBase, names) {\n    var result = (function (TBase) {\n        function result () {\n            TBase.apply(this, arguments);\n        }if ( TBase ) result.__proto__ = TBase;\n        result.prototype = Object.create( TBase && TBase.prototype );\n        result.prototype.constructor = result;\n\n        \n\n        return result;\n    }(TBase));\n    defineAccessors(result.prototype, names);\n\n    return result;\n};\n\nexport default withAccessors;\n","export default function toMatrix(transformation) {\n    if (transformation && typeof transformation.matrix === \"function\") {\n        return transformation.matrix();\n    }\n\n    return transformation;\n}","import withAccessors from '../mixins/with-accessors';\nimport HasObservers from '../core/has-observers';\nimport { defined, MIN_NUM, MAX_NUM, round } from '../util';\nimport Matrix from './matrix';\nimport toMatrix from './to-matrix';\n\n\nvar Point = (function (superclass) {\n    function Point(x, y) {\n        superclass.call(this);\n\n        this.x = x || 0;\n        this.y = y || 0;\n    }\n\n    if ( superclass ) Point.__proto__ = superclass;\n    Point.prototype = Object.create( superclass && superclass.prototype );\n    Point.prototype.constructor = Point;\n\n    var staticAccessors = { ZERO: { configurable: true } };\n\n    Point.prototype.equals = function equals (other) {\n        return other && other.x === this.x && other.y === this.y;\n    };\n\n    Point.prototype.clone = function clone () {\n        return new Point(this.x, this.y);\n    };\n\n    Point.prototype.rotate = function rotate (angle, origin) {\n        var originPoint = Point.create(origin) || Point.ZERO;\n\n        return this.transform(Matrix.rotate(angle, originPoint.x, originPoint.y));\n    };\n\n    Point.prototype.translate = function translate (x, y) {\n        this.x += x;\n        this.y += y;\n\n        this.geometryChange();\n\n        return this;\n    };\n\n    Point.prototype.translateWith = function translateWith (point) {\n        return this.translate(point.x, point.y);\n    };\n\n    Point.prototype.move = function move (x, y) {\n        this.x = this.y = 0;\n        return this.translate(x, y);\n    };\n\n    Point.prototype.scale = function scale (scaleX, scaleY) {\n        if ( scaleY === void 0 ) scaleY = scaleX;\n\n        this.x *= scaleX;\n        this.y *= scaleY;\n\n        this.geometryChange();\n\n        return this;\n    };\n\n    Point.prototype.scaleCopy = function scaleCopy (scaleX, scaleY) {\n        return this.clone().scale(scaleX, scaleY);\n    };\n\n    Point.prototype.transform = function transform (transformation) {\n        var matrix = toMatrix(transformation);\n        var ref = this;\n        var x = ref.x;\n        var y = ref.y;\n\n        this.x = matrix.a * x + matrix.c * y + matrix.e;\n        this.y = matrix.b * x + matrix.d * y + matrix.f;\n\n        this.geometryChange();\n\n        return this;\n    };\n\n    Point.prototype.transformCopy = function transformCopy (transformation) {\n        var point = this.clone();\n\n        if (transformation) {\n            point.transform(transformation);\n        }\n\n        return point;\n    };\n\n    Point.prototype.distanceTo = function distanceTo (point) {\n        var dx = this.x - point.x;\n        var dy = this.y - point.y;\n\n        return Math.sqrt(dx * dx + dy * dy);\n    };\n\n    Point.prototype.round = function round$1 (digits) {\n        this.x = round(this.x, digits);\n        this.y = round(this.y, digits);\n\n        this.geometryChange();\n\n        return this;\n    };\n\n    Point.prototype.toArray = function toArray (digits) {\n        var doRound = defined(digits);\n        var x = doRound ? round(this.x, digits) : this.x;\n        var y = doRound ? round(this.y, digits) : this.y;\n\n        return [ x, y ];\n    };\n\n    Point.prototype.toString = function toString (digits, separator) {\n        if ( separator === void 0 ) separator = \" \";\n\n        var ref = this;\n        var x = ref.x;\n        var y = ref.y;\n\n        if (defined(digits)) {\n            x = round(x, digits);\n            y = round(y, digits);\n        }\n\n        return x + separator + y;\n    };\n\n    Point.create = function create (arg0, arg1) {\n        if (defined(arg0)) {\n            if (arg0 instanceof Point) {\n                return arg0;\n            } else if (arguments.length === 1 && arg0.length === 2) {\n                return new Point(arg0[0], arg0[1]);\n            }\n\n            return new Point(arg0, arg1);\n        }\n    };\n\n    Point.min = function min () {\n        var arguments$1 = arguments;\n\n        var minX = MAX_NUM;\n        var minY = MAX_NUM;\n\n        for (var i = 0; i < arguments.length; i++) {\n            var point = arguments$1[i];\n            minX = Math.min(point.x, minX);\n            minY = Math.min(point.y, minY);\n        }\n\n        return new Point(minX, minY);\n    };\n\n    Point.max = function max () {\n        var arguments$1 = arguments;\n\n        var maxX = MIN_NUM;\n        var maxY = MIN_NUM;\n\n        for (var i = 0; i < arguments.length; i++) {\n            var point = arguments$1[i];\n            maxX = Math.max(point.x, maxX);\n            maxY = Math.max(point.y, maxY);\n        }\n\n        return new Point(maxX, maxY);\n    };\n\n    Point.minPoint = function minPoint () {\n        return new Point(MIN_NUM, MIN_NUM);\n    };\n\n    Point.maxPoint = function maxPoint () {\n        return new Point(MAX_NUM, MAX_NUM);\n    };\n\n    staticAccessors.ZERO.get = function () {\n        return new Point(0, 0);\n    };\n\n    Object.defineProperties( Point, staticAccessors );\n\n    return Point;\n}(withAccessors(HasObservers, [ \"x\", \"y\" ])));\n\nexport default Point;\n","import HasObservers from '../core/has-observers';\nimport withAccessors from '../mixins/with-accessors';\nimport { defined, round } from '../util';\n\n\nvar Size = (function (superclass) {\n    function Size(width, height) {\n        superclass.call(this);\n\n        this.width = width || 0;\n        this.height = height || 0;\n    }\n\n    if ( superclass ) Size.__proto__ = superclass;\n    Size.prototype = Object.create( superclass && superclass.prototype );\n    Size.prototype.constructor = Size;\n\n    var staticAccessors = { ZERO: { configurable: true } };\n\n    Size.prototype.equals = function equals (other) {\n        return other && other.width === this.width && other.height === this.height;\n    };\n\n    Size.prototype.clone = function clone () {\n        return new Size(this.width, this.height);\n    };\n\n    Size.prototype.toArray = function toArray (digits) {\n        var doRound = defined(digits);\n        var width = doRound ? round(this.width, digits) : this.width;\n        var height = doRound ? round(this.height, digits) : this.height;\n\n        return [ width, height ];\n    };\n\n    Size.create = function create (arg0, arg1) {\n        if (defined(arg0)) {\n            if (arg0 instanceof Size) {\n                return arg0;\n            } else if (arguments.length === 1 && arg0.length === 2) {\n                return new Size(arg0[0], arg0[1]);\n            }\n\n            return new Size(arg0, arg1);\n        }\n    };\n\n    staticAccessors.ZERO.get = function () {\n        return new Size(0, 0);\n    };\n\n    Object.defineProperties( Size, staticAccessors );\n\n    return Size;\n}(withAccessors(HasObservers, [ \"width\", \"height\" ])));\n\nexport default Size;\n","import HasObservers from '../core/has-observers';\nimport Point from './point';\nimport Size from './size';\n\nvar Rect = (function (HasObservers) {\n    function Rect(origin, size, cornerRadius) {\n        if ( origin === void 0 ) origin = new Point();\n        if ( size === void 0 ) size = new Size();\n        if ( cornerRadius === void 0 ) cornerRadius = 0;\n\n        HasObservers.call(this);\n\n        this.setOrigin(origin);\n        this.setSize(size);\n        this.setCornerRadius(cornerRadius);\n    }\n\n    if ( HasObservers ) Rect.__proto__ = HasObservers;\n    Rect.prototype = Object.create( HasObservers && HasObservers.prototype );\n    Rect.prototype.constructor = Rect;\n\n    Rect.prototype.clone = function clone () {\n        return new Rect(\n            this.origin.clone(),\n            this.size.clone()\n        );\n    };\n\n    Rect.prototype.equals = function equals (other) {\n        return other &&\n               other.origin.equals(this.origin) &&\n               other.size.equals(this.size);\n    };\n\n    Rect.prototype.setOrigin = function setOrigin (value) {\n        this._observerField(\"origin\", Point.create(value));\n        this.geometryChange();\n        return this;\n    };\n\n    Rect.prototype.getOrigin = function getOrigin () {\n        return this.origin;\n    };\n\n    Rect.prototype.setCornerRadius = function setCornerRadius (radius) {\n        this.cornerRadius = Array.isArray(radius) ? radius : [ radius, radius ];\n\n        this.geometryChange();\n        return this;\n    };\n\n    Rect.prototype.getCornerRadius = function getCornerRadius () {\n        return this.cornerRadius;\n    };\n\n    Rect.prototype.setSize = function setSize (value) {\n        this._observerField(\"size\", Size.create(value));\n        this.geometryChange();\n        return this;\n    };\n\n    Rect.prototype.getSize = function getSize () {\n        return this.size;\n    };\n\n    Rect.prototype.width = function width () {\n        return this.size.width;\n    };\n\n    Rect.prototype.height = function height () {\n        return this.size.height;\n    };\n\n    Rect.prototype.topLeft = function topLeft () {\n        return this.origin.clone();\n    };\n\n    Rect.prototype.bottomRight = function bottomRight () {\n        return this.origin.clone().translate(this.width(), this.height());\n    };\n\n    Rect.prototype.topRight = function topRight () {\n        return this.origin.clone().translate(this.width(), 0);\n    };\n\n    Rect.prototype.bottomLeft = function bottomLeft () {\n        return this.origin.clone().translate(0, this.height());\n    };\n\n    Rect.prototype.center = function center () {\n        return this.origin.clone().translate(this.width() / 2, this.height() / 2);\n    };\n\n    Rect.prototype.bbox = function bbox (matrix) {\n        var tl = this.topLeft().transformCopy(matrix);\n        var tr = this.topRight().transformCopy(matrix);\n        var br = this.bottomRight().transformCopy(matrix);\n        var bl = this.bottomLeft().transformCopy(matrix);\n\n        return Rect.fromPoints(tl, tr, br, bl);\n    };\n\n    Rect.prototype.transformCopy = function transformCopy (m) {\n        return Rect.fromPoints(\n            this.topLeft().transform(m),\n            this.bottomRight().transform(m)\n        );\n    };\n\n    Rect.prototype.expand = function expand (x, y) {\n        if ( y === void 0 ) y = x;\n\n\n        this.size.width += 2 * x;\n        this.size.height += 2 * y;\n\n        this.origin.translate(-x, -y);\n\n        return this;\n    };\n\n    Rect.prototype.expandCopy = function expandCopy (x, y) {\n        return this.clone().expand(x, y);\n    };\n\n    Rect.prototype.containsPoint = function containsPoint (point) {\n        var origin = this.origin;\n        var bottomRight = this.bottomRight();\n        return !(point.x < origin.x || point.y < origin.y || bottomRight.x < point.x || bottomRight.y < point.y);\n    };\n\n    Rect.prototype._isOnPath = function _isOnPath (point, width) {\n        var rectOuter = this.expandCopy(width, width);\n        var rectInner = this.expandCopy(-width, -width);\n\n        return rectOuter.containsPoint(point) && !rectInner.containsPoint(point);\n    };\n\n    Rect.fromPoints = function fromPoints () {\n        var topLeft = Point.min.apply(null, arguments);\n        var bottomRight = Point.max.apply(null, arguments);\n        var size = new Size(\n            bottomRight.x - topLeft.x,\n            bottomRight.y - topLeft.y\n        );\n\n        return new Rect(topLeft, size);\n    };\n\n    Rect.union = function union (a, b) {\n        return Rect.fromPoints(\n            Point.min(a.topLeft(), b.topLeft()),\n            Point.max(a.bottomRight(), b.bottomRight())\n        );\n    };\n\n    Rect.intersect = function intersect (a, b) {\n        var rect1 = {\n            left: a.topLeft().x,\n            top: a.topLeft().y,\n            right: a.bottomRight().x,\n            bottom: a.bottomRight().y\n        };\n\n        var rect2 = {\n            left: b.topLeft().x,\n            top: b.topLeft().y,\n            right: b.bottomRight().x,\n            bottom: b.bottomRight().y\n        };\n\n        if (rect1.left <= rect2.right &&\n            rect2.left <= rect1.right &&\n            rect1.top <= rect2.bottom &&\n            rect2.top <= rect1.bottom) {\n            return Rect.fromPoints(\n                new Point(Math.max(rect1.left, rect2.left), Math.max(rect1.top, rect2.top)),\n                new Point(Math.min(rect1.right, rect2.right), Math.min(rect1.bottom, rect2.bottom))\n            );\n        }\n    };\n\n    return Rect;\n}(HasObservers));\n\nexport default Rect;\n","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport Point from './point';\n\nimport { X, Y, TOP, BOTTOM, LEFT, RIGHT, CENTER, WIDTH, HEIGHT } from '../common/constants';\nimport { Class, defined, getSpacing, inArray, isArray, rad } from '../common';\n\nvar Box = (function (Class) {\n    function Box(x1, y1, x2, y2) {\n        Class.call(this);\n\n        this.x1 = x1 || 0;\n        this.y1 = y1 || 0;\n        this.x2 = x2 || 0;\n        this.y2 = y2 || 0;\n    }\n\n    if ( Class ) Box.__proto__ = Class;\n    Box.prototype = Object.create( Class && Class.prototype );\n    Box.prototype.constructor = Box;\n\n    Box.prototype.equals = function equals (box) {\n        return this.x1 === box.x1 && this.x2 === box.x2 &&\n            this.y1 === box.y1 && this.y2 === box.y2;\n    };\n\n    Box.prototype.width = function width () {\n        return this.x2 - this.x1;\n    };\n\n    Box.prototype.height = function height () {\n        return this.y2 - this.y1;\n    };\n\n    Box.prototype.translate = function translate (dx, dy) {\n        this.x1 += dx;\n        this.x2 += dx;\n        this.y1 += dy;\n        this.y2 += dy;\n\n        return this;\n    };\n\n    Box.prototype.move = function move (x, y) {\n        var height = this.height();\n        var width = this.width();\n\n        if (defined(x)) {\n            this.x1 = x;\n            this.x2 = this.x1 + width;\n        }\n\n        if (defined(y)) {\n            this.y1 = y;\n            this.y2 = this.y1 + height;\n        }\n\n        return this;\n    };\n\n    Box.prototype.wrap = function wrap (targetBox) {\n        this.x1 = Math.min(this.x1, targetBox.x1);\n        this.y1 = Math.min(this.y1, targetBox.y1);\n        this.x2 = Math.max(this.x2, targetBox.x2);\n        this.y2 = Math.max(this.y2, targetBox.y2);\n\n        return this;\n    };\n\n    Box.prototype.wrapPoint = function wrapPoint (point) {\n        var arrayPoint = isArray(point);\n        var x = arrayPoint ? point[0] : point.x;\n        var y = arrayPoint ? point[1] : point.y;\n        this.wrap(new Box(x, y, x, y));\n\n        return this;\n    };\n\n    Box.prototype.snapTo = function snapTo (targetBox, axis) {\n\n        if (axis === X || !axis) {\n            this.x1 = targetBox.x1;\n            this.x2 = targetBox.x2;\n        }\n\n        if (axis === Y || !axis) {\n            this.y1 = targetBox.y1;\n            this.y2 = targetBox.y2;\n        }\n\n        return this;\n    };\n\n    Box.prototype.alignTo = function alignTo (targetBox, anchor) {\n        var height = this.height();\n        var width = this.width();\n        var axis = anchor === TOP || anchor === BOTTOM ? Y : X;\n        var offset = axis === Y ? height : width;\n\n        if (anchor === CENTER) {\n            var targetCenter = targetBox.center();\n            var center = this.center();\n\n            this.x1 += targetCenter.x - center.x;\n            this.y1 += targetCenter.y - center.y;\n        } else if (anchor === TOP || anchor === LEFT) {\n            this[axis + 1] = targetBox[axis + 1] - offset;\n        } else {\n            this[axis + 1] = targetBox[axis + 2];\n        }\n\n        this.x2 = this.x1 + width;\n        this.y2 = this.y1 + height;\n\n        return this;\n    };\n\n    Box.prototype.shrink = function shrink (dw, dh) {\n\n        this.x2 -= dw;\n        this.y2 -= dh;\n\n        return this;\n    };\n\n    Box.prototype.expand = function expand (dw, dh) {\n        this.shrink(-dw, -dh);\n        return this;\n    };\n\n    Box.prototype.pad = function pad (padding) {\n        var spacing = getSpacing(padding);\n\n        this.x1 -= spacing.left;\n        this.x2 += spacing.right;\n        this.y1 -= spacing.top;\n        this.y2 += spacing.bottom;\n\n        return this;\n    };\n\n    Box.prototype.unpad = function unpad (padding) {\n        var spacing = getSpacing(padding);\n\n        spacing.left = -spacing.left;\n        spacing.top = -spacing.top;\n        spacing.right = -spacing.right;\n        spacing.bottom = -spacing.bottom;\n\n        return this.pad(spacing);\n    };\n\n    Box.prototype.clone = function clone () {\n        return new Box(this.x1, this.y1, this.x2, this.y2);\n    };\n\n    Box.prototype.center = function center () {\n        return new Point(\n            this.x1 + this.width() / 2,\n            this.y1 + this.height() / 2\n        );\n    };\n\n    Box.prototype.containsPoint = function containsPoint (point) {\n\n        return point.x >= this.x1 && point.x <= this.x2 &&\n               point.y >= this.y1 && point.y <= this.y2;\n    };\n\n    Box.prototype.points = function points () {\n        return [\n            new Point(this.x1, this.y1),\n            new Point(this.x2, this.y1),\n            new Point(this.x2, this.y2),\n            new Point(this.x1, this.y2)\n        ];\n    };\n\n    Box.prototype.getHash = function getHash () {\n        return [ this.x1, this.y1, this.x2, this.y2 ].join(\",\");\n    };\n\n    Box.prototype.overlaps = function overlaps (box) {\n        return !(box.y2 < this.y1 || this.y2 < box.y1 || box.x2 < this.x1 || this.x2 < box.x1);\n    };\n\n    Box.prototype.rotate = function rotate (rotation) {\n        var width = this.width();\n        var height = this.height();\n        var ref = this.center();\n        var cx = ref.x;\n        var cy = ref.y;\n\n        var r1 = rotatePoint(0, 0, cx, cy, rotation);\n        var r2 = rotatePoint(width, 0, cx, cy, rotation);\n        var r3 = rotatePoint(width, height, cx, cy, rotation);\n        var r4 = rotatePoint(0, height, cx, cy, rotation);\n\n        width = Math.max(r1.x, r2.x, r3.x, r4.x) - Math.min(r1.x, r2.x, r3.x, r4.x);\n        height = Math.max(r1.y, r2.y, r3.y, r4.y) - Math.min(r1.y, r2.y, r3.y, r4.y);\n\n        this.x2 = this.x1 + width;\n        this.y2 = this.y1 + height;\n\n        return this;\n    };\n\n    Box.prototype.toRect = function toRect () {\n        return new geom.Rect([ this.x1, this.y1 ], [ this.width(), this.height() ]);\n    };\n\n    Box.prototype.hasSize = function hasSize () {\n        return this.width() !== 0 && this.height() !== 0;\n    };\n\n    Box.prototype.align = function align (targetBox, axis, alignment) {\n        var c1 = axis + 1;\n        var c2 = axis + 2;\n        var sizeFunc = axis === X ? WIDTH : HEIGHT;\n        var size = this[sizeFunc]();\n\n        if (inArray(alignment, [ LEFT, TOP ])) {\n            this[c1] = targetBox[c1];\n            this[c2] = this[c1] + size;\n        } else if (inArray(alignment, [ RIGHT, BOTTOM ])) {\n            this[c2] = targetBox[c2];\n            this[c1] = this[c2] - size;\n        } else if (alignment === CENTER) {\n            this[c1] = targetBox[c1] + (targetBox[sizeFunc]() - size) / 2;\n            this[c2] = this[c1] + size;\n        }\n    };\n\n    return Box;\n}(Class));\n\nfunction rotatePoint(x, y, cx, cy, angle) {\n    var theta = rad(angle);\n\n    return new Point(\n        cx + (x - cx) * Math.cos(theta) + (y - cy) * Math.sin(theta),\n        cy - (x - cx) * Math.sin(theta) + (y - cy) * Math.cos(theta)\n    );\n}\n\nexport default Box;\n","import Box from './box';\nimport Point from './point';\nimport { COORD_PRECISION, MAX_VALUE, MIN_VALUE } from '../common/constants';\nimport { Class, clockwise, rad, round } from '../common';\n\nvar Ring = (function (Class) {\n    function Ring(center, innerRadius, radius, startAngle, angle) {\n        Class.call(this);\n\n        this.center = center;\n        this.innerRadius = innerRadius;\n        this.radius = radius;\n        this.startAngle = startAngle;\n        this.angle = angle;\n    }\n\n    if ( Class ) Ring.__proto__ = Class;\n    Ring.prototype = Object.create( Class && Class.prototype );\n    Ring.prototype.constructor = Ring;\n\n    Ring.prototype.clone = function clone () {\n        return new Ring(this.center, this.innerRadius, this.radius, this.startAngle, this.angle);\n    };\n\n    Ring.prototype.middle = function middle () {\n        return this.startAngle + this.angle / 2;\n    };\n\n    Ring.prototype.setRadius = function setRadius (newRadius, innerRadius) {\n        if (innerRadius) {\n            this.innerRadius = newRadius;\n        } else {\n            this.radius = newRadius;\n        }\n\n        return this;\n    };\n\n    // TODO: Remove and replace with Point.onCircle\n    Ring.prototype.point = function point (angle, innerRadius) {\n        var radianAngle = rad(angle);\n        var ax = Math.cos(radianAngle);\n        var ay = Math.sin(radianAngle);\n        var radius = innerRadius ? this.innerRadius : this.radius;\n        var x = round(this.center.x - (ax * radius), COORD_PRECISION);\n        var y = round(this.center.y - (ay * radius), COORD_PRECISION);\n\n        return new Point(x, y);\n    };\n\n    Ring.prototype.adjacentBox = function adjacentBox (distance, width, height) {\n        var sector = this.clone().expand(distance);\n        var midAndle = sector.middle();\n        var midPoint = sector.point(midAndle);\n        var hw = width / 2;\n        var hh = height / 2;\n        var sa = Math.sin(rad(midAndle));\n        var ca = Math.cos(rad(midAndle));\n        var x = midPoint.x - hw;\n        var y = midPoint.y - hh;\n\n        if (Math.abs(sa) < 0.9) {\n            x += hw * -ca / Math.abs(ca);\n        }\n\n        if (Math.abs(ca) < 0.9) {\n            y += hh * -sa / Math.abs(sa);\n        }\n\n        return new Box(x, y, x + width, y + height);\n    };\n\n    Ring.prototype.containsPoint = function containsPoint (p) {\n        var center = this.center;\n        var innerRadius = this.innerRadius;\n        var radius = this.radius;\n        var startAngle = this.startAngle;\n        var endAngle = this.startAngle + this.angle;\n        var dx = p.x - center.x;\n        var dy = p.y - center.y;\n        var vector = new Point(dx, dy);\n        var startPoint = this.point(startAngle);\n        var startVector = new Point(startPoint.x - center.x, startPoint.y - center.y);\n        var endPoint = this.point(endAngle);\n        var endVector = new Point(endPoint.x - center.x, endPoint.y - center.y);\n        var dist = round(dx * dx + dy * dy, COORD_PRECISION);\n\n        return (startVector.equals(vector) || clockwise(startVector, vector)) &&\n               !clockwise(endVector, vector) &&\n               dist >= innerRadius * innerRadius && dist <= radius * radius;\n    };\n\n    Ring.prototype.getBBox = function getBBox () {\n        var this$1 = this;\n\n        var box = new Box(MAX_VALUE, MAX_VALUE, MIN_VALUE, MIN_VALUE);\n        var startAngle = round(this.startAngle % 360);\n        var endAngle = round((startAngle + this.angle) % 360);\n        var innerRadius = this.innerRadius;\n        var allAngles = [ 0, 90, 180, 270, startAngle, endAngle ].sort(numericComparer);\n        var startAngleIndex = allAngles.indexOf(startAngle);\n        var endAngleIndex = allAngles.indexOf(endAngle);\n        var angles;\n\n        if (startAngle === endAngle) {\n            angles = allAngles;\n        } else {\n            if (startAngleIndex < endAngleIndex) {\n                angles = allAngles.slice(startAngleIndex, endAngleIndex + 1);\n            } else {\n                angles = [].concat(\n                    allAngles.slice(0, endAngleIndex + 1),\n                    allAngles.slice(startAngleIndex, allAngles.length)\n                );\n            }\n        }\n\n        for (var i = 0; i < angles.length; i++) {\n            var point = this$1.point(angles[i]);\n            box.wrapPoint(point);\n            box.wrapPoint(point, innerRadius);\n        }\n\n        if (!innerRadius) {\n            box.wrapPoint(this.center);\n        }\n\n        return box;\n    };\n\n    Ring.prototype.expand = function expand (value) {\n        this.radius += value;\n        return this;\n    };\n\n    return Ring;\n}(Class));\n\nfunction numericComparer(a, b) {\n    return a - b;\n}\n\nexport default Ring;","import Ring from './ring';\n\nvar Sector = (function (Ring) {\n    function Sector(center, radius, startAngle, angle) {\n        Ring.call(this, center, 0, radius, startAngle, angle);\n    }\n\n    if ( Ring ) Sector.__proto__ = Ring;\n    Sector.prototype = Object.create( Ring && Ring.prototype );\n    Sector.prototype.constructor = Sector;\n\n    Sector.prototype.expand = function expand (value) {\n        return Ring.prototype.expand.call(this, value);\n    };\n\n    Sector.prototype.clone = function clone () {\n        return new Sector(this.center, this.radius, this.startAngle, this.angle);\n    };\n\n    Sector.prototype.setRadius = function setRadius (newRadius) {\n        this.radius = newRadius;\n\n        return this;\n    };\n\n    return Sector;\n}(Ring));\n\nexport default Sector;","var PRECISION = 10;\n\nexport { PRECISION };","import { PRECISION } from '../constants';\n\nimport { round } from '../../util';\n\nexport default function close(a, b, tolerance) {\n    if ( tolerance === void 0 ) tolerance = PRECISION;\n\n    return round(Math.abs(a - b), tolerance) === 0;\n}","import close from './close';\n\nexport default function closeOrLess(a, b, tolerance) {\n    return a < b || close(a, b, tolerance);\n}","export default function ellipseExtremeAngles(center, rx, ry, matrix) {\n    var extremeX = 0;\n    var extremeY = 0;\n\n    if (matrix) {\n        extremeX = Math.atan2(matrix.c * ry, matrix.a * rx);\n        if (matrix.b !== 0) {\n            extremeY = Math.atan2(matrix.d * ry, matrix.b * rx);\n        }\n    }\n\n    return {\n        x: extremeX,\n        y: extremeY\n    };\n}","import HasObservers from '../core/has-observers';\nimport toMatrix from './to-matrix';\nimport Matrix from './matrix';\nimport Point from './point';\n\nvar Transformation = (function (HasObservers) {\n    function Transformation(matrix) {\n        if ( matrix === void 0 ) matrix = Matrix.unit();\n\n        HasObservers.call(this);\n\n        this._matrix = matrix;\n    }\n\n    if ( HasObservers ) Transformation.__proto__ = HasObservers;\n    Transformation.prototype = Object.create( HasObservers && HasObservers.prototype );\n    Transformation.prototype.constructor = Transformation;\n\n    Transformation.prototype.clone = function clone () {\n        return new Transformation(\n            this._matrix.clone()\n        );\n    };\n\n    Transformation.prototype.equals = function equals (other) {\n        return other &&\n               other._matrix.equals(this._matrix);\n    };\n\n    Transformation.prototype.translate = function translate (x, y) {\n        this._matrix = this._matrix.multiplyCopy(Matrix.translate(x, y));\n\n        this._optionsChange();\n        return this;\n    };\n\n    Transformation.prototype.scale = function scale (scaleX, scaleY, origin) {\n        if ( scaleY === void 0 ) scaleY = scaleX;\n        if ( origin === void 0 ) origin = null;\n\n        var originPoint = origin;\n\n        if (originPoint) {\n            originPoint = Point.create(originPoint);\n            this._matrix = this._matrix.multiplyCopy(Matrix.translate(originPoint.x, originPoint.y));\n        }\n\n        this._matrix = this._matrix.multiplyCopy(Matrix.scale(scaleX, scaleY));\n\n        if (originPoint) {\n            this._matrix = this._matrix.multiplyCopy(Matrix.translate(-originPoint.x, -originPoint.y));\n        }\n\n        this._optionsChange();\n        return this;\n    };\n\n    Transformation.prototype.rotate = function rotate (angle, origin) {\n        var originPoint = Point.create(origin) || Point.ZERO;\n\n        this._matrix = this._matrix.multiplyCopy(Matrix.rotate(angle, originPoint.x, originPoint.y));\n\n        this._optionsChange();\n        return this;\n    };\n\n    Transformation.prototype.multiply = function multiply (transformation) {\n        var matrix = toMatrix(transformation);\n\n        this._matrix = this._matrix.multiplyCopy(matrix);\n\n        this._optionsChange();\n        return this;\n    };\n\n    Transformation.prototype.matrix = function matrix (value) {\n        if (value) {\n            this._matrix = value;\n            this._optionsChange();\n            return this;\n        }\n\n        return this._matrix;\n    };\n\n    Transformation.prototype._optionsChange = function _optionsChange () {\n        this.optionsChange({\n            field: \"transform\",\n            value: this\n        });\n    };\n\n    return Transformation;\n}(HasObservers));\n\nexport default Transformation;\n","import Transformation from './transformation';\n\nexport default function transform(matrix) {\n    if (matrix === null) {\n        return null;\n    }\n\n    if (matrix instanceof Transformation) {\n        return matrix;\n    }\n\n    return new Transformation(matrix);\n}","import HasObservers from '../core/has-observers';\nimport { deg, rad, round } from '../util';\nimport withAccessors from '../mixins/with-accessors';\n\nimport closeOrLess from './math/close-or-less';\nimport lineIntersection from './math/line-intersection';\nimport ellipseExtremeAngles from './math/ellipse-extreme-angles';\n\nimport { PRECISION } from './constants';\nimport Point from './point';\nimport Rect from './rect';\nimport transform from './transform';\n\n\nvar MAX_INTERVAL = 45;\nvar pow = Math.pow;\nvar accessors = [ \"radiusX\", \"radiusY\", \"startAngle\", \"endAngle\", \"anticlockwise\" ];\n\nvar Arc = (function (superclass) {\n    function Arc(center, options) {\n        if ( center === void 0 ) center = new Point();\n        if ( options === void 0 ) options = {};\n\n        superclass.call(this);\n\n        this.setCenter(center);\n\n        this.radiusX = options.radiusX;\n        this.radiusY = options.radiusY || options.radiusX;\n        this.startAngle = options.startAngle;\n        this.endAngle = options.endAngle;\n        this.anticlockwise = options.anticlockwise || false;\n        this.xRotation = options.xRotation;\n    }\n\n    if ( superclass ) Arc.__proto__ = superclass;\n    Arc.prototype = Object.create( superclass && superclass.prototype );\n    Arc.prototype.constructor = Arc;\n\n    Arc.prototype.clone = function clone () {\n        return new Arc(this.center, {\n            radiusX: this.radiusX,\n            radiusY: this.radiusY,\n            startAngle: this.startAngle,\n            endAngle: this.endAngle,\n            anticlockwise: this.anticlockwise\n        });\n    };\n\n    Arc.prototype.setCenter = function setCenter (value) {\n        this._observerField(\"center\", Point.create(value));\n        this.geometryChange();\n        return this;\n    };\n\n    Arc.prototype.getCenter = function getCenter () {\n        return this.center;\n    };\n\n    Arc.prototype.pointAt = function pointAt (angle) {\n        var center = this.center;\n        var radian = rad(angle);\n\n        return new Point(\n            center.x + this.radiusX * Math.cos(radian),\n            center.y + this.radiusY * Math.sin(radian)\n        );\n    };\n\n    Arc.prototype.curvePoints = function curvePoints () {\n        var this$1 = this;\n\n        var startAngle = this.startAngle;\n        var dir = this.anticlockwise ? -1 : 1;\n        var curvePoints = [ this.pointAt(startAngle) ];\n        var interval = this._arcInterval();\n        var intervalAngle = interval.endAngle - interval.startAngle;\n        var subIntervalsCount = Math.ceil(intervalAngle / MAX_INTERVAL);\n        var subIntervalAngle = intervalAngle / subIntervalsCount;\n        var currentAngle = startAngle;\n        var transformation;\n        if (this.xRotation) {\n            transformation = transform().rotate(this.xRotation, this.center);\n        }\n\n        for (var i = 1; i <= subIntervalsCount; i++) {\n            var nextAngle = currentAngle + dir * subIntervalAngle;\n            var points = this$1._intervalCurvePoints(currentAngle, nextAngle, transformation);\n\n            curvePoints.push(points.cp1, points.cp2, points.p2);\n            currentAngle = nextAngle;\n        }\n\n        return curvePoints;\n    };\n\n    Arc.prototype.bbox = function bbox (matrix) {\n        var this$1 = this;\n\n        var interval = this._arcInterval();\n        var startAngle = interval.startAngle;\n        var endAngle = interval.endAngle;\n        var extremeAngles = ellipseExtremeAngles(this.center, this.radiusX, this.radiusY, matrix);\n        var extremeX = deg(extremeAngles.x);\n        var extremeY = deg(extremeAngles.y);\n        var endPoint = this.pointAt(endAngle).transformCopy(matrix);\n        var currentAngleX = bboxStartAngle(extremeX, startAngle);\n        var currentAngleY = bboxStartAngle(extremeY, startAngle);\n        var currentPoint = this.pointAt(startAngle).transformCopy(matrix);\n        var minPoint = Point.min(currentPoint, endPoint);\n        var maxPoint = Point.max(currentPoint, endPoint);\n\n        while (currentAngleX < endAngle || currentAngleY < endAngle) {\n            var currentPointX = (void 0);\n            if (currentAngleX < endAngle) {\n                currentPointX = this$1.pointAt(currentAngleX).transformCopy(matrix);\n                currentAngleX += 90;\n            }\n\n            var currentPointY = (void 0);\n            if (currentAngleY < endAngle) {\n                currentPointY = this$1.pointAt(currentAngleY).transformCopy(matrix);\n                currentAngleY += 90;\n            }\n\n            currentPoint = new Point(currentPointX.x, currentPointY.y);\n            minPoint = Point.min(minPoint, currentPoint);\n            maxPoint = Point.max(maxPoint, currentPoint);\n        }\n\n        return Rect.fromPoints(minPoint, maxPoint);\n    };\n\n    Arc.prototype._arcInterval = function _arcInterval () {\n        var ref = this;\n        var startAngle = ref.startAngle;\n        var endAngle = ref.endAngle;\n        var anticlockwise = ref.anticlockwise;\n\n        if (anticlockwise) {\n            var oldStart = startAngle;\n            startAngle = endAngle;\n            endAngle = oldStart;\n        }\n\n        if (startAngle > endAngle || (anticlockwise && startAngle === endAngle)) {\n            endAngle += 360;\n        }\n\n        return {\n            startAngle: startAngle,\n            endAngle: endAngle\n        };\n    };\n\n    Arc.prototype._intervalCurvePoints = function _intervalCurvePoints (startAngle, endAngle, transformation) {\n        var p1 = this.pointAt(startAngle);\n        var p2 = this.pointAt(endAngle);\n        var p1Derivative = this._derivativeAt(startAngle);\n        var p2Derivative = this._derivativeAt(endAngle);\n        var t = (rad(endAngle) - rad(startAngle)) / 3;\n        var cp1 = new Point(p1.x + t * p1Derivative.x, p1.y + t * p1Derivative.y);\n        var cp2 = new Point(p2.x - t * p2Derivative.x, p2.y - t * p2Derivative.y);\n        if (transformation) {\n            p1.transform(transformation);\n            p2.transform(transformation);\n            cp1.transform(transformation);\n            cp2.transform(transformation);\n        }\n\n        return {\n            p1: p1,\n            cp1: cp1,\n            cp2: cp2,\n            p2: p2\n        };\n    };\n\n    Arc.prototype._derivativeAt = function _derivativeAt (angle) {\n        var radian = rad(angle);\n\n        return new Point(-this.radiusX * Math.sin(radian), this.radiusY * Math.cos(radian));\n    };\n\n    Arc.prototype.containsPoint = function containsPoint (point) {\n        var interval = this._arcInterval();\n        var intervalAngle = interval.endAngle - interval.startAngle;\n        var ref = this;\n        var center = ref.center;\n        var radiusX = ref.radiusX;\n        var radiusY = ref.radiusY;\n        var distance = center.distanceTo(point);\n        var angleRad = Math.atan2(point.y - center.y, point.x - center.x);\n        var pointRadius = (radiusX * radiusY) /\n            Math.sqrt(pow(radiusX, 2) * pow(Math.sin(angleRad), 2) + pow(radiusY, 2) * pow(Math.cos(angleRad), 2));\n        var startPoint = this.pointAt(this.startAngle).round(PRECISION);\n        var endPoint = this.pointAt(this.endAngle).round(PRECISION);\n        var intersection = lineIntersection(center, point.round(PRECISION), startPoint, endPoint);\n        var containsPoint;\n\n        if (intervalAngle < 180) {\n            containsPoint = intersection && closeOrLess(center.distanceTo(intersection), distance) && closeOrLess(distance, pointRadius);\n        } else {\n            var angle = calculateAngle(center.x, center.y, radiusX, radiusY, point.x, point.y);\n            if (angle !== 360) {\n                angle = (360 + angle) % 360;\n            }\n\n            var inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n            containsPoint = (inAngleRange && closeOrLess(distance, pointRadius)) || (!inAngleRange && (!intersection || intersection.equals(point)));\n        }\n        return containsPoint;\n    };\n\n    Arc.prototype._isOnPath = function _isOnPath (point, width) {\n        var interval = this._arcInterval();\n        var center = this.center;\n        var angle = calculateAngle(center.x, center.y, this.radiusX, this.radiusY, point.x, point.y);\n        if (angle !== 360) {\n            angle = (360 + angle) % 360;\n        }\n\n        var inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n\n        return inAngleRange && this.pointAt(angle).distanceTo(point) <= width;\n    };\n\n    Arc.fromPoints = function fromPoints (start, end, rx, ry, largeArc, swipe, rotation) {// eslint-disable-line max-params\n        var arcParameters = normalizeArcParameters({\n            x1: start.x,\n            y1: start.y,\n            x2: end.x,\n            y2: end.y,\n            rx: rx,\n            ry: ry,\n            largeArc: largeArc,\n            swipe: swipe,\n            rotation: rotation\n        });\n\n        return new Arc(arcParameters.center, {\n            startAngle: arcParameters.startAngle,\n            endAngle: arcParameters.endAngle,\n            radiusX: arcParameters.radiusX,\n            radiusY: arcParameters.radiusY,\n            xRotation: arcParameters.xRotation,\n            anticlockwise: swipe === 0\n        });\n    };\n\n    return Arc;\n}(withAccessors(HasObservers, accessors)));\n\nfunction calculateAngle(cx, cy, rx, ry, x, y) {\n    var cos = round((x - cx) / rx, 3);\n    var sin = round((y - cy) / ry, 3);\n\n    return round(deg(Math.atan2(sin, cos)));\n}\n\nfunction normalizeArcParameters(parameters) {\n    var x1 = parameters.x1;\n    var y1 = parameters.y1;\n    var x2 = parameters.x2;\n    var y2 = parameters.y2;\n    var rx = parameters.rx;\n    var ry = parameters.ry;\n    var largeArc = parameters.largeArc;\n    var swipe = parameters.swipe;\n    var rotation = parameters.rotation; if ( rotation === void 0 ) rotation = 0;\n\n    var radians = rad(rotation);\n    var cosine = Math.cos(radians);\n    var sine = Math.sin(radians);\n\n    var xT = cosine * (x1 - x2) / 2 + sine * (y1 - y2) / 2;\n    var yT = -sine * (x1 - x2) / 2 + cosine * (y1 - y2) / 2;\n\n    var sign = largeArc !== swipe ? 1 : -1;\n\n    var xt2 = Math.pow(xT, 2);\n    var yt2 = Math.pow(yT, 2);\n    var rx2 = Math.pow(rx, 2);\n    var ry2 = Math.pow(ry, 2);\n\n    var delta = xt2 / rx2 + yt2 / ry2;\n\n    if (delta > 1) {\n        delta = Math.sqrt(xt2 / rx2 + yt2 / ry2);\n        rx = delta * rx;\n        rx2 = Math.pow(rx, 2);\n\n        ry = delta * ry;\n        ry2 = Math.pow(ry, 2);\n    }\n\n    var constT = sign * Math.sqrt((rx2 * ry2 - rx2 * yt2 - ry2 * xt2) / (rx2 * yt2 + ry2 * xt2));\n    // due to rounding errors the value could become NaN even after radii correction\n    if (isNaN(constT)) {\n        constT = 0;\n    }\n\n    var cxT = constT * (rx * yT) / ry;\n    var cyT = - constT * (ry * xT) / rx;\n\n    var cx = cosine * cxT - sine * cyT + (x1 + x2) / 2;\n    var cy = sine * cxT + cosine * cyT + (y1 + y2) / 2;\n\n\n    var uX = (xT - cxT) / rx;\n    var uY = (yT - cyT) / ry;\n    var vX = -(xT + cxT) / rx;\n    var vY = -(yT + cyT) / ry;\n\n    var startAngle = (uY >= 0 ? 1 : -1) * deg(Math.acos(uX / Math.sqrt(uX * uX + uY * uY)));\n\n    var angleCosine = round((uX * vX + uY * vY) / (Math.sqrt(uX * uX + uY * uY) * Math.sqrt(vX * vX + vY * vY)), 10);\n    var angle = (uX * vY - uY * vX >= 0 ? 1 : -1) * deg(Math.acos(angleCosine));\n\n    if (!swipe && angle > 0) {\n        angle -= 360;\n    }\n\n    if (swipe && angle < 0) {\n        angle += 360;\n    }\n    var endAngle = startAngle + angle;\n    var signEndAngle = endAngle >= 0 ? 1 : -1;\n    endAngle = (Math.abs(endAngle) % 360) * signEndAngle;\n\n    return {\n        center: new Point(cx, cy),\n        startAngle: startAngle,\n        endAngle: endAngle,\n        radiusX: rx,\n        radiusY: ry,\n        xRotation: rotation\n    };\n}\n\nfunction bboxStartAngle(angle, start) {\n    var startAngle = angle;\n\n    while (startAngle < start) {\n        startAngle += 90;\n    }\n\n    return startAngle;\n}\n\nexport default Arc;\n","import Point from '../point';\n\nexport default function lineIntersection(p0, p1, p2, p3) {\n    var s1x = p1.x - p0.x;\n    var s2x = p3.x - p2.x;\n    var s1y = p1.y - p0.y;\n    var s2y = p3.y - p2.y;\n    var nx = p0.x - p2.x;\n    var ny = p0.y - p2.y;\n    var d = s1x * s2y - s2x * s1y;\n    var s = (s1x * ny - s1y * nx) / d;\n    var t = (s2x * ny - s2y * nx) / d;\n\n    if (s >= 0 && s <= 1 && t >= 0 && t <= 1) {\n        return new Point(p0.x + t * s1x, p0.y + t * s1y);\n    }\n}","import HasObservers from '../core/has-observers';\n\nvar push = [].push;\nvar pop = [].pop;\nvar splice = [].splice;\nvar shift = [].shift;\nvar slice = [].slice;\nvar unshift = [].unshift;\n\nvar ElementsArray = (function (HasObservers) {\n    function ElementsArray(array) {\n        if ( array === void 0 ) array = [];\n\n        HasObservers.call(this);\n\n        this.length = 0;\n        this._splice(0, array.length, array);\n    }\n\n    if ( HasObservers ) ElementsArray.__proto__ = HasObservers;\n    ElementsArray.prototype = Object.create( HasObservers && HasObservers.prototype );\n    ElementsArray.prototype.constructor = ElementsArray;\n\n    ElementsArray.prototype.elements = function elements (value) {\n        if (value) {\n            this._splice(0, this.length, value);\n\n            this._change();\n            return this;\n        }\n\n        return this.slice(0);\n    };\n\n    ElementsArray.prototype.push = function push$1 () {\n        var elements = arguments;\n        var result = push.apply(this, elements);\n\n        this._add(elements);\n\n        return result;\n    };\n\n    ElementsArray.prototype.slice = function slice$1 () {\n        return slice.call(this);\n    };\n\n    ElementsArray.prototype.pop = function pop$1 () {\n        var length = this.length;\n        var result = pop.apply(this);\n\n        if (length) {\n            this._remove([ result ]);\n        }\n\n        return result;\n    };\n\n    ElementsArray.prototype.splice = function splice (index, howMany) {\n        var elements = slice.call(arguments, 2);\n        var result = this._splice(index, howMany, elements);\n\n        this._change();\n\n        return result;\n    };\n\n    ElementsArray.prototype.shift = function shift$1 () {\n        var length = this.length;\n        var result = shift.apply(this);\n\n        if (length) {\n            this._remove([ result ]);\n        }\n\n        return result;\n    };\n\n    ElementsArray.prototype.unshift = function unshift$1 () {\n        var elements = arguments;\n        var result = unshift.apply(this, elements);\n\n        this._add(elements);\n\n        return result;\n    };\n\n    ElementsArray.prototype.indexOf = function indexOf (element) {\n        var this$1 = this;\n\n        var length = this.length;\n\n        for (var idx = 0; idx < length; idx++) {\n            if (this$1[idx] === element) {\n                return idx;\n            }\n        }\n        return -1;\n    };\n\n    ElementsArray.prototype._splice = function _splice (index, howMany, elements) {\n        var result = splice.apply(this, [ index, howMany ].concat(elements));\n\n        this._clearObserver(result);\n        this._setObserver(elements);\n\n        return result;\n    };\n\n    ElementsArray.prototype._add = function _add (elements) {\n        this._setObserver(elements);\n        this._change();\n    };\n\n    ElementsArray.prototype._remove = function _remove (elements) {\n        this._clearObserver(elements);\n        this._change();\n    };\n\n    ElementsArray.prototype._setObserver = function _setObserver (elements) {\n        var this$1 = this;\n\n        for (var idx = 0; idx < elements.length; idx++) {\n            elements[idx].addObserver(this$1);\n        }\n    };\n\n    ElementsArray.prototype._clearObserver = function _clearObserver (elements) {\n        var this$1 = this;\n\n        for (var idx = 0; idx < elements.length; idx++) {\n            elements[idx].removeObserver(this$1);\n        }\n    };\n\n    ElementsArray.prototype._change = function _change () {};\n\n    return ElementsArray;\n}(HasObservers));\n\nexport default ElementsArray;\n","import ElementsArray from './elements-array';\n\nvar GeometryElementsArray = (function (ElementsArray) {\n    function GeometryElementsArray () {\n        ElementsArray.apply(this, arguments);\n    }\n\n    if ( ElementsArray ) GeometryElementsArray.__proto__ = ElementsArray;\n    GeometryElementsArray.prototype = Object.create( ElementsArray && ElementsArray.prototype );\n    GeometryElementsArray.prototype.constructor = GeometryElementsArray;\n\n    GeometryElementsArray.prototype._change = function _change () {\n        this.geometryChange();\n    };\n\n    return GeometryElementsArray;\n}(ElementsArray));\n\nexport default GeometryElementsArray;","import { Class } from '../common';\nimport HasObservers from './has-observers';\nimport { defined } from '../util';\n\n\nvar toString = {}.toString;\n\nvar OptionsStore = (function (HasObservers) {\n    function OptionsStore(options, prefix) {\n        var this$1 = this;\n        if ( prefix === void 0 ) prefix = \"\";\n\n        HasObservers.call(this);\n\n        this.prefix = prefix;\n\n        for (var field in options) {\n            var member = options[field];\n            member = this$1._wrap(member, field);\n            this$1[field] = member;\n        }\n    }\n\n    if ( HasObservers ) OptionsStore.__proto__ = HasObservers;\n    OptionsStore.prototype = Object.create( HasObservers && HasObservers.prototype );\n    OptionsStore.prototype.constructor = OptionsStore;\n\n    OptionsStore.prototype.get = function get (field) {\n        var parts = field.split(\".\");\n        var result = this;\n\n        while (parts.length && result) {\n            var part = parts.shift();\n            result = result[part];\n        }\n\n        return result;\n    };\n\n    OptionsStore.prototype.set = function set (field, value) {\n        var current = this.get(field);\n\n        if (current !== value) {\n            this._set(field, this._wrap(value, field));\n            this.optionsChange({\n                field: this.prefix + field,\n                value: value\n            });\n        }\n    };\n\n    OptionsStore.prototype._set = function _set (field, value) {\n        var this$1 = this;\n\n        var composite = field.indexOf(\".\") >= 0;\n        var parentObj = this;\n        var fieldName = field;\n\n        if (composite) {\n            var parts = fieldName.split(\".\");\n            var prefix = this.prefix;\n\n            while (parts.length > 1) {\n                fieldName = parts.shift();\n                prefix += fieldName + \".\";\n\n                var obj = parentObj[fieldName];\n\n                if (!obj) {\n                    obj = new OptionsStore({}, prefix);\n                    obj.addObserver(this$1);\n                    parentObj[fieldName] = obj;\n                }\n                parentObj = obj;\n            }\n            fieldName = parts[0];\n        }\n\n        parentObj._clear(fieldName);\n        parentObj[fieldName] = value;\n    };\n\n    OptionsStore.prototype._clear = function _clear (field) {\n        var current = this[field];\n        if (current && current.removeObserver) {\n            current.removeObserver(this);\n        }\n    };\n\n    OptionsStore.prototype._wrap = function _wrap (object, field) {\n        var type = toString.call(object);\n        var wrapped = object;\n\n        if (wrapped !== null && defined(wrapped) && type === \"[object Object]\") {\n            if (!(object instanceof OptionsStore) && !(object instanceof Class)) {\n                wrapped = new OptionsStore(wrapped, this.prefix + field + \".\");\n            }\n\n            wrapped.addObserver(this);\n        }\n\n        return wrapped;\n    };\n\n    return OptionsStore;\n}(HasObservers));\n\nexport default OptionsStore;\n","var DASH_ARRAYS = {\n    dot: [ 1.5, 3.5 ],\n    dash: [ 4, 3.5 ],\n    longdash: [ 8, 3.5 ],\n    dashdot: [ 3.5, 3.5, 1.5, 3.5 ],\n    longdashdot: [ 8, 3.5, 1.5, 3.5 ],\n    longdashdotdot: [ 8, 3.5, 1.5, 3.5, 1.5, 3.5 ]\n};\n\nvar SOLID = \"solid\";\nvar BUTT = \"butt\";\nvar PATTERN = \"Pattern\";\n\nexport { DASH_ARRAYS, SOLID, BUTT, PATTERN };\n","import OptionsStore from '../core/options-store';\nimport Rect from '../geometry/rect';\nimport Matrix from '../geometry/matrix';\nimport createTransform from '../geometry/transform';\nimport toMatrix from '../geometry/to-matrix';\nimport HasObservers from '../core/has-observers';\nimport { defined, definitionId, isTransparent, valueOrDefault } from '../util';\nimport { PATTERN } from '../core/constants';\n\nvar Element = (function (HasObservers) {\n    function Element(options) {\n        HasObservers.call(this);\n\n        this._initOptions(options);\n    }\n\n    if ( HasObservers ) Element.__proto__ = HasObservers;\n    Element.prototype = Object.create( HasObservers && HasObservers.prototype );\n    Element.prototype.constructor = Element;\n\n    var prototypeAccessors = { nodeType: { configurable: true } };\n\n    prototypeAccessors.nodeType.get = function () {\n        return \"Rect\";\n    };\n\n    Element.prototype._initOptions = function _initOptions (options) {\n        if ( options === void 0 ) options = {};\n\n        var clip = options.clip;\n        var transform = options.transform;\n\n        if (transform) {\n            options.transform = createTransform(transform);\n        }\n\n        if (clip && !clip.id) {\n            clip.id = definitionId();\n        }\n\n        this.options = new OptionsStore(options);\n        this.options.addObserver(this);\n    };\n\n    Element.prototype.transform = function transform (value) {\n        if (defined(value)) {\n            this.options.set(\"transform\", createTransform(value));\n        } else {\n            return this.options.get(\"transform\");\n        }\n    };\n\n    Element.prototype.parentTransform = function parentTransform () {\n        var element = this;\n        var parentMatrix;\n\n        while (element.parent) {\n            element = element.parent;\n            var transformation = element.transform();\n            if (transformation) {\n                parentMatrix = transformation.matrix().multiplyCopy(parentMatrix || Matrix.unit());\n            }\n        }\n\n        if (parentMatrix) {\n            return createTransform(parentMatrix);\n        }\n    };\n\n    Element.prototype.currentTransform = function currentTransform (parentTransform) {\n        if ( parentTransform === void 0 ) parentTransform = this.parentTransform();\n\n        var elementTransform = this.transform();\n        var elementMatrix = toMatrix(elementTransform);\n\n        var parentMatrix = toMatrix(parentTransform);\n        var combinedMatrix;\n\n        if (elementMatrix && parentMatrix) {\n            combinedMatrix = parentMatrix.multiplyCopy(elementMatrix);\n        } else {\n            combinedMatrix = elementMatrix || parentMatrix;\n        }\n\n        if (combinedMatrix) {\n            return createTransform(combinedMatrix);\n        }\n    };\n\n    Element.prototype.visible = function visible (value) {\n        if (defined(value)) {\n            this.options.set(\"visible\", value);\n            return this;\n        }\n\n        return this.options.get(\"visible\") !== false;\n    };\n\n    Element.prototype.clip = function clip (value) {\n        var options = this.options;\n        if (defined(value)) {\n            if (value && !value.id) {\n                value.id = definitionId();\n            }\n            options.set(\"clip\", value);\n            return this;\n        }\n\n        return options.get(\"clip\");\n    };\n\n    Element.prototype.opacity = function opacity (value) {\n        if (defined(value)) {\n            this.options.set(\"opacity\", value);\n            return this;\n        }\n\n        return valueOrDefault(this.options.get(\"opacity\"), 1);\n    };\n\n    Element.prototype.className = function className (value) {\n        if (defined(value)) {\n            this.options.set(\"className\", value);\n            return this;\n        }\n\n        return this.options.get(\"className\");\n    };\n\n    Element.prototype.clippedBBox = function clippedBBox (transformation) {\n        var bbox = this._clippedBBox(transformation);\n        if (bbox) {\n            var clip = this.clip();\n            return clip ? Rect.intersect(bbox, clip.bbox(transformation)) : bbox;\n        }\n    };\n\n    Element.prototype.containsPoint = function containsPoint (point, parentTransform) {\n        if (this.visible()) {\n            var transform = this.currentTransform(parentTransform);\n            var transformedPoint = point;\n            if (transform) {\n                transformedPoint = point.transformCopy(transform.matrix().invert());\n            }\n            return (this._hasFill() && this._containsPoint(transformedPoint)) || (this._isOnPath && this._hasStroke() && this._isOnPath(transformedPoint));\n        }\n        return false;\n    };\n\n    Element.prototype._hasFill = function _hasFill () {\n        var fill = this.options.fill;\n        return fill && (fill.nodeType === PATTERN || !isTransparent(fill.color));\n    };\n\n    Element.prototype._hasStroke = function _hasStroke () {\n        var stroke = this.options.stroke;\n        return stroke && stroke.width > 0 && !isTransparent(stroke.color);\n    };\n\n    Element.prototype._clippedBBox = function _clippedBBox (transformation) {\n        return this.bbox(transformation);\n    };\n\n    Object.defineProperties( Element.prototype, prototypeAccessors );\n\n    return Element;\n}(HasObservers));\n\nexport default Element;\n","import { deg } from '../../util';\nimport transform from '../transform';\n\nexport default function isOutOfEndPoint(endPoint, controlPoint, point) {\n    var angle = deg(Math.atan2(controlPoint.y - endPoint.y, controlPoint.x - endPoint.x));\n    var rotatedPoint = point.transformCopy(transform().rotate(-angle, endPoint));\n\n    return rotatedPoint.x < endPoint.x;\n}","export default function calculateCurveAt(t, field, points) {\n    var t1 = 1 - t;\n    return Math.pow(t1, 3) * points[0][field] +\n        3 * Math.pow(t1, 2) * t * points[1][field] +\n        3 * Math.pow(t, 2) * t1 * points[2][field] +\n        Math.pow(t, 3) * points[3][field];\n}","export default function toCubicPolynomial(points, field) {\n    return [ -points[0][field] + 3 * points[1][field] - 3 * points[2][field] + points[3][field],\n        3 * (points[0][field] - 2 * points[1][field] + points[2][field]),\n        3 * (-points[0][field] + points[1][field]),\n        points[0][field]\n    ];\n}","import { PRECISION } from '../constants';\nimport { Class } from '../../common';\nimport { round } from '../../util';\n\nvar ComplexNumber = (function (Class) {\n    function ComplexNumber(real, img) {\n        if ( real === void 0 ) real = 0;\n        if ( img === void 0 ) img = 0;\n\n        Class.call(this);\n\n        this.real = real;\n        this.img = img;\n    }\n\n    if ( Class ) ComplexNumber.__proto__ = Class;\n    ComplexNumber.prototype = Object.create( Class && Class.prototype );\n    ComplexNumber.prototype.constructor = ComplexNumber;\n\n    ComplexNumber.prototype.add = function add (cNumber) {\n        return new ComplexNumber(round(this.real + cNumber.real, PRECISION), round(this.img + cNumber.img, PRECISION));\n    };\n\n    ComplexNumber.prototype.addConstant = function addConstant (value) {\n        return new ComplexNumber(this.real + value, this.img);\n    };\n\n    ComplexNumber.prototype.negate = function negate () {\n        return new ComplexNumber(-this.real, -this.img);\n    };\n\n    ComplexNumber.prototype.multiply = function multiply (cNumber) {\n        return new ComplexNumber(this.real * cNumber.real - this.img * cNumber.img,\n            this.real * cNumber.img + this.img * cNumber.real);\n    };\n\n    ComplexNumber.prototype.multiplyConstant = function multiplyConstant (value) {\n        return new ComplexNumber(this.real * value, this.img * value);\n    };\n\n    ComplexNumber.prototype.nthRoot = function nthRoot (n) {\n        var rad = Math.atan2(this.img, this.real);\n        var r = Math.sqrt(Math.pow(this.img, 2) + Math.pow(this.real, 2));\n        var nthR = Math.pow(r, 1 / n);\n\n        return new ComplexNumber(nthR * Math.cos(rad / n), nthR * Math.sin(rad / n)); //Moivre's formula\n    };\n\n    ComplexNumber.prototype.equals = function equals (cNumber) {\n        return this.real === cNumber.real && this.img === cNumber.img;\n    };\n\n    ComplexNumber.prototype.isReal = function isReal () {\n        return this.img === 0;\n    };\n\n    return ComplexNumber;\n}(Class));\n\nexport default ComplexNumber;","import ComplexNumber from './complex-number';\nimport { PRECISION } from '../constants';\nimport { round } from '../../util';\n\nfunction numberSign(x) {\n    return x < 0 ? -1 : 1;\n}\n\nfunction solveQuadraticEquation(a, b, c) {\n    var squareRoot = Math.sqrt(Math.pow(b, 2) - 4 * a * c);\n    return [\n        (-b + squareRoot) / (2 * a),\n        (-b - squareRoot) / (2 * a)\n    ];\n}\n\n//Cardano's formula\nexport default function solveCubicEquation(a, b, c, d) {\n    if (a === 0) {\n        return solveQuadraticEquation(b, c, d);\n    }\n\n    var p = (3 * a * c - Math.pow(b, 2)) / (3 * Math.pow(a, 2));\n    var q = (2 * Math.pow(b, 3) - 9 * a * b * c + 27 * Math.pow(a, 2) * d) / (27 * Math.pow(a, 3));\n    var Q = Math.pow(p / 3, 3) + Math.pow(q / 2, 2);\n    var i = new ComplexNumber(0,1);\n    var b3a = -b / (3 * a);\n    var x1, x2, y1, y2, y3, z1, z2;\n\n    if (Q < 0) {\n        x1 = new ComplexNumber(-q / 2, Math.sqrt(-Q)).nthRoot(3);\n        x2 = new ComplexNumber(-q / 2, - Math.sqrt(-Q)).nthRoot(3);\n    } else {\n        x1 = -q / 2 + Math.sqrt(Q);\n        x1 = new ComplexNumber(numberSign(x1) * Math.pow(Math.abs(x1), 1 / 3));\n        x2 = -q / 2 - Math.sqrt(Q);\n        x2 = new ComplexNumber(numberSign(x2) * Math.pow(Math.abs(x2), 1 / 3));\n    }\n\n    y1 = x1.add(x2);\n\n    z1 = x1.add(x2).multiplyConstant(-1 / 2);\n    z2 = x1.add(x2.negate()).multiplyConstant(Math.sqrt(3) / 2);\n\n    y2 = z1.add(i.multiply(z2));\n    y3 = z1.add(i.negate().multiply(z2));\n\n    var result = [];\n\n    if (y1.isReal()) {\n        result.push(round(y1.real + b3a, PRECISION));\n    }\n    if (y2.isReal()) {\n        result.push(round(y2.real + b3a, PRECISION));\n    }\n    if (y3.isReal()) {\n        result.push(round(y3.real + b3a, PRECISION));\n    }\n\n    return result;\n}","import toCubicPolynomial from './to-cubic-polynomial';\nimport solveCubicEquation from './solve-cubic-equation';\nimport calculateCurveAt from './calculate-curve-at';\n\nexport default function hasRootsInRange(points, point, field, rootField, range) {\n    var polynomial = toCubicPolynomial(points, rootField);\n    var roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point[rootField]);\n    var intersection;\n\n    for (var idx = 0; idx < roots.length; idx++) {\n        if (0 <= roots[idx] && roots[idx] <= 1) {\n            intersection = calculateCurveAt(roots[idx], field, points);\n            if (Math.abs(intersection - point[field]) <= range) {\n                return true;\n            }\n        }\n    }\n}","export default function lineIntersectionsCount(a, b, point) {\n    var intersects;\n    if (a.x !== b.x) {\n        var minX = Math.min(a.x, b.x);\n        var maxX = Math.max(a.x, b.x);\n        var minY = Math.min(a.y, b.y);\n        var maxY = Math.max(a.y, b.y);\n        var inRange = minX <= point.x && point.x < maxX;\n\n        if (minY === maxY) {\n            intersects = point.y <= minY && inRange;\n        } else {\n            intersects = inRange && (((maxY - minY) * ((a.x - b.x) * (a.y - b.y) > 0 ? point.x - minX : maxX - point.x)) / (maxX - minX) + minY - point.y) >= 0;\n        }\n    }\n\n    return intersects ? 1 : 0;\n}","import { defined } from '../util';\nimport Point from '../geometry/point';\n\nfunction pointAccessor(name) {\n    var fieldName = \"_\" + name;\n    return function(value) {\n        if (defined(value)) {\n            this._observerField(fieldName, Point.create(value));\n            this.geometryChange();\n            return this;\n        }\n\n        return this[fieldName];\n    };\n}\n\nfunction definePointAccessors(fn, names) {\n    for (var i = 0; i < names.length; i++) {\n        fn[names[i]] = pointAccessor(names[i]);\n    }\n}\n\nvar withPoints = function (TBase, names) {\n    var result = (function (TBase) {\n        function result () {\n            TBase.apply(this, arguments);\n        }if ( TBase ) result.__proto__ = TBase;\n        result.prototype = Object.create( TBase && TBase.prototype );\n        result.prototype.constructor = result;\n\n        \n\n        return result;\n    }(TBase));\n    definePointAccessors(result.prototype, names);\n\n    return result;\n};\n\nexport default withPoints;\n","import HasObservers from '../core/has-observers';\nimport Rect from './rect';\nimport Point from './point';\nimport transform from './transform';\nimport { deg, MIN_NUM, MAX_NUM } from '../util';\nimport isOutOfEndPoint from './math/is-out-of-end-point';\nimport calculateCurveAt from './math/calculate-curve-at';\nimport hasRootsInRange from './math/has-roots-in-range';\nimport curveIntersectionsCount from './math/curve-intersections-count';\nimport lineIntersectionsCount from './math/line-intersections-count';\nimport withPoints from '../mixins/with-points';\n\n\nvar points = [ \"anchor\", \"controlIn\", \"controlOut\" ];\n\nvar Segment = (function (superclass) {\n    function Segment(anchor, controlIn, controlOut) {\n        superclass.call(this);\n\n        this.anchor(anchor || new Point());\n        this.controlIn(controlIn);\n        this.controlOut(controlOut);\n    }\n\n    if ( superclass ) Segment.__proto__ = superclass;\n    Segment.prototype = Object.create( superclass && superclass.prototype );\n    Segment.prototype.constructor = Segment;\n\n    Segment.prototype.bboxTo = function bboxTo (toSegment, matrix) {\n        var segmentAnchor = this.anchor().transformCopy(matrix);\n        var toSegmentAnchor = toSegment.anchor().transformCopy(matrix);\n        var rect;\n\n        if (this.controlOut() && toSegment.controlIn()) {\n            rect = this._curveBoundingBox(\n                segmentAnchor, this.controlOut().transformCopy(matrix),\n                toSegment.controlIn().transformCopy(matrix), toSegmentAnchor\n            );\n        } else {\n            rect = this._lineBoundingBox(segmentAnchor, toSegmentAnchor);\n        }\n\n        return rect;\n    };\n\n    Segment.prototype._lineBoundingBox = function _lineBoundingBox (p1, p2) {\n        return Rect.fromPoints(p1, p2);\n    };\n\n    Segment.prototype._curveBoundingBox = function _curveBoundingBox (p1, cp1, cp2, p2) {\n        var points = [ p1, cp1, cp2, p2 ];\n        var extremesX = this._curveExtremesFor(points, \"x\");\n        var extremesY = this._curveExtremesFor(points, \"y\");\n        var xLimits = arrayLimits([ extremesX.min, extremesX.max, p1.x, p2.x ]);\n        var yLimits = arrayLimits([ extremesY.min, extremesY.max, p1.y, p2.y ]);\n\n        return Rect.fromPoints(new Point(xLimits.min, yLimits.min), new Point(xLimits.max, yLimits.max));\n    };\n\n    Segment.prototype._curveExtremesFor = function _curveExtremesFor (points, field) {\n        var extremes = this._curveExtremes(\n            points[0][field], points[1][field],\n            points[2][field], points[3][field]\n        );\n\n        return {\n            min: calculateCurveAt(extremes.min, field, points),\n            max: calculateCurveAt(extremes.max, field, points)\n        };\n    };\n\n    Segment.prototype._curveExtremes = function _curveExtremes (x1, x2, x3, x4) {\n        var a = x1 - 3 * x2 + 3 * x3 - x4;\n        var b = - 2 * (x1 - 2 * x2 + x3);\n        var c = x1 - x2;\n        var sqrt = Math.sqrt(b * b - 4 * a * c);\n        var t1 = 0;\n        var t2 = 1;\n\n        if (a === 0) {\n            if (b !== 0) {\n                t1 = t2 = -c / b;\n            }\n        } else if (!isNaN(sqrt)) {\n            t1 = (- b + sqrt) / (2 * a);\n            t2 = (- b - sqrt) / (2 * a);\n        }\n\n        var min = Math.max(Math.min(t1, t2), 0);\n        if (min < 0 || min > 1) {\n            min = 0;\n        }\n\n        var max = Math.min(Math.max(t1, t2), 1);\n        if (max > 1 || max < 0) {\n            max = 1;\n        }\n\n        return {\n            min: min,\n            max: max\n        };\n    };\n\n    Segment.prototype._intersectionsTo = function _intersectionsTo (segment, point) {\n        var intersectionsCount;\n        if (this.controlOut() && segment.controlIn()) {\n            intersectionsCount = curveIntersectionsCount([ this.anchor(), this.controlOut(), segment.controlIn(), segment.anchor() ], point, this.bboxTo(segment));\n        } else {\n            intersectionsCount = lineIntersectionsCount(this.anchor(), segment.anchor(), point);\n        }\n        return intersectionsCount;\n    };\n\n    Segment.prototype._isOnCurveTo = function _isOnCurveTo (segment, point, width, endSegment) {\n        var bbox = this.bboxTo(segment).expand(width, width);\n        if (bbox.containsPoint(point)) {\n            var p1 = this.anchor();\n            var p2 = this.controlOut();\n            var p3 = segment.controlIn();\n            var p4 = segment.anchor();\n\n            if (endSegment === \"start\" && p1.distanceTo(point) <= width) {\n                return !isOutOfEndPoint(p1, p2, point);\n            } else if (endSegment === \"end\" && p4.distanceTo(point) <= width) {\n                return !isOutOfEndPoint(p4, p3, point);\n            }\n\n            //the approach is not entirely correct but is close and the alternatives are solving a 6th degree polynomial or testing the segment points\n            var points = [ p1, p2, p3, p4 ];\n            if (hasRootsInRange(points, point, \"x\", \"y\", width) || hasRootsInRange(points, point, \"y\", \"x\", width)) {\n                return true;\n            }\n            var rotation = transform().rotate(45, point);\n            var rotatedPoints = [ p1.transformCopy(rotation), p2.transformCopy(rotation), p3.transformCopy(rotation), p4.transformCopy(rotation) ];\n            return hasRootsInRange(rotatedPoints, point, \"x\", \"y\", width) || hasRootsInRange(rotatedPoints, point, \"y\", \"x\", width);\n        }\n    };\n\n    Segment.prototype._isOnLineTo = function _isOnLineTo (segment, point, width) {\n        var p1 = this.anchor();\n        var p2 = segment.anchor();\n        var angle = deg(Math.atan2(p2.y - p1.y, p2.x - p1.x));\n        var rect = new Rect([ p1.x, p1.y - width / 2 ], [ p1.distanceTo(p2), width ]);\n        return rect.containsPoint(point.transformCopy(transform().rotate(-angle, p1)));\n    };\n\n    Segment.prototype._isOnPathTo = function _isOnPathTo (segment, point, width, endSegment) {\n        var isOnPath;\n        if (this.controlOut() && segment.controlIn()) {\n            isOnPath = this._isOnCurveTo(segment, point, width / 2, endSegment);\n        } else {\n            isOnPath = this._isOnLineTo(segment, point, width);\n        }\n        return isOnPath;\n    };\n\n    return Segment;\n}(withPoints(HasObservers, points)));\n\nfunction arrayLimits(arr) {\n    var length = arr.length;\n    var min = MAX_NUM;\n    var max = MIN_NUM;\n\n    for (var i = 0; i < length; i ++) {\n        max = Math.max(max, arr[i]);\n        min = Math.min(min, arr[i]);\n    }\n\n    return {\n        min: min,\n        max: max\n    };\n}\n\nexport default Segment;\n","import toCubicPolynomial from './to-cubic-polynomial';\nimport solveCubicEquation from './solve-cubic-equation';\nimport calculateCurveAt from './calculate-curve-at';\nimport close from './close';\n\nexport default function curveIntersectionsCount(points, point, bbox) {\n    var polynomial = toCubicPolynomial(points, \"x\");\n    var roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point.x);\n    var rayIntersection, intersectsRay;\n    var count = 0;\n    for (var i = 0; i < roots.length; i++) {\n        rayIntersection = calculateCurveAt(roots[i], \"y\", points);\n        intersectsRay = close(rayIntersection, point.y) || rayIntersection > point.y;\n        if (intersectsRay && (((roots[i] === 0 || roots[i] === 1) && bbox.bottomRight().x > point.x) || (0 < roots[i] && roots[i] < 1))) {\n            count++;\n        }\n    }\n\n    return count;\n}","import { Point, Segment } from '../../geometry';\nimport { last, round } from '../../util';\n\nvar WEIGHT = 0.333;\nvar EXTREMUM_ALLOWED_DEVIATION = 0.01;\nvar X = \"x\";\nvar Y = \"y\";\n\nexport function pointsToCurve(pointsIn, closed) {\n    var points = pointsIn.slice(0);\n    var segments = [];\n    var length = points.length;\n\n    if (length > 2) {\n        removeDuplicates(0, points);\n        length = points.length;\n    }\n\n    if (length < 2 || (length === 2 && points[0].equals(points[1]))) {\n        return segments;\n    }\n\n    var p0 = points[0];\n    var p1 = points[1];\n    var p2 = points[2];\n\n    segments.push(new Segment(p0));\n\n    while (p0.equals(points[length - 1])) {\n        closed = true;\n        points.pop();\n        length--;\n    }\n\n    if (length === 2) {\n        var tangent = getTangent(p0,p1, X, Y);\n\n        last(segments).controlOut(\n            firstControlPoint(tangent, p0, p1, X, Y)\n        );\n\n        segments.push(new Segment(\n            p1,\n            secondControlPoint(tangent, p0, p1, X, Y)\n        ));\n\n        return segments;\n    }\n\n    var initialControlPoint, lastControlPoint;\n\n    if (closed) {\n        p0 = points[length - 1]; p1 = points[0]; p2 = points[1];\n        var controlPoints = getControlPoints(p0, p1, p2);\n        initialControlPoint = controlPoints[1];\n        lastControlPoint = controlPoints[0];\n    } else {\n        var tangent$1 = getTangent(p0, p1, X,Y);\n        initialControlPoint = firstControlPoint(tangent$1, p0, p1, X, Y);\n    }\n\n    var cp0 = initialControlPoint;\n    for (var idx = 0; idx <= length - 3; idx++) {\n        removeDuplicates(idx, points);\n        length = points.length;\n        if (idx + 3 <= length) {\n            p0 = points[idx]; p1 = points[idx + 1]; p2 = points[idx + 2];\n            var controlPoints$1 = getControlPoints(p0,p1,p2);\n\n            last(segments).controlOut(cp0);\n            cp0 = controlPoints$1[1];\n\n            var cp1 = controlPoints$1[0];\n            segments.push(new Segment(p1, cp1));\n        }\n    }\n\n    if (closed) {\n        p0 = points[length - 2]; p1 = points[length - 1]; p2 = points[0];\n        var controlPoints$2 = getControlPoints(p0, p1, p2);\n\n        last(segments).controlOut(cp0);\n        segments.push(new Segment(\n            p1,\n            controlPoints$2[0]\n        ));\n\n        last(segments).controlOut(controlPoints$2[1]);\n        segments.push(new Segment(\n            p2,\n            lastControlPoint\n        ));\n    } else {\n        var tangent$2 = getTangent(p1, p2, X, Y);\n\n        last(segments).controlOut(cp0);\n        segments.push(new Segment(\n            p2,\n            secondControlPoint(tangent$2, p1, p2, X, Y)\n        ));\n    }\n\n    return segments;\n}\n\nexport function pointsToClosedCurve(pointsIn) {\n    return pointsToCurve(pointsIn, true);\n}\n\nexport function removeDuplicates(idx, points) {\n    while (points[idx + 1] && (points[idx].equals(points[idx + 1]) || points[idx + 1].equals(points[idx + 2]))) {\n        points.splice(idx + 1, 1);\n    }\n}\n\nexport function invertAxis(p0, p1, p2) {\n    var invertAxis = false;\n\n    if (p0.x === p1.x) {\n        invertAxis = true;\n    } else if (p1.x === p2.x) {\n        if ((p1.y < p2.y && p0.y <= p1.y) || (p2.y < p1.y && p1.y <= p0.y)) {\n            invertAxis = true;\n        }\n    } else {\n        var fn = lineFunction(p0,p1);\n        var y2 = calculateFunction(fn, p2.x);\n        if (!(p0.y <= p1.y && p2.y <= y2) &&\n            !(p1.y <= p0.y && p2.y >= y2)) {\n            invertAxis = true;\n        }\n    }\n\n    return invertAxis;\n}\n\nexport function isLine(p0, p1, p2) {\n    var fn = lineFunction(p0, p1);\n    var y2 = calculateFunction(fn, p2.x);\n\n    return (p0.x === p1.x && p1.x === p2.x) || round(y2, 1) === round(p2.y, 1);\n}\n\nexport function lineFunction(p1, p2) {\n    var a = (p2.y - p1.y) / (p2.x - p1.x);\n    var b = p1.y - a * p1.x;\n\n    return [ b, a ];\n}\n\nexport function getControlPoints(p0, p1, p2) {\n    var xField = X;\n    var yField = Y;\n    var restrict = false;\n    var switchOrientation = false;\n    var tangent;\n\n    if (isLine(p0, p1, p2)) {\n        tangent = getTangent(p0, p1, X, Y);\n    } else {\n        var monotonic = {\n            x: isMonotonicByField(p0, p1, p2, X),\n            y: isMonotonicByField(p0, p1, p2, Y)\n        };\n\n        if (monotonic.x && monotonic.y) {\n            tangent = getTangent(p0, p2, X, Y);\n            restrict = true;\n        } else {\n            if (invertAxis(p0, p1, p2)) {\n                xField = Y;\n                yField = X;\n            }\n\n            if (monotonic[xField]) {\n                tangent = 0;\n            } else {\n                var sign;\n                if ((p2[yField] < p0[yField] && p0[yField] <= p1[yField]) ||\n                    (p0[yField] < p2[yField] && p1[yField] <= p0[yField])) {\n                    sign = numberSign((p2[yField] - p0[yField]) * (p1[xField] - p0[xField]));\n                } else {\n                    sign = -numberSign((p2[xField] - p0[xField]) * (p1[yField] - p0[yField]));\n                }\n\n                tangent = EXTREMUM_ALLOWED_DEVIATION * sign;\n                switchOrientation = true;\n            }\n        }\n    }\n\n    var secondCP = secondControlPoint(tangent, p0, p1, xField, yField);\n\n    if (switchOrientation) {\n        var oldXField = xField;\n        xField = yField;\n        yField = oldXField;\n    }\n\n    var firstCP = firstControlPoint(tangent, p1, p2, xField, yField);\n\n    if (restrict) {\n        restrictControlPoint(p0, p1, secondCP, tangent);\n        restrictControlPoint(p1, p2, firstCP, tangent);\n    }\n\n    return [ secondCP, firstCP ];\n}\n\nexport function restrictControlPoint(p1, p2, cp, tangent) {\n    if (p1.y < p2.y) {\n        if (p2.y < cp.y) {\n            cp.x = p1.x + (p2.y - p1.y) / tangent;\n            cp.y = p2.y;\n        } else if (cp.y < p1.y) {\n            cp.x = p2.x - (p2.y - p1.y) / tangent;\n            cp.y = p1.y;\n        }\n    } else {\n        if (cp.y < p2.y) {\n            cp.x = p1.x - (p1.y - p2.y) / tangent;\n            cp.y = p2.y;\n        } else if (p1.y < cp.y) {\n            cp.x = p2.x + (p1.y - p2.y) / tangent;\n            cp.y = p1.y;\n        }\n    }\n}\n\nexport function getTangent(p0, p1, xField, yField) {\n    var x = p1[xField] - p0[xField];\n    var y = p1[yField] - p0[yField];\n    var tangent;\n\n    if (x === 0) {\n        tangent = 0;\n    } else {\n        tangent = y / x;\n    }\n\n    return tangent;\n}\n\nexport function isMonotonicByField(p0, p1, p2, field) {\n    return (p2[field] > p1[field] && p1[field] > p0[field]) ||\n                (p2[field] < p1[field] && p1[field] < p0[field]);\n}\n\nexport function firstControlPoint(tangent, p0, p3, xField, yField) {\n    var t1 = p0[xField];\n    var t2 = p3[xField];\n    var distance = (t2 - t1) * WEIGHT;\n\n    return point(t1 + distance, p0[yField] + distance * tangent, xField, yField);\n}\n\nexport function secondControlPoint(tangent, p0, p3, xField, yField) {\n    var t1 = p0[xField];\n    var t2 = p3[xField];\n    var distance = (t2 - t1) * WEIGHT;\n\n    return point(t2 - distance, p3[yField] - distance * tangent, xField, yField);\n}\n\nexport function point(xValue, yValue, xField, yField) {\n    var controlPoint = new Point();\n    controlPoint[xField] = xValue;\n    controlPoint[yField] = yValue;\n\n    return controlPoint;\n}\n\nexport function calculateFunction(fn, x) {\n    var length = fn.length;\n    var result = 0;\n\n    for (var i = 0; i < length; i++) {\n        result += Math.pow(x,i) * fn[i];\n    }\n    return result;\n}\n\nexport function numberSign(value) {\n    return value <= 0 ? -1 : 1;\n}\n","import { defined } from '../util';\n\nvar GRADIENT = \"Gradient\";\n\nvar paintable = function (TBase) { return (\n    (function (TBase) {\n        function anonymous () {\n            TBase.apply(this, arguments);\n        }\n\n        if ( TBase ) anonymous.__proto__ = TBase;\n        anonymous.prototype = Object.create( TBase && TBase.prototype );\n        anonymous.prototype.constructor = anonymous;\n\n        anonymous.prototype.fill = function fill (color, opacity) {\n            var options = this.options;\n\n            if (defined(color)) {\n                if (color && color.nodeType !== GRADIENT) {\n                    var newFill = {\n                        color: color\n                    };\n                    if (defined(opacity)) {\n                        newFill.opacity = opacity;\n                    }\n                    options.set(\"fill\", newFill);\n                } else {\n                    options.set(\"fill\", color);\n                }\n\n                return this;\n            }\n\n            return options.get(\"fill\");\n        };\n\n        anonymous.prototype.stroke = function stroke (color, width, opacity) {\n            if (defined(color)) {\n                this.options.set(\"stroke.color\", color);\n\n                if (defined(width)) {\n                    this.options.set(\"stroke.width\", width);\n                }\n\n                if (defined(opacity)) {\n                    this.options.set(\"stroke.opacity\", opacity);\n                }\n\n                return this;\n            }\n\n            return this.options.get(\"stroke\");\n        };\n\n        return anonymous;\n    }(TBase))\n); };\n\nexport default paintable;\n","import Matrix from '../geometry/matrix';\nimport toMatrix from '../geometry/to-matrix';\n\nvar IDENTITY_MATRIX_HASH = Matrix.IDENTITY.toString();\n\nvar measurable = function (TBase) { return (\n    (function (TBase) {\n        function anonymous () {\n            TBase.apply(this, arguments);\n        }\n\n        if ( TBase ) anonymous.__proto__ = TBase;\n        anonymous.prototype = Object.create( TBase && TBase.prototype );\n        anonymous.prototype.constructor = anonymous;\n\n        anonymous.prototype.bbox = function bbox (transformation) {\n            var combinedMatrix = toMatrix(this.currentTransform(transformation));\n            var matrixHash = combinedMatrix ? combinedMatrix.toString() : IDENTITY_MATRIX_HASH;\n            var bbox;\n\n            if (this._bboxCache && this._matrixHash === matrixHash) {\n                bbox = this._bboxCache.clone();\n            } else {\n                bbox = this._bbox(combinedMatrix);\n                this._bboxCache = bbox ? bbox.clone() : null;\n                this._matrixHash = matrixHash;\n            }\n\n            var strokeWidth = this.options.get(\"stroke.width\");\n            if (strokeWidth && bbox) {\n                bbox.expand(strokeWidth / 2);\n            }\n\n            return bbox;\n        };\n\n        anonymous.prototype.geometryChange = function geometryChange () {\n            delete this._bboxCache;\n            this.trigger(\"geometryChange\", {\n                element: this\n            });\n        };\n\n        return anonymous;\n    }(TBase))\n); };\n\nexport default measurable;","import Point from '../geometry/point';\nimport { last } from '../util';\n\nvar ShapeMap = {\n    l: function(path, options) {\n        var parameters = options.parameters;\n        var position = options.position;\n\n        for (var i = 0; i < parameters.length; i += 2) {\n            var point = new Point(parameters[i], parameters[i + 1]);\n\n            if (options.isRelative) {\n                point.translateWith(position);\n            }\n\n            path.lineTo(point.x, point.y);\n\n            position.x = point.x;\n            position.y = point.y;\n        }\n    },\n\n    c: function(path, options) {\n        var parameters = options.parameters;\n        var position = options.position;\n\n        for (var i = 0; i < parameters.length; i += 6) {\n            var controlOut = new Point(parameters[i], parameters[i + 1]);\n            var controlIn = new Point(parameters[i + 2], parameters[i + 3]);\n            var point = new Point(parameters[i + 4], parameters[i + 5]);\n            if (options.isRelative) {\n                controlIn.translateWith(position);\n                controlOut.translateWith(position);\n                point.translateWith(position);\n            }\n\n            path.curveTo(controlOut, controlIn, point);\n\n            position.x = point.x;\n            position.y = point.y;\n        }\n    },\n\n    v: function(path, options) {\n        var value = options.isRelative ? 0 : options.position.x;\n\n        toLineParamaters(options.parameters, true, value);\n        this.l(path, options);\n    },\n\n    h: function(path, options) {\n        var value = options.isRelative ? 0 : options.position.y;\n\n        toLineParamaters(options.parameters, false, value);\n        this.l(path, options);\n    },\n\n    a: function(path, options) {\n        var parameters = options.parameters;\n        var position = options.position;\n\n        for (var i = 0; i < parameters.length; i += 7) {\n            var radiusX = parameters[i];\n            var radiusY = parameters[i + 1];\n            var rotation = parameters[i + 2];\n            var largeArc = parameters[i + 3];\n            var swipe = parameters[i + 4];\n            var endPoint = new Point(parameters[i + 5], parameters[i + 6]);\n\n            if (options.isRelative) {\n                endPoint.translateWith(position);\n            }\n            if (position.x !== endPoint.x || position.y !== endPoint.y) {\n                path.arcTo(endPoint, radiusX, radiusY, largeArc, swipe, rotation);\n\n                position.x = endPoint.x;\n                position.y = endPoint.y;\n            }\n        }\n    },\n\n    s: function(path, options) {\n        var parameters = options.parameters;\n        var position = options.position;\n        var previousCommand = options.previousCommand;\n        var lastControlIn;\n\n        if (previousCommand === \"s\" || previousCommand === \"c\") {\n            lastControlIn = last(last(path.paths).segments).controlIn();\n        }\n\n        for (var i = 0; i < parameters.length; i += 4) {\n            var controlIn = new Point(parameters[i], parameters[i + 1]);\n            var endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n            var controlOut = (void 0);\n\n            if (options.isRelative) {\n                controlIn.translateWith(position);\n                endPoint.translateWith(position);\n            }\n\n            if (lastControlIn) {\n                controlOut = reflectionPoint(lastControlIn, position);\n            } else {\n                controlOut = position.clone();\n            }\n\n            lastControlIn = controlIn;\n\n            path.curveTo(controlOut, controlIn, endPoint);\n\n            position.x = endPoint.x;\n            position.y = endPoint.y;\n        }\n    },\n\n    q: function(path, options) {\n        var parameters = options.parameters;\n        var position = options.position;\n\n        for (var i = 0; i < parameters.length; i += 4) {\n            var controlPoint = new Point(parameters[i], parameters[i + 1]);\n            var endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n\n            if (options.isRelative) {\n                controlPoint.translateWith(position);\n                endPoint.translateWith(position);\n            }\n\n            var cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n\n            path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n\n            position.x = endPoint.x;\n            position.y = endPoint.y;\n        }\n    },\n\n    t: function(path, options) {\n        var parameters = options.parameters;\n        var position = options.position;\n        var previousCommand = options.previousCommand;\n        var controlPoint;\n\n        if (previousCommand === \"q\" || previousCommand === \"t\") {\n            var lastSegment = last(last(path.paths).segments);\n            controlPoint = lastSegment.controlIn().clone()\n                .translateWith(position.scaleCopy(-1 / 3))\n                .scale(3 / 2);\n        }\n\n        for (var i = 0; i < parameters.length; i += 2) {\n            var endPoint = new Point(parameters[i], parameters[i + 1]);\n            if (options.isRelative) {\n                endPoint.translateWith(position);\n            }\n\n            if (controlPoint) {\n                controlPoint = reflectionPoint(controlPoint, position);\n            } else {\n                controlPoint = position.clone();\n            }\n\n            var cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n\n            path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n\n            position.x = endPoint.x;\n            position.y = endPoint.y;\n        }\n    }\n};\n\nfunction toLineParamaters(parameters, isVertical, value) {\n    var insertPosition = isVertical ? 0 : 1;\n\n    for (var i = 0; i < parameters.length; i += 2) {\n        parameters.splice(i + insertPosition, 0, value);\n    }\n}\n\nfunction reflectionPoint(point, center) {\n    if (point && center) {\n        return center.scaleCopy(2).translate(-point.x, -point.y);\n    }\n}\n\nvar third = 1 / 3;\n\nfunction quadraticToCubicControlPoints(position, controlPoint, endPoint) {\n    var scaledPoint = controlPoint.clone().scale(2 / 3);\n    return {\n        controlOut: scaledPoint.clone().translateWith(position.scaleCopy(third)),\n        controlIn: scaledPoint.translateWith(endPoint.scaleCopy(third))\n    };\n}\n\nexport default ShapeMap;","import Point from '../geometry/point';\nimport ShapeMap from './shape-map';\n\nvar SEGMENT_REGEX = /([a-df-z]{1})([^a-df-z]*)(z)?/gi;\nvar SPLIT_REGEX = /[,\\s]?([+\\-]?(?:\\d*\\.\\d+|\\d+)(?:[eE][+\\-]?\\d+)?)/g;\nvar MOVE = \"m\";\nvar CLOSE = \"z\";\n\nfunction parseParameters(str) {\n    var parameters = [];\n    str.replace(SPLIT_REGEX, function(match, number) {\n        parameters.push(parseFloat(number));\n    });\n    return parameters;\n}\n\nfunction parsePath(pathInstance, str) {\n    var position = new Point();\n    var previousCommand;\n\n    str.replace(SEGMENT_REGEX, function (match, element, params, closePath) {\n        var command = element.toLowerCase();\n        var isRelative = command === element;\n        var parameters = parseParameters(params.trim());\n\n        if (command === MOVE) {\n            if (isRelative) {\n                position.x += parameters[0];\n                position.y += parameters[1];\n            } else {\n                position.x = parameters[0];\n                position.y = parameters[1];\n            }\n\n            pathInstance.moveTo(position.x, position.y);\n\n            if (parameters.length > 2) {\n                command = \"l\";\n                parameters.splice(0, 2);\n            }\n        }\n\n        if (ShapeMap[command]) {\n            ShapeMap[command](\n                pathInstance, {\n                    parameters: parameters,\n                    position: position,\n                    isRelative: isRelative,\n                    previousCommand: previousCommand\n                }\n            );\n\n            if (closePath && closePath.toLowerCase() === CLOSE) {\n                pathInstance.close();\n            }\n        } else if (command !== MOVE) {\n            throw new Error(\"Error while parsing SVG path. Unsupported command: \" + command);\n        }\n\n        previousCommand = command;\n    });\n\n    return pathInstance;\n}\n\nexport default parsePath;\n\n","import Rect from '../../geometry/rect';\n\nexport default function elementsBoundingBox(elements, applyTransform, transformation) {\n    var boundingBox;\n\n    for (var i = 0; i < elements.length; i++) {\n        var element = elements[i];\n        if (element.visible()) {\n            var elementBoundingBox = applyTransform ? element.bbox(transformation) : element.rawBBox();\n            if (elementBoundingBox) {\n                if (boundingBox) {\n                    boundingBox = Rect.union(boundingBox, elementBoundingBox);\n                } else {\n                    boundingBox = elementBoundingBox;\n                }\n            }\n        }\n    }\n\n    return boundingBox;\n}\n\n","import Rect from '../../geometry/rect';\n\nexport default function elementsClippedBoundingBox(elements, transformation) {\n    var boundingBox;\n\n    for (var i = 0; i < elements.length; i++) {\n        var element = elements[i];\n        if (element.visible()) {\n            var elementBoundingBox = element.clippedBBox(transformation);\n            if (elementBoundingBox) {\n                if (boundingBox) {\n                    boundingBox = Rect.union(boundingBox, elementBoundingBox);\n                } else {\n                    boundingBox = elementBoundingBox;\n                }\n            }\n        }\n    }\n\n    return boundingBox;\n}","import GeometryElementsArray from './geometry-elements-array';\nimport Element from './element';\nimport { pointsToCurve } from './utils/points-to-curve';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport Arc from '../geometry/arc';\nimport Rect from '../geometry/rect';\nimport Segment from '../geometry/segment';\nimport Point from '../geometry/point';\nimport Size from '../geometry/size';\nimport lineIntersectionsCount from '../geometry/math/line-intersections-count';\nimport { defined, last, rad } from '../util';\nimport parsePath from '../parsing/parse-path';\nimport elementsBoundingBox from './utils/elements-bounding-box';\nimport elementsClippedBoundingBox from './utils/elements-clippend-bounding-box';\nimport limitValue from '../util/limit-value';\n\nvar SPACE = ' ';\nvar printPoints = function (precision) { return function () {\n    var points = [], len = arguments.length;\n    while ( len-- ) points[ len ] = arguments[ len ];\n\n    return points.map(function (p) { return p.toString(precision); }).join(SPACE);\n; }    };\nvar segmentType = function (segmentStart, segmentEnd) { return segmentStart.controlOut() && segmentEnd.controlIn() ? 'C' : 'L'; };\n\nexport var Path = (function (superclass) {\n    function Path(options) {\n        superclass.call(this, options);\n        this.segments = new GeometryElementsArray();\n        this.segments.addObserver(this);\n\n        if (!defined(this.options.stroke)) {\n            this.stroke('#000');\n\n            if (!defined(this.options.stroke.lineJoin)) {\n                this.options.set('stroke.lineJoin', 'miter');\n            }\n        }\n    }\n\n    if ( superclass ) Path.__proto__ = superclass;\n    Path.prototype = Object.create( superclass && superclass.prototype );\n    Path.prototype.constructor = Path;\n\n    var prototypeAccessors = { nodeType: { configurable: true } };\n\n    prototypeAccessors.nodeType.get = function () {\n        return 'Path';\n    };\n\n    Path.prototype.moveTo = function moveTo (x, y) {\n        this.suspend();\n        this.segments.elements([]);\n        this.resume();\n\n        this.lineTo(x, y);\n\n        return this;\n    };\n\n    Path.prototype.lineTo = function lineTo (x, y) {\n        var point = defined(y) ? new Point(x, y) : x;\n        var segment = new Segment(point);\n\n        this.segments.push(segment);\n\n        return this;\n    };\n\n    Path.prototype.curveTo = function curveTo (controlOut, controlIn, point) {\n        if (this.segments.length > 0) {\n            var lastSegment = last(this.segments);\n            var segment = new Segment(point, controlIn);\n            this.suspend();\n            lastSegment.controlOut(controlOut);\n            this.resume();\n\n            this.segments.push(segment);\n        }\n\n        return this;\n    };\n\n    Path.prototype.arc = function arc (startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n        if (this.segments.length > 0) {\n            var lastSegment = last(this.segments);\n            var anchor = lastSegment.anchor();\n            var start = rad(startAngle);\n            var center = new Point(anchor.x - radiusX * Math.cos(start),\n                anchor.y - radiusY * Math.sin(start));\n            var arc = new Arc(center, {\n                startAngle: startAngle,\n                endAngle: endAngle,\n                radiusX: radiusX,\n                radiusY: radiusY,\n                anticlockwise: anticlockwise\n            });\n\n            this._addArcSegments(arc);\n        }\n\n        return this;\n    };\n\n    Path.prototype.arcTo = function arcTo (end, rx, ry, largeArc, swipe, rotation) {\n        if (this.segments.length > 0) {\n            var lastSegment = last(this.segments);\n            var anchor = lastSegment.anchor();\n            var arc = Arc.fromPoints(anchor, Point.create(end), rx, ry, largeArc, swipe, rotation);\n\n            this._addArcSegments(arc);\n        }\n        return this;\n    };\n\n    Path.prototype._addArcSegments = function _addArcSegments (arc) {\n        var this$1 = this;\n\n        this.suspend();\n\n        var curvePoints = arc.curvePoints();\n\n        for (var i = 1; i < curvePoints.length; i += 3) {\n            this$1.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n        }\n\n        this.resume();\n        this.geometryChange();\n    };\n\n    Path.prototype.close = function close () {\n        this.options.closed = true;\n        this.geometryChange();\n\n        return this;\n    };\n\n    Path.prototype.rawBBox = function rawBBox () {\n        return this._bbox();\n    };\n\n    Path.prototype.toString = function toString (digits) {\n        var output = '';\n\n        var segments = this.segments;\n        var length = segments.length;\n        if (length > 0) {\n            var parts = [];\n            var print = printPoints(digits);\n            var currentType;\n\n            for (var i = 1; i < length; i++) {\n                var type = segmentType(segments[i - 1], segments[i]);\n                if (type !== currentType) {\n                    currentType = type;\n                    parts.push(type);\n                }\n\n                if (type === 'L') {\n                    parts.push(print(segments[i].anchor()));\n                } else {\n                    parts.push(print(\n                        segments[i - 1].controlOut(), segments[i].controlIn(), segments[i].anchor()\n                    ));\n                }\n            }\n\n            output = 'M' + print(segments[0].anchor()) + SPACE + parts.join(SPACE);\n            if (this.options.closed) {\n                output += 'Z';\n            }\n        }\n\n        return output;\n    };\n\n    Path.prototype._containsPoint = function _containsPoint (point) {\n        var segments = this.segments;\n        var length = segments.length;\n        var intersectionsCount = 0;\n        var previous, current;\n\n        for (var idx = 1; idx < length; idx++) {\n            previous = segments[idx - 1];\n            current = segments[idx];\n            intersectionsCount += previous._intersectionsTo(current, point);\n        }\n\n        if (this.options.closed || !segments[0].anchor().equals(segments[length - 1].anchor())) {\n            intersectionsCount += lineIntersectionsCount(segments[0].anchor(), segments[length - 1].anchor(), point);\n        }\n\n        return intersectionsCount % 2 !== 0;\n    };\n\n    Path.prototype._isOnPath = function _isOnPath (point, width) {\n        var segments = this.segments;\n        var length = segments.length;\n        var pathWidth = width || this.options.stroke.width;\n\n        if (length > 1) {\n            if (segments[0]._isOnPathTo(segments[1], point, pathWidth, 'start')) {\n                return true;\n            }\n\n            for (var idx = 2; idx <= length - 2; idx++) {\n                if (segments[idx - 1]._isOnPathTo(segments[idx], point, pathWidth)) {\n                    return true;\n                }\n            }\n\n            if (segments[length - 2]._isOnPathTo(segments[length - 1], point, pathWidth, 'end')) {\n                return true;\n            }\n        }\n        return false;\n    };\n\n    Path.prototype._bbox = function _bbox (matrix) {\n        var segments = this.segments;\n        var length = segments.length;\n        var boundingBox;\n\n        if (length === 1) {\n            var anchor = segments[0].anchor().transformCopy(matrix);\n            boundingBox = new Rect(anchor, Size.ZERO);\n        } else if (length > 0) {\n            for (var i = 1; i < length; i++) {\n                var segmentBox = segments[i - 1].bboxTo(segments[i], matrix);\n                if (boundingBox) {\n                    boundingBox = Rect.union(boundingBox, segmentBox);\n                } else {\n                    boundingBox = segmentBox;\n                }\n            }\n        }\n\n        return boundingBox;\n    };\n\n    Path.parse = function parse (str, options) {\n        return MultiPath.parse(str, options);\n    };\n\n    Path.fromRect = function fromRect (rect, options) {\n        var path = new Path(options);\n        var ref = rect.cornerRadius;\n        var rx = ref[0];\n        var ry = ref[1];\n\n        if (rx === 0 && ry === 0) {\n            path.moveTo(rect.topLeft())\n                .lineTo(rect.topRight())\n                .lineTo(rect.bottomRight())\n                .lineTo(rect.bottomLeft())\n                .close();\n        } else {\n            var origin = rect.origin;\n            var x = origin.x;\n            var y = origin.y;\n            var width = rect.width();\n            var height = rect.height();\n            rx = limitValue(rx, 0, width / 2);\n            ry = limitValue(ry, 0, height / 2);\n\n            path.moveTo(x + rx, y)\n                .lineTo(x + width - rx, y)\n                .arcTo([ x + width, y + ry ], rx, ry, false)\n                .lineTo(x + width, y + height - ry)\n                .arcTo([ x + width - rx, y + height ], rx, ry, false)\n                .lineTo(x + rx, y + height)\n                .arcTo([ x, y + height - ry ], rx, ry, false)\n                .lineTo(x, y + ry)\n                .arcTo([ x + rx, y ], rx, ry, false);\n        }\n\n        return path;\n    };\n\n    Path.fromPoints = function fromPoints (points, options) {\n        if (points) {\n            var path = new Path(options);\n\n            for (var i = 0; i < points.length; i++) {\n                var point = Point.create(points[i]);\n                if (point) {\n                    if (i === 0) {\n                        path.moveTo(point);\n                    } else {\n                        path.lineTo(point);\n                    }\n                }\n            }\n\n            return path;\n        }\n    };\n\n    Path.curveFromPoints = function curveFromPoints (points, options) {\n        if (points) {\n            var segments = pointsToCurve(points);\n            var path = new Path(options);\n            path.segments.push.apply(path.segments, segments);\n\n            return path;\n        }\n    };\n\n    Path.fromArc = function fromArc (arc, options) {\n        var path = new Path(options);\n        var startAngle = arc.startAngle;\n        var start = arc.pointAt(startAngle);\n        path.moveTo(start.x, start.y);\n        path.arc(startAngle, arc.endAngle, arc.radiusX, arc.radiusY, arc.anticlockwise);\n        return path;\n    };\n\n    Object.defineProperties( Path.prototype, prototypeAccessors );\n\n    return Path;\n}(paintable(measurable(Element))));\n\nexport var MultiPath = (function (superclass) {\n    function MultiPath(options) {\n        superclass.call(this, options);\n        this.paths = new GeometryElementsArray();\n        this.paths.addObserver(this);\n\n        if (!defined(this.options.stroke)) {\n            this.stroke('#000');\n        }\n    }\n\n    if ( superclass ) MultiPath.__proto__ = superclass;\n    MultiPath.prototype = Object.create( superclass && superclass.prototype );\n    MultiPath.prototype.constructor = MultiPath;\n\n    var prototypeAccessors$1 = { nodeType: { configurable: true } };\n\n    MultiPath.parse = function parse (str, options) {\n        var instance = new MultiPath(options);\n        return parsePath(instance, str);\n    };\n\n    MultiPath.prototype.toString = function toString (digits) {\n        var paths = this.paths;\n        var output = '';\n\n        if (paths.length > 0) {\n            var result = [];\n\n            for (var i = 0; i < paths.length; i++) {\n                result.push(paths[i].toString(digits));\n            }\n\n            output = result.join(SPACE);\n        }\n\n        return output;\n    };\n\n    prototypeAccessors$1.nodeType.get = function () {\n        return 'MultiPath';\n    };\n\n    MultiPath.prototype.moveTo = function moveTo (x, y) {\n        var path = new Path();\n        path.moveTo(x, y);\n\n        this.paths.push(path);\n\n        return this;\n    };\n\n    MultiPath.prototype.lineTo = function lineTo (x, y) {\n        if (this.paths.length > 0) {\n            last(this.paths).lineTo(x, y);\n        }\n\n        return this;\n    };\n\n    MultiPath.prototype.curveTo = function curveTo (controlOut, controlIn, point) {\n        if (this.paths.length > 0) {\n            last(this.paths).curveTo(controlOut, controlIn, point);\n        }\n\n        return this;\n    };\n\n    MultiPath.prototype.arc = function arc (startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n        if (this.paths.length > 0) {\n            last(this.paths).arc(startAngle, endAngle, radiusX, radiusY, anticlockwise);\n        }\n\n        return this;\n    };\n\n    MultiPath.prototype.arcTo = function arcTo (end, rx, ry, largeArc, swipe, rotation) {\n        if (this.paths.length > 0) {\n            last(this.paths).arcTo(end, rx, ry, largeArc, swipe, rotation);\n        }\n\n        return this;\n    };\n\n    MultiPath.prototype.close = function close () {\n        if (this.paths.length > 0) {\n            last(this.paths).close();\n        }\n\n        return this;\n    };\n\n    MultiPath.prototype._bbox = function _bbox (matrix) {\n        return elementsBoundingBox(this.paths, true, matrix);\n    };\n\n    MultiPath.prototype.rawBBox = function rawBBox () {\n        return elementsBoundingBox(this.paths, false);\n    };\n\n    MultiPath.prototype._containsPoint = function _containsPoint (point) {\n        var paths = this.paths;\n\n        for (var idx = 0; idx < paths.length; idx++) {\n            if (paths[idx]._containsPoint(point)) {\n                return true;\n            }\n        }\n        return false;\n    };\n\n    MultiPath.prototype._isOnPath = function _isOnPath (point) {\n        var paths = this.paths;\n        var width = this.options.stroke.width;\n\n        for (var idx = 0; idx < paths.length; idx++) {\n            if (paths[idx]._isOnPath(point, width)) {\n                return true;\n            }\n        }\n        return false;\n    };\n\n    MultiPath.prototype._clippedBBox = function _clippedBBox (transformation) {\n        return elementsClippedBoundingBox(this.paths, this.currentTransform(transformation));\n    };\n\n    Object.defineProperties( MultiPath.prototype, prototypeAccessors$1 );\n\n    return MultiPath;\n}(paintable(measurable(Element))));\n\n","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\nimport { Class } from '../common';\n\nvar DIRECTION_ANGLE = 0.001; //any value that will make the endAngle bigger than the start angle will work here.\n\nvar ShapeBuilder = (function (Class) {\n    function ShapeBuilder () {\n        Class.apply(this, arguments);\n    }\n\n    if ( Class ) ShapeBuilder.__proto__ = Class;\n    ShapeBuilder.prototype = Object.create( Class && Class.prototype );\n    ShapeBuilder.prototype.constructor = ShapeBuilder;\n\n    ShapeBuilder.prototype.createRing = function createRing (sector, options) {\n        var startAngle = sector.startAngle + 180;\n        var endAngle = sector.angle + startAngle;\n\n        //required in order to avoid reversing the arc direction in cases like 0.000000000000001 + 100 === 100\n        if (sector.angle > 0 && startAngle === endAngle) {\n            endAngle += DIRECTION_ANGLE;\n        }\n\n        var center = new geom.Point(sector.center.x, sector.center.y);\n        var radius = Math.max(sector.radius, 0);\n        var innerRadius = Math.max(sector.innerRadius, 0);\n        var arc = new geom.Arc(center, {\n            startAngle: startAngle,\n            endAngle: endAngle,\n            radiusX: radius,\n            radiusY: radius\n        });\n        var path = draw.Path.fromArc(arc, options).close();\n\n        if (innerRadius) {\n            arc.radiusX = arc.radiusY = innerRadius;\n            var innerEnd = arc.pointAt(endAngle);\n            path.lineTo(innerEnd.x, innerEnd.y);\n            path.arc(endAngle, startAngle, innerRadius, innerRadius, true);\n        } else {\n            path.lineTo(center.x, center.y);\n        }\n\n        return path;\n    };\n\n    return ShapeBuilder;\n}(Class));\n\nShapeBuilder.current = new ShapeBuilder();\n\nexport default ShapeBuilder;","import withAccessors from '../mixins/with-accessors';\nimport Point from './point';\nimport Rect from './rect';\nimport ellipseExtremeAngles from './math/ellipse-extreme-angles';\nimport HasObservers from '../core/has-observers';\nimport { rad } from '../util';\n\n\nvar PI_DIV_2 = Math.PI / 2;\n\nvar Circle = (function (superclass) {\n    function Circle(center, radius) {\n        if ( center === void 0 ) center = new Point();\n        if ( radius === void 0 ) radius = 0;\n\n        superclass.call(this);\n\n        this.setCenter(center);\n        this.setRadius(radius);\n    }\n\n    if ( superclass ) Circle.__proto__ = superclass;\n    Circle.prototype = Object.create( superclass && superclass.prototype );\n    Circle.prototype.constructor = Circle;\n\n    Circle.prototype.setCenter = function setCenter (value) {\n        this._observerField(\"center\", Point.create(value));\n        this.geometryChange();\n        return this;\n    };\n\n    Circle.prototype.getCenter = function getCenter () {\n        return this.center;\n    };\n\n    Circle.prototype.equals = function equals (other) {\n        return other &&\n               other.center.equals(this.center) &&\n               other.radius === this.radius;\n    };\n\n    Circle.prototype.clone = function clone () {\n        return new Circle(this.center.clone(), this.radius);\n    };\n\n    Circle.prototype.pointAt = function pointAt (angle) {\n        return this._pointAt(rad(angle));\n    };\n\n    Circle.prototype.bbox = function bbox (matrix) {\n        var this$1 = this;\n\n        var extremeAngles = ellipseExtremeAngles(this.center, this.radius, this.radius, matrix);\n        var minPoint = Point.maxPoint();\n        var maxPoint = Point.minPoint();\n\n        for (var i = 0; i < 4; i++) {\n            var currentPointX = this$1._pointAt(extremeAngles.x + i * PI_DIV_2).transformCopy(matrix);\n            var currentPointY = this$1._pointAt(extremeAngles.y + i * PI_DIV_2).transformCopy(matrix);\n            var currentPoint = new Point(currentPointX.x, currentPointY.y);\n\n            minPoint = Point.min(minPoint, currentPoint);\n            maxPoint = Point.max(maxPoint, currentPoint);\n        }\n\n        return Rect.fromPoints(minPoint, maxPoint);\n    };\n\n    Circle.prototype._pointAt = function _pointAt (angle) {\n        var ref = this;\n        var center = ref.center;\n        var radius = ref.radius;\n\n        return new Point(\n            center.x + radius * Math.cos(angle),\n            center.y + radius * Math.sin(angle)\n        );\n    };\n\n    Circle.prototype.containsPoint = function containsPoint (point) {\n        var ref = this;\n        var center = ref.center;\n        var radius = ref.radius;\n        var inCircle = Math.pow(point.x - center.x, 2) +\n            Math.pow(point.y - center.y, 2) <= Math.pow(radius, 2);\n        return inCircle;\n    };\n\n    Circle.prototype._isOnPath = function _isOnPath (point, width) {\n        var ref = this;\n        var center = ref.center;\n        var radius = ref.radius;\n        var pointDistance = center.distanceTo(point);\n\n        return radius - width <= pointDistance && pointDistance <= radius + width;\n    };\n\n    return Circle;\n}(withAccessors(HasObservers, [ \"radius\" ])));\n\nexport default Circle;\n","import { defined } from '../util';\n\nfunction geometryAccessor(name) {\n    var fieldName = \"_\" + name;\n    return function(value) {\n        if (defined(value)) {\n            this._observerField(fieldName, value);\n            this.geometryChange();\n            return this;\n        }\n\n        return this[fieldName];\n    };\n}\n\nfunction defineGeometryAccessors(fn, names) {\n    for (var i = 0; i < names.length; i++) {\n        fn[names[i]] = geometryAccessor(names[i]);\n    }\n}\n\nvar withGeometry = function (TBase, names) {\n    if ( names === void 0 ) names = [ \"geometry\" ];\n\n    var result = (function (TBase) {\n        function result () {\n            TBase.apply(this, arguments);\n        }if ( TBase ) result.__proto__ = TBase;\n        result.prototype = Object.create( TBase && TBase.prototype );\n        result.prototype.constructor = result;\n\n        \n\n        return result;\n    }(TBase));\n    defineGeometryAccessors(result.prototype, names);\n\n    return result;\n};\n\nexport default withGeometry;\n","import GeometryCircle from '../geometry/circle';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport withGeometry from '../mixins/with-geometry';\nimport Element from './element';\nimport { defined } from '../util';\n\nvar DEFAULT_STROKE = \"#000\";\n\nvar Circle = (function (superclass) {\n    function Circle(geometry, options) {\n        if ( geometry === void 0 ) geometry = new GeometryCircle();\n        if ( options === void 0 ) options = {};\n\n        superclass.call(this, options);\n\n        this.geometry(geometry);\n\n        if (!defined(this.options.stroke)) {\n            this.stroke(DEFAULT_STROKE);\n        }\n    }\n\n    if ( superclass ) Circle.__proto__ = superclass;\n    Circle.prototype = Object.create( superclass && superclass.prototype );\n    Circle.prototype.constructor = Circle;\n\n    var prototypeAccessors = { nodeType: { configurable: true } };\n\n    prototypeAccessors.nodeType.get = function () {\n        return \"Circle\";\n    };\n\n    Circle.prototype.rawBBox = function rawBBox () {\n        return this._geometry.bbox();\n    };\n\n    Circle.prototype._bbox = function _bbox (matrix) {\n        return this._geometry.bbox(matrix);\n    };\n\n    Circle.prototype._containsPoint = function _containsPoint (point) {\n        return this.geometry().containsPoint(point);\n    };\n\n    Circle.prototype._isOnPath = function _isOnPath (point) {\n        return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n    };\n\n    Object.defineProperties( Circle.prototype, prototypeAccessors );\n\n    return Circle;\n}(paintable(measurable(withGeometry(Element)))));\n\nexport default Circle;\n","var traversable = function (TBase, childrenField) { return (\n    (function (TBase) {\n        function anonymous () {\n            TBase.apply(this, arguments);\n        }\n\n        if ( TBase ) anonymous.__proto__ = TBase;\n        anonymous.prototype = Object.create( TBase && TBase.prototype );\n        anonymous.prototype.constructor = anonymous;\n\n        anonymous.prototype.traverse = function traverse (callback) {\n            var children = this[childrenField];\n\n            for (var i = 0; i < children.length; i++) {\n                var child = children[i];\n\n                if (child.traverse) {\n                    child.traverse(callback);\n                } else {\n                    callback(child);\n                }\n            }\n\n            return this;\n        };\n\n        return anonymous;\n    }(TBase))\n); };\n\nexport default traversable;\n","import Element from './element';\nimport traversable from '../mixins/traversable';\nimport { append } from '../util';\nimport elementsBoundingBox from './utils/elements-bounding-box';\nimport elementsClippedBoundingBox from './utils/elements-clippend-bounding-box';\n\n\nvar Group = (function (superclass) {\n    function Group(options) {\n        superclass.call(this, options);\n        this.children = [];\n    }\n\n    if ( superclass ) Group.__proto__ = superclass;\n    Group.prototype = Object.create( superclass && superclass.prototype );\n    Group.prototype.constructor = Group;\n\n    var prototypeAccessors = { nodeType: { configurable: true } };\n\n    prototypeAccessors.nodeType.get = function () {\n        return \"Group\";\n    };\n\n    Group.prototype.childrenChange = function childrenChange (action, items, index) {\n        this.trigger(\"childrenChange\",{\n            action: action,\n            items: items,\n            index: index\n        });\n    };\n\n    Group.prototype.append = function append$1 () {\n        append(this.children, arguments);\n        this._reparent(arguments, this);\n\n        this.childrenChange(\"add\", arguments);\n\n        return this;\n    };\n\n    Group.prototype.insert = function insert (index, element) {\n        this.children.splice(index, 0, element);\n        element.parent = this;\n\n        this.childrenChange(\"add\", [ element ], index);\n\n        return this;\n    };\n\n    Group.prototype.insertAt = function insertAt (element, index) {\n        return this.insert(index, element);\n    };\n\n    Group.prototype.remove = function remove (element) {\n        var index = this.children.indexOf(element);\n        if (index >= 0) {\n            this.children.splice(index, 1);\n            element.parent = null;\n            this.childrenChange(\"remove\", [ element ], index);\n        }\n\n        return this;\n    };\n\n    Group.prototype.removeAt = function removeAt (index) {\n        if (0 <= index && index < this.children.length) {\n            var element = this.children[index];\n            this.children.splice(index, 1);\n            element.parent = null;\n            this.childrenChange(\"remove\", [ element ], index);\n        }\n\n        return this;\n    };\n\n    Group.prototype.clear = function clear () {\n        var items = this.children;\n        this.children = [];\n        this._reparent(items, null);\n\n        this.childrenChange(\"remove\", items, 0);\n\n        return this;\n    };\n\n    Group.prototype.bbox = function bbox (transformation) {\n        return elementsBoundingBox(this.children, true, this.currentTransform(transformation));\n    };\n\n    Group.prototype.rawBBox = function rawBBox () {\n        return elementsBoundingBox(this.children, false);\n    };\n\n    Group.prototype._clippedBBox = function _clippedBBox (transformation) {\n        return elementsClippedBoundingBox(this.children, this.currentTransform(transformation));\n    };\n\n    Group.prototype.currentTransform = function currentTransform (transformation) {\n        return Element.prototype.currentTransform.call(this, transformation) || null;\n    };\n\n    Group.prototype.containsPoint = function containsPoint (point, parentTransform) {\n        if (this.visible()) {\n            var children = this.children;\n            var transform = this.currentTransform(parentTransform);\n            for (var idx = 0; idx < children.length; idx++) {\n                if (children[idx].containsPoint(point, transform)) {\n                    return true;\n                }\n            }\n        }\n        return false;\n    };\n\n    Group.prototype._reparent = function _reparent (elements, newParent) {\n        var this$1 = this;\n\n        for (var i = 0; i < elements.length; i++) {\n            var child = elements[i];\n            var parent = child.parent;\n            if (parent && parent !== this$1 && parent.remove) {\n                parent.remove(child);\n            }\n\n            child.parent = newParent;\n        }\n    };\n\n    Object.defineProperties( Group.prototype, prototypeAccessors );\n\n    return Group;\n}(traversable(Element, \"children\")));\n\nexport default Group;","export function swing(position) {\n    return 0.5 - Math.cos(position * Math.PI) / 2;\n}\n\nexport function linear(position) {\n    return position;\n}\n\nexport function easeOutElastic(position, time, start, diff) {\n    var s = 1.70158,\n        p = 0,\n        a = diff;\n\n    if (position === 0) {\n        return start;\n    }\n\n    if (position === 1) {\n        return start + diff;\n    }\n\n    if (!p) {\n        p = 0.5;\n    }\n\n    if (a < Math.abs(diff)) {\n        a = diff;\n        s = p / 4;\n    } else {\n        s = p / (2 * Math.PI) * Math.asin(diff / a);\n    }\n\n    return a * Math.pow(2, -10 * position) *\n           Math.sin((Number(position) - s) * (1.1 * Math.PI) / p) + diff + start;\n}\n","var animationFrameProxy = function (callback) {\n    var wnd = typeof window !== \"undefined\" ? window : {};\n    var animationFrame = wnd.requestAnimationFrame ||\n                        wnd.webkitRequestAnimationFrame ||\n                        wnd.mozRequestAnimationFrame ||\n                        wnd.oRequestAnimationFrame ||\n                        wnd.msRequestAnimationFrame ||\n                        function(callback) { setTimeout(callback, 1000 / 60); };\n\n    animationFrameProxy = function (callback) { return animationFrame.call(wnd, callback); };\n    animationFrameProxy(callback);\n};\n\nexport default animationFrameProxy;\n","import { Class } from '../common';\n\nvar instance;\n\nvar AnimationFactory = (function (Class) {\n    function AnimationFactory() {\n        Class.call(this);\n\n        this._items = [];\n    }\n\n    if ( Class ) AnimationFactory.__proto__ = Class;\n    AnimationFactory.prototype = Object.create( Class && Class.prototype );\n    AnimationFactory.prototype.constructor = AnimationFactory;\n\n    var staticAccessors = { current: { configurable: true } };\n\n    staticAccessors.current.get = function () {\n        if (!instance) {\n            instance = new AnimationFactory();\n        }\n\n        return instance;\n    };\n\n    AnimationFactory.prototype.register = function register (name, type) {\n        this._items.push({\n            name: name,\n            type: type\n        });\n    };\n\n    AnimationFactory.prototype.create = function create (element, options) {\n        var items = this._items;\n        var match;\n\n        if (options && options.type) {\n            var type = options.type.toLowerCase();\n            for (var i = 0; i < items.length; i++) {\n                if (items[i].name.toLowerCase() === type) {\n                    match = items[i];\n                    break;\n                }\n            }\n        }\n\n        if (match) {\n            return new match.type(element, options);\n        }\n    };\n\n    Object.defineProperties( AnimationFactory, staticAccessors );\n\n    return AnimationFactory;\n}(Class));\n\nexport default AnimationFactory;\n","import * as easingFunctions from './easing-functions';\nimport { limitValue, now } from '../util';\nimport { animationFrame, Class } from '../common';\nimport AnimationFactory from './animation-factory';\n\nvar Animation = (function (Class) {\n    function Animation(element, options) {\n        Class.call(this);\n\n        this.options = Object.assign({}, this.options, options);\n        this.element = element;\n    }\n\n    if ( Class ) Animation.__proto__ = Class;\n    Animation.prototype = Object.create( Class && Class.prototype );\n    Animation.prototype.constructor = Animation;\n\n    var prototypeAccessors = { options: { configurable: true } };\n\n    Animation.create = function create (type, element, options) {\n        return AnimationFactory.current.create(type, element, options);\n    };\n\n    prototypeAccessors.options.get = function () {\n        return this._options || {\n            duration: 500,\n            easing: \"swing\"\n        };\n    };\n\n    prototypeAccessors.options.set = function (value) {\n        this._options = value;\n    };\n\n    Animation.prototype.setup = function setup () {};\n    Animation.prototype.step = function step () {};\n\n    Animation.prototype.play = function play () {\n        var this$1 = this;\n\n        var options = this.options;\n        var duration = options.duration;\n        var delay = options.delay; if ( delay === void 0 ) delay = 0;\n        var easing = easingFunctions[options.easing];\n        var start = now() + delay;\n        var finish = start + duration;\n\n        if (duration === 0) {\n            this.step(1);\n            this.abort();\n        } else {\n            setTimeout(function () {\n                var loop = function () {\n                    if (this$1._stopped) {\n                        return;\n                    }\n\n                    var wallTime = now();\n\n                    var time = limitValue(wallTime - start, 0, duration);\n                    var position = time / duration;\n                    var easingPosition = easing(position, time, 0, 1, duration);\n\n                    this$1.step(easingPosition);\n\n                    if (wallTime < finish) {\n                        animationFrame(loop);\n                    } else {\n                        this$1.abort();\n                    }\n                };\n\n                loop();\n            }, delay);\n        }\n    };\n\n    Animation.prototype.abort = function abort () {\n        this._stopped = true;\n    };\n\n    Animation.prototype.destroy = function destroy () {\n        this.abort();\n    };\n\n    Object.defineProperties( Animation.prototype, prototypeAccessors );\n\n    return Animation;\n}(Class));\n\nexport default Animation;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { WHITE } from '../common/constants';\nimport { Class, deepExtend, defined, valueOrDefault } from '../common';\n\nvar ChartElement = (function (Class) {\n    function ChartElement(options) {\n        Class.call(this);\n\n        this.children = [];\n\n        this.options = deepExtend({}, this.options, this.initUserOptions(options));\n    }\n\n    if ( Class ) ChartElement.__proto__ = Class;\n    ChartElement.prototype = Object.create( Class && Class.prototype );\n    ChartElement.prototype.constructor = ChartElement;\n\n    ChartElement.prototype.initUserOptions = function initUserOptions (options) {\n        return options;\n    };\n\n    ChartElement.prototype.reflow = function reflow (targetBox) {\n        var children = this.children;\n        var box;\n\n        for (var i = 0; i < children.length; i++) {\n            var currentChild = children[i];\n            currentChild.reflow(targetBox);\n\n            box = box ? box.wrap(currentChild.box) : currentChild.box.clone();\n        }\n\n        this.box = box || targetBox;\n    };\n\n    ChartElement.prototype.destroy = function destroy () {\n        var children = this.children;\n\n        if (this.animation) {\n            this.animation.destroy();\n        }\n\n        for (var i = 0; i < children.length; i++) {\n            children[i].destroy();\n        }\n    };\n\n    ChartElement.prototype.getRoot = function getRoot () {\n        var parent = this.parent;\n\n        return parent ? parent.getRoot() : null;\n    };\n\n    ChartElement.prototype.getSender = function getSender () {\n        var service = this.getService();\n        if (service) {\n            return service.sender;\n        }\n    };\n\n    ChartElement.prototype.getService = function getService () {\n        var element = this;\n        while (element) {\n            if (element.chartService) {\n                return element.chartService;\n            }\n            element = element.parent;\n        }\n    };\n\n    ChartElement.prototype.translateChildren = function translateChildren (dx, dy) {\n        var children = this.children;\n        var childrenCount = children.length;\n\n        for (var i = 0; i < childrenCount; i++) {\n            children[i].box.translate(dx, dy);\n        }\n    };\n\n    ChartElement.prototype.append = function append () {\n        var arguments$1 = arguments;\n        var this$1 = this;\n\n        for (var i = 0; i < arguments.length; i++) {\n            var item = arguments$1[i];\n            this$1.children.push(item);\n            item.parent = this$1;\n        }\n    };\n\n    ChartElement.prototype.renderVisual = function renderVisual () {\n        if (this.options.visible === false) {\n            return;\n        }\n\n        this.createVisual();\n\n        this.addVisual();\n\n        this.renderChildren();\n\n        this.createAnimation();\n        this.renderComplete();\n    };\n\n    ChartElement.prototype.addVisual = function addVisual () {\n        if (this.visual) {\n            this.visual.chartElement = this;\n\n            if (this.parent) {\n                this.parent.appendVisual(this.visual);\n            }\n        }\n    };\n\n    ChartElement.prototype.renderChildren = function renderChildren () {\n        var children = this.children;\n        var length = children.length;\n        for (var i = 0; i < length; i++) {\n            children[i].renderVisual();\n        }\n    };\n\n    ChartElement.prototype.createVisual = function createVisual () {\n        this.visual = new draw.Group({\n            zIndex: this.options.zIndex,\n            visible: valueOrDefault(this.options.visible, true)\n        });\n    };\n\n    ChartElement.prototype.createAnimation = function createAnimation () {\n        if (this.visual && this.options.animation) {\n            this.animation = draw.Animation.create(\n                this.visual, this.options.animation\n            );\n        }\n    };\n\n    ChartElement.prototype.appendVisual = function appendVisual (childVisual) {\n        if (!childVisual.chartElement) {\n            childVisual.chartElement = this;\n        }\n\n        if (childVisual.options.noclip) {\n            this.clipRoot().visual.append(childVisual);\n        } else if (defined(childVisual.options.zIndex)) {\n            this.stackRoot().stackVisual(childVisual);\n        } else if (this.isStackRoot) {\n            this.stackVisual(childVisual);\n        } else if (this.visual) {\n            this.visual.append(childVisual);\n        } else {\n            // Allow chart elements without visuals to\n            // pass through child visuals\n            this.parent.appendVisual(childVisual);\n        }\n    };\n\n    ChartElement.prototype.clipRoot = function clipRoot () {\n        if (this.parent) {\n            return this.parent.clipRoot();\n        }\n\n        return this;\n    };\n\n    ChartElement.prototype.stackRoot = function stackRoot () {\n        if (this.parent) {\n            return this.parent.stackRoot();\n        }\n\n        return this;\n    };\n\n    ChartElement.prototype.stackVisual = function stackVisual (childVisual) {\n        var zIndex = childVisual.options.zIndex || 0;\n        var visuals = this.visual.children;\n        var length = visuals.length;\n        var pos;\n\n        for (pos = 0; pos < length; pos++) {\n            var sibling = visuals[pos];\n            var here = valueOrDefault(sibling.options.zIndex, 0);\n            if (here > zIndex) {\n                break;\n            }\n        }\n\n        this.visual.insert(pos, childVisual);\n    };\n\n    ChartElement.prototype.traverse = function traverse (callback) {\n        var children = this.children;\n        var length = children.length;\n\n        for (var i = 0; i < length; i++) {\n            var child = children[i];\n\n            callback(child);\n            if (child.traverse) {\n                child.traverse(callback);\n            }\n        }\n    };\n\n    ChartElement.prototype.closest = function closest (match) {\n        var element = this;\n        var matched = false;\n\n        while (element && !matched) {\n            matched = match(element);\n\n            if (!matched) {\n                element = element.parent;\n            }\n        }\n\n        if (matched) {\n            return element;\n        }\n    };\n\n    ChartElement.prototype.renderComplete = function renderComplete () {};\n\n    ChartElement.prototype.hasHighlight = function hasHighlight () {\n        var options = (this.options || {}).highlight;\n        return !(!this.createHighlight || (options && options.visible === false) || this.visible === false);\n    };\n\n    ChartElement.prototype.toggleHighlight = function toggleHighlight (show, opacity) {\n        var this$1 = this;\n\n        var options = (this.options || {}).highlight || {};\n        var customVisual = options.visual;\n        var highlight = this._highlight;\n\n        if (!highlight) {\n            var highlightOptions = {\n                fill: {\n                    color: WHITE,\n                    opacity: opacity || 0.2\n                },\n                stroke: {\n                    color: WHITE,\n                    width: 1,\n                    opacity: opacity || 0.2\n                }\n            };\n\n            if (customVisual) {\n                highlight = this._highlight = customVisual(\n                    Object.assign(this.highlightVisualArgs(), {\n                        createVisual: function () { return this$1.createHighlight(highlightOptions); },\n                        sender: this.getSender(),\n                        series: this.series,\n                        dataItem: this.dataItem,\n                        category: this.category,\n                        value: this.value,\n                        percentage: this.percentage,\n                        runningTotal: this.runningTotal,\n                        total: this.total\n                    }\n                ));\n\n                if (!highlight) {\n                    return;\n                }\n            } else {\n                highlight = this._highlight = this.createHighlight(highlightOptions);\n            }\n\n            if (!defined(highlight.options.zIndex)) {\n                highlight.options.zIndex = valueOrDefault(options.zIndex, this.options.zIndex);\n            }\n\n            this.appendVisual(highlight);\n        }\n\n        highlight.visible(show);\n    };\n\n    ChartElement.prototype.createGradientOverlay = function createGradientOverlay (element, options, gradientOptions) {\n        var overlay = new draw.Path(Object.assign({\n            stroke: {\n                color: \"none\"\n            },\n            fill: this.createGradient(gradientOptions),\n            closed: element.options.closed\n        }, options));\n\n        overlay.segments.elements(element.segments.elements());\n\n        return overlay;\n    };\n\n    ChartElement.prototype.createGradient = function createGradient (options) {\n        if (this.parent) {\n            return this.parent.createGradient(options);\n        }\n    };\n\n    ChartElement.prototype.supportsPointInactiveOpacity = function supportsPointInactiveOpacity () {\n        return true;\n    };\n\n    return ChartElement;\n}(Class));\n\nChartElement.prototype.options = { };\n\nexport default ChartElement;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport Box from './box';\n\nimport { BLACK, LEFT, TOP, X, Y } from '../common/constants';\nimport { getSpacing, setDefaultOptions, valueOrDefault } from '../common';\n\nvar BoxElement = (function (ChartElement) {\n    function BoxElement(options) {\n        ChartElement.call(this, options);\n\n        this.options.margin = getSpacing(this.options.margin);\n        this.options.padding = getSpacing(this.options.padding);\n    }\n\n    if ( ChartElement ) BoxElement.__proto__ = ChartElement;\n    BoxElement.prototype = Object.create( ChartElement && ChartElement.prototype );\n    BoxElement.prototype.constructor = BoxElement;\n\n    BoxElement.prototype.reflow = function reflow (targetBox) {\n        var this$1 = this;\n\n        var options = this.options;\n        var width = options.width;\n        var height = options.height;\n        var shrinkToFit = options.shrinkToFit;\n        var hasSetSize = width && height;\n        var margin = options.margin;\n        var padding = options.padding;\n        var borderWidth = options.border.width;\n        var box;\n\n        var reflowPaddingBox = function () {\n            this$1.align(targetBox, X, options.align);\n            this$1.align(targetBox, Y, options.vAlign);\n            this$1.paddingBox = box.clone().unpad(margin).unpad(borderWidth);\n        };\n\n        var contentBox = targetBox.clone();\n        if (hasSetSize) {\n            contentBox.x2 = contentBox.x1 + width;\n            contentBox.y2 = contentBox.y1 + height;\n        }\n\n        if (shrinkToFit) {\n            contentBox.unpad(margin).unpad(borderWidth).unpad(padding);\n        }\n\n        ChartElement.prototype.reflow.call(this, contentBox);\n\n        if (hasSetSize) {\n            box = this.box = new Box(0, 0, width, height);\n        } else {\n            box = this.box;\n        }\n\n        if (shrinkToFit && hasSetSize) {\n            reflowPaddingBox();\n            contentBox = this.contentBox = this.paddingBox.clone().unpad(padding);\n        } else {\n            contentBox = this.contentBox = box.clone();\n            box.pad(padding).pad(borderWidth).pad(margin);\n            reflowPaddingBox();\n        }\n\n        this.translateChildren(\n            box.x1 - contentBox.x1 + margin.left + borderWidth + padding.left,\n            box.y1 - contentBox.y1 + margin.top + borderWidth + padding.top\n        );\n\n        var children = this.children;\n        for (var i = 0; i < children.length; i++) {\n            var item = children[i];\n            item.reflow(item.box);\n        }\n    };\n\n    BoxElement.prototype.align = function align (targetBox, axis, alignment) {\n        this.box.align(targetBox, axis, alignment);\n    };\n\n    BoxElement.prototype.hasBox = function hasBox () {\n        var options = this.options;\n        return options.border.width || options.background;\n    };\n\n    BoxElement.prototype.createVisual = function createVisual () {\n        ChartElement.prototype.createVisual.call(this);\n\n        var options = this.options;\n        if (options.visible && this.hasBox()) {\n            this.visual.append(draw.Path.fromRect(\n                this.paddingBox.toRect(),\n                this.visualStyle()\n            ));\n        }\n    };\n\n    BoxElement.prototype.visualStyle = function visualStyle () {\n        var options = this.options;\n        var border = options.border || {};\n\n        return {\n            stroke: {\n                width: border.width,\n                color: border.color,\n                opacity: valueOrDefault(border.opacity, options.opacity),\n                dashType: border.dashType\n            },\n            fill: {\n                color: options.background,\n                opacity: options.opacity\n            },\n            cursor: options.cursor\n        };\n    };\n\n    return BoxElement;\n}(ChartElement));\n\nsetDefaultOptions(BoxElement, {\n    align: LEFT,\n    vAlign: TOP,\n    margin: {},\n    padding: {},\n    border: {\n        color: BLACK,\n        width: 0\n    },\n    background: \"\",\n    shrinkToFit: false,\n    width: 0,\n    height: 0,\n    visible: true\n});\n\nexport default BoxElement;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\nimport { round, setDefaultOptions } from '../common';\nimport { CENTER, CIRCLE, COORD_PRECISION, CROSS, ROUNDED_RECT, TRIANGLE } from '../common/constants';\nimport { valueOrDefault } from '../drawing-utils';\nimport BoxElement from './box-element';\n\nvar ShapeElement = (function (BoxElement) {\n    function ShapeElement(options, pointData) {\n        BoxElement.call(this, options);\n\n        this.pointData = pointData;\n    }\n\n    if ( BoxElement ) ShapeElement.__proto__ = BoxElement;\n    ShapeElement.prototype = Object.create( BoxElement && BoxElement.prototype );\n    ShapeElement.prototype.constructor = ShapeElement;\n\n    ShapeElement.prototype.getElement = function getElement () {\n        var ref = this;\n        var options = ref.options;\n        var box = ref.paddingBox;\n        var type = options.type;\n        var rotation = options.rotation;\n        var center = box.center();\n        var halfWidth = box.width() / 2;\n        var halfHeight = box.height() / 2;\n\n        if (!options.visible || !this.hasBox()) {\n            return null;\n        }\n\n        var style = this.visualStyle();\n        var element;\n\n        if (type === CIRCLE) {\n            element = new draw.Circle(\n                new geom.Circle([\n                    round(box.x1 + halfWidth, COORD_PRECISION),\n                    round(box.y1 + halfHeight, COORD_PRECISION)\n                ], Math.min(halfWidth, halfHeight)),\n                style\n            );\n        } else if (type === TRIANGLE) {\n            element = draw.Path.fromPoints([\n                [ box.x1 + halfWidth, box.y1 ],\n                [ box.x1, box.y2 ],\n                [ box.x2, box.y2 ]\n            ], style).close();\n        } else if (type === CROSS) {\n            element = new draw.MultiPath(style);\n\n            element.moveTo(box.x1, box.y1).lineTo(box.x2, box.y2);\n            element.moveTo(box.x1, box.y2).lineTo(box.x2, box.y1);\n        } else {\n            var rect = box.toRect();\n            if (type === ROUNDED_RECT) {\n                var borderRadius = valueOrDefault(options.borderRadius, rect.width() / 5);\n                rect.setCornerRadius(borderRadius);\n            }\n\n            element = draw.Path.fromRect(rect, style);\n        }\n\n        if (rotation) {\n            element.transform(geom.transform()\n                .rotate(-rotation, [ center.x, center.y ])\n            );\n        }\n\n        element.options.zIndex = options.zIndex;\n\n        return element;\n    };\n\n    ShapeElement.prototype.createElement = function createElement () {\n        var this$1 = this;\n\n        var customVisual = this.options.visual;\n        var pointData = this.pointData || {};\n        var visual;\n\n        if (customVisual) {\n            visual = customVisual({\n                value: pointData.value,\n                dataItem: pointData.dataItem,\n                sender: this.getSender(),\n                series: pointData.series,\n                category: pointData.category,\n                rect: this.paddingBox.toRect(),\n                options: this.visualOptions(),\n                createVisual: function () { return this$1.getElement(); }\n            });\n        } else {\n            visual = this.getElement();\n        }\n\n        return visual;\n    };\n\n    ShapeElement.prototype.visualOptions = function visualOptions () {\n        var options = this.options;\n        return {\n            background: options.background,\n            border: options.border,\n            margin: options.margin,\n            padding: options.padding,\n            type: options.type,\n            size: options.width,\n            visible: options.visible\n        };\n    };\n\n    ShapeElement.prototype.createVisual = function createVisual () {\n        this.visual = this.createElement();\n    };\n\n    return ShapeElement;\n}(BoxElement));\n\nsetDefaultOptions(ShapeElement, {\n    type: CIRCLE,\n    align: CENTER,\n    vAlign: CENTER\n});\n\nexport default ShapeElement;\n","import ElementsArray from '../shapes/elements-array';\n\nvar StopsArray = (function (ElementsArray) {\n    function StopsArray () {\n        ElementsArray.apply(this, arguments);\n    }\n\n    if ( ElementsArray ) StopsArray.__proto__ = ElementsArray;\n    StopsArray.prototype = Object.create( ElementsArray && ElementsArray.prototype );\n    StopsArray.prototype.constructor = StopsArray;\n\n    StopsArray.prototype._change = function _change () {\n        this.optionsChange({\n            field: \"stops\"\n        });\n    };\n\n    return StopsArray;\n}(ElementsArray));\n\nexport default StopsArray;","import { defined } from '../util';\n\nfunction optionsAccessor(name) {\n    return function(value) {\n        if (defined(value)) {\n            this.options.set(name, value);\n            return this;\n        }\n\n        return this.options.get(name);\n    };\n}\n\nfunction defineOptionsAccessors(fn, names) {\n    for (var i = 0; i < names.length; i++) {\n        fn[names[i]] = optionsAccessor(names[i]);\n    }\n}\n\nvar withOptions = function (TBase, names) {\n    var result = (function (TBase) {\n        function result () {\n            TBase.apply(this, arguments);\n        }if ( TBase ) result.__proto__ = TBase;\n        result.prototype = Object.create( TBase && TBase.prototype );\n        result.prototype.constructor = result;\n\n        \n\n        return result;\n    }(TBase));\n    defineOptionsAccessors(result.prototype, names);\n\n    return result;\n};\n\nexport default withOptions;\n","import OptionsStore from '../core/options-store';\nimport withOptions from '../mixins/with-options';\nimport HasObservers from '../core/has-observers';\nimport { defined } from '../util';\n\n\nvar options = [ \"offset\", \"color\", \"opacity\" ];\n\nvar GradientStop = (function (superclass) {\n    function GradientStop(offset, color, opacity) {\n        superclass.call(this);\n\n        this.options = new OptionsStore({\n            offset: offset,\n            color: color,\n            opacity: defined(opacity) ? opacity : 1\n        });\n\n        this.options.addObserver(this);\n    }\n\n    if ( superclass ) GradientStop.__proto__ = superclass;\n    GradientStop.prototype = Object.create( superclass && superclass.prototype );\n    GradientStop.prototype.constructor = GradientStop;\n\n    GradientStop.create = function create (arg) {\n        if (defined(arg)) {\n            var stop;\n            if (arg instanceof GradientStop) {\n                stop = arg;\n            } else if (arg.length > 1) {\n                stop = new GradientStop(arg[0], arg[1], arg[2]);\n            } else {\n                stop = new GradientStop(arg.offset, arg.color, arg.opacity);\n            }\n\n            return stop;\n        }\n    };\n\n    return GradientStop;\n}(withOptions(HasObservers, options)));\n\nexport default GradientStop;\n","import StopsArray from './stops-array';\nimport GradientStop from './gradient-stop';\nimport HasObservers from '../core/has-observers';\nimport { defined, definitionId } from '../util';\n\nvar Gradient = (function (HasObservers) {\n    function Gradient(options) {\n        if ( options === void 0 ) options = {};\n\n        HasObservers.call(this);\n\n        this.stops = new StopsArray(this._createStops(options.stops));\n        this.stops.addObserver(this);\n        this._userSpace = options.userSpace;\n        this.id = definitionId();\n    }\n\n    if ( HasObservers ) Gradient.__proto__ = HasObservers;\n    Gradient.prototype = Object.create( HasObservers && HasObservers.prototype );\n    Gradient.prototype.constructor = Gradient;\n\n    var prototypeAccessors = { nodeType: { configurable: true } };\n\n    prototypeAccessors.nodeType.get = function () {\n        return \"Gradient\";\n    };\n\n    Gradient.prototype.userSpace = function userSpace (value) {\n        if (defined(value)) {\n            this._userSpace = value;\n            this.optionsChange();\n            return this;\n        }\n\n        return this._userSpace;\n    };\n\n    Gradient.prototype._createStops = function _createStops (stops) {\n        if ( stops === void 0 ) stops = [];\n\n        var result = [];\n        for (var idx = 0; idx < stops.length; idx++) {\n            result.push(GradientStop.create(stops[idx]));\n        }\n\n        return result;\n    };\n\n    Gradient.prototype.addStop = function addStop (offset, color, opacity) {\n        this.stops.push(new GradientStop(offset, color, opacity));\n    };\n\n    Gradient.prototype.removeStop = function removeStop (stop) {\n        var index = this.stops.indexOf(stop);\n        if (index >= 0) {\n            this.stops.splice(index, 1);\n        }\n    };\n\n    Gradient.prototype.optionsChange = function optionsChange (e) {\n        this.trigger(\"optionsChange\", {\n            field: \"gradient\" + (e ? \".\" + e.field : \"\"),\n            value: this\n        });\n    };\n\n    Gradient.prototype.geometryChange = function geometryChange () {\n        this.optionsChange();\n    };\n\n    Object.defineProperties( Gradient.prototype, prototypeAccessors );\n\n    return Gradient;\n}(HasObservers));\n\nexport default Gradient;\n","import withPoints from '../mixins/with-points';\nimport Point from '../geometry/point';\nimport Gradient from './gradient';\n\n\nvar points = [ \"start\", \"end\" ];\n\nvar LinearGradient = (function (superclass) {\n    function LinearGradient(options) {\n        if ( options === void 0 ) options = {};\n\n        superclass.call(this, options);\n\n        this.start(options.start || new Point());\n        this.end(options.end || new Point(1, 0));\n    }\n\n    if ( superclass ) LinearGradient.__proto__ = superclass;\n    LinearGradient.prototype = Object.create( superclass && superclass.prototype );\n    LinearGradient.prototype.constructor = LinearGradient;\n\n    return LinearGradient;\n}(withPoints(Gradient, points)));\n\nexport default LinearGradient;\n","import withPoints from '../mixins/with-points';\nimport Point from '../geometry/point';\nimport Gradient from './gradient';\nimport { defined } from '../util';\n\n\nvar RadialGradient = (function (superclass) {\n    function RadialGradient(options) {\n        if ( options === void 0 ) options = {};\n\n        superclass.call(this, options);\n\n        this.center(options.center || new Point());\n        this._radius = defined(options.radius) ? options.radius : 1;\n        this._fallbackFill = options.fallbackFill;\n    }\n\n    if ( superclass ) RadialGradient.__proto__ = superclass;\n    RadialGradient.prototype = Object.create( superclass && superclass.prototype );\n    RadialGradient.prototype.constructor = RadialGradient;\n\n    RadialGradient.prototype.radius = function radius (value) {\n        if (defined(value)) {\n            this._radius = value;\n            this.geometryChange();\n            return this;\n        }\n\n        return this._radius;\n    };\n\n    RadialGradient.prototype.fallbackFill = function fallbackFill (value) {\n        if (defined(value)) {\n            this._fallbackFill = value;\n            this.optionsChange();\n            return this;\n        }\n\n        return this._fallbackFill;\n    };\n\n    return RadialGradient;\n}(withPoints(Gradient, [ \"center\" ])));\n\nexport default RadialGradient;\n","import { WHITE } from '../common/constants';\n\nvar LINEAR = \"linear\";\nvar RADIAL = \"radial\";\n\nvar GRADIENTS = {\n    glass: {\n        type: LINEAR,\n        rotation: 0,\n        stops: [ {\n            offset: 0,\n            color: WHITE,\n            opacity: 0\n        }, {\n            offset: 0.25,\n            color: WHITE,\n            opacity: 0.3\n        }, {\n            offset: 1,\n            color: WHITE,\n            opacity: 0\n        } ]\n    },\n    sharpBevel: {\n        type: RADIAL,\n        stops: [ {\n            offset: 0,\n            color: WHITE,\n            opacity: 0.55\n        }, {\n            offset: 0.65,\n            color: WHITE,\n            opacity: 0\n        }, {\n            offset: 0.95,\n            color: WHITE,\n            opacity: 0.25\n        } ]\n    },\n    roundedBevel: {\n        type: RADIAL,\n        stops: [ {\n            offset: 0.33,\n            color: WHITE,\n            opacity: 0.06\n        }, {\n            offset: 0.83,\n            color: WHITE,\n            opacity: 0.2\n        }, {\n            offset: 0.95,\n            color: WHITE,\n            opacity: 0\n        } ]\n    },\n    roundedGlass: {\n        type: RADIAL,\n        supportVML: false,\n        stops: [ {\n            offset: 0,\n            color: WHITE,\n            opacity: 0\n        }, {\n            offset: 0.5,\n            color: WHITE,\n            opacity: 0.3\n        }, {\n            offset: 0.99,\n            color: WHITE,\n            opacity: 0\n        } ]\n    },\n    sharpGlass: {\n        type: RADIAL,\n        supportVML: false,\n        stops: [ {\n            offset: 0,\n            color: WHITE,\n            opacity: 0.2\n        }, {\n            offset: 0.15,\n            color: WHITE,\n            opacity: 0.15\n        }, {\n            offset: 0.17,\n            color: WHITE,\n            opacity: 0.35\n        }, {\n            offset: 0.85,\n            color: WHITE,\n            opacity: 0.05\n        }, {\n            offset: 0.87,\n            color: WHITE,\n            opacity: 0.15\n        }, {\n            offset: 0.99,\n            color: WHITE,\n            opacity: 0\n        } ]\n    },\n    bubbleShadow: {\n        type: RADIAL,\n        center: [ 0.5, 0.5 ],\n        radius: 0.5\n    }\n};\n\nexport default GRADIENTS;","import Box from '../box';\nimport { grep } from '../../common';\n\nexport default function boxDiff(r, s) {\n    if (r.x1 === s.x1 && r.y1 === s.y1 && r.x2 === s.x2 && r.y2 === s.y2) {\n        return s;\n    }\n\n    var a = Math.min(r.x1, s.x1);\n    var b = Math.max(r.x1, s.x1);\n    var c = Math.min(r.x2, s.x2);\n    var d = Math.max(r.x2, s.x2);\n    var e = Math.min(r.y1, s.y1);\n    var f = Math.max(r.y1, s.y1);\n    var g = Math.min(r.y2, s.y2);\n    var h = Math.max(r.y2, s.y2);\n    var boxes = [];\n\n    // X = intersection, 0-7 = possible difference areas\n    // h +-+-+-+\n    // . |5|6|7|\n    // g +-+-+-+\n    // . |3|X|4|\n    // f +-+-+-+\n    // . |0|1|2|\n    // e +-+-+-+\n    // . a b c d\n\n    // we'll always have rectangles 1, 3, 4 and 6\n    boxes[0] = new Box(b, e, c, f);\n    boxes[1] = new Box(a, f, b, g);\n    boxes[2] = new Box(c, f, d, g);\n    boxes[3] = new Box(b, g, c, h);\n\n    // decide which corners\n    if (r.x1 === a && r.y1 === e || s.x1 === a && s.y1 === e) { // corners 0 and 7\n        boxes[4] = new Box(a, e, b, f);\n        boxes[5] = new Box(c, g, d, h);\n    } else { // corners 2 and 5\n        boxes[4] = new Box(c, e, d, f);\n        boxes[5] = new Box(a, g, b, h);\n    }\n\n    return grep(boxes, function(box) {\n        return box.height() > 0 && box.width() > 0;\n    })[0];\n}","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport GRADIENTS from './gradients';\nimport Box from './box';\n\nimport boxDiff from './utils/box-diff';\n\nimport { DEFAULT_WIDTH, DEFAULT_HEIGHT, WHITE, BLACK } from '../common/constants';\nimport { getSpacing, objectKey, setDefaultOptions } from '../common';\n\nvar RootElement = (function (ChartElement) {\n    function RootElement(options) {\n        ChartElement.call(this, options);\n\n        var rootOptions = this.options;\n        rootOptions.width = parseInt(rootOptions.width, 10);\n        rootOptions.height = parseInt(rootOptions.height, 10);\n\n        this.gradients = {};\n    }\n\n    if ( ChartElement ) RootElement.__proto__ = ChartElement;\n    RootElement.prototype = Object.create( ChartElement && ChartElement.prototype );\n    RootElement.prototype.constructor = RootElement;\n\n    RootElement.prototype.reflow = function reflow () {\n        var ref = this;\n        var options = ref.options;\n        var children = ref.children;\n        var currentBox = new Box(0, 0, options.width, options.height);\n\n        this.box = currentBox.unpad(options.margin);\n\n        for (var i = 0; i < children.length; i++) {\n            children[i].reflow(currentBox);\n            currentBox = boxDiff(currentBox, children[i].box) || new Box();\n        }\n    };\n\n    RootElement.prototype.createVisual = function createVisual () {\n        this.visual = new draw.Group();\n        this.createBackground();\n    };\n\n    RootElement.prototype.createBackground = function createBackground () {\n        var options = this.options;\n        var border = options.border || {};\n        var box = this.box.clone().pad(options.margin).unpad(border.width);\n\n        var background = draw.Path.fromRect(box.toRect(), {\n            stroke: {\n                color: border.width ? border.color : \"\",\n                width: border.width,\n                dashType: border.dashType\n            },\n            fill: {\n                color: options.background,\n                opacity: options.opacity\n            },\n            zIndex: -10\n        });\n\n        this.visual.append(background);\n    };\n\n    RootElement.prototype.getRoot = function getRoot () {\n        return this;\n    };\n\n    RootElement.prototype.createGradient = function createGradient (options) {\n        var gradients = this.gradients;\n        var hashCode = objectKey(options);\n        var gradient = GRADIENTS[options.gradient];\n        var drawingGradient;\n\n        if (gradients[hashCode]) {\n            drawingGradient = gradients[hashCode];\n        } else {\n            var gradientOptions = Object.assign({}, gradient, options);\n            if (gradient.type === \"linear\") {\n                drawingGradient = new draw.LinearGradient(gradientOptions);\n            } else {\n                if (options.innerRadius) {\n                    gradientOptions.stops = innerRadialStops(gradientOptions);\n                }\n                drawingGradient = new draw.RadialGradient(gradientOptions);\n                drawingGradient.supportVML = gradient.supportVML !== false;\n            }\n            gradients[hashCode] = drawingGradient;\n        }\n\n        return drawingGradient;\n    };\n\n    RootElement.prototype.cleanGradients = function cleanGradients () {\n        var gradients = this.gradients;\n        for (var hashCode in gradients) {\n            gradients[hashCode]._observers = [];//add clear observers method in drawing ObserversMixin\n        }\n    };\n\n    RootElement.prototype.size = function size () {\n        var options = this.options;\n        return new Box(0, 0, options.width, options.height);\n    };\n\n    return RootElement;\n}(ChartElement));\n\nsetDefaultOptions(RootElement, {\n    width: DEFAULT_WIDTH,\n    height: DEFAULT_HEIGHT,\n    background: WHITE,\n    border: {\n        color: BLACK,\n        width: 0\n    },\n    margin: getSpacing(5),\n    zIndex: -2\n});\n\nfunction innerRadialStops(options) {\n    var stops = options.stops;\n    var usedSpace = ((options.innerRadius / options.radius) * 100);\n    var length = stops.length;\n    var currentStops = [];\n\n    for (var i = 0; i < length; i++) {\n        var currentStop = Object.assign({}, stops[i]);\n        currentStop.offset = (currentStop.offset * (100 - usedSpace) + usedSpace) / 100;\n        currentStops.push(currentStop);\n    }\n\n    return currentStops;\n}\n\nexport default RootElement;","import ChartElement from './chart-element';\nimport Box from './box';\n\nimport { X, Y, WIDTH, HEIGHT, RIGHT, BOTTOM, CENTER } from '../common/constants';\nimport { round, setDefaultOptions } from '../common';\n\nvar FloatElement = (function (ChartElement) {\n    function FloatElement(options) {\n        ChartElement.call(this, options);\n        this._initDirection();\n    }\n\n    if ( ChartElement ) FloatElement.__proto__ = ChartElement;\n    FloatElement.prototype = Object.create( ChartElement && ChartElement.prototype );\n    FloatElement.prototype.constructor = FloatElement;\n\n    FloatElement.prototype._initDirection = function _initDirection () {\n        var options = this.options;\n        if (options.vertical) {\n            this.groupAxis = X;\n            this.elementAxis = Y;\n            this.groupSizeField = WIDTH;\n            this.elementSizeField = HEIGHT;\n            this.groupSpacing = options.spacing;\n            this.elementSpacing = options.vSpacing;\n        } else {\n            this.groupAxis = Y;\n            this.elementAxis = X;\n            this.groupSizeField = HEIGHT;\n            this.elementSizeField = WIDTH;\n            this.groupSpacing = options.vSpacing;\n            this.elementSpacing = options.spacing;\n        }\n    };\n\n    FloatElement.prototype.reflow = function reflow (targetBox) {\n        this.box = targetBox.clone();\n        this.reflowChildren();\n    };\n\n    FloatElement.prototype.reflowChildren = function reflowChildren () {\n        var this$1 = this;\n\n        var ref = this;\n        var box = ref.box;\n        var elementAxis = ref.elementAxis;\n        var groupAxis = ref.groupAxis;\n        var elementSizeField = ref.elementSizeField;\n        var groupSizeField = ref.groupSizeField;\n        var ref$1 = this.groupOptions();\n        var groups = ref$1.groups;\n        var groupsSize = ref$1.groupsSize;\n        var maxGroupElementsSize = ref$1.maxGroupElementsSize;\n        var groupsCount = groups.length;\n        var groupsStart = box[groupAxis + 1] + this.alignStart(groupsSize, box[groupSizeField]());\n\n        if (groupsCount) {\n            var groupStart = groupsStart;\n\n            for (var groupIdx = 0; groupIdx < groupsCount; groupIdx++) {\n                var group = groups[groupIdx];\n                var groupElements = group.groupElements;\n                var elementStart = box[elementAxis + 1];\n                var groupElementsCount = groupElements.length;\n\n                for (var idx = 0; idx < groupElementsCount; idx++) {\n                    var element = groupElements[idx];\n                    var elementSize = this$1.elementSize(element);\n                    var groupElementStart = groupStart + this$1.alignStart(elementSize[groupSizeField], group.groupSize);\n\n                    var elementBox = new Box();\n                    elementBox[groupAxis + 1] = groupElementStart;\n                    elementBox[groupAxis + 2] = groupElementStart + elementSize[groupSizeField];\n                    elementBox[elementAxis + 1] = elementStart;\n                    elementBox[elementAxis + 2] = elementStart + elementSize[elementSizeField];\n\n                    element.reflow(elementBox);\n\n                    elementStart += elementSize[elementSizeField] + this$1.elementSpacing;\n                }\n                groupStart += group.groupSize + this$1.groupSpacing;\n            }\n            box[groupAxis + 1] = groupsStart;\n            box[groupAxis + 2] = groupsStart + groupsSize;\n            box[elementAxis + 2] = box[elementAxis + 1] + maxGroupElementsSize;\n        }\n    };\n\n    FloatElement.prototype.alignStart = function alignStart (size, maxSize) {\n        var start = 0;\n        var align = this.options.align;\n        if (align === RIGHT || align === BOTTOM) {\n            start = maxSize - size;\n        } else if (align === CENTER) {\n            start = (maxSize - size) / 2;\n        }\n        return start;\n    };\n\n    FloatElement.prototype.groupOptions = function groupOptions () {\n        var this$1 = this;\n\n        var ref = this;\n        var box = ref.box;\n        var children = ref.children;\n        var elementSizeField = ref.elementSizeField;\n        var groupSizeField = ref.groupSizeField;\n        var elementSpacing = ref.elementSpacing;\n        var groupSpacing = ref.groupSpacing;\n        var maxSize = round(box[elementSizeField]());\n        var childrenCount = children.length;\n        var groups = [];\n\n        var groupSize = 0;\n        var groupElementsSize = 0;\n        var groupsSize = 0;\n        var maxGroupElementsSize = 0;\n        var groupElements = [];\n\n        for (var idx = 0; idx < childrenCount; idx++) {\n            var element = children[idx];\n            if (!element.box) {\n                element.reflow(box);\n            }\n\n            var elementSize = this$1.elementSize(element);\n            if (this$1.options.wrap && round(groupElementsSize + elementSpacing + elementSize[elementSizeField]) > maxSize) {\n                groups.push({\n                    groupElements: groupElements,\n                    groupSize: groupSize,\n                    groupElementsSize: groupElementsSize\n                });\n                maxGroupElementsSize = Math.max(maxGroupElementsSize, groupElementsSize);\n                groupsSize += groupSpacing + groupSize;\n                groupSize = 0;\n                groupElementsSize = 0;\n                groupElements = [];\n            }\n            groupSize = Math.max(groupSize, elementSize[groupSizeField]);\n            if (groupElementsSize > 0) {\n                groupElementsSize += elementSpacing;\n            }\n            groupElementsSize += elementSize[elementSizeField];\n            groupElements.push(element);\n        }\n\n        groups.push({\n            groupElements: groupElements,\n            groupSize: groupSize,\n            groupElementsSize: groupElementsSize\n        });\n        maxGroupElementsSize = Math.max(maxGroupElementsSize, groupElementsSize);\n        groupsSize += groupSize;\n\n        return {\n            groups: groups,\n            groupsSize: groupsSize,\n            maxGroupElementsSize: maxGroupElementsSize\n        };\n    };\n\n    FloatElement.prototype.elementSize = function elementSize (element) {\n        return {\n            width: element.box.width(),\n            height: element.box.height()\n        };\n    };\n\n    FloatElement.prototype.createVisual = function createVisual () {};\n\n    return FloatElement;\n}(ChartElement));\n\nsetDefaultOptions(FloatElement, {\n    vertical: true,\n    wrap: true,\n    vSpacing: 0,\n    spacing: 0\n});\n\nexport default FloatElement;","import Element from './element';\nimport Point from '../geometry/point';\nimport Rect from '../geometry/rect';\nimport toMatrix from '../geometry/to-matrix';\nimport paintable from '../mixins/paintable';\nimport withPoints from '../mixins/with-points';\nimport { defined, measureText } from '../util';\n\n\nvar DEFAULT_FONT = \"12px sans-serif\";\nvar DEFAULT_FILL = \"#000\";\n\nvar Text = (function (superclass) {\n    function Text(content, position, options) {\n        if ( position === void 0 ) position = new Point();\n        if ( options === void 0 ) options = {};\n\n        superclass.call(this, options);\n\n        this.content(content);\n        this.position(position);\n\n        if (!this.options.font) {\n            this.options.font = DEFAULT_FONT;\n        }\n\n        if (!defined(this.options.fill)) {\n            this.fill(DEFAULT_FILL);\n        }\n    }\n\n    if ( superclass ) Text.__proto__ = superclass;\n    Text.prototype = Object.create( superclass && superclass.prototype );\n    Text.prototype.constructor = Text;\n\n    var prototypeAccessors = { nodeType: { configurable: true } };\n\n    prototypeAccessors.nodeType.get = function () {\n        return \"Text\";\n    };\n\n    Text.prototype.content = function content (value) {\n        if (defined(value)) {\n            this.options.set(\"content\", value);\n            return this;\n        }\n\n        return this.options.get(\"content\");\n    };\n\n    Text.prototype.measure = function measure () {\n        var metrics = measureText(this.content(), {\n            font: this.options.get(\"font\")\n        });\n\n        return metrics;\n    };\n\n    Text.prototype.rect = function rect () {\n        var size = this.measure();\n        var pos = this.position().clone();\n        return new Rect(pos, [ size.width, size.height ]);\n    };\n\n    Text.prototype.bbox = function bbox (transformation) {\n        var combinedMatrix = toMatrix(this.currentTransform(transformation));\n        return this.rect().bbox(combinedMatrix);\n    };\n\n    Text.prototype.rawBBox = function rawBBox () {\n        return this.rect().bbox();\n    };\n\n    Text.prototype._containsPoint = function _containsPoint (point) {\n        return this.rect().containsPoint(point);\n    };\n\n    Object.defineProperties( Text.prototype, prototypeAccessors );\n\n    return Text;\n}(paintable(withPoints(Element, [ \"position\" ]))));\n\nexport default Text;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport Box from './box';\n\nimport { DEFAULT_FONT, BLACK } from '../common/constants';\nimport { setDefaultOptions } from '../common';\n\nvar DrawingText = draw.Text;\n\nvar Text = (function (ChartElement) {\n    function Text(content, options) {\n        ChartElement.call(this, options);\n\n        this.content = content;\n\n        // Calculate size\n        this.reflow(new Box());\n    }\n\n    if ( ChartElement ) Text.__proto__ = ChartElement;\n    Text.prototype = Object.create( ChartElement && ChartElement.prototype );\n    Text.prototype.constructor = Text;\n\n    Text.prototype.reflow = function reflow (targetBox) {\n        var options = this.options;\n        var size = options.size = draw.util.measureText(this.content, { font: options.font });\n\n        this.baseline = size.baseline;\n\n        this.box = new Box(targetBox.x1, targetBox.y1,\n                targetBox.x1 + size.width, targetBox.y1 + size.height);\n    };\n\n    Text.prototype.createVisual = function createVisual () {\n        var ref = this.options;\n        var font = ref.font;\n        var color = ref.color;\n        var opacity = ref.opacity;\n        var cursor = ref.cursor;\n\n        this.visual = new DrawingText(this.content, this.box.toRect().topLeft(), {\n            font: font,\n            fill: { color: color, opacity: opacity },\n            cursor: cursor\n        });\n    };\n\n    return Text;\n}(ChartElement));\n\nsetDefaultOptions(Text, {\n    font: DEFAULT_FONT,\n    color: BLACK\n});\n\nexport default Text;\n","import Box from '../box';\n\nexport default function rectToBox(rect) {\n    var origin = rect.origin;\n    var bottomRight = rect.bottomRight();\n\n    return new Box(origin.x, origin.y, bottomRight.x, bottomRight.y);\n}","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport BoxElement from './box-element';\nimport FloatElement from './float-element';\nimport Text from './text';\nimport Box from './box';\n\nimport rectToBox from './utils/rect-to-box';\n\nimport { getSpacing, deepExtend, defined } from '../common';\nimport { X, Y } from '../common/constants';\n\nvar ROWS_SPLIT_REGEX = /\\n/m;\n\nvar TextBox = (function (BoxElement) {\n    function TextBox(content, options, data) {\n        BoxElement.call(this, options);\n        this.content = content;\n        this.data = data;\n\n        this._initContainer();\n        if (this.options._autoReflow !== false) {\n            this.reflow(new Box());\n        }\n    }\n\n    if ( BoxElement ) TextBox.__proto__ = BoxElement;\n    TextBox.prototype = Object.create( BoxElement && BoxElement.prototype );\n    TextBox.prototype.constructor = TextBox;\n\n    TextBox.prototype._initContainer = function _initContainer () {\n        var options = this.options;\n        var rows = String(this.content).split(ROWS_SPLIT_REGEX);\n        var floatElement = new FloatElement({ vertical: true, align: options.align, wrap: false });\n        var textOptions = deepExtend({ }, options, { opacity: 1, animation: null });\n\n        this.container = floatElement;\n        this.append(floatElement);\n\n        for (var rowIdx = 0; rowIdx < rows.length; rowIdx++) {\n            var text = new Text(rows[rowIdx].trim(), textOptions);\n            floatElement.append(text);\n        }\n    };\n\n    TextBox.prototype.reflow = function reflow (targetBox) {\n        var options = this.options;\n        var visualFn = options.visual;\n        this.container.options.align = options.align;\n\n        if (visualFn && !this._boxReflow) {\n            var visualBox = targetBox;\n            if (!visualBox.hasSize()) {\n                this._boxReflow = true;\n                this.reflow(visualBox);\n                this._boxReflow = false;\n                visualBox = this.box;\n            }\n            var visual = this.visual = visualFn(this.visualContext(visualBox));\n\n            if (visual) {\n                visualBox = rectToBox(visual.clippedBBox() || new geom.Rect());\n\n                visual.options.zIndex = options.zIndex;\n            }\n\n            this.box = this.contentBox = this.paddingBox = visualBox;\n        } else {\n            BoxElement.prototype.reflow.call(this, targetBox);\n\n            if (options.rotation) {\n                var margin = getSpacing(options.margin);\n                var box = this.box.unpad(margin);\n\n                this.targetBox = targetBox;\n                this.normalBox = box.clone();\n\n                box = this.rotate();\n                box.translate(margin.left - margin.right, margin.top - margin.bottom);\n\n                this.rotatedBox = box.clone();\n\n                box.pad(margin);\n            }\n        }\n    };\n\n    TextBox.prototype.createVisual = function createVisual () {\n        var options = this.options;\n\n        this.visual = new draw.Group({\n            transform: this.rotationTransform(),\n            zIndex: options.zIndex,\n            noclip: options.noclip\n        });\n\n        if (this.hasBox()) {\n            var box = draw.Path.fromRect(this.paddingBox.toRect(), this.visualStyle());\n            this.visual.append(box);\n        }\n    };\n\n    TextBox.prototype.renderVisual = function renderVisual () {\n        if (!this.options.visible) {\n            return;\n        }\n\n        if (this.options.visual) {\n            var visual = this.visual;\n            if (visual && !defined(visual.options.noclip)) {\n                visual.options.noclip = this.options.noclip;\n            }\n            this.addVisual();\n            this.createAnimation();\n        } else {\n            BoxElement.prototype.renderVisual.call(this);\n        }\n    };\n\n    TextBox.prototype.visualContext = function visualContext (targetBox) {\n        var this$1 = this;\n\n        var context = {\n            text: this.content,\n            rect: targetBox.toRect(),\n            sender: this.getSender(),\n            options: this.options,\n            createVisual: function () {\n                this$1._boxReflow = true;\n                this$1.reflow(targetBox);\n                this$1._boxReflow = false;\n                return this$1.getDefaultVisual();\n            }\n        };\n        if (this.data) {\n            Object.assign(context, this.data);\n        }\n\n        return context;\n    };\n\n    TextBox.prototype.getDefaultVisual = function getDefaultVisual () {\n        this.createVisual();\n        this.renderChildren();\n        var visual = this.visual;\n        delete this.visual;\n        return visual;\n    };\n\n    TextBox.prototype.rotate = function rotate () {\n        var options = this.options;\n        this.box.rotate(options.rotation);\n        this.align(this.targetBox, X, options.align);\n        this.align(this.targetBox, Y, options.vAlign);\n        return this.box;\n    };\n\n    TextBox.prototype.rotationTransform = function rotationTransform () {\n        var rotation = this.options.rotation;\n        if (!rotation) {\n            return null;\n        }\n\n        var ref = this.normalBox.center();\n        var cx = ref.x;\n        var cy = ref.y;\n        var boxCenter = this.rotatedBox.center();\n\n        return geom.transform()\n                   .translate(boxCenter.x - cx, boxCenter.y - cy)\n                   .rotate(rotation, [ cx, cy ]);\n    };\n\n    return TextBox;\n}(BoxElement));\n\nexport default TextBox;","import ChartElement from './chart-element';\nimport TextBox from './text-box';\n\nimport { X, BLACK, TOP, CENTER, BOTTOM } from '../common/constants';\nimport { getSpacing, setDefaultOptions } from '../common';\n\nvar Title = (function (ChartElement) {\n    function Title(options) {\n        ChartElement.call(this, options);\n\n        this._textBox = new TextBox(this.options.text, Object.assign({}, this.options, {\n            vAlign: this.options.position\n        }));\n\n        this.append(this._textBox);\n    }\n\n    if ( ChartElement ) Title.__proto__ = ChartElement;\n    Title.prototype = Object.create( ChartElement && ChartElement.prototype );\n    Title.prototype.constructor = Title;\n\n    Title.prototype.reflow = function reflow (targetBox) {\n        ChartElement.prototype.reflow.call(this, targetBox);\n        this.box.snapTo(targetBox, X);\n    };\n\n    Title.buildTitle = function buildTitle (options, defaultOptions) {\n        var titleOptions = options;\n\n        if (typeof options === \"string\") {\n            titleOptions = { text: options };\n        }\n\n        titleOptions = Object.assign({ visible: true }, defaultOptions, titleOptions);\n\n        var title;\n        if (titleOptions && titleOptions.visible && titleOptions.text) {\n            title = new Title(titleOptions);\n        }\n\n        return title;\n    };\n\n    Title.orderTitles = function orderTitles (titles) {\n        var items = [].concat(titles);\n        var top = items.filter(function (item) { return item && item.options.position !== BOTTOM; });\n        var bottom = items.filter(function (item) { return item && item.options.position === BOTTOM; });\n\n        collapseVerticalMargins(top);\n        collapseVerticalMargins(bottom);\n\n        bottom.reverse();\n        return top.concat(bottom);\n    };\n\n    return Title;\n}(ChartElement));\n\nfunction collapseVerticalMargins(items) {\n    for (var i = 1; i < items.length; i++) {\n        var box = items[i]._textBox;\n        var prevBox = items[i - 1]._textBox;\n        prevBox.options.margin = Object.assign(getSpacing(prevBox.options.margin), { bottom: 0 });\n        box.options.margin = Object.assign(getSpacing(box.options.margin), { top: 0 });\n    }\n}\n\nsetDefaultOptions(Title, {\n    color: BLACK,\n    position: TOP,\n    align: CENTER,\n    margin: getSpacing(5),\n    padding: getSpacing(5)\n});\n\nexport default Title;\n","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport TextBox from './text-box';\nimport Box from './box';\n\nimport rectToBox from './utils/rect-to-box';\n\nimport { AXIS_LABEL_CLICK, CENTER, TOP, BOTTOM, LEFT, DEFAULT_PRECISION, X, Y } from '../common/constants';\n\nimport { eventElement, round, setDefaultOptions } from '../common';\n\nvar AxisLabel = (function (TextBox) {\n    function AxisLabel(value, text, index, dataItem, options) {\n        TextBox.call(this, text, options);\n\n        this.text = text;\n        this.value = value;\n        this.index = index;\n        this.dataItem = dataItem;\n        this.reflow(new Box());\n    }\n\n    if ( TextBox ) AxisLabel.__proto__ = TextBox;\n    AxisLabel.prototype = Object.create( TextBox && TextBox.prototype );\n    AxisLabel.prototype.constructor = AxisLabel;\n\n    AxisLabel.prototype.visualContext = function visualContext (targetBox) {\n        var context = TextBox.prototype.visualContext.call(this, targetBox);\n\n        context.value = this.value;\n        context.dataItem = this.dataItem;\n        context.format = this.options.format;\n        context.culture = this.options.culture;\n\n        return context;\n    };\n\n    AxisLabel.prototype.click = function click (widget, e) {\n\n        widget.trigger(AXIS_LABEL_CLICK, {\n            element: eventElement(e),\n            value: this.value,\n            text: this.text,\n            index: this.index,\n            dataItem: this.dataItem,\n            axis: this.parent.options\n        });\n    };\n\n    AxisLabel.prototype.rotate = function rotate () {\n        if (this.options.alignRotation !== CENTER) {\n            var box = this.normalBox.toRect();\n            var transform = this.rotationTransform();\n\n            this.box = rectToBox(box.bbox(transform.matrix()));\n        } else {\n            TextBox.prototype.rotate.call(this);\n        }\n\n        return this.box;\n    };\n\n    AxisLabel.prototype.rotationTransform = function rotationTransform () {\n        var options = this.options;\n        var rotation = options.rotation;\n        if (!rotation) {\n            return null;\n        }\n\n        if (options.alignRotation === CENTER) {\n            return TextBox.prototype.rotationTransform.call(this);\n        }\n\n        var rotationMatrix = geom.transform().rotate(rotation).matrix();\n        var box = this.normalBox.toRect();\n        var rect = this.targetBox.toRect();\n\n        var rotationOrigin = options.rotationOrigin || TOP;\n        var alignAxis = rotationOrigin === TOP || rotationOrigin === BOTTOM ? X : Y;\n        var distanceAxis = rotationOrigin === TOP || rotationOrigin === BOTTOM ? Y : X;\n        var axisAnchor = rotationOrigin === TOP || rotationOrigin === LEFT ? rect.origin : rect.bottomRight();\n\n        var topLeft = box.topLeft().transformCopy(rotationMatrix);\n        var topRight = box.topRight().transformCopy(rotationMatrix);\n        var bottomRight = box.bottomRight().transformCopy(rotationMatrix);\n        var bottomLeft = box.bottomLeft().transformCopy(rotationMatrix);\n        var rotatedBox = geom.Rect.fromPoints(topLeft, topRight, bottomRight, bottomLeft);\n\n        var translate = {};\n        translate[distanceAxis] = rect.origin[distanceAxis] - rotatedBox.origin[distanceAxis];\n\n        var distanceLeft = Math.abs(topLeft[distanceAxis] + translate[distanceAxis] - axisAnchor[distanceAxis]);\n        var distanceRight = Math.abs(topRight[distanceAxis] + translate[distanceAxis] - axisAnchor[distanceAxis]);\n\n        var alignStart, alignEnd;\n\n        if (round(distanceLeft, DEFAULT_PRECISION) === round(distanceRight, DEFAULT_PRECISION)) {\n            alignStart = topLeft;\n            alignEnd = topRight;\n        } else if (distanceRight < distanceLeft) {\n            alignStart = topRight;\n            alignEnd = bottomRight;\n        } else {\n            alignStart = topLeft;\n            alignEnd = bottomLeft;\n        }\n\n        var alignCenter = alignStart[alignAxis] + (alignEnd[alignAxis] - alignStart[alignAxis]) / 2;\n        translate[alignAxis] = rect.center()[alignAxis] - alignCenter;\n\n        return geom.transform()\n            .translate(translate.x, translate.y)\n            .rotate(rotation);\n    };\n\n    return AxisLabel;\n}(TextBox));\n\nsetDefaultOptions(AxisLabel, {\n    _autoReflow: false\n});\n\nexport default AxisLabel;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport BoxElement from './box-element';\nimport TextBox from './text-box';\nimport ShapeElement from './shape-element';\nimport Box from './box';\n\nimport { CIRCLE, TOP, BOTTOM, LEFT, RIGHT, CENTER, INSIDE, OUTSIDE, NOTE_CLICK, NOTE_HOVER, NOTE_LEAVE } from '../common/constants';\nimport { alignPathToPixel, defined, deepExtend, eventElement, getTemplate, inArray, setDefaultOptions } from '../common';\n\nvar DEFAULT_ICON_SIZE = 7;\nvar DEFAULT_LABEL_COLOR = \"#fff\";\n\nvar Note = (function (BoxElement) {\n    function Note(fields, options, chartService) {\n        BoxElement.call(this, options);\n\n        this.fields = fields;\n        this.chartService = chartService;\n\n        this.render();\n    }\n\n    if ( BoxElement ) Note.__proto__ = BoxElement;\n    Note.prototype = Object.create( BoxElement && BoxElement.prototype );\n    Note.prototype.constructor = Note;\n\n    Note.prototype.hide = function hide () {\n        this.options.visible = false;\n    };\n\n    Note.prototype.show = function show () {\n        this.options.visible = true;\n    };\n\n    Note.prototype.render = function render () {\n        var this$1 = this;\n\n        var options = this.options;\n\n        if (options.visible) {\n            var label = options.label;\n            var icon = options.icon;\n            var box = new Box();\n            var childAlias = function () { return this$1; };\n            var size = icon.size;\n            var text = this.fields.text;\n            var width, height;\n\n            if (defined(label) && label.visible) {\n                var noteTemplate = getTemplate(label);\n                if (noteTemplate) {\n                    text = noteTemplate(this.fields);\n                } else if (label.format) {\n                    text = this.chartService.format.auto(label.format, text);\n                }\n\n                if (!label.color) {\n                    label.color = label.position === INSIDE ? DEFAULT_LABEL_COLOR : icon.background;\n                }\n\n                this.label = new TextBox(text, deepExtend({}, label));\n                this.label.aliasFor = childAlias;\n\n                if (label.position === INSIDE && !defined(size)) {\n                    if (icon.type === CIRCLE) {\n                        size = Math.max(this.label.box.width(), this.label.box.height());\n                    } else {\n                        width = this.label.box.width();\n                        height = this.label.box.height();\n                    }\n                    box.wrap(this.label.box);\n                }\n            }\n\n            icon.width = width || size || DEFAULT_ICON_SIZE;\n            icon.height = height || size || DEFAULT_ICON_SIZE;\n\n            var marker = new ShapeElement(deepExtend({}, icon));\n            marker.aliasFor = childAlias;\n\n            this.marker = marker;\n            this.append(marker);\n\n            if (this.label) {\n                this.append(this.label);\n            }\n\n            marker.reflow(new Box());\n            this.wrapperBox = box.wrap(marker.box);\n        }\n    };\n\n    Note.prototype.reflow = function reflow (targetBox) {\n        var ref = this;\n        var options = ref.options;\n        var label = ref.label;\n        var marker = ref.marker;\n        var wrapperBox = ref.wrapperBox;\n        var center = targetBox.center();\n        var length = options.line.length;\n        var position = options.position;\n\n        // TODO: Review\n        if (options.visible) {\n            var lineStart, box, contentBox;\n\n            if (inArray(position, [ LEFT, RIGHT ])) {\n                if (position === LEFT) {\n                    contentBox = wrapperBox.alignTo(targetBox, position).translate(-length, targetBox.center().y - wrapperBox.center().y);\n\n                    if (options.line.visible) {\n                        lineStart = [ targetBox.x1, center.y ];\n                        this.linePoints = [\n                            lineStart,\n                            [ contentBox.x2, center.y ]\n                        ];\n                        box = contentBox.clone().wrapPoint(lineStart);\n                    }\n                } else {\n                    contentBox = wrapperBox.alignTo(targetBox, position).translate(length, targetBox.center().y - wrapperBox.center().y);\n\n                    if (options.line.visible) {\n                        lineStart = [ targetBox.x2, center.y ];\n                        this.linePoints = [\n                            lineStart,\n                            [ contentBox.x1, center.y ]\n                        ];\n                        box = contentBox.clone().wrapPoint(lineStart);\n                    }\n                }\n            } else {\n                if (position === BOTTOM) {\n                    contentBox = wrapperBox.alignTo(targetBox, position).translate(targetBox.center().x - wrapperBox.center().x, length);\n\n                    if (options.line.visible) {\n                        lineStart = [ center.x, targetBox.y2 ];\n                        this.linePoints = [\n                            lineStart,\n                            [ center.x, contentBox.y1 ]\n                        ];\n                        box = contentBox.clone().wrapPoint(lineStart);\n                    }\n                } else {\n                    contentBox = wrapperBox.alignTo(targetBox, position).translate(targetBox.center().x - wrapperBox.center().x, -length);\n\n                    if (options.line.visible) {\n                        lineStart = [ center.x, targetBox.y1 ];\n                        this.linePoints = [\n                            lineStart,\n                            [ center.x, contentBox.y2 ]\n                        ];\n                        box = contentBox.clone().wrapPoint(lineStart);\n                    }\n                }\n            }\n\n            if (marker) {\n                marker.reflow(contentBox);\n            }\n\n            if (label) {\n                label.reflow(contentBox);\n                if (marker) {\n                    if (options.label.position === OUTSIDE) {\n                        label.box.alignTo(marker.box, position);\n                    }\n                    label.reflow(label.box);\n                }\n            }\n\n            this.contentBox = contentBox;\n            this.targetBox = targetBox;\n            this.box = box || contentBox;\n        }\n    };\n\n    Note.prototype.createVisual = function createVisual () {\n        BoxElement.prototype.createVisual.call(this);\n        this.visual.options.noclip = this.options.noclip;\n\n        if (this.options.visible) {\n            this.createLine();\n        }\n    };\n\n    Note.prototype.renderVisual = function renderVisual () {\n        var this$1 = this;\n\n        var options = this.options;\n        var customVisual = options.visual;\n        if (options.visible && customVisual) {\n            this.visual = customVisual(Object.assign(this.fields, {\n                sender: this.getSender(),\n                rect: this.targetBox.toRect(),\n                options: {\n                    background: options.background,\n                    border: options.background,\n                    icon: options.icon,\n                    label: options.label,\n                    line: options.line,\n                    position: options.position,\n                    visible: options.visible\n                },\n                createVisual: function () {\n                    this$1.createVisual();\n                    this$1.renderChildren();\n                    var defaultVisual = this$1.visual;\n                    delete this$1.visual;\n                    return defaultVisual;\n                }\n            }));\n            this.addVisual();\n        } else {\n            BoxElement.prototype.renderVisual.call(this);\n        }\n    };\n\n    Note.prototype.createLine = function createLine () {\n        var options = this.options.line;\n\n        if (this.linePoints) {\n            var path = draw.Path.fromPoints(this.linePoints, {\n                stroke: {\n                    color: options.color,\n                    width: options.width,\n                    dashType: options.dashType\n                }\n            });\n\n            alignPathToPixel(path);\n            this.visual.append(path);\n        }\n    };\n\n    Note.prototype.click = function click (widget, e) {\n        var args = this.eventArgs(e);\n\n        if (!widget.trigger(NOTE_CLICK, args)) {\n            e.preventDefault();\n        }\n    };\n\n    Note.prototype.over = function over (widget, e) {\n        var args = this.eventArgs(e);\n\n        if (!widget.trigger(NOTE_HOVER, args)) {\n            e.preventDefault();\n        }\n    };\n\n    Note.prototype.out = function out (widget, e) {\n        var args = this.eventArgs(e);\n\n        widget.trigger(NOTE_LEAVE, args);\n    };\n\n    Note.prototype.eventArgs = function eventArgs (e) {\n        var options = this.options;\n\n        return Object.assign(this.fields, {\n            element: eventElement(e),\n            text: defined(options.label) ? options.label.text : \"\",\n            visual: this.visual\n        });\n    };\n\n    return Note;\n}(BoxElement));\n\nsetDefaultOptions(Note, {\n    icon: {\n        visible: true,\n        type: CIRCLE\n    },\n    label: {\n        position: INSIDE,\n        visible: true,\n        align: CENTER,\n        vAlign: CENTER\n    },\n    line: {\n        visible: true\n    },\n    visible: true,\n    position: TOP,\n    zIndex: 2\n});\n\nexport default Note;","var defaultImplementation = {\n    format: function (format, value) { return value; },\n\n    toString: function (value) { return value; },\n\n    parseDate: function (value) { return new Date(value); },\n\n    firstDay: function () { return 0; }\n};\n\nvar current = defaultImplementation;\n\nvar IntlService = function IntlService () {};\n\nvar staticAccessors = { implementation: { configurable: true } };\n\nIntlService.register = function register (userImplementation) {\n    current = userImplementation;\n};\n\nstaticAccessors.implementation.get = function () {\n    return current;\n};\n\nObject.defineProperties( IntlService, staticAccessors );\n\nexport default IntlService;\n","import IntlService from './intl-service';\nimport { FORMAT_REGEX } from '../common/constants';\nimport { isString } from '../common';\n\nvar FORMAT_REPLACE_REGEX = /\\{(\\d+)(:[^\\}]+)?\\}/g;\n\nvar FormatService = function FormatService(intlService) {\n    this._intlService = intlService;\n};\n\nvar prototypeAccessors = { intl: { configurable: true } };\n\nprototypeAccessors.intl.get = function () {\n    return this._intlService || IntlService.implementation;\n};\n\nprototypeAccessors.intl.set = function (value) {\n    this._intlService = value;\n};\n\nFormatService.prototype.auto = function auto (formatString) {\n        var values = [], len = arguments.length - 1;\n        while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];\n\n    var intl = this.intl;\n\n    if (isString(formatString) && formatString.match(FORMAT_REGEX)) {\n        return intl.format.apply(intl, [ formatString ].concat( values ));\n    }\n\n    return intl.toString(values[0], formatString);\n};\n\nFormatService.prototype.localeAuto = function localeAuto (formatString, values, locale) {\n    var intl = this.intl;\n    var result;\n\n    if (isString(formatString) && formatString.match(FORMAT_REGEX)) {\n        result = formatString.replace(FORMAT_REPLACE_REGEX, function(match, index, placeholderFormat) {\n            var value = values[parseInt(index, 10)];\n\n            return intl.toString(value, placeholderFormat ? placeholderFormat.substring(1) : \"\", locale);\n        });\n    } else {\n        result = intl.toString(values[0], formatString, locale);\n    }\n\n    return result;\n};\n\nObject.defineProperties( FormatService.prototype, prototypeAccessors );\n\nexport default FormatService;","import IntlService from './intl-service';\nimport FormatService from './format-service';\n\nvar ChartService = function ChartService(chart, context) {\n    if ( context === void 0 ) context = {};\n\n    this._intlService = context.intlService;\n    this.sender = context.sender || chart;\n    this.format = new FormatService(context.intlService);\n    this.chart = chart;\n    this.rtl = Boolean(context.rtl);\n};\n\nvar prototypeAccessors = { intl: { configurable: true } };\n\nprototypeAccessors.intl.get = function () {\n    return this._intlService || IntlService.implementation;\n};\n\nprototypeAccessors.intl.set = function (value) {\n    this._intlService = value;\n    this.format.intl = value;\n};\n\nChartService.prototype.notify = function notify (name, args) {\n    if (this.chart) {\n        this.chart.trigger(name, args);\n    }\n};\n\nChartService.prototype.isPannable = function isPannable (axis) {\n    var pannable = ((this.chart || {}).options || {}).pannable;\n    return pannable && pannable.lock !== axis;\n};\n\nObject.defineProperties( ChartService.prototype, prototypeAccessors );\n\nexport default ChartService;\n","var current;\n\nvar DomEventsBuilder = function DomEventsBuilder () {};\n\nDomEventsBuilder.register = function register (userImplementation) {\n    current = userImplementation;\n};\n\nDomEventsBuilder.create = function create (element, events) {\n    if (current) {\n        return current.create(element, events);\n    }\n};\n\nexport default DomEventsBuilder;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { alignPathToPixel } from '../../common';\n\nexport default function createAxisTick(options, tickOptions) {\n    var tickX = options.tickX;\n    var tickY = options.tickY;\n    var position = options.position;\n\n    var tick = new draw.Path({\n        stroke: {\n            width: tickOptions.width,\n            color: tickOptions.color\n        }\n    });\n\n    if (options.vertical) {\n        tick.moveTo(tickX, position)\n            .lineTo(tickX + tickOptions.size, position);\n    } else {\n        tick.moveTo(position, tickY)\n            .lineTo(position, tickY + tickOptions.size);\n    }\n\n    alignPathToPixel(tick);\n\n    return tick;\n}\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { alignPathToPixel } from '../../common';\n\nexport default function createAxisGridLine(options, gridLine) {\n    var lineStart = options.lineStart;\n    var lineEnd = options.lineEnd;\n    var position = options.position;\n\n    var line = new draw.Path({\n        stroke: {\n            width: gridLine.width,\n            color: gridLine.color,\n            dashType: gridLine.dashType\n        }\n    });\n\n    if (options.vertical) {\n        line.moveTo(lineStart, position)\n            .lineTo(lineEnd, position);\n    } else {\n        line.moveTo(position, lineStart)\n            .lineTo(position, lineEnd);\n    }\n\n    alignPathToPixel(line);\n\n    return line;\n}","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport TextBox from './text-box';\nimport AxisLabel from './axis-label';\nimport Note from './note';\nimport Box from './box';\nimport { ChartService } from '../services';\n\nimport createAxisTick from './utils/create-axis-tick';\nimport createAxisGridLine from './utils/create-axis-grid-line';\n\nimport { NONE, BLACK, CENTER, TOP, BOTTOM, LEFT, RIGHT, OUTSIDE, X, Y, WIDTH, HEIGHT } from '../common/constants';\nimport { alignPathToPixel, deepExtend, getTemplate, grep, defined, isObject, inArray, limitValue, round, setDefaultOptions } from '../common';\n\nvar Axis = (function (ChartElement) {\n    function Axis(options, chartService) {\n        if ( chartService === void 0 ) chartService = new ChartService();\n\n        ChartElement.call(this, options);\n\n        this.chartService = chartService;\n\n        if (!this.options.visible) {\n            this.options = deepExtend({}, this.options, {\n                labels: {\n                    visible: false\n                },\n                line: {\n                    visible: false\n                },\n                margin: 0,\n                majorTickSize: 0,\n                minorTickSize: 0\n            });\n        }\n\n        this.options.minorTicks = deepExtend({}, {\n            color: this.options.line.color,\n            width: this.options.line.width,\n            visible: this.options.minorTickType !== NONE\n        }, this.options.minorTicks, {\n            size: this.options.minorTickSize,\n            align: this.options.minorTickType\n        });\n\n        this.options.majorTicks = deepExtend({}, {\n            color: this.options.line.color,\n            width: this.options.line.width,\n            visible: this.options.majorTickType !== NONE\n        }, this.options.majorTicks, {\n            size: this.options.majorTickSize,\n            align: this.options.majorTickType\n        });\n\n        this.initFields();\n\n        if (!this.options._deferLabels) {\n            this.createLabels();\n        }\n\n        this.createTitle();\n        this.createNotes();\n    }\n\n    if ( ChartElement ) Axis.__proto__ = ChartElement;\n    Axis.prototype = Object.create( ChartElement && ChartElement.prototype );\n    Axis.prototype.constructor = Axis;\n\n    Axis.prototype.initFields = function initFields () {\n    };\n\n    // abstract labelsCount(): Number\n    // abstract createAxisLabel(index, options): AxisLabel\n\n    Axis.prototype.labelsRange = function labelsRange () {\n        return {\n            min: this.options.labels.skip,\n            max: this.labelsCount()\n        };\n    };\n\n    Axis.prototype.normalizeLabelRotation = function normalizeLabelRotation (labelOptions) {\n        var rotation = labelOptions.rotation;\n\n        if (isObject(rotation)) {\n            labelOptions.alignRotation = rotation.align;\n            labelOptions.rotation = rotation.angle;\n        }\n    };\n\n    Axis.prototype.createLabels = function createLabels () {\n        var this$1 = this;\n\n        var options = this.options;\n        var align = options.vertical ? RIGHT : CENTER;\n        var labelOptions = deepExtend({ }, options.labels, {\n            align: align,\n            zIndex: options.zIndex\n        });\n        var step = Math.max(1, labelOptions.step);\n\n        this.clearLabels();\n\n        if (labelOptions.visible) {\n            this.normalizeLabelRotation(labelOptions);\n            if (labelOptions.rotation === \"auto\") {\n                labelOptions.rotation = 0;\n                options.autoRotateLabels = true;\n            }\n\n            var range = this.labelsRange();\n            for (var idx = range.min; idx < range.max; idx += step) {\n                var labelContext = { index: idx, count: range.max };\n                var label = this$1.createAxisLabel(idx, labelOptions, labelContext);\n                if (label) {\n                    this$1.append(label);\n                    this$1.labels.push(label);\n                }\n            }\n        }\n    };\n\n    Axis.prototype.clearLabels = function clearLabels () {\n        this.children = grep(this.children, function (child) { return !(child instanceof AxisLabel); });\n        this.labels = [];\n    };\n\n    Axis.prototype.clearTitle = function clearTitle () {\n        var this$1 = this;\n\n        if (this.title) {\n            this.children = grep(this.children, function (child) { return child !== this$1.title; });\n            this.title = undefined;\n        }\n    };\n\n    Axis.prototype.clear = function clear () {\n        this.clearLabels();\n        this.clearTitle();\n    };\n\n    Axis.prototype.lineBox = function lineBox () {\n        var ref = this;\n        var options = ref.options;\n        var box = ref.box;\n        var vertical = options.vertical;\n        var mirror = options.labels.mirror;\n        var axisX = mirror ? box.x1 : box.x2;\n        var axisY = mirror ? box.y2 : box.y1;\n        var lineWidth = options.line.width || 0;\n\n        return vertical ?\n            new Box(axisX, box.y1, axisX, box.y2 - lineWidth) :\n            new Box(box.x1, axisY, box.x2 - lineWidth, axisY);\n    };\n\n    Axis.prototype.createTitle = function createTitle () {\n        var options = this.options;\n        var titleOptions = deepExtend({\n            rotation: options.vertical ? -90 : 0,\n            text: \"\",\n            zIndex: 1,\n            visualSize: true\n        }, options.title);\n\n        if (titleOptions.visible && titleOptions.text) {\n            var title = new TextBox(titleOptions.text, titleOptions);\n            this.append(title);\n            this.title = title;\n        }\n    };\n\n    Axis.prototype.createNotes = function createNotes () {\n        var this$1 = this;\n\n        var options = this.options;\n        var notes = options.notes;\n        var items = notes.data || [];\n\n        this.notes = [];\n\n        for (var i = 0; i < items.length; i++) {\n            var item = deepExtend({}, notes, items[i]);\n            item.value = this$1.parseNoteValue(item.value);\n\n            var note = new Note({\n                value: item.value,\n                text: item.label.text,\n                dataItem: item\n            }, item, this$1.chartService);\n\n            if (note.options.visible) {\n                if (defined(note.options.position)) {\n                    if (options.vertical && !inArray(note.options.position, [ LEFT, RIGHT ])) {\n                        note.options.position = options.reverse ? LEFT : RIGHT;\n                    } else if (!options.vertical && !inArray(note.options.position, [ TOP, BOTTOM ])) {\n                        note.options.position = options.reverse ? BOTTOM : TOP;\n                    }\n                } else {\n                    if (options.vertical) {\n                        note.options.position = options.reverse ? LEFT : RIGHT;\n                    } else {\n                        note.options.position = options.reverse ? BOTTOM : TOP;\n                    }\n                }\n                this$1.append(note);\n                this$1.notes.push(note);\n            }\n        }\n    };\n\n    Axis.prototype.parseNoteValue = function parseNoteValue (value) {\n        return value;\n    };\n\n    Axis.prototype.renderVisual = function renderVisual () {\n        ChartElement.prototype.renderVisual.call(this);\n\n        this.createPlotBands();\n    };\n\n    Axis.prototype.createVisual = function createVisual () {\n        ChartElement.prototype.createVisual.call(this);\n\n        this.createBackground();\n        this.createLine();\n    };\n\n    Axis.prototype.gridLinesVisual = function gridLinesVisual () {\n        var gridLines = this._gridLines;\n        if (!gridLines) {\n            gridLines = this._gridLines = new draw.Group({\n                zIndex: -2\n            });\n            this.appendVisual(this._gridLines);\n        }\n\n        return gridLines;\n    };\n\n    Axis.prototype.createTicks = function createTicks (lineGroup) {\n        var options = this.options;\n        var lineBox = this.lineBox();\n        var mirror = options.labels.mirror;\n        var majorUnit = options.majorTicks.visible ? options.majorUnit : 0;\n        var tickLineOptions = {\n            // TODO\n            // _alignLines: options._alignLines,\n            vertical: options.vertical\n        };\n\n        function render(tickPositions, tickOptions, skipUnit) {\n            var count = tickPositions.length;\n            var step = Math.max(1, tickOptions.step);\n\n            if (tickOptions.visible) {\n                for (var i = tickOptions.skip; i < count; i += step) {\n                    if (defined(skipUnit) && (i % skipUnit === 0)) {\n                        continue;\n                    }\n\n                    tickLineOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n                    tickLineOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n                    tickLineOptions.position = tickPositions[i];\n\n                    lineGroup.append(createAxisTick(tickLineOptions, tickOptions));\n                }\n            }\n        }\n\n        render(this.getMajorTickPositions(), options.majorTicks);\n        render(this.getMinorTickPositions(), options.minorTicks, majorUnit / options.minorUnit);\n    };\n\n    Axis.prototype.createLine = function createLine () {\n        var options = this.options;\n        var line = options.line;\n        var lineBox = this.lineBox();\n\n        if (line.width > 0 && line.visible) {\n            var path = new draw.Path({\n                stroke: {\n                    width: line.width,\n                    color: line.color,\n                    dashType: line.dashType\n                }\n\n                /* TODO\n                zIndex: line.zIndex,\n                */\n            });\n\n            path.moveTo(lineBox.x1, lineBox.y1)\n                .lineTo(lineBox.x2, lineBox.y2);\n\n            if (options._alignLines) {\n                alignPathToPixel(path);\n            }\n\n            var group = this._lineGroup = new draw.Group();\n            group.append(path);\n\n            this.visual.append(group);\n            this.createTicks(group);\n        }\n    };\n\n    Axis.prototype.getActualTickSize = function getActualTickSize () {\n        var options = this.options;\n        var tickSize = 0;\n\n        if (options.majorTicks.visible && options.minorTicks.visible) {\n            tickSize = Math.max(options.majorTicks.size, options.minorTicks.size);\n        } else if (options.majorTicks.visible) {\n            tickSize = options.majorTicks.size;\n        } else if (options.minorTicks.visible) {\n            tickSize = options.minorTicks.size;\n        }\n\n        return tickSize;\n    };\n\n    Axis.prototype.createBackground = function createBackground () {\n        var ref = this;\n        var options = ref.options;\n        var box = ref.box;\n        var background = options.background;\n\n        if (background) {\n            this._backgroundPath = draw.Path.fromRect(box.toRect(), {\n                fill: {\n                    color: background\n                },\n                stroke: null\n            });\n\n            this.visual.append(this._backgroundPath);\n        }\n    };\n\n    Axis.prototype.createPlotBands = function createPlotBands () {\n        var this$1 = this;\n\n        var options = this.options;\n        var plotBands = options.plotBands || [];\n        var vertical = options.vertical;\n        var plotArea = this.plotArea;\n\n        if (plotBands.length === 0) {\n            return;\n        }\n\n        var group = this._plotbandGroup = new draw.Group({\n            zIndex: -1\n        });\n\n        var altAxis = grep(this.pane.axes, function (axis) { return axis.options.vertical !== this$1.options.vertical; })[0];\n\n        for (var idx = 0; idx < plotBands.length; idx++) {\n            var item = plotBands[idx];\n            var slotX = (void 0), slotY = (void 0);\n            var labelOptions = item.label;\n            var label = (void 0);\n\n            if (vertical) {\n                slotX = (altAxis || plotArea.axisX).lineBox();\n                slotY = this$1.getSlot(item.from, item.to, true);\n            } else {\n                slotX = this$1.getSlot(item.from, item.to, true);\n                slotY = (altAxis || plotArea.axisY).lineBox();\n            }\n\n            if (labelOptions) {\n                labelOptions.vAlign = labelOptions.position || LEFT;\n                label = this$1.createPlotBandLabel(\n                    labelOptions,\n                    item,\n                    new Box(\n                        slotX.x1,\n                        slotY.y1,\n                        slotX.x2,\n                        slotY.y2\n                    )\n\n                );\n            }\n\n            if (slotX.width() !== 0 && slotY.height() !== 0) {\n                var bandRect = new geom.Rect(\n                    [ slotX.x1, slotY.y1 ],\n                    [ slotX.width(), slotY.height() ]\n                );\n\n                var path = draw.Path.fromRect(bandRect, {\n                    fill: {\n                        color: item.color,\n                        opacity: item.opacity\n                    },\n                    stroke: null\n                });\n\n                group.append(path);\n                if (label) {\n                    group.append(label);\n                }\n            }\n        }\n\n        this.appendVisual(group);\n    };\n\n    Axis.prototype.createPlotBandLabel = function createPlotBandLabel (label, item, box) {\n\n        if (label.visible === false) {\n            return null;\n        }\n\n        var text = label.text;\n        var textbox;\n\n        if (defined(label) && label.visible) {\n            var labelTemplate = getTemplate(label);\n            if (labelTemplate) {\n                text = labelTemplate({ text: text, item: item });\n            } else if (label.format) {\n                text = this.chartService.format.auto(label.format, text);\n            }\n\n            if (!label.color) {\n                label.color = this.options.labels.color;\n            }\n        }\n\n        textbox = new TextBox(text, label);\n        textbox.reflow(box);\n        textbox.renderVisual();\n\n        return textbox.visual;\n    };\n\n    Axis.prototype.createGridLines = function createGridLines (altAxis) {\n        var options = this.options;\n        var minorGridLines = options.minorGridLines;\n        var majorGridLines = options.majorGridLines;\n        var minorUnit = options.minorUnit;\n        var vertical = options.vertical;\n        var axisLineVisible = altAxis.options.line.visible;\n        var majorUnit = majorGridLines.visible ? options.majorUnit : 0;\n        var lineBox = altAxis.lineBox();\n        var linePos = lineBox[vertical ? \"y1\" : \"x1\"];\n        var lineOptions = {\n            lineStart: lineBox[vertical ? \"x1\" : \"y1\"],\n            lineEnd: lineBox[vertical ? \"x2\" : \"y2\"],\n            vertical: vertical\n        };\n        var majorTicks = [];\n\n        var container = this.gridLinesVisual();\n\n        function render(tickPositions, gridLine, skipUnit) {\n            var count = tickPositions.length;\n            var step = Math.max(1, gridLine.step);\n\n            if (gridLine.visible) {\n                for (var i = gridLine.skip; i < count; i += step) {\n                    var pos = round(tickPositions[i]);\n                    if (!inArray(pos, majorTicks)) {\n                        if (i % skipUnit !== 0 && (!axisLineVisible || linePos !== pos)) {\n                            lineOptions.position = pos;\n                            container.append(createAxisGridLine(lineOptions, gridLine));\n\n                            majorTicks.push(pos);\n                        }\n                    }\n                }\n            }\n        }\n\n        render(this.getMajorTickPositions(), majorGridLines);\n        render(this.getMinorTickPositions(), minorGridLines, majorUnit / minorUnit);\n\n        return container.children;\n    };\n\n    Axis.prototype.reflow = function reflow (box) {\n        var ref = this;\n        var options = ref.options;\n        var labels = ref.labels;\n        var title = ref.title;\n        var vertical = options.vertical;\n        var count = labels.length;\n        var sizeFn = vertical ? WIDTH : HEIGHT;\n        var titleSize = title ? title.box[sizeFn]() : 0;\n        var space = this.getActualTickSize() + options.margin + titleSize;\n        var rootBox = (this.getRoot() || {}).box || box;\n        var boxSize = rootBox[sizeFn]();\n        var maxLabelSize = 0;\n\n        for (var i = 0; i < count; i++) {\n            var labelSize = labels[i].box[sizeFn]();\n            if (labelSize + space <= boxSize) {\n                maxLabelSize = Math.max(maxLabelSize, labelSize);\n            }\n        }\n\n        if (vertical) {\n            this.box = new Box(\n                box.x1, box.y1,\n                box.x1 + maxLabelSize + space, box.y2\n            );\n        } else {\n            this.box = new Box(\n                box.x1, box.y1,\n                box.x2, box.y1 + maxLabelSize + space\n            );\n        }\n\n        this.arrangeTitle();\n        this.arrangeLabels();\n        this.arrangeNotes();\n    };\n\n    Axis.prototype.getLabelsTickPositions = function getLabelsTickPositions () {\n        return this.getMajorTickPositions();\n    };\n\n    Axis.prototype.labelTickIndex = function labelTickIndex (label) {\n        return label.index;\n    };\n\n    Axis.prototype.arrangeLabels = function arrangeLabels () {\n        var this$1 = this;\n\n        var ref = this;\n        var options = ref.options;\n        var labels = ref.labels;\n        var labelsBetweenTicks = this.labelsBetweenTicks();\n        var vertical = options.vertical;\n        var mirror = options.labels.mirror;\n        var tickPositions = this.getLabelsTickPositions();\n\n        for (var idx = 0; idx < labels.length; idx++) {\n            var label = labels[idx];\n            var tickIx = this$1.labelTickIndex(label);\n            var labelSize = vertical ? label.box.height() : label.box.width();\n            var firstTickPosition = tickPositions[tickIx];\n            var nextTickPosition = tickPositions[tickIx + 1];\n            var positionStart = (void 0), positionEnd = (void 0);\n\n            if (vertical) {\n                if (labelsBetweenTicks) {\n                    var middle = firstTickPosition + (nextTickPosition - firstTickPosition) / 2;\n                    positionStart = middle - (labelSize / 2);\n                } else {\n                    positionStart = firstTickPosition - (labelSize / 2);\n                }\n\n                positionEnd = positionStart;\n            } else {\n                if (labelsBetweenTicks) {\n                    positionStart = firstTickPosition;\n                    positionEnd = nextTickPosition;\n                } else {\n                    positionStart = firstTickPosition - (labelSize / 2);\n                    positionEnd = positionStart + labelSize;\n                }\n            }\n\n            this$1.positionLabel(label, mirror, positionStart, positionEnd);\n        }\n    };\n\n    Axis.prototype.positionLabel = function positionLabel (label, mirror, positionStart, positionEnd) {\n        if ( positionEnd === void 0 ) positionEnd = positionStart;\n\n        var options = this.options;\n        var vertical = options.vertical;\n        var lineBox = this.lineBox();\n        var labelOffset = this.getActualTickSize() + options.margin;\n        var labelBox;\n\n        if (vertical) {\n            var labelX = lineBox.x2;\n\n            if (mirror) {\n                labelX += labelOffset;\n                label.options.rotationOrigin = LEFT;\n            } else {\n                labelX -= labelOffset + label.box.width();\n                label.options.rotationOrigin = RIGHT;\n            }\n\n            labelBox = label.box.move(labelX, positionStart);\n        } else {\n            var labelY = lineBox.y1;\n\n            if (mirror) {\n                labelY -= labelOffset + label.box.height();\n                label.options.rotationOrigin = BOTTOM;\n            } else {\n                labelY += labelOffset;\n                label.options.rotationOrigin = TOP;\n            }\n\n            labelBox = new Box(\n                positionStart, labelY,\n                positionEnd, labelY + label.box.height()\n            );\n        }\n\n        label.reflow(labelBox);\n    };\n\n    Axis.prototype.autoRotateLabelAngle = function autoRotateLabelAngle (labelBox, slotWidth) {\n        if (labelBox.width() < slotWidth) {\n            return 0;\n        }\n\n        if (labelBox.height() > slotWidth) {\n            return -90;\n        }\n\n        return -45;\n    };\n\n    Axis.prototype.autoRotateLabels = function autoRotateLabels () {\n        var this$1 = this;\n\n        if (!this.options.autoRotateLabels || this.options.vertical) {\n            return false;\n        }\n\n        var tickPositions = this.getMajorTickPositions();\n        var labels = this.labels;\n        var limit = Math.min(labels.length, tickPositions.length - 1);\n        var angle = 0;\n\n        for (var idx = 0; idx < limit; idx++) {\n            var width = Math.abs(tickPositions[idx + 1] - tickPositions[idx]);\n            var labelBox = labels[idx].box;\n            var labelAngle = this$1.autoRotateLabelAngle(labelBox, width);\n\n            if (labelAngle !== 0) {\n                angle = labelAngle;\n            }\n\n            if (angle === -90) {\n                break;\n            }\n        }\n\n        if (angle !== 0) {\n            for (var idx$1 = 0; idx$1 < labels.length; idx$1++) {\n                labels[idx$1].options.rotation = angle;\n                labels[idx$1].reflow(new Box());\n            }\n\n            return true;\n        }\n    };\n\n    Axis.prototype.arrangeTitle = function arrangeTitle () {\n        var ref = this;\n        var options = ref.options;\n        var title = ref.title;\n        var mirror = options.labels.mirror;\n        var vertical = options.vertical;\n\n        if (title) {\n            if (vertical) {\n                title.options.align = mirror ? RIGHT : LEFT;\n                title.options.vAlign = title.options.position;\n            } else {\n                title.options.align = title.options.position;\n                title.options.vAlign = mirror ? TOP : BOTTOM;\n            }\n\n            title.reflow(this.box);\n        }\n    };\n\n    Axis.prototype.arrangeNotes = function arrangeNotes () {\n        var this$1 = this;\n\n        for (var idx = 0; idx < this.notes.length; idx++) {\n            var item = this$1.notes[idx];\n            var value = item.options.value;\n            var slot = (void 0);\n\n            if (defined(value)) {\n                if (this$1.shouldRenderNote(value)) {\n                    item.show();\n                } else {\n                    item.hide();\n                }\n\n                slot = this$1.noteSlot(value);\n            } else {\n                item.hide();\n            }\n\n            item.reflow(slot || this$1.lineBox());\n        }\n    };\n\n    Axis.prototype.noteSlot = function noteSlot (value) {\n        return this.getSlot(value);\n    };\n\n    Axis.prototype.alignTo = function alignTo (secondAxis) {\n        var lineBox = secondAxis.lineBox();\n        var vertical = this.options.vertical;\n        var pos = vertical ? Y : X;\n\n        this.box.snapTo(lineBox, pos);\n        if (vertical) {\n            this.box.shrink(0, this.lineBox().height() - lineBox.height());\n        } else {\n            this.box.shrink(this.lineBox().width() - lineBox.width(), 0);\n        }\n        this.box[pos + 1] -= this.lineBox()[pos + 1] - lineBox[pos + 1];\n        this.box[pos + 2] -= this.lineBox()[pos + 2] - lineBox[pos + 2];\n    };\n\n    Axis.prototype.axisLabelText = function axisLabelText (value, options, context) {\n        var this$1 = this;\n\n        var text;\n        var tmpl = getTemplate(options);\n        var defaultText = function () {\n            if (!options.format) {\n                return value;\n            }\n\n            return this$1.chartService.format.localeAuto(\n                options.format, [ value ], options.culture\n            );\n        };\n\n        if (tmpl) {\n            var templateContext = Object.assign({}, context, {\n                get text() { return defaultText(); },\n                value: value,\n                format: options.format,\n                culture: options.culture\n            });\n\n            text = tmpl(templateContext);\n        } else {\n            text = defaultText();\n        }\n\n        return text;\n    };\n\n    Axis.prototype.slot = function slot (from , to, limit) {\n        var slot = this.getSlot(from, to, limit);\n        if (slot) {\n            return slot.toRect();\n        }\n    };\n\n    Axis.prototype.contentBox = function contentBox () {\n        var box = this.box.clone();\n        var labels = this.labels;\n        if (labels.length) {\n            var axis = this.options.vertical ? Y : X;\n            if (this.chartService.isPannable(axis)) {\n                var offset = this.maxLabelOffset();\n                box[axis + 1] -= offset.start;\n                box[axis + 2] += offset.end;\n            } else {\n                if (labels[0].options.visible) {\n                    box.wrap(labels[0].box);\n                }\n                var lastLabel = labels[labels.length - 1];\n                if (lastLabel.options.visible) {\n                    box.wrap(lastLabel.box);\n                }\n            }\n        }\n\n        return box;\n    };\n\n    Axis.prototype.maxLabelOffset = function maxLabelOffset () {\n        var this$1 = this;\n\n        var ref = this.options;\n        var vertical = ref.vertical;\n        var reverse = ref.reverse;\n        var labelsBetweenTicks = this.labelsBetweenTicks();\n        var tickPositions = this.getLabelsTickPositions();\n        var offsetField = vertical ? Y : X;\n        var labels = this.labels;\n        var startPosition = reverse ? 1 : 0;\n        var endPosition = reverse ? 0 : 1;\n        var maxStartOffset = 0;\n        var maxEndOffset = 0;\n\n        for (var idx = 0; idx < labels.length; idx++) {\n            var label = labels[idx];\n            var tickIx = this$1.labelTickIndex(label);\n            var startTick = (void 0), endTick = (void 0);\n\n            if (labelsBetweenTicks) {\n                startTick = tickPositions[tickIx + startPosition];\n                endTick = tickPositions[tickIx + endPosition];\n            } else {\n                startTick = endTick = tickPositions[tickIx];\n            }\n\n            maxStartOffset = Math.max(maxStartOffset, startTick - label.box[offsetField + 1]);\n            maxEndOffset = Math.max(maxEndOffset, label.box[offsetField + 2] - endTick);\n        }\n\n        return {\n            start: maxStartOffset,\n            end: maxEndOffset\n        };\n    };\n\n    Axis.prototype.limitRange = function limitRange (from, to, min, max, offset) {\n        var options = this.options;\n\n        if ((from < min && offset < 0 && (!defined(options.min) || options.min <= min)) || (max < to && offset > 0 && (!defined(options.max) || max <= options.max))) {\n            return null;\n        }\n\n        if ((to < min && offset > 0) || (max < from && offset < 0)) {\n            return {\n                min: from,\n                max: to\n            };\n        }\n\n        var rangeSize = to - from;\n        var minValue = from;\n        var maxValue = to;\n\n        if (from < min && offset < 0) {\n            minValue = limitValue(from, min, max);\n            maxValue = limitValue(from + rangeSize, min + rangeSize, max);\n        } else if (to > max && offset > 0) {\n            maxValue = limitValue(to, min, max);\n            minValue = limitValue(to - rangeSize, min, max - rangeSize);\n        }\n\n        return {\n            min: minValue,\n            max: maxValue\n        };\n    };\n\n    Axis.prototype.valueRange = function valueRange () {\n        return {\n            min: this.seriesMin,\n            max: this.seriesMax\n        };\n    };\n\n    Axis.prototype.lineDir = function lineDir () {\n        /*\n         * Axis line direction:\n         *   * Vertical: up.\n         *   * Horizontal: right.\n         */\n\n        var ref = this.options;\n        var vertical = ref.vertical;\n        var reverse = ref.reverse;\n        return (vertical ? -1 : 1) * (reverse ? -1 : 1);\n    };\n\n    Axis.prototype.lineInfo = function lineInfo () {\n        var ref = this.options;\n        var vertical = ref.vertical;\n        var lineBox = this.lineBox();\n        var lineSize = vertical ? lineBox.height() : lineBox.width();\n        var axis = vertical ? Y : X;\n        var axisDir = this.lineDir();\n        var startEdge = axisDir === 1 ? 1 : 2;\n        var axisOrigin = axis + startEdge.toString();\n        var lineStart = lineBox[axisOrigin];\n\n        return {\n            axis: axis,\n            axisOrigin: axisOrigin,\n            axisDir: axisDir,\n            lineBox: lineBox,\n            lineSize: lineSize,\n            lineStart: lineStart\n        };\n    };\n\n    Axis.prototype.pointOffset = function pointOffset (point) {\n        var ref = this.lineInfo();\n        var axis = ref.axis;\n        var axisDir = ref.axisDir;\n        var axisOrigin = ref.axisOrigin;\n        var lineBox = ref.lineBox;\n        var lineSize = ref.lineSize;\n        var relative = axisDir > 0 ? point[axis] - lineBox[axisOrigin] : lineBox[axisOrigin] - point[axis];\n        var offset = relative / lineSize;\n\n        return offset;\n    };\n\n    // Computes the axis range change (delta) for a given scale factor.\n    // The delta is subtracted from the axis range:\n    //   * delta > 0 reduces the axis range (zoom-in)\n    //   * delta < 0 expands the axis range (zoom-out)\n    Axis.prototype.scaleToDelta = function scaleToDelta (rawScale, range) {\n        // Scale >= 1 would result in axis range of 0.\n        // Scale <= -1 would reverse the scale direction.\n        var MAX_SCALE = 0.999;\n        var scale = limitValue(rawScale, -MAX_SCALE, MAX_SCALE);\n\n        var delta;\n        if (scale > 0) {\n            delta = range * Math.min(1, scale);\n        } else {\n            delta = range - (range / (1 + scale));\n        }\n\n        return delta;\n    };\n\n    Axis.prototype.labelsBetweenTicks = function labelsBetweenTicks () {\n        return !this.options.justified;\n    };\n\n    //add legacy fields to the options that are no longer generated by default\n    Axis.prototype.prepareUserOptions = function prepareUserOptions () {\n    };\n\n    return Axis;\n}(ChartElement));\n\nsetDefaultOptions(Axis, {\n    labels: {\n        visible: true,\n        rotation: 0,\n        mirror: false,\n        step: 1,\n        skip: 0\n    },\n    line: {\n        width: 1,\n        color: BLACK,\n        visible: true\n    },\n    title: {\n        visible: true,\n        position: CENTER\n    },\n    majorTicks: {\n        align: OUTSIDE,\n        size: 4,\n        skip: 0,\n        step: 1\n    },\n    minorTicks: {\n        align: OUTSIDE,\n        size: 3,\n        skip: 0,\n        step: 1\n    },\n    axisCrossingValue: 0,\n    majorTickType: OUTSIDE,\n    minorTickType: NONE,\n    majorGridLines: {\n        skip: 0,\n        step: 1\n    },\n    minorGridLines: {\n        visible: false,\n        width: 1,\n        color: BLACK,\n        skip: 0,\n        step: 1\n    },\n    // TODO: Move to line or labels options\n    margin: 5,\n    visible: true,\n    reverse: false,\n    justified: true,\n    notes: {\n        label: {\n            text: \"\"\n        }\n    },\n\n    _alignLines: true,\n    _deferLabels: false\n});\n\nexport default Axis;\n","export var MILLISECONDS = \"milliseconds\";\nexport var SECONDS = \"seconds\";\nexport var MINUTES = \"minutes\";\nexport var HOURS = \"hours\";\nexport var DAYS = \"days\";\nexport var WEEKS = \"weeks\";\nexport var MONTHS = \"months\";\nexport var YEARS = \"years\";\n\nexport var TIME_PER_MILLISECOND = 1;\nexport var TIME_PER_SECOND = 1000;\nexport var TIME_PER_MINUTE = 60 * TIME_PER_SECOND;\nexport var TIME_PER_HOUR = 60 * TIME_PER_MINUTE;\nexport var TIME_PER_DAY = 24 * TIME_PER_HOUR;\nexport var TIME_PER_WEEK = 7 * TIME_PER_DAY;\nexport var TIME_PER_MONTH = 31 * TIME_PER_DAY;\nexport var TIME_PER_YEAR = 365 * TIME_PER_DAY;\nexport var TIME_PER_UNIT = {\n    \"years\": TIME_PER_YEAR,\n    \"months\": TIME_PER_MONTH,\n    \"weeks\": TIME_PER_WEEK,\n    \"days\": TIME_PER_DAY,\n    \"hours\": TIME_PER_HOUR,\n    \"minutes\": TIME_PER_MINUTE,\n    \"seconds\": TIME_PER_SECOND,\n    \"milliseconds\": TIME_PER_MILLISECOND\n};\n\n","import { TIME_PER_MINUTE } from './constants';\n\nexport default function absoluteDateDiff(a, b) {\n    var diff = a.getTime() - b;\n    var offsetDiff = a.getTimezoneOffset() - b.getTimezoneOffset();\n\n    return diff - (offsetDiff * TIME_PER_MINUTE);\n}","export default function addTicks(date, ticks) {\n    return new Date(date.getTime() + ticks);\n}","export default function toDate(value) {\n    var result;\n\n    if (value instanceof Date) {\n        result = value;\n    } else if (value) {\n        result = new Date(value);\n    }\n\n    return result;\n}","import { MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS,\n    TIME_PER_SECOND, TIME_PER_MINUTE, TIME_PER_HOUR } from './constants';\nimport addTicks from './add-ticks';\nimport toDate from './to-date';\nimport startOfWeek from './start-of-week';\n\nfunction adjustDST(date, hours) {\n    if (hours === 0 && date.getHours() === 23) {\n        date.setHours(date.getHours() + 2);\n        return true;\n    }\n\n    return false;\n}\n\nfunction addHours(date, hours) {\n    var roundedDate = new Date(date);\n\n    roundedDate.setMinutes(0, 0, 0);\n\n    var tzDiff = (date.getTimezoneOffset() - roundedDate.getTimezoneOffset()) * TIME_PER_MINUTE;\n\n    return addTicks(roundedDate, tzDiff + hours * TIME_PER_HOUR);\n}\n\nexport default function addDuration(dateValue, value, unit, weekStartDay) {\n    var result = dateValue;\n\n    if (dateValue) {\n        var date = toDate(dateValue);\n        var hours = date.getHours();\n\n        if (unit === YEARS) {\n            result = new Date(date.getFullYear() + value, 0, 1);\n            adjustDST(result, 0);\n        } else if (unit === MONTHS) {\n            result = new Date(date.getFullYear(), date.getMonth() + value, 1);\n            adjustDST(result, hours);\n        } else if (unit === WEEKS) {\n            result = addDuration(startOfWeek(date, weekStartDay), value * 7, DAYS);\n            adjustDST(result, hours);\n        } else if (unit === DAYS) {\n            result = new Date(date.getFullYear(), date.getMonth(), date.getDate() + value);\n            adjustDST(result, hours);\n        } else if (unit === HOURS) {\n            result = addHours(date, value);\n        } else if (unit === MINUTES) {\n            result = addTicks(date, value * TIME_PER_MINUTE);\n\n            if (result.getSeconds() > 0) {\n                result.setSeconds(0);\n            }\n        } else if (unit === SECONDS) {\n            result = addTicks(date, value * TIME_PER_SECOND);\n        } else if (unit === MILLISECONDS) {\n            result = addTicks(date, value);\n        }\n\n        if (unit !== MILLISECONDS && result.getMilliseconds() > 0) {\n            result.setMilliseconds(0);\n        }\n    }\n\n    return result;\n}","import { TIME_PER_DAY } from './constants';\nimport addTicks from './add-ticks';\n\nexport default function startOfWeek(date, weekStartDay) {\n    if ( weekStartDay === void 0 ) weekStartDay = 0;\n\n    var daysToSubtract = 0;\n    var day = date.getDay();\n\n    if (!isNaN(day)) {\n        while (day !== weekStartDay) {\n            if (day === 0) {\n                day = 6;\n            } else {\n                day--;\n            }\n\n            daysToSubtract++;\n        }\n    }\n\n    return addTicks(date, -daysToSubtract * TIME_PER_DAY);\n}","import addDuration from './add-duration';\nimport toDate from './to-date';\n\nexport default function floorDate(date, unit, weekStartDay) {\n    return addDuration(toDate(date), 0, unit, weekStartDay);\n}","import floorDate from './floor-date';\nimport addDuration from './add-duration';\nimport toDate from './to-date';\n\nexport default function ceilDate(dateValue, unit, weekStartDay) {\n    var date = toDate(dateValue);\n\n    if (date && floorDate(date, unit, weekStartDay).getTime() === date.getTime()) {\n        return date;\n    }\n\n    return addDuration(date, 1, unit, weekStartDay);\n}","export default function dateComparer(a, b) {\n    if (a && b) {\n        return a.getTime() - b.getTime();\n    }\n\n    return -1;\n}","export default function dateDiff(a, b) {\n    return a.getTime() - b;\n}","import { isArray } from '../common';\nimport toDate from './to-date';\n\nexport default function toTime(value) {\n    if (isArray(value)) {\n        var result = [];\n        for (var idx = 0; idx < value.length; idx++) {\n            result.push(toTime(value[idx]));\n        }\n\n        return result;\n    } else if (value) {\n        return toDate(value).getTime();\n    }\n}","import toTime from './to-time';\n\nexport default function dateEquals(a, b) {\n    if (a && b) {\n        return toTime(a) === toTime(b);\n    }\n\n    return a === b;\n}","import { DAYS, WEEKS, MONTHS, YEARS, TIME_PER_UNIT } from './constants';\nimport dateDiff from './date-diff';\nimport absoluteDateDiff from './absolute-date-diff';\nimport toDate from './to-date';\n\nfunction timeIndex(date, start, baseUnit) {\n    return absoluteDateDiff(date, start) / TIME_PER_UNIT[baseUnit];\n}\n\nexport default function dateIndex(value, start, baseUnit, baseUnitStep) {\n    var date = toDate(value);\n    var startDate = toDate(start);\n    var index;\n\n    if (baseUnit === MONTHS) {\n        index = (date.getMonth() - startDate.getMonth() + (date.getFullYear() - startDate.getFullYear()) * 12) +\n            timeIndex(date, new Date(date.getFullYear(), date.getMonth()), DAYS) / new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n    } else if (baseUnit === YEARS) {\n        index = date.getFullYear() - startDate.getFullYear() + dateIndex(date, new Date(date.getFullYear(), 0), MONTHS, 1) / 12;\n    } else if (baseUnit === DAYS || baseUnit === WEEKS) {\n        index = timeIndex(date, startDate, baseUnit);\n    } else {\n        index = dateDiff(date, start) / TIME_PER_UNIT[baseUnit];\n    }\n\n    return index / baseUnitStep;\n}\n\n","import { DAYS, MONTHS, YEARS, TIME_PER_DAY, TIME_PER_UNIT } from './constants';\nimport dateDiff from './date-diff';\n\nexport default function duration(a, b, unit) {\n    var diff;\n\n    if (unit === YEARS) {\n        diff = b.getFullYear() - a.getFullYear();\n    } else if (unit === MONTHS) {\n        diff = duration(a, b, YEARS) * 12 + b.getMonth() - a.getMonth();\n    } else if (unit === DAYS) {\n        diff = Math.floor(dateDiff(b, a) / TIME_PER_DAY);\n    } else {\n        diff = Math.floor(dateDiff(b, a) / TIME_PER_UNIT[unit]);\n    }\n\n    return diff;\n}","import { isString } from '../common';\nimport toDate from './to-date';\n\nexport default function parseDate(intlService, date) {\n    var result;\n    if (isString(date)) {\n        result = intlService.parseDate(date) || toDate(date);\n    } else {\n        result = toDate(date);\n    }\n    return result;\n}\n","import parseDate from './parse-date';\n\nimport { isArray } from '../common';\n\nexport default function parseDates(intlService, dates) {\n    if (isArray(dates)) {\n        var result = [];\n        for (var idx = 0; idx < dates.length; idx++) {\n            result.push(parseDate(intlService, dates[idx]));\n        }\n\n        return result;\n    }\n\n    return parseDate(intlService, dates);\n}","import { isNumber } from '../common';\n\nexport default function firstDay(options, intlService) {\n    if (isNumber(options.weekStartDay)) {\n        return options.weekStartDay;\n    }\n\n    if (intlService && intlService.firstDay) {\n        return intlService.firstDay();\n    }\n\n    return 0;\n}\n","import Axis from './axis';\nimport AxisLabel from './axis-label';\n\nimport { BLACK, COORD_PRECISION, DEFAULT_PRECISION, X, Y } from '../common/constants';\nimport { defined, isNumber, last, limitValue, round, setDefaultOptions, valueOrDefault, HashMap } from '../common';\nimport { dateEquals } from '../date-utils';\n\nvar MIN_CATEGORY_POINTS_RANGE = 0.01;\nvar MIN_CATEGORY_RANGE = 0.1;\n\nfunction indexOf(value, arr) {\n    if (value instanceof Date) {\n        var length = arr.length;\n        for (var idx = 0; idx < length; idx++) {\n            if (dateEquals(arr[idx], value)) {\n                return idx;\n            }\n        }\n\n        return -1;\n    }\n\n    return arr.indexOf(value);\n}\n\nvar CategoryAxis = (function (Axis) {\n    function CategoryAxis () {\n        Axis.apply(this, arguments);\n    }\n\n    if ( Axis ) CategoryAxis.__proto__ = Axis;\n    CategoryAxis.prototype = Object.create( Axis && Axis.prototype );\n    CategoryAxis.prototype.constructor = CategoryAxis;\n\n    CategoryAxis.prototype.initFields = function initFields () {\n        this._ticks = {};\n    };\n\n    CategoryAxis.prototype.categoriesHash = function categoriesHash () {\n        return \"\";\n    };\n\n    CategoryAxis.prototype.clone = function clone () {\n        var copy = new CategoryAxis(Object.assign({}, this.options, {\n            categories: this.options.srcCategories\n        }), this.chartService);\n        copy.createLabels();\n\n        return copy;\n    };\n\n    CategoryAxis.prototype.initUserOptions = function initUserOptions (options) {\n        var categories = options.categories || [];\n        var definedMin = defined(options.min);\n        var definedMax = defined(options.max);\n        options.srcCategories = options.categories = categories;\n\n        if ((definedMin || definedMax) && categories.length) {\n            var min = definedMin ? Math.floor(options.min) : 0;\n            var max;\n\n            if (definedMax) {\n                max = options.justified ? Math.floor(options.max) + 1 : Math.ceil(options.max);\n            } else {\n                max = categories.length;\n            }\n\n            options.categories = options.categories.slice(min, max);\n        }\n\n        return options;\n    };\n\n    CategoryAxis.prototype.rangeIndices = function rangeIndices () {\n        var options = this.options;\n        var length = options.categories.length || 1;\n        var min = isNumber(options.min) ? options.min % 1 : 0;\n        var max;\n\n        if (isNumber(options.max) && options.max % 1 !== 0 && options.max < this.totalRange().max) {\n            max = length - (1 - options.max % 1);\n        } else {\n            max = length - (options.justified ? 1 : 0);\n        }\n\n        return {\n            min: min,\n            max: max\n        };\n    };\n\n    CategoryAxis.prototype.range = function range () {\n        var options = this.options;\n        var min = isNumber(options.min) ? options.min : 0;\n        var max = isNumber(options.max) ? options.max : this.totalRange().max;\n\n        return {\n            min: min,\n            max: max\n        };\n    };\n\n    CategoryAxis.prototype.roundedRange = function roundedRange () {\n        return this.range();\n    };\n\n    CategoryAxis.prototype.totalRange = function totalRange () {\n        var options = this.options;\n        return { min: 0, max: Math.max(this._seriesMax || 0, options.srcCategories.length) - (options.justified ? 1 : 0) };\n    };\n\n    CategoryAxis.prototype.scaleOptions = function scaleOptions () {\n        var ref = this.rangeIndices();\n        var min = ref.min;\n        var max = ref.max;\n        var lineBox = this.lineBox();\n        var size = this.options.vertical ? lineBox.height() : lineBox.width();\n        var scale = size / ((max - min) || 1);\n\n        return {\n            scale: scale * (this.options.reverse ? -1 : 1),\n            box: lineBox,\n            min: min,\n            max: max\n        };\n    };\n\n    CategoryAxis.prototype.arrangeLabels = function arrangeLabels () {\n        Axis.prototype.arrangeLabels.call(this);\n        this.hideOutOfRangeLabels();\n    };\n\n    CategoryAxis.prototype.hideOutOfRangeLabels = function hideOutOfRangeLabels () {\n        var ref = this;\n        var box = ref.box;\n        var labels = ref.labels;\n\n        if (labels.length > 0) {\n            var valueAxis = this.options.vertical ? Y : X;\n            var start = box[valueAxis + 1];\n            var end = box[valueAxis + 2];\n            var firstLabel = labels[0];\n            var lastLabel = last(labels);\n\n            if (firstLabel.box[valueAxis + 1] > end || firstLabel.box[valueAxis + 2] < start) {\n                firstLabel.options.visible = false;\n            }\n            if (lastLabel.box[valueAxis + 1] > end || lastLabel.box[valueAxis + 2] < start) {\n                lastLabel.options.visible = false;\n            }\n        }\n    };\n\n    CategoryAxis.prototype.getMajorTickPositions = function getMajorTickPositions () {\n        return this.getTicks().majorTicks;\n    };\n\n    CategoryAxis.prototype.getMinorTickPositions = function getMinorTickPositions () {\n        return this.getTicks().minorTicks;\n    };\n\n    CategoryAxis.prototype.getLabelsTickPositions = function getLabelsTickPositions () {\n        return this.getTicks().labelTicks;\n    };\n\n    CategoryAxis.prototype.tickIndices = function tickIndices (stepSize) {\n        var ref = this.rangeIndices();\n        var min = ref.min;\n        var max = ref.max;\n        var limit = Math.ceil(max);\n        var current = Math.floor(min);\n        var indices = [];\n\n        while (current <= limit) {\n            indices.push(current);\n            current += stepSize;\n        }\n\n        return indices;\n    };\n\n    CategoryAxis.prototype.getTickPositions = function getTickPositions (stepSize) {\n        var ref = this.options;\n        var vertical = ref.vertical;\n        var reverse = ref.reverse;\n        var ref$1 = this.scaleOptions();\n        var scale = ref$1.scale;\n        var box = ref$1.box;\n        var min = ref$1.min;\n        var pos = box[(vertical ? Y : X) + (reverse ? 2 : 1)];\n        var indices = this.tickIndices(stepSize);\n        var positions = [];\n\n        for (var idx = 0; idx < indices.length; idx++) {\n            positions.push(pos + round(scale * (indices[idx] - min), COORD_PRECISION));\n        }\n\n        return positions;\n    };\n\n    CategoryAxis.prototype.getTicks = function getTicks () {\n        var options = this.options;\n        var cache = this._ticks;\n        var range = this.rangeIndices();\n        var lineBox = this.lineBox();\n        var hash = lineBox.getHash() + range.min + \",\" + range.max + options.reverse + options.justified;\n\n        if (cache._hash !== hash) {\n            var hasMinor = options.minorTicks.visible || options.minorGridLines.visible;\n            cache._hash = hash;\n            cache.labelTicks = this.getTickPositions(1);\n            cache.majorTicks = this.filterOutOfRangePositions(cache.labelTicks, lineBox);\n            cache.minorTicks = hasMinor ? this.filterOutOfRangePositions(this.getTickPositions(0.5), lineBox) : [];\n        }\n\n        return cache;\n    };\n\n    CategoryAxis.prototype.filterOutOfRangePositions = function filterOutOfRangePositions (positions, lineBox) {\n        if (!positions.length) {\n            return positions;\n        }\n\n        var axis = this.options.vertical ? Y : X;\n        var inRange = function (position) { return lineBox[axis + 1] <= position && position <= lineBox[axis + 2]; };\n\n        var end = positions.length - 1;\n        var startIndex = 0;\n        while (!inRange(positions[startIndex]) && startIndex <= end) {\n            startIndex++;\n        }\n\n        var endIndex = end;\n\n        while (!inRange(positions[endIndex]) && endIndex >= 0) {\n            endIndex--;\n        }\n\n        return positions.slice(startIndex, endIndex + 1);\n    };\n\n    CategoryAxis.prototype.lineInfo = function lineInfo () {\n        var ref = this.options;\n        var vertical = ref.vertical;\n        var reverse = ref.reverse;\n        var lineBox = this.lineBox();\n        var lineSize = vertical ? lineBox.height() : lineBox.width();\n        var axis = vertical ? Y : X;\n        var axisDir = reverse ? -1 : 1;\n        var startEdge = axisDir === 1 ? 1 : 2;\n        var axisOrigin = axis + startEdge.toString();\n        var lineStart = lineBox[axisOrigin];\n\n        return {\n            axis: axis,\n            axisOrigin: axisOrigin,\n            axisDir: axisDir,\n            lineBox: lineBox,\n            lineSize: lineSize,\n            lineStart: lineStart\n        };\n    };\n\n    CategoryAxis.prototype.lineDir = function lineDir () {\n        /*\n         *  Category axis line direction:\n         *    * Vertical: down.\n         *    * Horizontal: right.\n         */\n\n        var ref = this.options;\n        var reverse = ref.reverse;\n        return reverse ? -1 : 1;\n    };\n\n    // TODO: Rename to slotBox, valueSlot, slotByIndex?\n    CategoryAxis.prototype.getSlot = function getSlot (from, to, limit) {\n        var options = this.options;\n        var reverse = options.reverse;\n        var justified = options.justified;\n        var ref = this.scaleOptions();\n        var scale = ref.scale;\n        var box = ref.box;\n        var min = ref.min;\n        var ref$1 = this.lineInfo();\n        var valueAxis = ref$1.axis;\n        var lineStart = ref$1.lineStart;\n\n        var slotBox = box.clone();\n        var singleSlot = !defined(to);\n\n        var start = valueOrDefault(from, 0);\n        var end = valueOrDefault(to, start);\n        end = Math.max(end - 1, start);\n\n        // Fixes transient bug caused by iOS 6.0 JIT\n        // (one can never be too sure)\n        end = Math.max(start, end);\n\n        var p1 = lineStart + (start - min) * scale;\n        var p2 = lineStart + (end + 1 - min) * scale;\n\n        if (singleSlot && justified) {\n            p2 = p1;\n        }\n\n        if (limit) {\n            p1 = limitValue(p1, box[valueAxis + 1], box[valueAxis + 2]);\n            p2 = limitValue(p2, box[valueAxis + 1], box[valueAxis + 2]);\n        }\n\n        slotBox[valueAxis + 1] = reverse ? p2 : p1;\n        slotBox[valueAxis + 2] = reverse ? p1 : p2;\n\n        return slotBox;\n    };\n\n    CategoryAxis.prototype.limitSlot = function limitSlot (slot) {\n        var vertical = this.options.vertical;\n        var valueAxis = vertical ? Y : X;\n        var lineBox = this.lineBox();\n        var limittedSlot = slot.clone();\n\n        limittedSlot[valueAxis + 1] = limitValue(slot[valueAxis + 1], lineBox[valueAxis + 1], lineBox[valueAxis + 2]);\n        limittedSlot[valueAxis + 2] = limitValue(slot[valueAxis + 2], lineBox[valueAxis + 1], lineBox[valueAxis + 2]);\n\n        return limittedSlot;\n    };\n\n    CategoryAxis.prototype.slot = function slot (from, to, limit) {\n        var min = Math.floor(this.options.min || 0);\n        var start = from;\n        var end = to;\n\n        if (typeof start === \"string\") {\n            start = this.categoryIndex(start);\n        } else if (isNumber(start)) {\n            start -= min;\n        }\n\n        if (typeof end === \"string\") {\n            end = this.categoryIndex(end);\n        } else if (isNumber(end)) {\n            end -= min;\n        }\n\n        return Axis.prototype.slot.call(this, start, end, limit);\n    };\n\n    CategoryAxis.prototype.pointCategoryIndex = function pointCategoryIndex (point) {\n        var ref = this.options;\n        var reverse = ref.reverse;\n        var justified = ref.justified;\n        var vertical = ref.vertical;\n        var valueAxis = vertical ? Y : X;\n        var ref$1 = this.scaleOptions();\n        var scale = ref$1.scale;\n        var box = ref$1.box;\n        var min = ref$1.min;\n        var max = ref$1.max;\n        var startValue = reverse ? max : min;\n        var lineStart = box[valueAxis + 1];\n        var lineEnd = box[valueAxis + 2];\n        var pos = point[valueAxis];\n\n        if (pos < lineStart || pos > lineEnd) {\n            return null;\n        }\n\n        var value = startValue + (pos - lineStart) / scale;\n        var diff = value % 1;\n\n        if (justified) {\n            value = Math.round(value);\n        } else if (diff === 0 && value > 0) {\n            value--;\n        }\n\n        return Math.floor(value);\n    };\n\n    CategoryAxis.prototype.getCategory = function getCategory (point) {\n        var index = this.pointCategoryIndex(point);\n\n        if (index === null) {\n            return null;\n        }\n\n        return this.options.categories[index];\n    };\n\n    CategoryAxis.prototype.categoryIndex = function categoryIndex (value) {\n        return this.totalIndex(value) - Math.floor(this.options.min || 0);\n    };\n\n    CategoryAxis.prototype.categoryAt = function categoryAt (index, total) {\n        var options = this.options;\n\n        return (total ? options.srcCategories : options.categories)[index];\n    };\n\n    CategoryAxis.prototype.categoriesCount = function categoriesCount () {\n        return (this.options.categories || []).length;\n    };\n\n    CategoryAxis.prototype.translateRange = function translateRange (delta) {\n        var options = this.options;\n        var lineBox = this.lineBox();\n        var size = options.vertical ? lineBox.height() : lineBox.width();\n        var range = options.categories.length;\n        var scale = size / range;\n        var offset = round(delta / scale, DEFAULT_PRECISION);\n\n        return {\n            min: offset,\n            max: range + offset\n        };\n    };\n\n    CategoryAxis.prototype.scaleRange = function scaleRange (scale, cursor) {\n        var position = Math.abs(this.pointOffset(cursor));\n        var rangeIndices = this.limitedRangeIndices();\n        var range = rangeIndices.max - rangeIndices.min;\n        var delta = this.scaleToDelta(scale, range);\n        var minDelta = position * delta;\n        var maxDelta = (1 - position) * delta;\n        var min = rangeIndices.min + minDelta;\n        var max = rangeIndices.max - maxDelta;\n\n        if (max - min < MIN_CATEGORY_RANGE) {\n            max = min + MIN_CATEGORY_RANGE;\n        }\n\n        return {\n            min: min,\n            max: max\n        };\n    };\n\n    CategoryAxis.prototype.zoomRange = function zoomRange (scale, cursor) {\n        var ref = this.totalRange();\n        var totalMin = ref.min;\n        var totalMax = ref.max;\n        var range = this.scaleRange(scale, cursor);\n\n        return {\n            min: limitValue(range.min, totalMin, totalMax),\n            max: limitValue(range.max, totalMin, totalMax)\n        };\n    };\n\n    CategoryAxis.prototype.labelsCount = function labelsCount () {\n        var labelsRange = this.labelsRange();\n\n        return labelsRange.max - labelsRange.min;\n    };\n\n    CategoryAxis.prototype.labelsRange = function labelsRange () {\n        var options = this.options;\n        var justified = options.justified;\n        var labelOptions = options.labels;\n        var ref = this.limitedRangeIndices(true);\n        var min = ref.min;\n        var max = ref.max;\n        var start = Math.floor(min);\n\n        if (!justified) {\n            min = Math.floor(min);\n            max = Math.ceil(max);\n        } else {\n            min = Math.ceil(min);\n            max = Math.floor(max);\n        }\n\n        var skip;\n\n        if (min > labelOptions.skip) {\n            skip = labelOptions.skip + labelOptions.step * Math.ceil((min - labelOptions.skip) / labelOptions.step);\n        } else {\n            skip = labelOptions.skip;\n        }\n\n        return {\n            min: skip - start,\n            max: (options.categories.length ? max + (justified ? 1 : 0) : 0) - start\n        };\n    };\n\n    CategoryAxis.prototype.createAxisLabel = function createAxisLabel (index, labelOptions, labelContext) {\n        var options = this.options;\n        var dataItem = options.dataItems ? options.dataItems[index] : null;\n        var category = valueOrDefault(options.categories[index], \"\");\n\n        labelContext.dataItem = dataItem;\n        var text = this.axisLabelText(category, labelOptions, labelContext);\n\n        return new AxisLabel(category, text, index, dataItem, labelOptions);\n    };\n\n    CategoryAxis.prototype.shouldRenderNote = function shouldRenderNote (value) {\n        var range = this.limitedRangeIndices();\n\n        return Math.floor(range.min) <= value && value <= Math.ceil(range.max);\n    };\n\n    CategoryAxis.prototype.noteSlot = function noteSlot (value) {\n        var options = this.options;\n        var index = value - Math.floor(options.min || 0);\n        return this.getSlot(index);\n    };\n\n    CategoryAxis.prototype.arrangeNotes = function arrangeNotes () {\n        Axis.prototype.arrangeNotes.call(this);\n        this.hideOutOfRangeNotes();\n    };\n\n    CategoryAxis.prototype.hideOutOfRangeNotes = function hideOutOfRangeNotes () {\n        var ref = this;\n        var notes = ref.notes;\n        var box = ref.box;\n        if (notes && notes.length) {\n            var valueAxis = this.options.vertical ? Y : X;\n            var start = box[valueAxis + 1];\n            var end = box[valueAxis + 2];\n\n            for (var idx = 0; idx < notes.length; idx++) {\n                var note = notes[idx];\n                if (note.box && (end < note.box[valueAxis + 1] || note.box[valueAxis + 2] < start)) {\n                    note.hide();\n                }\n            }\n        }\n    };\n\n    CategoryAxis.prototype.pan = function pan (delta) {\n        var range = this.limitedRangeIndices(true);\n        var ref = this.scaleOptions();\n        var scale = ref.scale;\n        var offset = round(delta / scale, DEFAULT_PRECISION);\n        var totalRange = this.totalRange();\n        var min = range.min + offset;\n        var max = range.max + offset;\n\n        return this.limitRange(min, max, 0, totalRange.max, offset);\n    };\n\n    CategoryAxis.prototype.pointsRange = function pointsRange (start, end) {\n        var ref = this.options;\n        var reverse = ref.reverse;\n        var vertical = ref.vertical;\n        var valueAxis = vertical ? Y : X;\n        var range = this.limitedRangeIndices(true);\n        var ref$1 = this.scaleOptions();\n        var scale = ref$1.scale;\n        var box = ref$1.box;\n        var lineStart = box[valueAxis + (reverse ? 2 : 1)];\n\n        var diffStart = start[valueAxis] - lineStart;\n        var diffEnd = end[valueAxis] - lineStart;\n\n        var min = range.min + diffStart / scale;\n        var max = range.min + diffEnd / scale;\n        var rangeMin = Math.min(min, max);\n        var rangeMax = Math.max(min, max);\n\n        if (rangeMax - rangeMin >= MIN_CATEGORY_POINTS_RANGE) {\n            return {\n                min: rangeMin,\n                max: rangeMax\n            };\n        }\n    };\n\n    CategoryAxis.prototype.valueRange = function valueRange () {\n        return this.range();\n    };\n\n    CategoryAxis.prototype.totalIndex = function totalIndex (value) {\n        var options = this.options;\n        var index = this._categoriesMap ?\n            this._categoriesMap.get(value) : indexOf(value, options.srcCategories);\n\n        return index;\n    };\n\n    CategoryAxis.prototype.currentRangeIndices = function currentRangeIndices () {\n        var options = this.options;\n        var min = 0;\n\n        if (isNumber(options.min)) {\n            min = Math.floor(options.min);\n        }\n\n        var max;\n        if (isNumber(options.max)) {\n            max = options.justified ? Math.floor(options.max) : Math.ceil(options.max) - 1;\n        } else {\n            max = this.totalCount() - 1;\n        }\n\n        return {\n            min: min,\n            max: max\n        };\n    };\n\n    CategoryAxis.prototype.limitedRangeIndices = function limitedRangeIndices (totalLimit) {\n        var options = this.options;\n        var min = isNumber(options.min) ? options.min : 0;\n        var max;\n\n        if (isNumber(options.max)) {\n            max = options.max;\n        } else if (isNumber(options.min)) {\n            max = min + options.categories.length;\n        } else {\n            max = this.totalRange().max || 1;\n        }\n\n        if (totalLimit) {\n            var totalRange = this.totalRange();\n            min = limitValue(min, 0, totalRange.max);\n            max = limitValue(max, 0, totalRange.max);\n        }\n\n        return {\n            min: min,\n            max: max\n        };\n    };\n\n    CategoryAxis.prototype.totalRangeIndices = function totalRangeIndices () {\n        return {\n            min: 0,\n            max: this.totalRange().max || 1\n        };\n    };\n\n    CategoryAxis.prototype.mapCategories = function mapCategories () {\n        if (!this._categoriesMap) {\n            var map = this._categoriesMap = new HashMap();\n            var srcCategories = this.options.srcCategories;\n            for (var idx = 0; idx < srcCategories.length; idx++) {\n                map.set(srcCategories[idx], idx);\n            }\n        }\n    };\n\n    CategoryAxis.prototype.totalCount = function totalCount () {\n        return Math.max(this.options.srcCategories.length, this._seriesMax || 0);\n    };\n\n    return CategoryAxis;\n}(Axis));\n\nsetDefaultOptions(CategoryAxis, {\n    type: \"category\",\n    vertical: false,\n    majorGridLines: {\n        visible: false,\n        width: 1,\n        color: BLACK\n    },\n    labels: {\n        zIndex: 1\n    },\n    justified: false,\n    _deferLabels: true\n});\n\nexport default CategoryAxis;\n","var COORDINATE_LIMIT = 300000;\n\nvar DateLabelFormats = {\n    milliseconds: \"HH:mm:ss.fff\",\n    seconds: \"HH:mm:ss\",\n    minutes: \"HH:mm\",\n    hours: \"HH:mm\",\n    days: \"M/d\",\n    weeks: \"M/d\",\n    months: \"MMM 'yy\",\n    years: \"yyyy\"\n};\n\nvar ZERO_THRESHOLD = 0.2;\n\nexport {\n    COORDINATE_LIMIT, DateLabelFormats, ZERO_THRESHOLD\n};","import CategoryAxis from './category-axis';\nimport AxisLabel from './axis-label';\nimport Box from './box';\n\nimport { CENTER, DATE, DEFAULT_PRECISION, MAX_VALUE, OBJECT, X, Y } from '../common/constants';\nimport { deepExtend, defined, inArray, last, limitValue, round, setDefaultOptions, sparseArrayLimits } from '../common';\n\nimport { MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS,\n    TIME_PER_MINUTE, TIME_PER_HOUR, TIME_PER_DAY, TIME_PER_WEEK,\n    TIME_PER_MONTH, TIME_PER_YEAR, TIME_PER_UNIT } from '../date-utils/constants';\nimport { dateComparer, toDate, addTicks, addDuration, dateDiff, absoluteDateDiff,\n    dateIndex, dateEquals, toTime, parseDate, parseDates, firstDay } from '../date-utils';\n\nimport { DateLabelFormats } from './constants';\n\nvar AUTO = \"auto\";\nvar BASE_UNITS = [\n    MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS\n];\nvar FIT = \"fit\";\n\n\nfunction categoryRange(categories, clearCache) {\n    if (clearCache) {\n        categories._range = undefined;\n    }\n\n    var range = categories._range;\n    if (!range) {\n        range = categories._range = sparseArrayLimits(categories);\n        range.min = toDate(range.min);\n        range.max = toDate(range.max);\n    }\n\n    return range;\n}\n\nvar EmptyDateRange = function EmptyDateRange(options) {\n    this.options = options;\n};\n\nEmptyDateRange.prototype.displayIndices = function displayIndices () {\n    return {\n        min: 0,\n        max: 1\n    };\n};\n\nEmptyDateRange.prototype.displayRange = function displayRange () {\n    return {};\n};\n\nEmptyDateRange.prototype.total = function total () {\n    return {};\n};\n\nEmptyDateRange.prototype.valueRange = function valueRange () {\n    return {};\n};\n\nEmptyDateRange.prototype.valueIndex = function valueIndex () {\n    return -1;\n};\n\nEmptyDateRange.prototype.values = function values () {\n    return [];\n};\n\nEmptyDateRange.prototype.totalIndex = function totalIndex () {\n    return -1;\n};\n\nEmptyDateRange.prototype.valuesCount = function valuesCount () {\n    return 0;\n};\n\nEmptyDateRange.prototype.totalCount = function totalCount () {\n    return 0;\n};\n\nEmptyDateRange.prototype.dateAt = function dateAt () {\n    return null;\n};\n\nvar DateRange = function DateRange(start, end, options) {\n    this.options = options;\n    options.baseUnitStep = options.baseUnitStep || 1;\n\n    var roundToBaseUnit = options.roundToBaseUnit;\n    var justified = options.justified;\n\n    this.start = addDuration(start, 0, options.baseUnit, options.weekStartDay);\n    var lowerEnd = this.roundToTotalStep(end);\n    var expandEnd = !justified && dateEquals(end, lowerEnd) && !options.justifyEnd;\n\n    this.end = this.roundToTotalStep(end, !justified, expandEnd ? 1 : 0);\n\n    var min = options.min || start;\n    this.valueStart = this.roundToTotalStep(min);\n    this.displayStart = roundToBaseUnit ? this.valueStart : min;\n\n    var max = options.max;\n    if (!max) {\n        this.valueEnd = lowerEnd;\n        this.displayEnd = roundToBaseUnit || expandEnd ? this.end : end;\n    } else {\n        var next = !justified && dateEquals(max, this.roundToTotalStep(max)) ? -1 : 0;\n        this.valueEnd = this.roundToTotalStep(max, false, next);\n        this.displayEnd = roundToBaseUnit ? this.roundToTotalStep(max, !justified) : options.max;\n    }\n\n    if (this.valueEnd < this.valueStart) {\n        this.valueEnd = this.valueStart;\n    }\n    if (this.displayEnd <= this.displayStart) {\n        this.displayEnd = this.roundToTotalStep(this.displayStart, false, 1);\n    }\n};\n\nDateRange.prototype.displayRange = function displayRange () {\n    return {\n        min: this.displayStart,\n        max: this.displayEnd\n    };\n};\n\nDateRange.prototype.displayIndices = function displayIndices () {\n    if (!this._indices) {\n        var options = this.options;\n\n        var baseUnit = options.baseUnit;\n            var baseUnitStep = options.baseUnitStep;\n\n        var minIdx = dateIndex(this.displayStart, this.valueStart, baseUnit, baseUnitStep);\n        var maxIdx = dateIndex(this.displayEnd, this.valueStart, baseUnit, baseUnitStep);\n\n        this._indices = { min: minIdx, max: maxIdx };\n    }\n\n    return this._indices;\n};\n\nDateRange.prototype.total = function total () {\n    return {\n        min: this.start,\n        max: this.end\n    };\n};\n\nDateRange.prototype.totalCount = function totalCount () {\n    var last = this.totalIndex(this.end);\n\n    return last + (this.options.justified ? 1 : 0);\n};\n\nDateRange.prototype.valueRange = function valueRange () {\n    return {\n        min: this.valueStart,\n        max: this.valueEnd\n    };\n};\n\nDateRange.prototype.valueIndex = function valueIndex (value) {\n    var options = this.options;\n    return Math.floor(dateIndex(value, this.valueStart, options.baseUnit, options.baseUnitStep));\n};\n\nDateRange.prototype.totalIndex = function totalIndex (value) {\n    var options = this.options;\n    return Math.floor(dateIndex(value, this.start, options.baseUnit, options.baseUnitStep));\n};\n\nDateRange.prototype.dateIndex = function dateIndex$1 (value) {\n    var options = this.options;\n    return dateIndex(value, this.valueStart, options.baseUnit, options.baseUnitStep);\n};\n\nDateRange.prototype.valuesCount = function valuesCount () {\n    var maxIdx = this.valueIndex(this.valueEnd);\n\n    return maxIdx + 1;\n};\n\nDateRange.prototype.values = function values () {\n    var values = this._values;\n    if (!values) {\n        var options = this.options;\n        var range = this.valueRange();\n        this._values = values = [];\n\n        for (var date = range.min; date <= range.max;) {\n            values.push(date);\n            date = addDuration(date, options.baseUnitStep, options.baseUnit, options.weekStartDay);\n        }\n    }\n\n    return values;\n};\n\nDateRange.prototype.dateAt = function dateAt (index, total) {\n    var options = this.options;\n\n    return addDuration(total ? this.start : this.valueStart, options.baseUnitStep * index, options.baseUnit, options.weekStartDay);\n};\n\nDateRange.prototype.roundToTotalStep = function roundToTotalStep (value, upper, next) {\n    var ref = this.options;\n        var baseUnit = ref.baseUnit;\n        var baseUnitStep = ref.baseUnitStep;\n        var weekStartDay = ref.weekStartDay;\n    var start = this.start;\n\n    var step = dateIndex(value, start, baseUnit, baseUnitStep);\n    var roundedStep = upper ? Math.ceil(step) : Math.floor(step);\n\n    if (next) {\n        roundedStep += next;\n    }\n\n    return addDuration(start, roundedStep * baseUnitStep, baseUnit, weekStartDay);\n};\n\nfunction autoBaseUnit(options, startUnit, startStep) {\n    var categoryLimits = categoryRange(options.categories);\n    var span = (options.max || categoryLimits.max) - (options.min || categoryLimits.min);\n    var autoBaseUnitSteps = options.autoBaseUnitSteps;\n    var maxDateGroups = options.maxDateGroups;\n    var autoUnit = options.baseUnit === FIT;\n    var autoUnitIx = startUnit ? BASE_UNITS.indexOf(startUnit) : 0;\n    var baseUnit = autoUnit ? BASE_UNITS[autoUnitIx++] : options.baseUnit;\n    var units = span / TIME_PER_UNIT[baseUnit];\n    var totalUnits = units;\n    var unitSteps, step, nextStep;\n\n    while (!step || units >= maxDateGroups) {\n        unitSteps = unitSteps || autoBaseUnitSteps[baseUnit].slice(0);\n\n        do {\n            nextStep = unitSteps.shift();\n        } while (nextStep && startUnit === baseUnit && nextStep < startStep);\n\n        if (nextStep) {\n            step = nextStep;\n            units = totalUnits / step;\n        } else if (baseUnit === last(BASE_UNITS)) {\n            step = Math.ceil(totalUnits / maxDateGroups);\n            break;\n        } else if (autoUnit) {\n            baseUnit = BASE_UNITS[autoUnitIx++] || last(BASE_UNITS);\n            totalUnits = span / TIME_PER_UNIT[baseUnit];\n            unitSteps = null;\n        } else {\n            if (units > maxDateGroups) {\n                step = Math.ceil(totalUnits / maxDateGroups);\n            }\n            break;\n        }\n    }\n\n    options.baseUnitStep = step;\n    options.baseUnit = baseUnit;\n}\n\nfunction defaultBaseUnit(options) {\n    var categories = options.categories;\n    var count = defined(categories) ? categories.length : 0;\n    var minDiff = MAX_VALUE;\n    var lastCategory, unit;\n\n    for (var categoryIx = 0; categoryIx < count; categoryIx++) {\n        var category = categories[categoryIx];\n\n        if (category && lastCategory) {\n            var diff = absoluteDateDiff(category, lastCategory);\n            if (diff > 0) {\n                minDiff = Math.min(minDiff, diff);\n\n                if (minDiff >= TIME_PER_YEAR) {\n                    unit = YEARS;\n                } else if (minDiff >= TIME_PER_MONTH - TIME_PER_DAY * 3) {\n                    unit = MONTHS;\n                } else if (minDiff >= TIME_PER_WEEK) {\n                    unit = WEEKS;\n                } else if (minDiff >= TIME_PER_DAY) {\n                    unit = DAYS;\n                } else if (minDiff >= TIME_PER_HOUR) {\n                    unit = HOURS;\n                } else if (minDiff >= TIME_PER_MINUTE) {\n                    unit = MINUTES;\n                } else {\n                    unit = SECONDS;\n                }\n            }\n        }\n\n        lastCategory = category;\n    }\n\n    options.baseUnit = unit || DAYS;\n}\n\nfunction initUnit(options) {\n    var baseUnit = (options.baseUnit || \"\").toLowerCase();\n    var useDefault = baseUnit !== FIT && !inArray(baseUnit, BASE_UNITS);\n\n    if (useDefault) {\n        defaultBaseUnit(options);\n    }\n\n    if (baseUnit === FIT || options.baseUnitStep === AUTO) {\n        autoBaseUnit(options);\n    }\n\n    return options;\n}\n\nvar DateCategoryAxis = (function (CategoryAxis) {\n    function DateCategoryAxis () {\n        CategoryAxis.apply(this, arguments);\n    }\n\n    if ( CategoryAxis ) DateCategoryAxis.__proto__ = CategoryAxis;\n    DateCategoryAxis.prototype = Object.create( CategoryAxis && CategoryAxis.prototype );\n    DateCategoryAxis.prototype.constructor = DateCategoryAxis;\n\n    DateCategoryAxis.prototype.clone = function clone () {\n        var copy = new DateCategoryAxis(Object.assign({}, this.options), this.chartService);\n        copy.createLabels();\n\n        return copy;\n    };\n\n    DateCategoryAxis.prototype.categoriesHash = function categoriesHash () {\n        var start = this.dataRange.total().min;\n        return this.options.baseUnit + this.options.baseUnitStep + start;\n    };\n\n    DateCategoryAxis.prototype.initUserOptions = function initUserOptions (options) {\n        return options;\n    };\n\n    DateCategoryAxis.prototype.initFields = function initFields () {\n        CategoryAxis.prototype.initFields.call(this);\n\n        var chartService = this.chartService;\n        var intlService = chartService.intl;\n        var options = this.options;\n\n        var categories = options.categories || [];\n        if (!categories._parsed) {\n            categories = parseDates(intlService, categories);\n            categories._parsed = true;\n        }\n\n        options = deepExtend({\n            roundToBaseUnit: true\n        }, options, {\n            categories: categories,\n            min: parseDate(intlService, options.min),\n            max: parseDate(intlService, options.max),\n            weekStartDay: firstDay(options, intlService)\n        });\n\n        if (chartService.panning && chartService.isPannable(options.vertical ? Y : X)) {\n            options.roundToBaseUnit = false;\n        }\n\n        options.userSetBaseUnit = options.userSetBaseUnit || options.baseUnit;\n        options.userSetBaseUnitStep = options.userSetBaseUnitStep || options.baseUnitStep;\n\n        this.options = options;\n        options.srcCategories = categories;\n\n        if (categories.length > 0) {\n            var range = categoryRange(categories, true);\n            var maxDivisions = options.maxDivisions;\n            var safeOptions = initUnit(options);\n\n            var forecast = options._forecast;\n            if (forecast) {\n                if (forecast.before > 0) {\n                    range.min = addDuration(range.min, -forecast.before, safeOptions.baseUnit, safeOptions.weekStartDay);\n                }\n\n                if (forecast.after > 0) {\n                    range.max = addDuration(range.max, forecast.after, safeOptions.baseUnit, safeOptions.weekStartDay);\n                }\n            }\n\n            this.dataRange = new DateRange(range.min, range.max, safeOptions);\n\n            if (maxDivisions) {\n                var dataRange = this.dataRange.displayRange();\n\n                var divisionOptions = Object.assign({}, options, {\n                    justified: true,\n                    roundToBaseUnit: false,\n                    baseUnit: 'fit',\n                    min: dataRange.min,\n                    max: dataRange.max,\n                    maxDateGroups: maxDivisions\n                });\n\n                var dataRangeOptions = this.dataRange.options;\n\n                autoBaseUnit(divisionOptions, dataRangeOptions.baseUnit, dataRangeOptions.baseUnitStep);\n\n                this.divisionRange = new DateRange(range.min, range.max, divisionOptions);\n            } else {\n                this.divisionRange = this.dataRange;\n            }\n\n        } else {\n            options.baseUnit = options.baseUnit || DAYS;\n            this.dataRange = this.divisionRange = new EmptyDateRange(options);\n        }\n\n        this.rangeLabels = [];\n    };\n\n    DateCategoryAxis.prototype.tickIndices = function tickIndices (stepSize) {\n        var ref = this;\n        var dataRange = ref.dataRange;\n        var divisionRange = ref.divisionRange;\n        var valuesCount = divisionRange.valuesCount();\n\n        if (!this.options.maxDivisions || !valuesCount) {\n            return CategoryAxis.prototype.tickIndices.call(this, stepSize);\n        }\n\n        var indices = [];\n        var values = divisionRange.values();\n        var offset = 0;\n\n        if (!this.options.justified) {\n            values = values.concat(divisionRange.dateAt(valuesCount));\n            offset = 0.5;//align ticks to the center of not justified categories\n        }\n\n        for (var idx = 0; idx < values.length; idx++) {\n            indices.push(dataRange.dateIndex(values[idx]) + offset);\n            if (stepSize !== 1 && idx >= 1) {\n                var last = indices.length - 1;\n                indices.splice(idx, 0, indices[last - 1] + (indices[last] - indices[last - 1]) * stepSize);\n            }\n        }\n\n        return indices;\n    };\n\n    DateCategoryAxis.prototype.shouldRenderNote = function shouldRenderNote (value) {\n        var range = this.range();\n        var categories = this.options.categories || [];\n\n        return dateComparer(value, range.min) >= 0 && dateComparer(value, range.max) <= 0 && categories.length;\n    };\n\n    DateCategoryAxis.prototype.parseNoteValue = function parseNoteValue (value) {\n        return parseDate(this.chartService.intl, value);\n    };\n\n    DateCategoryAxis.prototype.noteSlot = function noteSlot (value) {\n        return this.getSlot(value);\n    };\n\n    DateCategoryAxis.prototype.translateRange = function translateRange (delta) {\n        var options = this.options;\n        var baseUnit = options.baseUnit;\n        var weekStartDay = options.weekStartDay;\n        var vertical = options.vertical;\n        var lineBox = this.lineBox();\n        var size = vertical ? lineBox.height() : lineBox.width();\n        var range = this.range();\n        var scale = size / (range.max - range.min);\n        var offset = round(delta / scale, DEFAULT_PRECISION);\n\n        if (range.min && range.max) {\n            var from = addTicks(options.min || range.min, offset);\n            var to = addTicks(options.max || range.max, offset);\n\n            range = {\n                min: addDuration(from, 0, baseUnit, weekStartDay),\n                max: addDuration(to, 0, baseUnit, weekStartDay)\n            };\n        }\n\n        return range;\n    };\n\n    DateCategoryAxis.prototype.labelsRange = function labelsRange () {\n        return {\n            min: this.options.labels.skip,\n            max: this.divisionRange.valuesCount()\n        };\n    };\n\n    DateCategoryAxis.prototype.pan = function pan (delta) {\n        if (this.isEmpty()) {\n            return null;\n        }\n\n        var options = this.options;\n        var lineBox = this.lineBox();\n        var size = options.vertical ? lineBox.height() : lineBox.width();\n        var ref = this.dataRange.displayRange();\n        var min = ref.min;\n        var max = ref.max;\n        var totalLimits = this.dataRange.total();\n        var scale = size / (max - min);\n        var offset = round(delta / scale, DEFAULT_PRECISION) * (options.reverse ? -1 : 1);\n        var from = addTicks(min, offset);\n        var to = addTicks(max, offset);\n\n        var panRange = this.limitRange(toTime(from), toTime(to), toTime(totalLimits.min), toTime(totalLimits.max), offset);\n\n        if (panRange) {\n            panRange.min = toDate(panRange.min);\n            panRange.max = toDate(panRange.max);\n            panRange.baseUnit = options.baseUnit;\n            panRange.baseUnitStep = options.baseUnitStep || 1;\n            panRange.userSetBaseUnit = options.userSetBaseUnit;\n            panRange.userSetBaseUnitStep = options.userSetBaseUnitStep;\n\n            return panRange;\n        }\n    };\n\n    DateCategoryAxis.prototype.pointsRange = function pointsRange (start, end) {\n        if (this.isEmpty()) {\n            return null;\n        }\n\n        var pointsRange = CategoryAxis.prototype.pointsRange.call(this, start, end);\n        var datesRange = this.dataRange.displayRange();\n        var indicesRange = this.dataRange.displayIndices();\n        var scale = dateDiff(datesRange.max, datesRange.min) / (indicesRange.max - indicesRange.min);\n        var options = this.options;\n\n        var min = addTicks(datesRange.min, pointsRange.min * scale);\n        var max = addTicks(datesRange.min, pointsRange.max * scale);\n\n        return {\n            min: min,\n            max: max,\n            baseUnit: options.userSetBaseUnit || options.baseUnit,\n            baseUnitStep: options.userSetBaseUnitStep || options.baseUnitStep\n        };\n    };\n\n    DateCategoryAxis.prototype.scaleRange = function scaleRange (scale, cursor) {\n        if (this.isEmpty()) {\n            return {};\n        }\n\n        var options = this.options;\n        var fit = options.userSetBaseUnit === FIT;\n        var totalLimits = this.dataRange.total();\n        var ref = this.dataRange.displayRange();\n        var rangeMin = ref.min;\n        var rangeMax = ref.max;\n\n        var position = Math.abs(this.pointOffset(cursor));\n        var range = rangeMax - rangeMin;\n        var delta = this.scaleToDelta(scale, range);\n        var minDelta = Math.round(position * delta);\n        var maxDelta = Math.round((1 - position) * delta);\n\n        var ref$1 = this.dataRange.options;\n        var baseUnit = ref$1.baseUnit;\n        var min = new Date(rangeMin.getTime() + minDelta);\n        var max = new Date(rangeMax.getTime() - maxDelta);\n\n        if (fit) {\n            var autoBaseUnitSteps = options.autoBaseUnitSteps;\n            var maxDateGroups = options.maxDateGroups;\n\n            var maxDiff = last(autoBaseUnitSteps[baseUnit]) * maxDateGroups * TIME_PER_UNIT[baseUnit];\n            var rangeDiff = dateDiff(rangeMax, rangeMin);\n            var diff = dateDiff(max, min);\n            var baseUnitIndex = BASE_UNITS.indexOf(baseUnit);\n            var autoBaseUnitStep, ticks;\n\n            if (diff < TIME_PER_UNIT[baseUnit] && baseUnit !== MILLISECONDS) {\n                baseUnit = BASE_UNITS[baseUnitIndex - 1];\n                autoBaseUnitStep = last(autoBaseUnitSteps[baseUnit]);\n                ticks = (rangeDiff - (maxDateGroups - 1) * autoBaseUnitStep * TIME_PER_UNIT[baseUnit]) / 2;\n                min = addTicks(rangeMin, ticks);\n                max = addTicks(rangeMax, -ticks);\n\n            } else if (diff > maxDiff && baseUnit !== YEARS) {\n                var stepIndex = 0;\n\n                do {\n                    baseUnitIndex++;\n                    baseUnit = BASE_UNITS[baseUnitIndex];\n                    stepIndex = 0;\n                    ticks = 2 * TIME_PER_UNIT[baseUnit];\n                    do {\n                        autoBaseUnitStep = autoBaseUnitSteps[baseUnit][stepIndex];\n                        stepIndex++;\n                    } while (stepIndex < autoBaseUnitSteps[baseUnit].length && ticks * autoBaseUnitStep < rangeDiff);\n                } while (baseUnit !== YEARS && ticks * autoBaseUnitStep < rangeDiff);\n\n                ticks = (ticks * autoBaseUnitStep - rangeDiff) / 2;\n                if (ticks > 0) {\n                    min = addTicks(rangeMin, -ticks);\n                    max = addTicks(rangeMax, ticks);\n                    min = addTicks(min, limitValue(max, totalLimits.min, totalLimits.max) - max);\n                    max = addTicks(max, limitValue(min, totalLimits.min, totalLimits.max) - min);\n                }\n            }\n        }\n\n        if (min && max && dateDiff(max, min) > 0) {\n            return {\n                min: min,\n                max: max,\n                baseUnit: options.userSetBaseUnit || options.baseUnit,\n                baseUnitStep: options.userSetBaseUnitStep || options.baseUnitStep\n            };\n        }\n    };\n\n    DateCategoryAxis.prototype.zoomRange = function zoomRange (scale, cursor) {\n        var totalLimits = this.dataRange.total();\n        var range = this.scaleRange(scale, cursor);\n\n        if (range) {\n            if (range.min < totalLimits.min) {\n                range.min = totalLimits.min;\n            }\n            if (range.max > totalLimits.max) {\n                range.max = totalLimits.max;\n            }\n        }\n\n        return range;\n    };\n\n    DateCategoryAxis.prototype.range = function range () {\n        return this.dataRange.displayRange();\n    };\n\n    DateCategoryAxis.prototype.createLabels = function createLabels () {\n        CategoryAxis.prototype.createLabels.call(this);\n        this.createRangeLabels();\n    };\n\n    DateCategoryAxis.prototype.clearLabels = function clearLabels () {\n        CategoryAxis.prototype.clearLabels.call(this);\n        this.rangeLabels = [];\n    };\n\n    DateCategoryAxis.prototype.arrangeLabels = function arrangeLabels () {\n        this.arrangeRangeLabels();\n        CategoryAxis.prototype.arrangeLabels.call(this);\n    };\n\n    DateCategoryAxis.prototype.arrangeRangeLabels = function arrangeRangeLabels () {\n        var ref = this;\n        var options = ref.options;\n        var rangeLabels = ref.rangeLabels;\n        if (rangeLabels.length === 0) {\n            return;\n        }\n\n        var lineBox = this.lineBox();\n        var vertical = options.vertical;\n        var mirror = options.rangeLabels.mirror || options.labels.mirror;\n\n        var firstLabel = rangeLabels[0];\n        if (firstLabel) {\n            var position = vertical ? lineBox.y1 - (firstLabel.box.height() / 2) : lineBox.x1;\n            this.positionLabel(firstLabel, mirror, position);\n        }\n\n        var lastLabel = rangeLabels[1];\n        if (lastLabel) {\n            var position$1 = vertical ? lineBox.y2 - (lastLabel.box.height() / 2) : lineBox.x2;\n            this.positionLabel(lastLabel, mirror, position$1);\n        }\n    };\n\n    DateCategoryAxis.prototype.autoRotateLabels = function autoRotateLabels () {\n        CategoryAxis.prototype.autoRotateLabels.call(this);\n        this.autoRotateRangeLabels();\n    };\n\n    DateCategoryAxis.prototype.hideOutOfRangeLabels = function hideOutOfRangeLabels () {\n        CategoryAxis.prototype.hideOutOfRangeLabels.call(this);\n        this.hideOverlappingLabels();\n    };\n\n    DateCategoryAxis.prototype.hideOverlappingLabels = function hideOverlappingLabels () {\n        var ref = this;\n        var rangeLabels = ref.rangeLabels;\n        var labels = ref.labels;\n        if (rangeLabels.length === 0) {\n            return;\n        }\n\n        function clip(rangeLabel, label) {\n            if (!label.options.visible || label.box.overlaps(rangeLabel.box)) {\n                label.options.visible = false;\n                return true;\n            }\n\n            return false;\n        }\n\n        var firstRangeLabel = rangeLabels[0];\n        if (firstRangeLabel && firstRangeLabel.options.visible) {\n            for (var i = 0; i < labels.length; i++) {\n                var overlaps = clip(firstRangeLabel, labels[i]);\n                if (!overlaps) {\n                    break;\n                }\n            }\n        }\n\n        var lastRangeLabel = rangeLabels[1];\n        if (lastRangeLabel && lastRangeLabel.options.visible) {\n            for (var i$1 = labels.length - 1; i$1 > 0; --i$1) {\n                var overlaps$1 = clip(lastRangeLabel, labels[i$1]);\n                if (!overlaps$1) {\n                    break;\n                }\n            }\n        }\n    };\n\n    DateCategoryAxis.prototype.contentBox = function contentBox () {\n        var box = CategoryAxis.prototype.contentBox.call(this);\n        var rangeLabels = this.rangeLabels;\n\n        for (var i = 0; i < rangeLabels.length; i++) {\n            var label = rangeLabels[i];\n            if (label.options.visible) {\n                box.wrap(label.box);\n            }\n        }\n\n        return box;\n    };\n\n    DateCategoryAxis.prototype.createAxisLabel = function createAxisLabel (index, labelOptions, labelContext) {\n        if ( labelContext === void 0 ) labelContext = {};\n\n        var options = this.options;\n        var dataItem = options.dataItems && !options.maxDivisions ? options.dataItems[index] : null;\n        var date = this.divisionRange.dateAt(index);\n        var unitFormat = labelOptions.dateFormats[this.divisionRange.options.baseUnit];\n\n        labelOptions.format = labelOptions.format || unitFormat;\n        labelContext.dataItem = dataItem;\n\n        var text = this.axisLabelText(date, labelOptions, labelContext);\n        if (text) {\n            return new AxisLabel(date, text, index, dataItem, labelOptions);\n        }\n    };\n\n    DateCategoryAxis.prototype.createRangeLabels = function createRangeLabels () {\n        var this$1 = this;\n\n        var ref = this.divisionRange;\n        var displayStart = ref.displayStart;\n        var displayEnd = ref.displayEnd;\n        var options = this.options;\n        var labelOptions = Object.assign({}, options.labels, options.rangeLabels, {\n            align: CENTER,\n            zIndex: options.zIndex\n        });\n\n        if (labelOptions.visible !== true) {\n            return;\n        }\n\n        this.normalizeLabelRotation(labelOptions);\n        labelOptions.alignRotation = CENTER;\n\n        if (labelOptions.rotation === \"auto\") {\n            labelOptions.rotation = 0;\n            options.autoRotateRangeLabels = true;\n        }\n\n        var unitFormat = labelOptions.dateFormats[this.divisionRange.options.baseUnit];\n        labelOptions.format = labelOptions.format || unitFormat;\n\n        var createLabel = function (index, date, text) {\n            if (text) {\n                var label = new AxisLabel(date, text, index, null, labelOptions);\n                this$1.append(label);\n                this$1.rangeLabels.push(label);\n            }\n        };\n\n        var startText = this.axisLabelText(displayStart, labelOptions, { index: 0, count: 2 });\n        createLabel(0, displayStart, startText);\n\n        var endText = this.axisLabelText(displayEnd, labelOptions, { index: 1, count: 2 });\n        createLabel(1, displayEnd, endText);\n    };\n\n    DateCategoryAxis.prototype.autoRotateRangeLabels = function autoRotateRangeLabels () {\n        var this$1 = this;\n\n        var labels = this.rangeLabels;\n        if (!this.options.autoRotateRangeLabels || this.options.vertical || labels.length !== 2) {\n            return;\n        }\n\n        var rotateLabel = function (label, tickPositions, index) {\n            var width = Math.abs(tickPositions[index + 1] - tickPositions[index]) * 2;\n            var angle = this$1.autoRotateLabelAngle(label.box, width);\n            if (angle !== 0) {\n                label.options.rotation = angle;\n                label.reflow(new Box());\n            }\n        };\n\n        var tickPositions = this.getMajorTickPositions();\n        rotateLabel(labels[0], tickPositions, 0);\n        rotateLabel(labels[1], tickPositions, tickPositions.length - 2);\n    };\n\n    DateCategoryAxis.prototype.categoryIndex = function categoryIndex (value) {\n        return this.dataRange.valueIndex(value);\n    };\n\n    DateCategoryAxis.prototype.slot = function slot (from, to, limit) {\n        var dateRange = this.dataRange;\n        var start = from;\n        var end = to;\n\n        if (start instanceof Date) {\n            start = dateRange.dateIndex(start);\n        }\n\n        if (end instanceof Date) {\n            end = dateRange.dateIndex(end);\n        }\n\n        var slot = this.getSlot(start, end, limit);\n        if (slot) {\n            return slot.toRect();\n        }\n    };\n\n    DateCategoryAxis.prototype.getSlot = function getSlot (a, b, limit) {\n        var start = a;\n        var end = b;\n\n        if (typeof start === OBJECT) {\n            start = this.categoryIndex(start);\n        }\n\n        if (typeof end === OBJECT) {\n            end = this.categoryIndex(end);\n        }\n\n        return CategoryAxis.prototype.getSlot.call(this, start, end, limit);\n    };\n\n    DateCategoryAxis.prototype.valueRange = function valueRange () {\n        var options = this.options;\n        var range = categoryRange(options.srcCategories);\n\n        return {\n            min: toDate(range.min),\n            max: toDate(range.max)\n        };\n    };\n\n    DateCategoryAxis.prototype.categoryAt = function categoryAt (index, total) {\n        return this.dataRange.dateAt(index, total);\n    };\n\n    DateCategoryAxis.prototype.categoriesCount = function categoriesCount () {\n        return this.dataRange.valuesCount();\n    };\n\n    DateCategoryAxis.prototype.rangeIndices = function rangeIndices () {\n        return this.dataRange.displayIndices();\n    };\n\n    DateCategoryAxis.prototype.labelsBetweenTicks = function labelsBetweenTicks () {\n        return !this.divisionRange.options.justified;\n    };\n\n    DateCategoryAxis.prototype.prepareUserOptions = function prepareUserOptions () {\n        if (this.isEmpty()) {\n            return;\n        }\n\n        this.options.categories = this.dataRange.values();\n    };\n\n    DateCategoryAxis.prototype.getCategory = function getCategory (point) {\n        var index = this.pointCategoryIndex(point);\n\n        if (index === null) {\n            return null;\n        }\n\n        return this.dataRange.dateAt(index);\n    };\n\n    DateCategoryAxis.prototype.totalIndex = function totalIndex (value) {\n        return this.dataRange.totalIndex(value);\n    };\n\n    DateCategoryAxis.prototype.currentRangeIndices = function currentRangeIndices () {\n        var range = this.dataRange.valueRange();\n        return {\n            min: this.dataRange.totalIndex(range.min),\n            max: this.dataRange.totalIndex(range.max)\n        };\n    };\n\n    DateCategoryAxis.prototype.totalRange = function totalRange () {\n        return this.dataRange.total();\n    };\n\n    DateCategoryAxis.prototype.totalRangeIndices = function totalRangeIndices () {\n        var range = this.dataRange.total();\n        return {\n            min: this.dataRange.totalIndex(range.min),\n            max: this.dataRange.totalIndex(range.max)\n        };\n    };\n\n    DateCategoryAxis.prototype.totalCount = function totalCount () {\n        return this.dataRange.totalCount();\n    };\n\n    DateCategoryAxis.prototype.isEmpty = function isEmpty () {\n        return !this.options.srcCategories.length;\n    };\n\n    DateCategoryAxis.prototype.roundedRange = function roundedRange () {\n        if (this.options.roundToBaseUnit !== false || this.isEmpty()) {\n            return this.range();\n        }\n\n        var options = this.options;\n        var datesRange = categoryRange(options.srcCategories);\n\n        var dateRange = new DateRange(datesRange.min, datesRange.max, Object.assign({}, options, {\n            justified: false,\n            roundToBaseUnit: true,\n            justifyEnd: false\n        }));\n\n        return dateRange.displayRange();\n    };\n\n    return DateCategoryAxis;\n}(CategoryAxis));\n\nsetDefaultOptions(DateCategoryAxis, {\n    type: DATE,\n    labels: {\n        dateFormats: DateLabelFormats\n    },\n    rangeLabels: {\n        visible: false\n    },\n    autoBaseUnitSteps: {\n        milliseconds: [ 1, 10, 100 ],\n        seconds: [ 1, 2, 5, 15, 30 ],\n        minutes: [ 1, 2, 5, 15, 30 ],\n        hours: [ 1, 2, 3 ],\n        days: [ 1, 2, 3 ],\n        weeks: [ 1, 2 ],\n        months: [ 1, 2, 3, 6 ],\n        years: [ 1, 2, 3, 5, 10, 25, 50 ]\n    },\n    maxDateGroups: 10\n});\n\nexport default DateCategoryAxis;\n","import { DEFAULT_PRECISION } from '../../common/constants';\nimport { round } from '../../common';\n\nexport default function floor(value, step) {\n    return round(Math.floor(value / step) * step, DEFAULT_PRECISION);\n}\n","import { DEFAULT_PRECISION } from '../../common/constants';\nimport { round } from '../../common';\n\nexport default function ceil(value, step) {\n    return round(Math.ceil(value / step) * step, DEFAULT_PRECISION);\n}","import { COORDINATE_LIMIT } from '../constants';\n\nexport default function limitCoordinate(value) {\n    return Math.max(Math.min(value, COORDINATE_LIMIT), -COORDINATE_LIMIT);\n}","\nimport Axis from './axis';\nimport AxisLabel from './axis-label';\nimport Box from './box';\n\nimport { BLACK, DEFAULT_PRECISION, COORD_PRECISION } from '../common/constants';\nimport { deepExtend, defined, limitValue, round, setDefaultOptions, valueOrDefault } from '../common';\n\nimport autoMajorUnit from './utils/auto-major-unit';\nimport autoAxisMin from './utils/auto-axis-min';\nimport autoAxisMax from './utils/auto-axis-max';\nimport floor from './utils/floor';\nimport ceil from './utils/ceil';\nimport limitCoordinate from './utils/limit-coordinate';\n\nvar MIN_VALUE_RANGE = Math.pow(10, -DEFAULT_PRECISION + 1);\n\nvar NumericAxis = (function (Axis) {\n    function NumericAxis(seriesMin, seriesMax, options, chartService) {\n        Axis.call(this, Object.assign({}, options, {\n            seriesMin: seriesMin,\n            seriesMax: seriesMax\n        }), chartService);\n    }\n\n    if ( Axis ) NumericAxis.__proto__ = Axis;\n    NumericAxis.prototype = Object.create( Axis && Axis.prototype );\n    NumericAxis.prototype.constructor = NumericAxis;\n\n    NumericAxis.prototype.initUserOptions = function initUserOptions (options) {\n        var autoOptions = autoAxisOptions(options.seriesMin, options.seriesMax, options);\n        this.totalOptions = totalAxisOptions(autoOptions, options);\n\n        return axisOptions(autoOptions, options);\n    };\n\n    NumericAxis.prototype.initFields = function initFields () {\n        this.totalMin = this.totalOptions.min;\n        this.totalMax = this.totalOptions.max;\n        this.totalMajorUnit = this.totalOptions.majorUnit;\n        this.seriesMin = this.options.seriesMin;\n        this.seriesMax = this.options.seriesMax;\n    };\n\n    NumericAxis.prototype.clone = function clone () {\n        return new NumericAxis(\n            this.seriesMin,\n            this.seriesMax,\n            Object.assign({}, this.options),\n            this.chartService\n        );\n    };\n\n    NumericAxis.prototype.startValue = function startValue () {\n        return 0;\n    };\n\n    NumericAxis.prototype.range = function range () {\n        var options = this.options;\n        return { min: options.min, max: options.max };\n    };\n\n    NumericAxis.prototype.getDivisions = function getDivisions (stepValue) {\n        if (stepValue === 0) {\n            return 1;\n        }\n\n        var options = this.options;\n        var range = options.max - options.min;\n\n        return Math.floor(round(range / stepValue, COORD_PRECISION)) + 1;\n    };\n\n    NumericAxis.prototype.getTickPositions = function getTickPositions (unit, skipUnit) {\n        var options = this.options;\n        var ref = this.lineInfo();\n        var axisDir = ref.axisDir;\n        var axisOrigin = ref.axisOrigin;\n        var lineBox = ref.lineBox;\n        var lineSize = ref.lineSize;\n        var range = options.max - options.min;\n        var scale = lineSize / range;\n        var step = unit * scale;\n        var divisions = this.getDivisions(unit);\n        var positions = [];\n        var pos = lineBox[axisOrigin];\n        var skipStep = 0;\n\n        if (skipUnit) {\n            skipStep = skipUnit / unit;\n        }\n\n        for (var idx = 0; idx < divisions; idx++) {\n            if (idx % skipStep !== 0) {\n                positions.push(round(pos, COORD_PRECISION));\n            }\n\n            pos = pos + step * axisDir;\n        }\n\n        return positions;\n    };\n\n    NumericAxis.prototype.getMajorTickPositions = function getMajorTickPositions () {\n        return this.getTickPositions(this.options.majorUnit);\n    };\n\n    NumericAxis.prototype.getMinorTickPositions = function getMinorTickPositions () {\n        return this.getTickPositions(this.options.minorUnit);\n    };\n\n    NumericAxis.prototype.getSlot = function getSlot (a, b, limit) {\n        if ( limit === void 0 ) limit = false;\n\n        var options = this.options;\n        var ref = this.lineInfo();\n        var axis = ref.axis;\n        var axisDir = ref.axisDir;\n        var lineBox = ref.lineBox;\n        var lineSize = ref.lineSize;\n        var lineStart = ref.lineStart;\n        var step = axisDir * (lineSize / (options.max - options.min));\n\n        var start = valueOrDefault(a, b || 0);\n        var end = valueOrDefault(b, a || 0);\n\n        if (limit) {\n            start = limitValue(start, options.min, options.max);\n            end = limitValue(end, options.min, options.max);\n        }\n\n        var p1 = Math.min(start, end) - options.min;\n        var p2 = Math.max(start, end) - options.min;\n\n        var slotBox = new Box(lineBox.x1, lineBox.y1, lineBox.x1, lineBox.y1);\n        slotBox[axis + 1] = limitCoordinate(lineStart + step * (axisDir > 0 ? p1 : p2));\n        slotBox[axis + 2] = limitCoordinate(lineStart + step * (axisDir > 0 ? p2 : p1));\n\n        return slotBox;\n    };\n\n    NumericAxis.prototype.getValue = function getValue (point) {\n        var options = this.options;\n        var max = Number(options.max);\n        var min = Number(options.min);\n        var offset = this.pointOffset(point);\n        var valueOffset = offset * (max - min);\n\n        if (offset < 0 || offset > 1) {\n            return null;\n        }\n\n        var value = min + valueOffset;\n        return round(value, DEFAULT_PRECISION);\n    };\n\n    NumericAxis.prototype.translateRange = function translateRange (delta) {\n        var options = this.options;\n        var vertical = options.vertical;\n        var reverse = options.reverse;\n        var max = options.max;\n        var min = options.min;\n        var ref = this.lineInfo();\n        var lineSize = ref.lineSize;\n        var range = max - min;\n        var scale = lineSize / range;\n        var offset = round(delta / scale, DEFAULT_PRECISION);\n\n        if ((vertical || reverse) && !(vertical && reverse )) {\n            offset = -offset;\n        }\n\n        return {\n            min: min + offset,\n            max: max + offset,\n            offset: offset\n        };\n    };\n\n    NumericAxis.prototype.labelsCount = function labelsCount () {\n        return this.getDivisions(this.options.majorUnit);\n    };\n\n    NumericAxis.prototype.createAxisLabel = function createAxisLabel (index, labelOptions, labelContext) {\n        var options = this.options;\n        var value = round(options.min + (index * options.majorUnit), DEFAULT_PRECISION);\n        var text = this.axisLabelText(value, labelOptions, labelContext);\n\n        return new AxisLabel(value, text, index, null, labelOptions);\n    };\n\n    NumericAxis.prototype.shouldRenderNote = function shouldRenderNote (value) {\n        var range = this.range();\n        return range.min <= value && value <= range.max;\n    };\n\n    NumericAxis.prototype.pan = function pan (delta) {\n        var range = this.translateRange(delta);\n        return this.limitRange(range.min, range.max, this.totalMin, this.totalMax, range.offset);\n    };\n\n    NumericAxis.prototype.pointsRange = function pointsRange (start, end) {\n        var startValue = this.getValue(start);\n        var endValue = this.getValue(end);\n        var min = Math.min(startValue, endValue);\n        var max = Math.max(startValue, endValue);\n\n        if (this.isValidRange(min, max)) {\n            return {\n                min: min,\n                max: max\n            };\n        }\n    };\n\n    NumericAxis.prototype.scaleRange = function scaleRange (scale, cursor) {\n        var position = Math.abs(this.pointOffset(cursor));\n        var range = this.options.max - this.options.min;\n        var delta = this.scaleToDelta(scale, range);\n        var minDelta = position * delta;\n        var maxDelta = (1 - position) * delta;\n        var min = round(this.options.min + minDelta, DEFAULT_PRECISION);\n        var max = round(this.options.max - maxDelta, DEFAULT_PRECISION);\n\n        if (max - min < MIN_VALUE_RANGE) {\n            max = min + MIN_VALUE_RANGE;\n        }\n\n        return {\n            min: min,\n            max: max\n        };\n    };\n\n    NumericAxis.prototype.zoomRange = function zoomRange (scale, cursor) {\n        var ref = this;\n        var totalMin = ref.totalMin;\n        var totalMax = ref.totalMax;\n        var range = this.scaleRange(scale, cursor);\n\n        return {\n            min: limitValue(range.min, totalMin, totalMax),\n            max: limitValue(range.max, totalMin, totalMax),\n            narrowRange: false\n        };\n    };\n\n    NumericAxis.prototype.isValidRange = function isValidRange (min, max) {\n        return max - min > MIN_VALUE_RANGE;\n    };\n\n    return NumericAxis;\n}(Axis));\n\nfunction autoAxisOptions(seriesMin, seriesMax, options) {\n    var narrowRange = options.narrowRange;\n\n    var autoMin = autoAxisMin(seriesMin, seriesMax, narrowRange);\n    var autoMax = autoAxisMax(seriesMin, seriesMax, narrowRange);\n\n    var majorUnit = autoMajorUnit(autoMin, autoMax);\n    var autoOptions = {\n        majorUnit: majorUnit\n    };\n\n    if (options.roundToMajorUnit !== false) {\n        if (autoMin < 0 && remainderClose(autoMin, majorUnit, 1 / 3)) {\n            autoMin -= majorUnit;\n        }\n\n        if (autoMax > 0 && remainderClose(autoMax, majorUnit, 1 / 3)) {\n            autoMax += majorUnit;\n        }\n    }\n\n    autoOptions.min = floor(autoMin, majorUnit);\n    autoOptions.max = ceil(autoMax, majorUnit);\n\n    return autoOptions;\n}\n\nfunction totalAxisOptions(autoOptions, options) {\n    return {\n        min: defined(options.min) ? Math.min(autoOptions.min, options.min) : autoOptions.min,\n        max: defined(options.max) ? Math.max(autoOptions.max, options.max) : autoOptions.max,\n        majorUnit: autoOptions.majorUnit\n    };\n}\n\nfunction clearNullValues(options, fields) {\n    for (var idx = 0; idx < fields.length; idx++) {\n        var field = fields[idx];\n        if (options[field] === null) {\n            options[field] = undefined;\n        }\n    }\n}\n\nfunction axisOptions(autoOptions, userOptions) {\n    var options = userOptions;\n    var userSetMin, userSetMax;\n\n    if (userOptions) {\n        clearNullValues(userOptions, [ 'min', 'max' ]);\n\n        userSetMin = defined(userOptions.min);\n        userSetMax = defined(userOptions.max);\n\n        var userSetLimits = userSetMin || userSetMax;\n\n        if (userSetLimits) {\n            if (userOptions.min === userOptions.max) {\n                if (userOptions.min > 0) {\n                    userOptions.min = 0;\n                } else {\n                    userOptions.max = 1;\n                }\n            }\n        }\n\n        if (userOptions.majorUnit) {\n            autoOptions.min = floor(autoOptions.min, userOptions.majorUnit);\n            autoOptions.max = ceil(autoOptions.max, userOptions.majorUnit);\n        } else if (userSetLimits) {\n            options = deepExtend(autoOptions, userOptions);\n\n            // Determine an auto major unit after min/max have been set\n            autoOptions.majorUnit = autoMajorUnit(options.min, options.max);\n        }\n    }\n\n    autoOptions.minorUnit = (options.majorUnit || autoOptions.majorUnit) / 5;\n\n    var result = deepExtend(autoOptions, options);\n    if (result.min >= result.max) {\n        if (userSetMin && !userSetMax) {\n            result.max = result.min + result.majorUnit;\n        } else if (!userSetMin && userSetMax) {\n            result.min = result.max - result.majorUnit;\n        }\n    }\n\n    return result;\n}\n\nfunction remainderClose(value, divisor, ratio) {\n    var remainder = round(Math.abs(value % divisor), DEFAULT_PRECISION);\n    var threshold = divisor * (1 - ratio);\n\n    return remainder === 0 || remainder > threshold;\n}\n\nsetDefaultOptions(NumericAxis, {\n    type: \"numeric\",\n    min: 0,\n    max: 1,\n    vertical: true,\n    majorGridLines: {\n        visible: true,\n        width: 1,\n        color: BLACK\n    },\n    labels: {\n        format: \"#.####################\"\n    },\n    zIndex: 1\n});\n\nexport default NumericAxis;\n","import { ZERO_THRESHOLD } from '../constants';\n\nexport default function autoAxisMin(min, max, narrow) {\n    if (!min && !max) {\n        return 0;\n    }\n\n    var axisMin;\n\n    if (min >= 0 && max >= 0) {\n        var minValue = min === max ? 0 : min;\n\n        var diff = (max - minValue) / max;\n        if (narrow === false || (!narrow && diff > ZERO_THRESHOLD)) {\n            return 0;\n        }\n\n        axisMin = Math.max(0, minValue - ((max - minValue) / 2));\n    } else {\n        axisMin = min;\n    }\n\n    return axisMin;\n}\n","import { ZERO_THRESHOLD } from '../constants';\n\nexport default function autoAxisMax(min, max, narrow) {\n    if (!min && !max) {\n        return 1;\n    }\n\n    var axisMax;\n\n    if (min <= 0 && max <= 0) {\n        var maxValue = min === max ? 0 : max;\n\n        var diff = Math.abs((maxValue - min) / maxValue);\n        if (narrow === false || (!narrow && diff > ZERO_THRESHOLD)) {\n            return 0;\n        }\n\n        axisMax = Math.min(0, maxValue - ((min - maxValue) / 2));\n    } else {\n        axisMax = max;\n    }\n\n    return axisMax;\n}","import Axis from './axis';\nimport NumericAxis from './numeric-axis';\nimport AxisLabel from './axis-label';\nimport { DateLabelFormats } from './constants';\n\nimport { BLACK, DATE, COORD_PRECISION, DEFAULT_PRECISION } from '../common/constants';\nimport { setDefaultOptions, deepExtend, limitValue, round } from '../common';\n\nimport autoMajorUnit from './utils/auto-major-unit';\nimport ceil from './utils/ceil';\n\nimport { toDate, toTime, floorDate, ceilDate, duration, addDuration, addTicks, dateDiff, absoluteDateDiff, dateComparer, parseDate, parseDates, firstDay } from '../date-utils';\nimport { HOURS, DAYS, WEEKS, MONTHS, YEARS, TIME_PER_DAY, TIME_PER_WEEK, TIME_PER_MONTH, TIME_PER_YEAR, TIME_PER_UNIT } from '../date-utils/constants';\n\nvar MIN_VALUE_RANGE = 1000;\n\nvar DateValueAxis = (function (Axis) {\n    function DateValueAxis(seriesMin, seriesMax, axisOptions, chartService) {\n        var min = toDate(seriesMin);\n        var max = toDate(seriesMax);\n\n        var intlService = chartService.intl;\n        var options = axisOptions || {};\n        options = deepExtend(options || {}, {\n            min: parseDate(intlService, options.min),\n            max: parseDate(intlService, options.max),\n            axisCrossingValue: parseDates(intlService, options.axisCrossingValues || options.axisCrossingValue),\n            weekStartDay: firstDay(options, intlService)\n        });\n        options = applyDefaults(min, max, options);\n\n        Axis.call(this, options, chartService);\n\n        this.intlService = intlService;\n        this.seriesMin = min;\n        this.seriesMax = max;\n\n        var weekStartDay = options.weekStartDay || 0;\n        this.totalMin = toTime(floorDate(toTime(min) - 1, options.baseUnit, weekStartDay));\n        this.totalMax = toTime(ceilDate(toTime(max) + 1, options.baseUnit, weekStartDay));\n    }\n\n    if ( Axis ) DateValueAxis.__proto__ = Axis;\n    DateValueAxis.prototype = Object.create( Axis && Axis.prototype );\n    DateValueAxis.prototype.constructor = DateValueAxis;\n\n    DateValueAxis.prototype.clone = function clone () {\n        return new DateValueAxis(this.seriesMin, this.seriesMax, Object.assign({}, this.options), this.chartService);\n    };\n\n    DateValueAxis.prototype.range = function range () {\n        var options = this.options;\n        return { min: options.min, max: options.max };\n    };\n\n    DateValueAxis.prototype.getDivisions = function getDivisions (stepValue) {\n        var options = this.options;\n\n        return Math.floor(\n            duration(options.min, options.max, options.baseUnit) / stepValue + 1\n        );\n    };\n\n    DateValueAxis.prototype.getTickPositions = function getTickPositions (step) {\n        var options = this.options;\n        var ref = this.lineInfo();\n        var dir = ref.axisDir;\n        var lineSize = ref.lineSize;\n        var start = ref.lineStart;\n        var divisions = this.getDivisions(step);\n        var timeRange = dateDiff(options.max, options.min);\n        var scale = lineSize / timeRange;\n        var weekStartDay = options.weekStartDay || 0;\n\n        var positions = [ start ];\n        for (var i = 1; i < divisions; i++) {\n            var date = addDuration(options.min, i * step, options.baseUnit, weekStartDay);\n            var pos = start + dateDiff(date, options.min) * scale * dir;\n\n            positions.push(round(pos, COORD_PRECISION));\n        }\n\n        return positions;\n    };\n\n    DateValueAxis.prototype.getMajorTickPositions = function getMajorTickPositions () {\n        return this.getTickPositions(this.options.majorUnit);\n    };\n\n    DateValueAxis.prototype.getMinorTickPositions = function getMinorTickPositions () {\n        return this.getTickPositions(this.options.minorUnit);\n    };\n\n    DateValueAxis.prototype.getSlot = function getSlot (a, b, limit) {\n        return NumericAxis.prototype.getSlot.call(\n            this, parseDate(this.intlService, a), parseDate(this.intlService, b), limit\n        );\n    };\n\n    DateValueAxis.prototype.getValue = function getValue (point) {\n        var value = NumericAxis.prototype.getValue.call(this, point);\n\n        return value !== null ? toDate(value) : null;\n    };\n\n    DateValueAxis.prototype.labelsCount = function labelsCount () {\n        return this.getDivisions(this.options.majorUnit);\n    };\n\n    DateValueAxis.prototype.createAxisLabel = function createAxisLabel (index, labelOptions, labelContext) {\n        var options = this.options;\n        var offset = index * options.majorUnit;\n        var weekStartDay = options.weekStartDay || 0;\n        var date = options.min;\n\n        if (offset > 0) {\n            date = addDuration(date, offset, options.baseUnit, weekStartDay);\n        }\n\n        var unitFormat = labelOptions.dateFormats[options.baseUnit];\n        labelOptions.format = labelOptions.format || unitFormat;\n\n        var text = this.axisLabelText(date, labelOptions, labelContext);\n        return new AxisLabel(date, text, index, null, labelOptions);\n    };\n\n    DateValueAxis.prototype.translateRange = function translateRange (delta) {\n        var options = this.options;\n        var lineBox = this.lineBox();\n        var vertical = options.vertical;\n        var reverse = options.reverse;\n        var size = vertical ? lineBox.height() : lineBox.width();\n        var range = this.range();\n        var scale = size / dateDiff(range.max, range.min);\n\n        var offset = round(delta / scale, DEFAULT_PRECISION);\n        if ((vertical || reverse) && !(vertical && reverse )) {\n            offset = -offset;\n        }\n\n        var from = addTicks(options.min, offset);\n        var to = addTicks(options.max, offset);\n\n        return {\n            min: from,\n            max: to,\n            offset: offset\n        };\n    };\n\n    DateValueAxis.prototype.shouldRenderNote = function shouldRenderNote (value) {\n        var range = this.range();\n\n        return dateComparer(value, range.min) >= 0 && dateComparer(value, range.max) <= 0;\n    };\n\n    DateValueAxis.prototype.pan = function pan (delta) {\n        var range = this.translateRange(delta, true);\n        var limittedRange = this.limitRange(toTime(range.min), toTime(range.max), this.totalMin, this.totalMax, range.offset);\n\n        if (limittedRange) {\n            return {\n                min: toDate(limittedRange.min),\n                max: toDate(limittedRange.max)\n            };\n        }\n    };\n\n    DateValueAxis.prototype.pointsRange = function pointsRange (start, end) {\n        var startValue = this.getValue(start);\n        var endValue = this.getValue(end);\n        var min = Math.min(startValue, endValue);\n        var max = Math.max(startValue, endValue);\n\n        return {\n            min: toDate(min),\n            max: toDate(max)\n        };\n    };\n\n    DateValueAxis.prototype.scaleRange = function scaleRange (scale, cursor) {\n        var position = Math.abs(this.pointOffset(cursor));\n        var range = this.options.max - this.options.min;\n        var delta = this.scaleToDelta(scale, range);\n        var minDelta = position * delta;\n        var maxDelta = (1 - position) * delta;\n        var min = toDate(toTime(this.options.min) + minDelta);\n        var max = toDate(toTime(this.options.max) - maxDelta);\n\n        if (max - min < MIN_VALUE_RANGE) {\n            max = toDate(toTime(min) + MIN_VALUE_RANGE);\n        }\n\n        return {\n            min: min,\n            max: max\n        };\n    };\n\n    DateValueAxis.prototype.zoomRange = function zoomRange (scale, cursor) {\n        var range = this.scaleRange(scale, cursor);\n        var min = toDate(limitValue(toTime(range.min), this.totalMin, this.totalMax));\n        var max = toDate(limitValue(toTime(range.max), this.totalMin, this.totalMax));\n\n        return {\n            min: min,\n            max: max\n        };\n    };\n\n    return DateValueAxis;\n}(Axis));\n\nfunction timeUnits(delta) {\n    var unit = HOURS;\n\n    if (delta >= TIME_PER_YEAR) {\n        unit = YEARS;\n    } else if (delta >= TIME_PER_MONTH) {\n        unit = MONTHS;\n    } else if (delta >= TIME_PER_WEEK) {\n        unit = WEEKS;\n    } else if (delta >= TIME_PER_DAY) {\n        unit = DAYS;\n    }\n\n    return unit;\n}\n\nfunction applyDefaults(seriesMin, seriesMax, options) {\n    var min = options.min || seriesMin;\n    var max = options.max || seriesMax;\n    var baseUnit = options.baseUnit || (max && min ? timeUnits(absoluteDateDiff(max, min)) : HOURS);\n    var baseUnitTime = TIME_PER_UNIT[baseUnit];\n    var weekStartDay = options.weekStartDay || 0;\n    var autoMin = floorDate(toTime(min) - 1, baseUnit, weekStartDay) || toDate(max);\n    var autoMax = ceilDate(toTime(max) + 1, baseUnit, weekStartDay);\n    var userMajorUnit = options.majorUnit ? options.majorUnit : undefined;\n    var majorUnit = userMajorUnit || ceil(\n                        autoMajorUnit(autoMin.getTime(), autoMax.getTime()),\n                        baseUnitTime\n                    ) / baseUnitTime;\n    var actualUnits = duration(autoMin, autoMax, baseUnit);\n    var totalUnits = ceil(actualUnits, majorUnit);\n    var unitsToAdd = totalUnits - actualUnits;\n    var head = Math.floor(unitsToAdd / 2);\n    var tail = unitsToAdd - head;\n\n    if (!options.baseUnit) {\n        delete options.baseUnit;\n    }\n\n    options.baseUnit = options.baseUnit || baseUnit;\n    options.min = options.min || addDuration(autoMin, -head, baseUnit, weekStartDay);\n    options.max = options.max || addDuration(autoMax, tail, baseUnit, weekStartDay);\n    options.minorUnit = options.minorUnit || majorUnit / 5;\n    options.majorUnit = majorUnit;\n\n    return options;\n}\n\nsetDefaultOptions(DateValueAxis, {\n    type: DATE,\n    majorGridLines: {\n        visible: true,\n        width: 1,\n        color: BLACK\n    },\n    labels: {\n        dateFormats: DateLabelFormats\n    }\n});\n\nexport default DateValueAxis;\n","\nimport Axis from './axis';\nimport AxisLabel from './axis-label';\nimport Box from './box';\n\nimport createAxisTick from './utils/create-axis-tick';\nimport createAxisGridLine from './utils/create-axis-grid-line';\nimport limitCoordinate from './utils/limit-coordinate';\n\nimport { DEFAULT_PRECISION, BLACK } from '../common/constants';\nimport { deepExtend, defined, inArray, limitValue, round, setDefaultOptions, valueOrDefault } from '../common';\n\nvar DEFAULT_MAJOR_UNIT = 10;\nvar MIN_VALUE_RANGE = 1e-6;\n\nvar LogarithmicAxis = (function (Axis) {\n    function LogarithmicAxis(seriesMin, seriesMax, options, chartService) {\n\n        var axisOptions = deepExtend({ majorUnit: DEFAULT_MAJOR_UNIT, min: seriesMin, max: seriesMax }, options);\n        var base = axisOptions.majorUnit;\n        var autoMax = autoAxisMax(seriesMax, base);\n        var autoMin = autoAxisMin(seriesMin, seriesMax, axisOptions);\n        var range = initRange(autoMin, autoMax, axisOptions, options);\n\n        axisOptions.max = range.max;\n        axisOptions.min = range.min;\n        axisOptions.minorUnit = options.minorUnit || round(base - 1, DEFAULT_PRECISION);\n\n        Axis.call(this, axisOptions, chartService);\n\n        this.totalMin = defined(options.min) ? Math.min(autoMin, options.min) : autoMin;\n        this.totalMax = defined(options.max) ? Math.max(autoMax, options.max) : autoMax;\n        this.logMin = round(log(range.min, base), DEFAULT_PRECISION);\n        this.logMax = round(log(range.max, base), DEFAULT_PRECISION);\n        this.seriesMin = seriesMin;\n        this.seriesMax = seriesMax;\n\n        this.createLabels();\n    }\n\n    if ( Axis ) LogarithmicAxis.__proto__ = Axis;\n    LogarithmicAxis.prototype = Object.create( Axis && Axis.prototype );\n    LogarithmicAxis.prototype.constructor = LogarithmicAxis;\n\n    LogarithmicAxis.prototype.clone = function clone () {\n        return new LogarithmicAxis(\n            this.seriesMin,\n            this.seriesMax,\n            Object.assign({}, this.options),\n            this.chartService\n        );\n    };\n\n    LogarithmicAxis.prototype.startValue = function startValue () {\n        return this.options.min;\n    };\n\n    LogarithmicAxis.prototype.getSlot = function getSlot (a, b, limit) {\n        var ref = this;\n        var options = ref.options;\n        var logMin = ref.logMin;\n        var logMax = ref.logMax;\n        var base = options.majorUnit;\n        var min = options.min;\n        var max = options.max;\n        var ref$1 = this.lineInfo();\n        var axis = ref$1.axis;\n        var axisDir = ref$1.axisDir;\n        var lineBox = ref$1.lineBox;\n        var lineSize = ref$1.lineSize;\n        var lineStart = ref$1.lineStart;\n        var step = axisDir * (lineSize / (logMax - logMin));\n        var start = valueOrDefault(a, b || 1);\n        var end = valueOrDefault(b, a || 1);\n\n        if (start <= 0 || end <= 0) {\n            return null;\n        }\n\n        if (limit) {\n            start = limitValue(start, min, max);\n            end = limitValue(end, min, max);\n        }\n\n        start = log(start, base);\n        end = log(end, base);\n\n        var p1 = Math.min(start, end) - logMin;\n        var p2 = Math.max(start, end) - logMin;\n\n        var slotBox = new Box(lineBox.x1, lineBox.y1, lineBox.x1, lineBox.y1);\n        slotBox[axis + 1] = limitCoordinate(lineStart + step * (axisDir > 0 ? p1 : p2));\n        slotBox[axis + 2] = limitCoordinate(lineStart + step * (axisDir > 0 ? p2 : p1));\n\n        return slotBox;\n    };\n\n    LogarithmicAxis.prototype.getValue = function getValue (point) {\n        var ref = this;\n        var options = ref.options;\n        var logMin = ref.logMin;\n        var logMax = ref.logMax;\n        var base = options.majorUnit;\n        var ref$1 = this.lineInfo();\n        var axis = ref$1.axis;\n        var axisDir = ref$1.axisDir;\n        var lineStart = ref$1.lineStart;\n        var lineSize = ref$1.lineSize;\n        var step = ((logMax - logMin) / lineSize);\n        var offset = axisDir * (point[axis] - lineStart);\n        var valueOffset = offset * step;\n\n        if (offset < 0 || offset > lineSize) {\n            return null;\n        }\n\n        var value = logMin + valueOffset;\n\n        return round(Math.pow(base, value), DEFAULT_PRECISION);\n    };\n\n    LogarithmicAxis.prototype.range = function range () {\n        var options = this.options;\n        return { min: options.min, max: options.max };\n    };\n\n    LogarithmicAxis.prototype.translateRange = function translateRange (delta) {\n        var ref = this;\n        var options = ref.options;\n        var logMin = ref.logMin;\n        var logMax = ref.logMax;\n        var reverse = options.reverse;\n        var vertical = options.vertical;\n        var base = options.majorUnit;\n        var lineBox = this.lineBox();\n        var size = vertical ? lineBox.height() : lineBox.width();\n        var scale = size / (logMax - logMin);\n        var offset = round(delta / scale, DEFAULT_PRECISION);\n\n        if ((vertical || reverse) && !(vertical && reverse )) {\n            offset = -offset;\n        }\n\n        return {\n            min: Math.pow(base, logMin + offset),\n            max: Math.pow(base, logMax + offset),\n            offset: offset\n        };\n    };\n\n    LogarithmicAxis.prototype.labelsCount = function labelsCount () {\n        var floorMax = Math.floor(this.logMax);\n        var count = Math.floor(floorMax - this.logMin) + 1;\n\n        return count;\n    };\n\n    LogarithmicAxis.prototype.getMajorTickPositions = function getMajorTickPositions () {\n        var ticks = [];\n\n        this.traverseMajorTicksPositions(function (position) {\n            ticks.push(position);\n        }, { step: 1, skip: 0 });\n\n        return ticks;\n    };\n\n    LogarithmicAxis.prototype.createTicks = function createTicks (lineGroup) {\n        var options = this.options;\n        var majorTicks = options.majorTicks;\n        var minorTicks = options.minorTicks;\n        var vertical = options.vertical;\n        var mirror = options.labels.mirror;\n        var lineBox = this.lineBox();\n        var ticks = [];\n        var tickLineOptions = {\n            // TODO\n            // _alignLines: options._alignLines,\n            vertical: vertical\n        };\n\n        function render(tickPosition, tickOptions) {\n            tickLineOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n            tickLineOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n            tickLineOptions.position = tickPosition;\n\n            lineGroup.append(createAxisTick(tickLineOptions, tickOptions));\n        }\n\n        if (majorTicks.visible) {\n            this.traverseMajorTicksPositions(render, majorTicks);\n        }\n\n        if (minorTicks.visible) {\n            this.traverseMinorTicksPositions(render, minorTicks);\n        }\n\n        return ticks;\n    };\n\n    LogarithmicAxis.prototype.createGridLines = function createGridLines (altAxis) {\n        var options = this.options;\n        var minorGridLines = options.minorGridLines;\n        var majorGridLines = options.majorGridLines;\n        var vertical = options.vertical;\n        var lineBox = altAxis.lineBox();\n        var lineOptions = {\n            lineStart: lineBox[vertical ? \"x1\" : \"y1\"],\n            lineEnd: lineBox[vertical ? \"x2\" : \"y2\"],\n            vertical: vertical\n        };\n        var majorTicks = [];\n\n        var container = this.gridLinesVisual();\n        function render(tickPosition, gridLine) {\n            if (!inArray(tickPosition, majorTicks)) {\n                lineOptions.position = tickPosition;\n                container.append(createAxisGridLine(lineOptions, gridLine));\n\n                majorTicks.push(tickPosition);\n            }\n        }\n\n        if (majorGridLines.visible) {\n            this.traverseMajorTicksPositions(render, majorGridLines);\n        }\n\n        if (minorGridLines.visible) {\n            this.traverseMinorTicksPositions(render, minorGridLines);\n        }\n\n        return container.children;\n    };\n\n    LogarithmicAxis.prototype.traverseMajorTicksPositions = function traverseMajorTicksPositions (callback, tickOptions) {\n        var ref = this.lineInfo();\n        var lineStart = ref.lineStart;\n        var step = ref.step;\n        var ref$1 = this;\n        var logMin = ref$1.logMin;\n        var logMax = ref$1.logMax;\n\n        for (var power = Math.ceil(logMin) + tickOptions.skip; power <= logMax; power += tickOptions.step) {\n            var position = round(lineStart + step * (power - logMin), DEFAULT_PRECISION);\n            callback(position, tickOptions);\n        }\n    };\n\n    LogarithmicAxis.prototype.traverseMinorTicksPositions = function traverseMinorTicksPositions (callback, tickOptions) {\n        var this$1 = this;\n\n        var ref = this.options;\n        var min = ref.min;\n        var max = ref.max;\n        var minorUnit = ref.minorUnit;\n        var base = ref.majorUnit;\n        var ref$1 = this.lineInfo();\n        var lineStart = ref$1.lineStart;\n        var step = ref$1.step;\n        var ref$2 = this;\n        var logMin = ref$2.logMin;\n        var logMax = ref$2.logMax;\n        var start = Math.floor(logMin);\n\n        for (var power = start; power < logMax; power++) {\n            var minorOptions = this$1._minorIntervalOptions(power);\n            for (var idx = tickOptions.skip; idx < minorUnit; idx += tickOptions.step) {\n                var value = minorOptions.value + idx * minorOptions.minorStep;\n                if (value > max) {\n                    break;\n                }\n                if (value >= min) {\n                    var position = round(lineStart + step * (log(value, base) - logMin), DEFAULT_PRECISION);\n                    callback(position, tickOptions);\n                }\n            }\n        }\n    };\n\n    LogarithmicAxis.prototype.createAxisLabel = function createAxisLabel (index, labelOptions, labelContext) {\n        var power = Math.ceil(this.logMin + index);\n        var value = Math.pow(this.options.majorUnit, power);\n        var text = this.axisLabelText(value, labelOptions, labelContext);\n\n        return new AxisLabel(value, text, index, null, labelOptions);\n    };\n\n    LogarithmicAxis.prototype.shouldRenderNote = function shouldRenderNote (value) {\n        var range = this.range();\n        return range.min <= value && value <= range.max;\n    };\n\n    LogarithmicAxis.prototype.pan = function pan (delta) {\n        var range = this.translateRange(delta);\n        return this.limitRange(range.min, range.max, this.totalMin, this.totalMax, range.offset);\n    };\n\n    LogarithmicAxis.prototype.pointsRange = function pointsRange (start, end) {\n        var startValue = this.getValue(start);\n        var endValue = this.getValue(end);\n        var min = Math.min(startValue, endValue);\n        var max = Math.max(startValue, endValue);\n\n        return {\n            min: min,\n            max: max\n        };\n    };\n\n    LogarithmicAxis.prototype.scaleRange = function scaleRange (scale, cursor) {\n        var ref = this.options;\n        var base = ref.majorUnit;\n        var logMin = log(this.options.min, base);\n        var logMax = log(this.options.max, base);\n        var position = Math.abs(this.pointOffset(cursor));\n        var range = logMax - logMin;\n        var delta = this.scaleToDelta(scale, range);\n        var min = Math.pow(base, logMin + position * delta);\n        var max = Math.pow(base, logMax - (1 - position) * delta);\n\n        if (max - min < MIN_VALUE_RANGE) {\n            max = min + MIN_VALUE_RANGE;\n        }\n\n        return {\n            min: min,\n            max: max\n        };\n    };\n\n    LogarithmicAxis.prototype.zoomRange = function zoomRange (scale, cursor) {\n        var range = this.scaleRange(scale, cursor);\n        var ref = this;\n        var totalMin = ref.totalMin;\n        var totalMax = ref.totalMax;\n\n        return {\n            min: limitValue(range.min, totalMin, totalMax),\n            max: limitValue(range.max, totalMin, totalMax)\n        };\n    };\n\n    LogarithmicAxis.prototype._minorIntervalOptions = function _minorIntervalOptions (power) {\n        var ref = this.options;\n        var minorUnit = ref.minorUnit;\n        var base = ref.majorUnit;\n        var value = Math.pow(base, power);\n        var nextValue = Math.pow(base, power + 1);\n        var difference = nextValue - value;\n        var minorStep = difference / minorUnit;\n\n        return {\n            value: value,\n            minorStep: minorStep\n        };\n    };\n\n    LogarithmicAxis.prototype.lineInfo = function lineInfo () {\n        var info = Axis.prototype.lineInfo.call(this);\n        info.step = info.axisDir * (info.lineSize / (this.logMax - this.logMin));\n\n        return info;\n    };\n\n    return LogarithmicAxis;\n}(Axis));\n\nfunction initRange(autoMin, autoMax, axisOptions, options) {\n    var min = axisOptions.min;\n    var max = axisOptions.max;\n\n    if (defined(axisOptions.axisCrossingValue) && axisOptions.axisCrossingValue <= 0) {\n        throwNegativeValuesError();\n    }\n\n    if (!defined(options.max)) {\n        max = autoMax;\n    } else if (options.max <= 0) {\n        throwNegativeValuesError();\n    }\n\n    if (!defined(options.min)) {\n        min = autoMin;\n    } else if (options.min <= 0) {\n        throwNegativeValuesError();\n    }\n\n    return {\n        min: min,\n        max: max\n    };\n}\n\nfunction autoAxisMin(min, max, options) {\n    var base = options.majorUnit;\n    var autoMin = min;\n    if (min <= 0) {\n        autoMin = max <= 1 ? Math.pow(base, -2) : 1;\n    } else if (!options.narrowRange) {\n        autoMin = Math.pow(base, Math.floor(log(min, base)));\n    }\n    return autoMin;\n}\n\nfunction autoAxisMax(max, base) {\n    var logMaxRemainder = round(log(max, base), DEFAULT_PRECISION) % 1;\n    var autoMax;\n    if (max <= 0) {\n        autoMax = base;\n    } else if (logMaxRemainder !== 0 && (logMaxRemainder < 0.3 || logMaxRemainder > 0.9)) {\n        autoMax = Math.pow(base, log(max, base) + 0.2);\n    } else {\n        autoMax = Math.pow(base, Math.ceil(log(max, base)));\n    }\n\n    return autoMax;\n}\n\nfunction throwNegativeValuesError() {\n    throw new Error(\"Non positive values cannot be used for a logarithmic axis\");\n}\n\nfunction log(x, base) {\n    return Math.log(x) / Math.log(base);\n}\n\nsetDefaultOptions(LogarithmicAxis, {\n    type: \"log\",\n    majorUnit: DEFAULT_MAJOR_UNIT,\n    minorUnit: 1,\n    axisCrossingValue: 1,\n    vertical: true,\n    majorGridLines: {\n        visible: true,\n        width: 1,\n        color: BLACK\n    },\n    zIndex: 1,\n    _deferLabels: true\n});\n\nexport default LogarithmicAxis;\n","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\n\nimport { append, map } from '../../common';\n\nvar GridLinesMixin = {\n    createGridLines: function(altAxis) {\n        var options = this.options;\n        var radius = Math.abs(this.box.center().y - altAxis.lineBox().y1);\n        var gridLines = [];\n        var skipMajor = false;\n        var majorAngles, minorAngles;\n\n        if (options.majorGridLines.visible) {\n            majorAngles = this.majorGridLineAngles(altAxis);\n            skipMajor = true;\n\n            gridLines = this.renderMajorGridLines(\n                majorAngles, radius, options.majorGridLines\n            );\n        }\n\n        if (options.minorGridLines.visible) {\n            minorAngles = this.minorGridLineAngles(altAxis, skipMajor);\n\n            append(gridLines, this.renderMinorGridLines(\n                minorAngles, radius, options.minorGridLines, altAxis, skipMajor\n            ));\n        }\n\n        return gridLines;\n    },\n\n    renderMajorGridLines: function(angles, radius, options) {\n        return this.renderGridLines(angles, radius, options);\n    },\n\n    renderMinorGridLines: function(angles, radius, options, altAxis, skipMajor) {\n        var radiusCallback = this.radiusCallback && this.radiusCallback(radius, altAxis, skipMajor);\n        return this.renderGridLines(angles, radius, options, radiusCallback);\n    },\n\n    renderGridLines: function(angles, radius, options, radiusCallback) {\n        var style = {\n            stroke: {\n                width: options.width,\n                color: options.color,\n                dashType: options.dashType\n            }\n        };\n\n        var center = this.box.center();\n        var circle = new geom.Circle([ center.x, center.y ], radius);\n        var container = this.gridLinesVisual();\n\n        for (var i = 0; i < angles.length; i++) {\n            var line = new draw.Path(style);\n            if (radiusCallback) {\n                circle.radius = radiusCallback(angles[i]);\n            }\n\n            line.moveTo(circle.center)\n                .lineTo(circle.pointAt(angles[i] + 180));\n\n            container.append(line);\n        }\n\n        return container.children;\n    },\n\n    gridLineAngles: function(altAxis, size, skip, step, skipAngles) {\n        var this$1 = this;\n\n        var divs = this.intervals(size, skip, step, skipAngles);\n        var options = altAxis.options;\n        var altAxisVisible = options.visible && (options.line || {}).visible !== false;\n\n        return map(divs, function (d) {\n            var alpha = this$1.intervalAngle(d);\n\n            if (!altAxisVisible || alpha !== 90) {\n                return alpha;\n            }\n        });\n    }\n};\n\nexport default GridLinesMixin;","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\n\nimport GridLinesMixin from './mixins/grid-lines-mixin';\nimport CategoryAxis from './category-axis';\nimport ShapeBuilder from './shape-builder';\nimport Ring from './ring';\nimport Box from './box';\n\nimport { COORD_PRECISION, ARC } from '../common/constants';\nimport { deepExtend, getSpacing, inArray, limitValue, map, rad, round, setDefaultOptions } from '../common';\n\nvar RadarCategoryAxis = (function (CategoryAxis) {\n    function RadarCategoryAxis () {\n        CategoryAxis.apply(this, arguments);\n    }\n\n    if ( CategoryAxis ) RadarCategoryAxis.__proto__ = CategoryAxis;\n    RadarCategoryAxis.prototype = Object.create( CategoryAxis && CategoryAxis.prototype );\n    RadarCategoryAxis.prototype.constructor = RadarCategoryAxis;\n\n    RadarCategoryAxis.prototype.range = function range () {\n        return { min: 0, max: this.options.categories.length };\n    };\n\n    RadarCategoryAxis.prototype.reflow = function reflow (box) {\n        this.box = box;\n        this.reflowLabels();\n    };\n\n    RadarCategoryAxis.prototype.lineBox = function lineBox () {\n        return this.box;\n    };\n\n    RadarCategoryAxis.prototype.reflowLabels = function reflowLabels () {\n        var this$1 = this;\n\n        var ref = this;\n        var labels = ref.labels;\n        var labelOptions = ref.options.labels;\n        var skip = labelOptions.skip || 0;\n        var step = labelOptions.step || 1;\n        var measureBox = new Box();\n\n        for (var i = 0; i < labels.length; i++) {\n            labels[i].reflow(measureBox);\n            var labelBox = labels[i].box;\n\n            labels[i].reflow(this$1.getSlot(skip + i * step).adjacentBox(\n                0, labelBox.width(), labelBox.height()\n            ));\n        }\n    };\n\n    RadarCategoryAxis.prototype.intervals = function intervals (size, skipOption, stepOption, skipAngles) {\n        if ( skipAngles === void 0 ) skipAngles = false;\n\n        var options = this.options;\n        var categories = options.categories.length;\n        var divCount = categories / size || 1;\n        var divAngle = 360 / divCount;\n        var skip = skipOption || 0;\n        var step = stepOption || 1;\n        var divs = [];\n        var angle = 0;\n\n        for (var i = skip; i < divCount; i += step) {\n            if (options.reverse) {\n                angle = 360 - i * divAngle;\n            } else {\n                angle = i * divAngle;\n            }\n\n            angle = round(angle, COORD_PRECISION) % 360;\n\n            if (!(skipAngles && inArray(angle, skipAngles))) {\n                divs.push(angle);\n            }\n        }\n\n        return divs;\n    };\n\n    RadarCategoryAxis.prototype.majorIntervals = function majorIntervals () {\n        return this.intervals(1);\n    };\n\n    RadarCategoryAxis.prototype.minorIntervals = function minorIntervals () {\n        return this.intervals(0.5);\n    };\n\n    RadarCategoryAxis.prototype.intervalAngle = function intervalAngle (interval) {\n        return (360 + interval + this.options.startAngle) % 360;\n    };\n\n    RadarCategoryAxis.prototype.majorAngles = function majorAngles () {\n        var this$1 = this;\n\n        return map(this.majorIntervals(), function (interval) { return this$1.intervalAngle(interval); });\n    };\n\n    RadarCategoryAxis.prototype.createLine = function createLine () {\n        return [];\n    };\n\n    RadarCategoryAxis.prototype.majorGridLineAngles = function majorGridLineAngles (altAxis) {\n        var majorGridLines = this.options.majorGridLines;\n        return this.gridLineAngles(altAxis, 1, majorGridLines.skip, majorGridLines.step);\n    };\n\n    RadarCategoryAxis.prototype.minorGridLineAngles = function minorGridLineAngles (altAxis, skipMajor) {\n        var ref = this.options;\n        var minorGridLines = ref.minorGridLines;\n        var majorGridLines = ref.majorGridLines;\n        var majorGridLineAngles = skipMajor ? this.intervals(1, majorGridLines.skip, majorGridLines.step) : null;\n\n        return this.gridLineAngles(altAxis, 0.5, minorGridLines.skip, minorGridLines.step, majorGridLineAngles);\n    };\n\n    RadarCategoryAxis.prototype.radiusCallback = function radiusCallback (radius, altAxis, skipMajor) {\n        if (altAxis.options.type !== ARC) {\n            var minorAngle = rad(360 / (this.options.categories.length * 2));\n            var minorRadius = Math.cos(minorAngle) * radius;\n            var majorAngles = this.majorAngles();\n\n            var radiusCallback = function(angle) {\n                if (!skipMajor && inArray(angle, majorAngles)) {\n                    return radius;\n                }\n\n                return minorRadius;\n            };\n            return radiusCallback;\n        }\n    };\n\n    RadarCategoryAxis.prototype.createPlotBands = function createPlotBands () {\n        var this$1 = this;\n\n        var plotBands = this.options.plotBands || [];\n\n        var group = this._plotbandGroup = new draw.Group({\n            zIndex: -1\n        });\n\n        for (var i = 0; i < plotBands.length; i++) {\n            var band = plotBands[i];\n            var slot = this$1.plotBandSlot(band);\n            var singleSlot = this$1.getSlot(band.from);\n\n            var head = band.from - Math.floor(band.from);\n            slot.startAngle += head * singleSlot.angle;\n\n            var tail = Math.ceil(band.to) - band.to;\n            slot.angle -= (tail + head) * singleSlot.angle;\n\n            var ring = ShapeBuilder.current.createRing(slot, {\n                fill: {\n                    color: band.color,\n                    opacity: band.opacity\n                },\n                stroke: {\n                    opacity: band.opacity\n                }\n            });\n            group.append(ring);\n        }\n\n        this.appendVisual(group);\n    };\n\n    RadarCategoryAxis.prototype.plotBandSlot = function plotBandSlot (band) {\n        return this.getSlot(band.from, band.to - 1);\n    };\n\n    RadarCategoryAxis.prototype.getSlot = function getSlot (from, to) {\n        var options = this.options;\n        var justified = options.justified;\n        var box = this.box;\n        var divs = this.majorAngles();\n        var totalDivs = divs.length;\n        var slotAngle = 360 / totalDivs;\n        var fromValue = from;\n\n        if (options.reverse && !justified) {\n            fromValue = (fromValue + 1) % totalDivs;\n        }\n\n        fromValue = limitValue(Math.floor(fromValue), 0, totalDivs - 1);\n        var slotStart = divs[fromValue];\n\n        if (justified) {\n            slotStart = slotStart - slotAngle / 2;\n\n            if (slotStart < 0) {\n                slotStart += 360;\n            }\n        }\n\n        var toValue = limitValue(Math.ceil(to || fromValue), fromValue, totalDivs - 1);\n        var slots = toValue - fromValue + 1;\n        var angle = slotAngle * slots;\n\n        return new Ring(box.center(), 0, box.height() / 2, slotStart, angle);\n    };\n\n    RadarCategoryAxis.prototype.slot = function slot (from, to) {\n        var slot = this.getSlot(from, to);\n        var startAngle = slot.startAngle + 180;\n        var endAngle = startAngle + slot.angle;\n\n        return new geom.Arc([ slot.center.x, slot.center.y ], {\n            startAngle: startAngle,\n            endAngle: endAngle,\n            radiusX: slot.radius,\n            radiusY: slot.radius\n        });\n    };\n\n    RadarCategoryAxis.prototype.pointCategoryIndex = function pointCategoryIndex (point) {\n        var this$1 = this;\n\n        var length = this.options.categories.length;\n        var index = null;\n\n        for (var i = 0; i < length; i++) {\n            var slot = this$1.getSlot(i);\n            if (slot.containsPoint(point)) {\n                index = i;\n                break;\n            }\n        }\n\n        return index;\n    };\n\n    return RadarCategoryAxis;\n}(CategoryAxis));\n\nsetDefaultOptions(RadarCategoryAxis, {\n    startAngle: 90,\n    labels: {\n        margin: getSpacing(10)\n    },\n    majorGridLines: {\n        visible: true\n    },\n    justified: true\n});\ndeepExtend(RadarCategoryAxis.prototype, GridLinesMixin);\n\nexport default RadarCategoryAxis;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport GridLinesMixin from './mixins/grid-lines-mixin';\nimport RadarCategoryAxis from './radar-category-axis';\nimport NumericAxis from './numeric-axis';\nimport Axis from './axis';\nimport Ring from './ring';\nimport Box from './box';\n\nimport { BLACK } from '../common/constants';\nimport { deepExtend, deg, getSpacing, inArray, limitValue, setDefaultOptions } from '../common';\n\nvar PolarAxis = (function (Axis) {\n    function PolarAxis(options, chartService) {\n        Axis.call(this, options, chartService);\n\n        var instanceOptions = this.options;\n\n        instanceOptions.minorUnit = instanceOptions.minorUnit || instanceOptions.majorUnit / 2;\n    }\n\n    if ( Axis ) PolarAxis.__proto__ = Axis;\n    PolarAxis.prototype = Object.create( Axis && Axis.prototype );\n    PolarAxis.prototype.constructor = PolarAxis;\n\n    PolarAxis.prototype.getDivisions = function getDivisions (stepValue) {\n        return NumericAxis.prototype.getDivisions.call(this, stepValue) - 1;\n    };\n\n    PolarAxis.prototype.reflow = function reflow (box) {\n        this.box = box;\n        this.reflowLabels();\n    };\n\n    PolarAxis.prototype.reflowLabels = function reflowLabels () {\n        var this$1 = this;\n\n        var ref = this;\n        var options = ref.options;\n        var labels = ref.labels;\n        var labelOptions = ref.options.labels;\n        var skip = labelOptions.skip || 0;\n        var step = labelOptions.step || 1;\n\n        var measureBox = new Box();\n        var divs = this.intervals(options.majorUnit, skip, step);\n\n        for (var i = 0; i < labels.length; i++) {\n            labels[i].reflow(measureBox);\n            var labelBox = labels[i].box;\n\n            labels[i].reflow(this$1.getSlot(divs[i]).adjacentBox(0, labelBox.width(), labelBox.height()));\n        }\n    };\n\n    PolarAxis.prototype.lineBox = function lineBox () {\n        return this.box;\n    };\n\n    PolarAxis.prototype.intervals = function intervals (size, skipOption, stepOption, skipAngles) {\n        if ( skipAngles === void 0 ) skipAngles = false;\n\n        var min = this.options.min;\n        var divisions = this.getDivisions(size);\n        var divs = [];\n        var skip = skipOption || 0;\n        var step = stepOption || 1;\n\n        for (var i = skip; i < divisions; i += step) {\n            var current = (360 + min + i * size) % 360;\n            if (!(skipAngles && inArray(current, skipAngles))) {\n                divs.push(current);\n            }\n        }\n\n        return divs;\n    };\n\n    PolarAxis.prototype.majorIntervals = function majorIntervals () {\n        return this.intervals(this.options.majorUnit);\n    };\n\n    PolarAxis.prototype.minorIntervals = function minorIntervals () {\n        return this.intervals(this.options.minorUnit);\n    };\n\n    PolarAxis.prototype.intervalAngle = function intervalAngle (i) {\n        return (540 - i - this.options.startAngle) % 360;\n    };\n\n    PolarAxis.prototype.createLine = function createLine () {\n        return [];\n    };\n\n    PolarAxis.prototype.majorGridLineAngles = function majorGridLineAngles (altAxis) {\n        var majorGridLines = this.options.majorGridLines;\n        return this.gridLineAngles(altAxis, this.options.majorUnit, majorGridLines.skip, majorGridLines.step);\n    };\n\n    PolarAxis.prototype.minorGridLineAngles = function minorGridLineAngles (altAxis, skipMajor) {\n        var options = this.options;\n        var minorGridLines = options.minorGridLines;\n        var majorGridLines = options.majorGridLines;\n        var majorGridLineAngles = skipMajor ? this.intervals(options.majorUnit, majorGridLines.skip, majorGridLines.step) : null;\n\n        return this.gridLineAngles(altAxis, options.minorUnit, minorGridLines.skip, minorGridLines.step, majorGridLineAngles);\n    };\n\n    PolarAxis.prototype.plotBandSlot = function plotBandSlot (band) {\n        return this.getSlot(band.from, band.to);\n    };\n\n    PolarAxis.prototype.getSlot = function getSlot (a, b) {\n        var ref = this;\n        var options = ref.options;\n        var box = ref.box;\n        var startAngle = options.startAngle;\n        var start = limitValue(a, options.min, options.max);\n        var end = limitValue(b || start, start, options.max);\n\n        if (options.reverse) {\n            start *= -1;\n            end *= -1;\n        }\n\n        start = (540 - start - startAngle) % 360;\n        end = (540 - end - startAngle) % 360;\n\n        if (end < start) {\n            var tmp = start;\n            start = end;\n            end = tmp;\n        }\n\n        return new Ring(box.center(), 0, box.height() / 2, start, end - start);\n    };\n\n    PolarAxis.prototype.slot = function slot (from, to) {\n        if ( to === void 0 ) to = from;\n\n        var options = this.options;\n        var start = 360 - options.startAngle;\n        var slot = this.getSlot(from, to);\n        var min = Math.min(from, to);\n        var max = Math.max(from, to);\n        var startAngle, endAngle;\n\n        if (options.reverse) {\n            startAngle = min;\n            endAngle = max;\n        } else {\n            startAngle = 360 - max;\n            endAngle = 360 - min;\n        }\n\n        startAngle = (startAngle + start) % 360;\n        endAngle = (endAngle + start) % 360;\n\n        return new geom.Arc([ slot.center.x, slot.center.y ], {\n            startAngle: startAngle,\n            endAngle: endAngle,\n            radiusX: slot.radius,\n            radiusY: slot.radius\n        });\n    };\n\n    PolarAxis.prototype.getValue = function getValue (point) {\n        var options = this.options;\n        var center = this.box.center();\n        var dx = point.x - center.x;\n        var dy = point.y - center.y;\n        var theta = Math.round(deg(Math.atan2(dy, dx)));\n        var start = options.startAngle;\n\n        if (!options.reverse) {\n            theta *= -1;\n            start *= -1;\n        }\n\n        return (theta + start + 360) % 360;\n    };\n\n    PolarAxis.prototype.valueRange = function valueRange () {\n        return {\n            min: 0,\n            max: Math.PI * 2\n        };\n    };\n\n    return PolarAxis;\n}(Axis));\n\nsetDefaultOptions(PolarAxis, {\n    type: \"polar\",\n    startAngle: 0,\n    reverse: false,\n    majorUnit: 60,\n    min: 0,\n    max: 360,\n    labels: {\n        margin: getSpacing(10)\n    },\n    majorGridLines: {\n        color: BLACK,\n        visible: true,\n        width: 1\n    },\n    minorGridLines: {\n        color: \"#aaa\"\n    }\n});\n\ndeepExtend(PolarAxis.prototype, GridLinesMixin, {\n    createPlotBands: RadarCategoryAxis.prototype.createPlotBands,\n    majorAngles: RadarCategoryAxis.prototype.majorAngles,\n    range: NumericAxis.prototype.range,\n    labelsCount: NumericAxis.prototype.labelsCount,\n    createAxisLabel: NumericAxis.prototype.createAxisLabel\n});\n\nexport default PolarAxis;","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\n\nimport ShapeBuilder from '../shape-builder';\nimport Ring from '../ring';\nimport Point from '../point';\n\nimport { ARC } from '../../common/constants';\nimport { append, deg, rad } from '../../common';\n\nvar RadarNumericAxisMixin = {\n    options: {\n        majorGridLines: {\n            visible: true\n        }\n    },\n\n    createPlotBands: function() {\n        var this$1 = this;\n\n        var ref = this.options;\n        var type = ref.majorGridLines.type;\n        var plotBands = ref.plotBands; if ( plotBands === void 0 ) plotBands = [];\n        var altAxis = this.plotArea.polarAxis;\n        var majorAngles = altAxis.majorAngles();\n        var center = altAxis.box.center();\n        var group = this._plotbandGroup = new draw.Group({\n            zIndex: -1\n        });\n\n        for (var i = 0; i < plotBands.length; i++) {\n            var band = plotBands[i];\n            var bandStyle = {\n                fill: {\n                    color: band.color,\n                    opacity: band.opacity\n                },\n                stroke: {\n                    opacity: band.opacity\n                }\n            };\n\n            var slot = this$1.getSlot(band.from, band.to, true);\n            var ring = new Ring(center, center.y - slot.y2, center.y - slot.y1, 0, 360);\n\n            var shape = (void 0);\n            if (type === ARC) {\n                shape = ShapeBuilder.current.createRing(ring, bandStyle);\n            } else {\n                shape = draw.Path.fromPoints(this$1.plotBandPoints(ring, majorAngles), bandStyle).close();\n            }\n\n            group.append(shape);\n        }\n\n        this.appendVisual(group);\n    },\n\n    plotBandPoints: function(ring, angles) {\n        var innerPoints = [];\n        var outerPoints = [];\n        var center = [ ring.center.x, ring.center.y ];\n        var innerCircle = new geom.Circle(center, ring.innerRadius);\n        var outerCircle = new geom.Circle(center, ring.radius);\n\n        for (var i = 0; i < angles.length; i++) {\n            innerPoints.push(innerCircle.pointAt(angles[i] + 180));\n            outerPoints.push(outerCircle.pointAt(angles[i] + 180));\n        }\n\n        innerPoints.reverse();\n        innerPoints.push(innerPoints[0]);\n        outerPoints.push(outerPoints[0]);\n\n        return outerPoints.concat(innerPoints);\n    },\n\n    createGridLines: function(altAxis) {\n        var options = this.options;\n        var majorTicks = this.radarMajorGridLinePositions();\n        var majorAngles = altAxis.majorAngles();\n        var center = altAxis.box.center();\n        var gridLines = [];\n\n        if (options.majorGridLines.visible) {\n            gridLines = this.renderGridLines(\n                center, majorTicks, majorAngles, options.majorGridLines\n            );\n        }\n\n        if (options.minorGridLines.visible) {\n            var minorTicks = this.radarMinorGridLinePositions();\n            append(gridLines, this.renderGridLines(\n                center, minorTicks, majorAngles, options.minorGridLines\n            ));\n        }\n\n        return gridLines;\n    },\n\n    renderGridLines: function(center, ticks, angles, options) {\n        var style = {\n            stroke: {\n                width: options.width,\n                color: options.color,\n                dashType: options.dashType\n            }\n        };\n        var skip = options.skip; if ( skip === void 0 ) skip = 0;\n        var step = options.step; if ( step === void 0 ) step = 0;\n        var container = this.gridLinesVisual();\n\n        for (var tickIx = skip; tickIx < ticks.length; tickIx += step) {\n            var tickRadius = center.y - ticks[tickIx];\n            if (tickRadius > 0) {\n                var circle = new geom.Circle([ center.x, center.y ], tickRadius);\n                if (options.type === ARC) {\n                    container.append(new draw.Circle(circle, style));\n                } else {\n                    var line = new draw.Path(style);\n                    for (var angleIx = 0; angleIx < angles.length; angleIx++) {\n                        line.lineTo(circle.pointAt(angles[angleIx] + 180));\n                    }\n\n                    line.close();\n                    container.append(line);\n                }\n            }\n        }\n\n        return container.children;\n    },\n\n    getValue: function(point) {\n        var lineBox = this.lineBox();\n        var altAxis = this.plotArea.polarAxis;\n        var majorAngles = altAxis.majorAngles();\n        var center = altAxis.box.center();\n        var radius = point.distanceTo(center);\n        var distance = radius;\n\n        if (this.options.majorGridLines.type !== ARC && majorAngles.length > 1) {\n            var dx = point.x - center.x;\n            var dy = point.y - center.y;\n            var theta = (deg(Math.atan2(dy, dx)) + 540) % 360;\n\n            majorAngles.sort(function(a, b) {\n                return angularDistance(a, theta) - angularDistance(b, theta);\n            });\n\n            // Solve triangle (center, point, axis X) using one side (radius) and two angles.\n            // Angles are derived from triangle (center, point, gridline X)\n            var midAngle = angularDistance(majorAngles[0], majorAngles[1]) / 2;\n            var alpha = angularDistance(theta, majorAngles[0]);\n            var gamma = 90 - midAngle;\n            var beta = 180 - alpha - gamma;\n\n            distance = radius * (Math.sin(rad(beta)) / Math.sin(rad(gamma)));\n        }\n\n        return this.axisType().prototype.getValue.call(\n            this, new Point(lineBox.x1, lineBox.y2 - distance)\n        );\n    }\n};\n\nfunction angularDistance(a, b) {\n    return 180 - Math.abs(Math.abs(a - b) - 180);\n}\n\nexport default RadarNumericAxisMixin;","import NumericAxis from './numeric-axis';\nimport RadarNumericAxisMixin from './mixins/radar-numeric-axis-mixin';\n\nimport { deepExtend } from '../common';\n\nvar RadarNumericAxis = (function (NumericAxis) {\n    function RadarNumericAxis () {\n        NumericAxis.apply(this, arguments);\n    }\n\n    if ( NumericAxis ) RadarNumericAxis.__proto__ = NumericAxis;\n    RadarNumericAxis.prototype = Object.create( NumericAxis && NumericAxis.prototype );\n    RadarNumericAxis.prototype.constructor = RadarNumericAxis;\n\n    RadarNumericAxis.prototype.radarMajorGridLinePositions = function radarMajorGridLinePositions () {\n        return this.getTickPositions(this.options.majorUnit);\n    };\n\n    RadarNumericAxis.prototype.radarMinorGridLinePositions = function radarMinorGridLinePositions () {\n        var options = this.options;\n        var minorSkipStep = 0;\n\n        if (options.majorGridLines.visible) {\n            minorSkipStep = options.majorUnit;\n        }\n        return this.getTickPositions(options.minorUnit, minorSkipStep);\n    };\n\n    RadarNumericAxis.prototype.axisType = function axisType () {\n        return NumericAxis;\n    };\n\n    return RadarNumericAxis;\n}(NumericAxis));\n\ndeepExtend(RadarNumericAxis.prototype, RadarNumericAxisMixin);\n\nexport default RadarNumericAxis;","import LogarithmicAxis from './logarithmic-axis';\nimport RadarNumericAxisMixin from './mixins/radar-numeric-axis-mixin';\n\nimport { deepExtend } from '../common';\n\nvar RadarLogarithmicAxis = (function (LogarithmicAxis) {\n    function RadarLogarithmicAxis () {\n        LogarithmicAxis.apply(this, arguments);\n    }\n\n    if ( LogarithmicAxis ) RadarLogarithmicAxis.__proto__ = LogarithmicAxis;\n    RadarLogarithmicAxis.prototype = Object.create( LogarithmicAxis && LogarithmicAxis.prototype );\n    RadarLogarithmicAxis.prototype.constructor = RadarLogarithmicAxis;\n\n    RadarLogarithmicAxis.prototype.radarMajorGridLinePositions = function radarMajorGridLinePositions () {\n        var positions = [];\n\n        this.traverseMajorTicksPositions(function(position) {\n            positions.push(position);\n        }, this.options.majorGridLines);\n\n        return positions;\n    };\n\n    RadarLogarithmicAxis.prototype.radarMinorGridLinePositions = function radarMinorGridLinePositions () {\n        var positions = [];\n\n        this.traverseMinorTicksPositions(function(position) {\n            positions.push(position);\n        }, this.options.minorGridLines);\n\n        return positions;\n    };\n\n    RadarLogarithmicAxis.prototype.axisType = function axisType () {\n        return LogarithmicAxis;\n    };\n\n    return RadarLogarithmicAxis;\n}(LogarithmicAxis));\n\ndeepExtend(RadarLogarithmicAxis.prototype, RadarNumericAxisMixin);\n\nexport default RadarLogarithmicAxis;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport { X, Y } from '../common/constants';\nimport { Class, last, round } from '../common';\n\nvar WEIGHT = 0.333;\nvar EXTREMUM_ALLOWED_DEVIATION = 0.01;\n\nvar CurveProcessor = (function (Class) {\n    function CurveProcessor(closed) {\n        Class.call(this);\n\n        this.closed = closed;\n    }\n\n    if ( Class ) CurveProcessor.__proto__ = Class;\n    CurveProcessor.prototype = Object.create( Class && Class.prototype );\n    CurveProcessor.prototype.constructor = CurveProcessor;\n\n    CurveProcessor.prototype.process = function process (dataPoints) {\n        var this$1 = this;\n\n        var points = dataPoints.slice(0);\n        var segments = [];\n        var closed = this.closed;\n        var length = points.length;\n\n        if (length > 2) {\n            this.removeDuplicates(0, points);\n            length = points.length;\n        }\n\n        if (length < 2 || (length === 2 && points[0].equals(points[1]))) {\n            return segments;\n        }\n\n        var p0 = points[0];\n        var p1 = points[1];\n        var p2 = points[2];\n\n        segments.push(new geom.Segment(p0));\n\n        while (p0.equals(points[length - 1])) {\n            closed = true;\n            points.pop();\n            length--;\n        }\n\n        if (length === 2) {\n            var tangent = this.tangent(p0,p1, X, Y);\n\n            last(segments).controlOut(\n                this.firstControlPoint(tangent, p0, p1, X, Y)\n            );\n\n            segments.push(new geom.Segment(\n                p1,\n                this.secondControlPoint(tangent, p0, p1, X, Y)\n            ));\n\n            return segments;\n        }\n\n        var initialControlPoint, lastControlPoint;\n\n        if (closed) {\n            p0 = points[length - 1]; p1 = points[0]; p2 = points[1];\n            var controlPoints = this.controlPoints(p0, p1, p2);\n            initialControlPoint = controlPoints[1];\n            lastControlPoint = controlPoints[0];\n        } else {\n            var tangent$1 = this.tangent(p0, p1, X,Y);\n            initialControlPoint = this.firstControlPoint(tangent$1, p0, p1, X, Y);\n        }\n\n        var cp0 = initialControlPoint;\n        for (var idx = 0; idx <= length - 3; idx++) {\n            this$1.removeDuplicates(idx, points);\n            length = points.length;\n            if (idx + 3 <= length) {\n                p0 = points[idx]; p1 = points[idx + 1]; p2 = points[idx + 2];\n                var controlPoints$1 = this$1.controlPoints(p0,p1,p2);\n\n                last(segments).controlOut(cp0);\n                cp0 = controlPoints$1[1];\n\n                var cp1 = controlPoints$1[0];\n                segments.push(new geom.Segment(p1, cp1));\n            }\n        }\n\n        if (closed) {\n            p0 = points[length - 2]; p1 = points[length - 1]; p2 = points[0];\n            var controlPoints$2 = this.controlPoints(p0, p1, p2);\n\n            last(segments).controlOut(cp0);\n            segments.push(new geom.Segment(\n                p1,\n                controlPoints$2[0]\n            ));\n\n            last(segments).controlOut(controlPoints$2[1]);\n            segments.push(new geom.Segment(\n                p2,\n                lastControlPoint\n            ));\n        } else {\n            var tangent$2 = this.tangent(p1, p2, X, Y);\n\n            last(segments).controlOut(cp0);\n            segments.push(new geom.Segment(\n                p2,\n                this.secondControlPoint(tangent$2, p1, p2, X, Y)\n            ));\n        }\n\n        return segments;\n    };\n\n    CurveProcessor.prototype.removeDuplicates = function removeDuplicates (idx, points) {\n        while (points[idx + 1] && (points[idx].equals(points[idx + 1]) || points[idx + 1].equals(points[idx + 2]))) {\n            points.splice(idx + 1, 1);\n        }\n    };\n\n    CurveProcessor.prototype.invertAxis = function invertAxis (p0, p1, p2) {\n        var invertAxis = false;\n\n        if (p0.x === p1.x) {\n            invertAxis = true;\n        } else if (p1.x === p2.x) {\n            if ((p1.y < p2.y && p0.y <= p1.y) || (p2.y < p1.y && p1.y <= p0.y)) {\n                invertAxis = true;\n            }\n        } else {\n            var fn = this.lineFunction(p0,p1);\n            var y2 = this.calculateFunction(fn, p2.x);\n            if (!(p0.y <= p1.y && p2.y <= y2) &&\n                !(p1.y <= p0.y && p2.y >= y2)) {\n                invertAxis = true;\n            }\n        }\n\n        return invertAxis;\n    };\n\n    CurveProcessor.prototype.isLine = function isLine (p0, p1, p2) {\n        var fn = this.lineFunction(p0, p1);\n        var y2 = this.calculateFunction(fn, p2.x);\n\n        return (p0.x === p1.x && p1.x === p2.x) || round(y2, 1) === round(p2.y, 1);\n    };\n\n    CurveProcessor.prototype.lineFunction = function lineFunction (p1, p2) {\n        var a = (p2.y - p1.y) / (p2.x - p1.x);\n        var b = p1.y - a * p1.x;\n\n        return [ b, a ];\n    };\n\n    CurveProcessor.prototype.controlPoints = function controlPoints (p0, p1, p2) {\n        var xField = X;\n        var yField = Y;\n        var restrict = false;\n        var switchOrientation = false;\n        var tangent;\n\n        if (this.isLine(p0, p1, p2)) {\n            tangent = this.tangent(p0, p1, X, Y);\n        } else {\n            var monotonic = {\n                x: this.isMonotonicByField(p0, p1, p2, X),\n                y: this.isMonotonicByField(p0, p1, p2, Y)\n            };\n\n            if (monotonic.x && monotonic.y) {\n                tangent = this.tangent(p0, p2, X, Y);\n                restrict = true;\n            } else {\n                if (this.invertAxis(p0, p1, p2)) {\n                    xField = Y;\n                    yField = X;\n                }\n\n                if (monotonic[xField]) {\n                    tangent = 0;\n                } else {\n                    var sign;\n                    if ((p2[yField] < p0[yField] && p0[yField] <= p1[yField]) ||\n                        (p0[yField] < p2[yField] && p1[yField] <= p0[yField])) {\n                        sign = numberSign((p2[yField] - p0[yField]) * (p1[xField] - p0[xField]));\n                    } else {\n                        sign = -numberSign((p2[xField] - p0[xField]) * (p1[yField] - p0[yField]));\n                    }\n\n                    tangent = EXTREMUM_ALLOWED_DEVIATION * sign;\n                    switchOrientation = true;\n                }\n            }\n        }\n\n        var secondControlPoint = this.secondControlPoint(tangent, p0, p1, xField, yField);\n\n        if (switchOrientation) {\n            var oldXField = xField;\n            xField = yField;\n            yField = oldXField;\n        }\n\n        var firstControlPoint = this.firstControlPoint(tangent, p1, p2, xField, yField);\n\n        if (restrict) {\n            this.restrictControlPoint(p0, p1, secondControlPoint, tangent);\n            this.restrictControlPoint(p1, p2, firstControlPoint, tangent);\n        }\n\n        return [ secondControlPoint, firstControlPoint ];\n    };\n\n    CurveProcessor.prototype.restrictControlPoint = function restrictControlPoint (p1, p2, cp, tangent) {\n        if (p1.y < p2.y) {\n            if (p2.y < cp.y) {\n                cp.x = p1.x + (p2.y - p1.y) / tangent;\n                cp.y = p2.y;\n            } else if (cp.y < p1.y) {\n                cp.x = p2.x - (p2.y - p1.y) / tangent;\n                cp.y = p1.y;\n            }\n        } else {\n            if (cp.y < p2.y) {\n                cp.x = p1.x - (p1.y - p2.y) / tangent;\n                cp.y = p2.y;\n            } else if (p1.y < cp.y) {\n                cp.x = p2.x + (p1.y - p2.y) / tangent;\n                cp.y = p1.y;\n            }\n        }\n    };\n\n    CurveProcessor.prototype.tangent = function tangent (p0, p1, xField, yField) {\n        var x = p1[xField] - p0[xField];\n        var y = p1[yField] - p0[yField];\n        var tangent;\n\n        if (x === 0) {\n            tangent = 0;\n        } else {\n            tangent = y / x;\n        }\n\n        return tangent;\n    };\n\n    CurveProcessor.prototype.isMonotonicByField = function isMonotonicByField (p0, p1, p2, field) {\n        return (p2[field] > p1[field] && p1[field] > p0[field]) ||\n                    (p2[field] < p1[field] && p1[field] < p0[field]);\n    };\n\n    CurveProcessor.prototype.firstControlPoint = function firstControlPoint (tangent, p0, p3, xField, yField) {\n        var t1 = p0[xField];\n        var t2 = p3[xField];\n        var distance = (t2 - t1) * WEIGHT;\n\n        return this.point(t1 + distance, p0[yField] + distance * tangent, xField, yField);\n    };\n\n    CurveProcessor.prototype.secondControlPoint = function secondControlPoint (tangent, p0, p3, xField, yField) {\n        var t1 = p0[xField];\n        var t2 = p3[xField];\n        var distance = (t2 - t1) * WEIGHT;\n\n        return this.point(t2 - distance, p3[yField] - distance * tangent, xField, yField);\n    };\n\n    CurveProcessor.prototype.point = function point (xValue, yValue, xField, yField) {\n        var controlPoint = new geom.Point();\n        controlPoint[xField] = xValue;\n        controlPoint[yField] = yValue;\n\n        return controlPoint;\n    };\n\n    CurveProcessor.prototype.calculateFunction = function calculateFunction (fn, x) {\n        var length = fn.length;\n        var result = 0;\n\n        for (var i = 0; i < length; i++) {\n            result += Math.pow(x,i) * fn[i];\n        }\n        return result;\n    };\n\n    return CurveProcessor;\n}(Class));\n\nfunction numberSign(value) {\n    return value <= 0 ? -1 : 1;\n}\n\nexport default CurveProcessor;","import { Class } from '../../common';\n\nvar ChartAxis = (function (Class) {\n    function ChartAxis(axis) {\n        Class.call(this);\n\n        this._axis = axis;\n        this.options = axis.options;\n    }\n\n    if ( Class ) ChartAxis.__proto__ = Class;\n    ChartAxis.prototype = Object.create( Class && Class.prototype );\n    ChartAxis.prototype.constructor = ChartAxis;\n\n    ChartAxis.prototype.value = function value (point) {\n        var axis = this._axis;\n        var value = axis.getCategory ? axis.getCategory(point) : axis.getValue(point);\n\n        return value;\n    };\n\n    ChartAxis.prototype.slot = function slot (from, to, limit) {\n        if ( limit === void 0 ) limit = true;\n\n        return this._axis.slot(from, to, limit);\n    };\n\n    ChartAxis.prototype.range = function range () {\n        return this._axis.range();\n    };\n\n    ChartAxis.prototype.valueRange = function valueRange () {\n        return this._axis.valueRange();\n    };\n\n    return ChartAxis;\n}(Class));\n\nexport default ChartAxis;","import ChartAxis from './chart-axis';\n\nexport default function findAxisByName(name, axes) {\n    for (var idx = 0; idx < axes.length; idx++) {\n        if (axes[idx].options.name === name) {\n            axes[idx].prepareUserOptions();\n            return new ChartAxis(axes[idx]);\n        }\n    }\n}","import findAxisByName from './find-axis-by-name';\n\nvar ChartPane = function ChartPane(pane) {\n    this.visual = pane.visual;\n    this.chartsVisual = pane.chartContainer.visual;\n    this._pane = pane;\n};\n\nChartPane.prototype.findAxisByName = function findAxisByName$1 (name) {\n    return findAxisByName(name, this._pane.axes);\n};\n\nexport default ChartPane;","import { Class } from '../../common';\n\nvar ChartPlotArea = (function (Class) {\n    function ChartPlotArea(plotArea) {\n        Class.call(this);\n\n        this._plotArea = plotArea;\n        this.visual = plotArea.visual;\n        this.backgroundVisual = plotArea._bgVisual;\n    }\n\n    if ( Class ) ChartPlotArea.__proto__ = Class;\n    ChartPlotArea.prototype = Object.create( Class && Class.prototype );\n    ChartPlotArea.prototype.constructor = ChartPlotArea;\n\n    return ChartPlotArea;\n}(Class));\n\nexport default ChartPlotArea;","import { isNumber } from '../../common';\n\nexport default function countNumbers(values) {\n    var length = values.length;\n    var count = 0;\n\n    for (var i = 0; i < length; i++) {\n        var num = values[i];\n        if (isNumber(num)) {\n            count++;\n        }\n    }\n\n    return count;\n}","import { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { defined, isNumber } from '../../common';\n\nimport countNumbers from '../utils/count-numbers';\n\nvar Aggregates = {\n    min: function(values) {\n        var length = values.length;\n        var min = MAX_VALUE;\n\n        for (var i = 0; i < length; i++) {\n            var value = values[i];\n            if (isNumber(value)) {\n                min = Math.min(min, value);\n            }\n        }\n\n        return min === MAX_VALUE ? values[0] : min;\n    },\n\n    max: function(values) {\n        var length = values.length;\n        var max = MIN_VALUE;\n\n        for (var i = 0; i < length; i++) {\n            var value = values[i];\n            if (isNumber(value)) {\n                max = Math.max(max, value);\n            }\n        }\n\n        return max === MIN_VALUE ? values[0] : max;\n    },\n\n    sum: function(values) {\n        var length = values.length;\n        var sum = 0;\n\n        for (var i = 0; i < length; i++) {\n            var value = values[i];\n            if (isNumber(value)) {\n                sum += value;\n            }\n        }\n\n        return sum;\n    },\n\n    sumOrNull: function(values) {\n        var result = null;\n\n        if (countNumbers(values)) {\n            result = Aggregates.sum(values);\n        }\n\n        return result;\n    },\n\n    count: function(values) {\n        var length = values.length;\n        var count = 0;\n\n        for (var i = 0; i < length; i++) {\n            var value = values[i];\n            if (value !== null && defined(value)) {\n                count++;\n            }\n        }\n\n        return count;\n    },\n\n    avg: function(values) {\n        var count = countNumbers(values);\n        var result = values[0];\n\n        if (count > 0) {\n            result = Aggregates.sum(values) / count;\n        }\n\n        return result;\n    },\n\n    first: function(values) {\n        var length = values.length;\n\n        for (var i = 0; i < length; i++) {\n            var value = values[i];\n            if (value !== null && defined(value)) {\n                return value;\n            }\n        }\n\n        return values[0];\n    }\n};\n\nexport default Aggregates;","import { getter } from '../../common';\n\nexport default function getField(field, row) {\n    if (row === null) {\n        return row;\n    }\n\n    var get = getter(field, true);\n    return get(row);\n}","import getField from './utils/get-field';\nimport { VALUE } from '../common/constants';\nimport { Class, defined } from '../common';\n\nvar SeriesBinder = (function (Class) {\n    function SeriesBinder() {\n        Class.call(this);\n\n        this._valueFields = {};\n        this._otherFields = {};\n        this._nullValue = {};\n        this._undefinedValue = {};\n    }\n\n    if ( Class ) SeriesBinder.__proto__ = Class;\n    SeriesBinder.prototype = Object.create( Class && Class.prototype );\n    SeriesBinder.prototype.constructor = SeriesBinder;\n\n    SeriesBinder.prototype.register = function register (seriesTypes, valueFields, otherFields) {\n        var this$1 = this;\n        if ( valueFields === void 0 ) valueFields = [ VALUE ];\n        if ( otherFields === void 0 ) otherFields = {};\n\n\n        for (var i = 0; i < seriesTypes.length; i++) {\n            var type = seriesTypes[i];\n\n            this$1._valueFields[type] = valueFields;\n            this$1._otherFields[type] = otherFields;\n            this$1._nullValue[type] = this$1._makeValue(valueFields, null);\n            this$1._undefinedValue[type] = this$1._makeValue(valueFields, undefined);\n        }\n    };\n\n    SeriesBinder.prototype.canonicalFields = function canonicalFields (series) {\n        return this.valueFields(series).concat(this.otherFields(series));\n    };\n\n    SeriesBinder.prototype.valueFields = function valueFields (series) {\n        return this._valueFields[series.type] || [ VALUE ];\n    };\n\n    SeriesBinder.prototype.otherFields = function otherFields (series) {\n        return this._otherFields[series.type] || [ VALUE ];\n    };\n\n    SeriesBinder.prototype.bindPoint = function bindPoint (series, pointIx, item) {\n        var data = series.data;\n        var pointData = defined(item) ? item : data[pointIx];\n        var result = { valueFields: { value: pointData } };\n        var valueFields = this.valueFields(series);\n        var otherFields = this._otherFields[series.type];\n        var fields, value;\n\n        if (pointData === null) {\n            value = this._nullValue[series.type];\n        } else if (!defined(pointData)) {\n            value = this._undefinedValue[series.type];\n        } else if (Array.isArray(pointData)) {\n            var fieldData = pointData.slice(valueFields.length);\n            value = this._bindFromArray(pointData, valueFields);\n            fields = this._bindFromArray(fieldData, otherFields);\n        } else if (typeof pointData === \"object\") {\n            var srcValueFields = this.sourceFields(series, valueFields);\n            var srcPointFields = this.sourceFields(series, otherFields);\n\n            value = this._bindFromObject(pointData, valueFields, srcValueFields);\n            fields = this._bindFromObject(pointData, otherFields, srcPointFields);\n        }\n\n        if (defined(value)) {\n            if (valueFields.length === 1) {\n                result.valueFields.value = value[valueFields[0]];\n            } else {\n                result.valueFields = value;\n            }\n        }\n\n        result.fields = fields || {};\n\n        return result;\n    };\n\n    SeriesBinder.prototype._makeValue = function _makeValue (fields, initialValue) {\n        var value = {};\n        var length = fields.length;\n\n        for (var i = 0; i < length; i++) {\n            var fieldName = fields[i];\n            value[fieldName] = initialValue;\n        }\n\n        return value;\n    };\n\n    SeriesBinder.prototype._bindFromArray = function _bindFromArray (array, fields) {\n        var value = {};\n\n        if (fields) {\n            var length = Math.min(fields.length, array.length);\n\n            for (var i = 0; i < length; i++) {\n                value[fields[i]] = array[i];\n            }\n        }\n\n        return value;\n    };\n\n    SeriesBinder.prototype._bindFromObject = function _bindFromObject (object, fields, srcFields) {\n        if ( srcFields === void 0 ) srcFields = fields;\n\n        var value = {};\n\n        if (fields) {\n            var length = fields.length;\n\n            for (var i = 0; i < length; i++) {\n                var fieldName = fields[i];\n                var srcFieldName = srcFields[i];\n                if (srcFieldName !== null) {\n                    value[fieldName] = getField(srcFieldName, object);\n                }\n            }\n        }\n\n        return value;\n    };\n\n    SeriesBinder.prototype.sourceFields = function sourceFields (series, canonicalFields) {\n        var sourceFields = [];\n\n        if (canonicalFields) {\n            var length = canonicalFields.length;\n\n            for (var i = 0; i < length; i++) {\n                var fieldName = canonicalFields[i];\n                var sourceFieldName = fieldName === VALUE ? \"field\" : fieldName + \"Field\";\n\n                sourceFields.push(series[sourceFieldName] !== null ? (series[sourceFieldName] || fieldName) : null);\n            }\n        }\n\n        return sourceFields;\n    };\n\n    return SeriesBinder;\n}(Class));\n\nSeriesBinder.current = new SeriesBinder();\n\nexport default SeriesBinder;","import SeriesBinder from '../series-binder';\n\nimport { OBJECT } from '../../common/constants';\nimport { Class, defined, getter, isArray, isNumber } from '../../common';\n\nvar STD_ERR = \"stderr\";\nvar STD_DEV = \"stddev\";\nvar percentRegex = /percent(?:\\w*)\\((\\d+)\\)/;\nvar standardDeviationRegex = new RegExp(\"^\" + STD_DEV + \"(?:\\\\((\\\\d+(?:\\\\.\\\\d+)?)\\\\))?$\");\n\nvar ErrorRangeCalculator = (function (Class) {\n    function ErrorRangeCalculator(errorValue, series, field) {\n        Class.call(this);\n\n        this.initGlobalRanges(errorValue, series, field);\n    }\n\n    if ( Class ) ErrorRangeCalculator.__proto__ = Class;\n    ErrorRangeCalculator.prototype = Object.create( Class && Class.prototype );\n    ErrorRangeCalculator.prototype.constructor = ErrorRangeCalculator;\n\n    ErrorRangeCalculator.prototype.initGlobalRanges = function initGlobalRanges (errorValue, series, field) {\n        var data = series.data;\n        var deviationMatch = standardDeviationRegex.exec(errorValue);\n\n        if (deviationMatch) {\n            this.valueGetter = this.createValueGetter(series, field);\n\n            var average = this.getAverage(data);\n            var deviation = this.getStandardDeviation(data, average, false);\n            var multiple = deviationMatch[1] ? parseFloat(deviationMatch[1]) : 1;\n            var errorRange = { low: average.value - deviation * multiple, high: average.value + deviation * multiple };\n\n            this.globalRange = function() {\n                return errorRange;\n            };\n        } else if (errorValue.indexOf && errorValue.indexOf(STD_ERR) >= 0) {\n            this.valueGetter = this.createValueGetter(series, field);\n            var standardError = this.getStandardError(data, this.getAverage(data));\n\n            this.globalRange = function(value) {\n                return { low: value - standardError, high: value + standardError };\n            };\n        }\n    };\n\n    ErrorRangeCalculator.prototype.createValueGetter = function createValueGetter (series, field) {\n        var data = series.data;\n        var binder = SeriesBinder.current;\n        var valueFields = binder.valueFields(series);\n        var item = defined(data[0]) ? data[0] : {};\n        var valueGetter;\n\n        if (isArray(item)) {\n            var index = field ? valueFields.indexOf(field) : 0;\n            valueGetter = getter(\"[\" + index + \"]\");\n        } else if (isNumber(item)) {\n            valueGetter = getter();\n        } else if (typeof item === OBJECT) {\n            var srcValueFields = binder.sourceFields(series, valueFields);\n            valueGetter = getter(srcValueFields[valueFields.indexOf(field)]);\n        }\n\n        return valueGetter;\n    };\n\n    ErrorRangeCalculator.prototype.getErrorRange = function getErrorRange (pointValue, errorValue) {\n        var low, high, value;\n\n        if (!defined(errorValue)) {\n            return null;\n        }\n\n        if (this.globalRange) {\n            return this.globalRange(pointValue);\n        }\n\n        if (isArray(errorValue)) {\n            low = pointValue - errorValue[0];\n            high = pointValue + errorValue[1];\n        } else if (isNumber(value = parseFloat(errorValue))) {\n            low = pointValue - value;\n            high = pointValue + value;\n        } else if ((value = percentRegex.exec(errorValue))) {\n            var percentValue = pointValue * (parseFloat(value[1]) / 100);\n            low = pointValue - Math.abs(percentValue);\n            high = pointValue + Math.abs(percentValue);\n        } else {\n            throw new Error(\"Invalid ErrorBar value: \" + errorValue);\n        }\n\n        return { low: low, high: high };\n    };\n\n    ErrorRangeCalculator.prototype.getStandardError = function getStandardError (data, average) {\n        return this.getStandardDeviation(data, average, true) / Math.sqrt(average.count);\n    };\n\n    ErrorRangeCalculator.prototype.getStandardDeviation = function getStandardDeviation (data, average, isSample) {\n        var this$1 = this;\n\n        var length = data.length;\n        var total = isSample ? average.count - 1 : average.count;\n        var squareDifferenceSum = 0;\n\n        for (var idx = 0; idx < length; idx++) {\n            var value = this$1.valueGetter(data[idx]);\n            if (isNumber(value)) {\n                squareDifferenceSum += Math.pow(value - average.value, 2);\n            }\n        }\n\n        return Math.sqrt(squareDifferenceSum / total);\n    };\n\n    ErrorRangeCalculator.prototype.getAverage = function getAverage (data) {\n        var this$1 = this;\n\n        var length = data.length;\n        var sum = 0;\n        var count = 0;\n\n        for (var idx = 0; idx < length; idx++) {\n            var value = this$1.valueGetter(data[idx]);\n            if (isNumber(value)) {\n                sum += value;\n                count++;\n            }\n        }\n\n        return {\n            value: sum / count,\n            count: count\n        };\n    };\n\n    return ErrorRangeCalculator;\n}(Class));\n\nexport default ErrorRangeCalculator;","import { support } from '@progress/kendo-drawing';\n\nvar browser = support.browser || {};\n\nvar INITIAL_ANIMATION_DURATION = 600;\nvar FADEIN = \"fadeIn\";\n\nvar GLASS = \"glass\";\nvar BORDER_BRIGHTNESS = 0.8;\nvar TOOLTIP_OFFSET = 5;\nvar START_SCALE = browser.msie ? 0.001 : 0;\nvar ERROR_LOW_FIELD = \"errorLow\";\nvar ERROR_HIGH_FIELD = \"errorHigh\";\nvar X_ERROR_LOW_FIELD = \"xErrorLow\";\nvar X_ERROR_HIGH_FIELD = \"xErrorHigh\";\nvar Y_ERROR_LOW_FIELD = \"yErrorLow\";\nvar Y_ERROR_HIGH_FIELD = \"yErrorHigh\";\nvar LINE_MARKER_SIZE = 8;\nvar ZERO = \"zero\";\nvar INTERPOLATE = \"interpolate\";\nvar GAP = \"gap\";\nvar ABOVE = \"above\";\nvar BELOW = \"below\";\n\nvar SMOOTH = \"smooth\";\nvar STEP = \"step\";\n\nvar AREA = \"area\";\nvar BAR = \"bar\";\nvar BOX_PLOT = \"boxPlot\";\nvar BUBBLE = \"bubble\";\nvar BULLET = \"bullet\";\nvar CANDLESTICK = \"candlestick\";\nvar COLUMN = \"column\";\nvar DONUT = \"donut\";\nvar FUNNEL = \"funnel\";\nvar PYRAMID = \"pyramid\";\nvar HEATMAP = \"heatmap\";\nvar HORIZONTAL_WATERFALL = \"horizontalWaterfall\";\nvar LINE = \"line\";\nvar OHLC = \"ohlc\";\nvar PIE = \"pie\";\nvar POLAR_AREA = \"polarArea\";\nvar POLAR_LINE = \"polarLine\";\nvar POLAR_SCATTER = \"polarScatter\";\nvar RADAR_AREA = \"radarArea\";\nvar RADAR_COLUMN = \"radarColumn\";\nvar RADAR_LINE = \"radarLine\";\nvar RANGE_AREA = \"rangeArea\";\nvar RANGE_BAR = \"rangeBar\";\nvar RANGE_COLUMN = \"rangeColumn\";\nvar SCATTER = \"scatter\";\nvar SCATTER_LINE = \"scatterLine\";\nvar VERTICAL_AREA = \"verticalArea\";\nvar VERTICAL_BOX_PLOT = \"verticalBoxPlot\";\nvar VERTICAL_BULLET = \"verticalBullet\";\nvar VERTICAL_LINE = \"verticalLine\";\nvar VERTICAL_RANGE_AREA = \"verticalRangeArea\";\nvar WATERFALL = \"waterfall\";\nvar EQUALLY_SPACED_SERIES = [\n    BAR, COLUMN, OHLC, CANDLESTICK, BOX_PLOT, VERTICAL_BOX_PLOT,\n    BULLET, RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL\n];\n\nvar TRENDLINE_LINEAR = 'linearTrendline';\nvar TRENDLINE_MOVING_AVERAGE = 'movingAverageTrendline';\nvar TRENDLINE_SERIES = [\n    TRENDLINE_LINEAR, TRENDLINE_MOVING_AVERAGE\n];\n\nvar LEGEND_ITEM_CLICK = \"legendItemClick\";\nvar LEGEND_ITEM_HOVER = \"legendItemHover\";\nvar LEGEND_ITEM_LEAVE = \"legendItemLeave\";\nvar SERIES_CLICK = \"seriesClick\";\nvar SERIES_HOVER = \"seriesHover\";\nvar SERIES_OVER = \"seriesOver\";\nvar SERIES_LEAVE = \"seriesLeave\";\nvar PLOT_AREA_CLICK = \"plotAreaClick\";\nvar PLOT_AREA_HOVER = \"plotAreaHover\";\nvar PLOT_AREA_LEAVE = \"plotAreaLeave\";\nvar DRAG = \"drag\";\nvar DRAG_END = \"dragEnd\";\nvar DRAG_START = \"dragStart\";\nvar ZOOM_START = \"zoomStart\";\nvar ZOOM = \"zoom\";\nvar ZOOM_END = \"zoomEnd\";\nvar SELECT_START = \"selectStart\";\nvar SELECT = \"select\";\nvar SELECT_END = \"selectEnd\";\nvar RENDER = \"render\";\nvar SHOW_TOOLTIP = \"showTooltip\";\nvar HIDE_TOOLTIP = \"hideTooltip\";\nvar PANE_RENDER = \"paneRender\";\n\nvar LOGARITHMIC = \"log\";\nvar CATEGORY = \"category\";\n\nvar INSIDE_END = \"insideEnd\";\nvar INSIDE_BASE = \"insideBase\";\nvar OUTSIDE_END = \"outsideEnd\";\n\nvar MOUSEWHEEL = \"wheel\";\nvar MOUSEWHEEL_DELAY = 150;\nvar MOUSEWHEEL_ZOOM_RATE = 0.3;\n\nvar DRILLDOWN = \"drilldown\";\nvar DRILLDOWN_FIELD = \"drilldown\";\n\nvar MIN_MOVING_AVERAGE_PERIOD = 2;\n\nexport {\n    INITIAL_ANIMATION_DURATION, FADEIN,\n    LEGEND_ITEM_CLICK, LEGEND_ITEM_HOVER, LEGEND_ITEM_LEAVE,\n    SERIES_CLICK, SERIES_HOVER, SERIES_OVER, SERIES_LEAVE,\n    GLASS, BORDER_BRIGHTNESS, TOOLTIP_OFFSET,\n    START_SCALE, ERROR_LOW_FIELD, ERROR_HIGH_FIELD,\n    X_ERROR_LOW_FIELD, X_ERROR_HIGH_FIELD,\n    Y_ERROR_LOW_FIELD, Y_ERROR_HIGH_FIELD,\n    LINE_MARKER_SIZE, INTERPOLATE, ZERO,\n    SMOOTH, STEP, CATEGORY, FUNNEL, PYRAMID,\n    BAR, CANDLESTICK, PIE, COLUMN, AREA,\n    VERTICAL_BULLET, BOX_PLOT, OHLC, WATERFALL, LINE,\n    BULLET, VERTICAL_LINE, VERTICAL_AREA, RANGE_AREA, VERTICAL_RANGE_AREA,\n    RANGE_COLUMN, VERTICAL_BOX_PLOT, RANGE_BAR, HORIZONTAL_WATERFALL,\n    SCATTER, SCATTER_LINE, BUBBLE, RADAR_AREA, RADAR_LINE,\n    RADAR_COLUMN, POLAR_LINE, POLAR_AREA, POLAR_SCATTER,\n    RENDER, PLOT_AREA_CLICK, PLOT_AREA_HOVER, PLOT_AREA_LEAVE,\n    LOGARITHMIC, DRAG, DRAG_START, DRAG_END, ZOOM_START, ZOOM, ZOOM_END,\n    SELECT_START, SELECT, SELECT_END, PANE_RENDER, GAP,\n    DONUT, INSIDE_END, INSIDE_BASE, OUTSIDE_END,\n    MOUSEWHEEL, MOUSEWHEEL_DELAY, MOUSEWHEEL_ZOOM_RATE,\n    SHOW_TOOLTIP, HIDE_TOOLTIP,\n    EQUALLY_SPACED_SERIES, ABOVE, BELOW,\n    HEATMAP,\n    DRILLDOWN, DRILLDOWN_FIELD,\n    MIN_MOVING_AVERAGE_PERIOD,\n    TRENDLINE_SERIES, TRENDLINE_LINEAR, TRENDLINE_MOVING_AVERAGE\n};\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Point, Box } from '../../core';\n\nimport { FADEIN, INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { setDefaultOptions, alignPathToPixel } from '../../common';\n\nvar DEFAULT_ERROR_BAR_WIDTH = 4;\n\nvar ErrorBarBase = (function (ChartElement) {\n    function ErrorBarBase(low, high, isVertical, chart, series, options) {\n        ChartElement.call(this, options);\n\n        this.low = low;\n        this.high = high;\n        this.isVertical = isVertical;\n        this.chart = chart;\n        this.series = series;\n    }\n\n    if ( ChartElement ) ErrorBarBase.__proto__ = ChartElement;\n    ErrorBarBase.prototype = Object.create( ChartElement && ChartElement.prototype );\n    ErrorBarBase.prototype.constructor = ErrorBarBase;\n\n    ErrorBarBase.prototype.reflow = function reflow (targetBox) {\n        var endCaps = this.options.endCaps;\n        var isVertical = this.isVertical;\n        var axis = this.getAxis();\n        var valueBox = axis.getSlot(this.low, this.high);\n        var centerBox = targetBox.center();\n        var capsWidth = this.getCapsWidth(targetBox, isVertical);\n        var capValue = isVertical ? centerBox.x : centerBox.y;\n        var capStart = capValue - capsWidth;\n        var capEnd = capValue + capsWidth;\n        var linePoints;\n\n        if (isVertical) {\n            linePoints = [\n                new Point(centerBox.x, valueBox.y1),\n                new Point(centerBox.x, valueBox.y2)\n            ];\n            if (endCaps) {\n                linePoints.push(new Point(capStart, valueBox.y1),\n                    new Point(capEnd, valueBox.y1),\n                    new Point(capStart, valueBox.y2),\n                    new Point(capEnd, valueBox.y2));\n            }\n            this.box = new Box(capStart, valueBox.y1, capEnd, valueBox.y2);\n        } else {\n            linePoints = [\n                new Point(valueBox.x1, centerBox.y),\n                new Point(valueBox.x2, centerBox.y)\n            ];\n            if (endCaps) {\n                linePoints.push(new Point(valueBox.x1, capStart),\n                    new Point(valueBox.x1, capEnd),\n                    new Point(valueBox.x2, capStart),\n                    new Point(valueBox.x2, capEnd));\n            }\n            this.box = new Box(valueBox.x1, capStart, valueBox.x2, capEnd);\n        }\n\n        this.linePoints = linePoints;\n    };\n\n    ErrorBarBase.prototype.getCapsWidth = function getCapsWidth (box, isVertical) {\n        var boxSize = isVertical ? box.width() : box.height();\n        var capsWidth = Math.min(Math.floor(boxSize / 2), DEFAULT_ERROR_BAR_WIDTH) || DEFAULT_ERROR_BAR_WIDTH;\n\n        return capsWidth;\n    };\n\n    ErrorBarBase.prototype.createVisual = function createVisual () {\n        var this$1 = this;\n\n        var options = this.options;\n        var visual = options.visual;\n\n        if (visual) {\n            this.visual = visual({\n                low: this.low,\n                high: this.high,\n                rect: this.box.toRect(),\n                sender: this.getSender(),\n                options: {\n                    endCaps: options.endCaps,\n                    color: options.color,\n                    line: options.line\n                },\n                createVisual: function () {\n                    this$1.createDefaultVisual();\n                    var defaultVisual = this$1.visual;\n                    delete this$1.visual;\n                    return defaultVisual;\n                }\n            });\n        } else {\n            this.createDefaultVisual();\n        }\n    };\n\n    ErrorBarBase.prototype.createDefaultVisual = function createDefaultVisual () {\n        var this$1 = this;\n\n        var ref = this;\n        var options = ref.options;\n        var linePoints = ref.linePoints;\n        var lineOptions = {\n            stroke: {\n                color: options.color,\n                width: options.line.width,\n                dashType: options.line.dashType\n            }\n        };\n\n        ChartElement.prototype.createVisual.call(this);\n\n        for (var idx = 0; idx < linePoints.length; idx += 2) {\n            var line = new draw.Path(lineOptions)\n                .moveTo(linePoints[idx].x, linePoints[idx].y)\n                .lineTo(linePoints[idx + 1].x, linePoints[idx + 1].y);\n\n            alignPathToPixel(line);\n            this$1.visual.append(line);\n        }\n    };\n\n    return ErrorBarBase;\n}(ChartElement));\n\nsetDefaultOptions(ErrorBarBase, {\n    animation: {\n        type: FADEIN,\n        delay: INITIAL_ANIMATION_DURATION\n    },\n    endCaps: true,\n    line: {\n        width: 2\n    },\n    zIndex: 1\n});\n\nexport default ErrorBarBase;","import ErrorBarBase from './error-bar-base';\n\nvar CategoricalErrorBar = (function (ErrorBarBase) {\n    function CategoricalErrorBar () {\n        ErrorBarBase.apply(this, arguments);\n    }\n\n    if ( ErrorBarBase ) CategoricalErrorBar.__proto__ = ErrorBarBase;\n    CategoricalErrorBar.prototype = Object.create( ErrorBarBase && ErrorBarBase.prototype );\n    CategoricalErrorBar.prototype.constructor = CategoricalErrorBar;\n\n    CategoricalErrorBar.prototype.getAxis = function getAxis () {\n        var axis = this.chart.seriesValueAxis(this.series);\n\n        return axis;\n    };\n\n    return CategoricalErrorBar;\n}(ErrorBarBase));\n\nexport default CategoricalErrorBar;","import { defined } from '../../common';\n\nexport default function anyHasZIndex(elements) {\n    for (var idx = 0; idx < elements.length; idx++) {\n        if (defined(elements[idx].zIndex)) {\n            return true;\n        }\n    }\n}","export default function appendIfNotNull(array, element) {\n    if (element !== null) {\n        array.push(element);\n    }\n}","import countNumbers from './count-numbers';\n\nexport default function areNumbers(values) {\n    return countNumbers(values) === values.length;\n}","import { defined } from '../../common';\n\nexport default function segmentVisible(series, fields, index) {\n    var visible = fields.visible;\n    if (defined(visible)) {\n        return visible;\n    }\n\n    var pointVisibility = series.pointVisibility;\n    if (pointVisibility) {\n        return pointVisibility[index];\n    }\n}\n\n","import { isNumber, isString } from '../../common';\nimport SeriesBinder from '../series-binder';\nimport segmentVisible from './segment-visible';\n\nexport default function bindSegments(series) {\n    var data = series.data;\n    var points = [];\n    var sum = 0;\n    var count = 0;\n\n    for (var idx = 0; idx < data.length; idx++) {\n        var pointData = SeriesBinder.current.bindPoint(series, idx);\n        var value = pointData.valueFields.value;\n\n\n        if (isString(value)) {\n            value = parseFloat(value);\n        }\n\n        if (isNumber(value)) {\n            pointData.visible = segmentVisible(series, pointData.fields, idx) !== false;\n\n            pointData.value = Math.abs(value);\n            points.push(pointData);\n\n            if (pointData.visible) {\n                sum += pointData.value;\n            }\n\n            if (value !== 0) {\n                count++;\n            }\n        } else {\n            points.push(null);\n        }\n    }\n\n    return {\n        total: sum,\n        points: points,\n        count: count\n    };\n}","export default function categoriesCount(series) {\n    var seriesCount = series.length;\n    var categories = 0;\n\n    for (var i = 0; i < seriesCount; i++) {\n        categories = Math.max(categories, series[i].data.length);\n    }\n\n    return categories;\n}","export default function equalsIgnoreCase(a, b) {\n    if (a && b) {\n        return a.toLowerCase() === b.toLowerCase();\n    }\n\n    return a === b;\n}","import { inArray, isFunction, isObject, valueOrDefault } from '../../common';\n\nvar MAX_EXPAND_DEPTH = 5;\n\nexport default function evalOptions(options, context, state, dryRun) {\n    if ( state === void 0 ) state = {};\n    if ( dryRun === void 0 ) dryRun = false;\n\n    var defaults = state.defaults = state.defaults || {};\n    var depth = state.depth = state.depth || 0;\n    var needsEval = false;\n\n    state.excluded = state.excluded || [];\n\n    if (depth > MAX_EXPAND_DEPTH) {\n        return null;\n    }\n\n    for (var property in options) {\n        if (!inArray(property, state.excluded) && options.hasOwnProperty(property)) {\n            var propValue = options[property];\n            if (isFunction(propValue)) {\n                needsEval = true;\n                if (!dryRun) {\n                    options[property] = valueOrDefault(propValue(context), defaults[property]);\n                }\n            } else if (isObject(propValue)) {\n                if (!dryRun) {\n                    state.defaults = defaults[property];\n                }\n                state.depth++;\n                needsEval = evalOptions(propValue, context, state, dryRun) || needsEval;\n                state.depth--;\n            }\n        }\n    }\n\n    return needsEval;\n}","import { inArray } from '../../common';\n\nexport default function filterSeriesByType(series, types) {\n    var result = [];\n\n    var seriesTypes = [].concat(types);\n    for (var idx = 0; idx < series.length; idx++) {\n        var currentSeries = series[idx];\n        if (inArray(currentSeries.type, seriesTypes)) {\n            result.push(currentSeries);\n        }\n    }\n\n    return result;\n}","import { parseDate } from '../../date-utils';\nimport { getter } from '../../common';\n\nexport default function getDateField(field, row, intlService) {\n    if (row === null) {\n        return row;\n    }\n\n    var key = \"_date_\" + field;\n    var value = row[key];\n\n    if (!value) {\n        value = parseDate(intlService, getter(field, true)(row));\n        row[key] = value;\n    }\n\n    return value;\n}","export default function hasGradientOverlay(options) {\n    var overlay = options.overlay;\n\n    return overlay && overlay.gradient && overlay.gradient !== \"none\";\n}","import { defined } from '../../common';\n\nexport default function hasValue(value) {\n    return defined(value) && value !== null;\n}","import equalsIgnoreCase from './equals-ignore-case';\n\nimport { DATE } from '../../common/constants';\n\nexport default function isDateAxis(axisOptions, sampleCategory) {\n    var type = axisOptions.type;\n    var dateCategory = sampleCategory instanceof Date;\n\n    return (!type && dateCategory) || equalsIgnoreCase(type, DATE);\n}","export default function singleItemOrArray(array) {\n    return array.length === 1 ? array[0] : array;\n}","import { INTERPOLATE, ZERO } from '../constants';\nimport { convertableToNumber } from '../../common';\nimport SeriesBinder from '../series-binder';\n\nvar AREA_REGEX = /area/i;\n\nfunction seriesMissingValues(series) {\n    if (series.missingValues) {\n        return series.missingValues;\n    }\n\n    return AREA_REGEX.test(series.type) || series.stack ? ZERO : INTERPOLATE;\n}\n\nfunction hasValue(series, item) {\n    var fields = SeriesBinder.current.bindPoint(series, null, item);\n    var valueFields = fields.valueFields;\n\n    for (var field in valueFields) {\n        if (convertableToNumber(valueFields[field])) {\n            return true;\n        }\n    }\n}\n\nfunction findNext(ref) {\n    var start = ref.start;\n    var dir = ref.dir;\n    var min = ref.min;\n    var max = ref.max;\n    var getter = ref.getter;\n    var hasItem = ref.hasItem;\n    var series = ref.series;\n\n    var pointHasValue, outPoint;\n    var idx = start;\n    do {\n        idx += dir;\n        //aggregating and binding the item takes too much time for large number of categories\n        //will assume that if the aggregation does not create value for a missing item for one it will not create for others\n        if (hasItem(idx)) {\n            outPoint = getter(idx);\n            pointHasValue = hasValue(series, outPoint.item);\n        }\n    } while (min <= idx && idx <= max && !pointHasValue);\n\n    if (pointHasValue) {\n        return outPoint;\n    }\n}\n\nexport default function createOutOfRangePoints(series, range, count, getter, hasItem) {\n    var min = range.min;\n    var max = range.max;\n    var hasMinPoint = min > 0 && min < count;\n    var hasMaxPoint = max + 1 < count;\n\n    if (hasMinPoint || hasMaxPoint) {\n        var missingValues = seriesMissingValues(series);\n        var minPoint, maxPoint;\n        if (missingValues !== INTERPOLATE) {\n            if (hasMinPoint) {\n                minPoint = getter(min - 1);\n            }\n\n            if (hasMaxPoint) {\n                maxPoint = getter(max + 1);\n            }\n        } else {\n            var outPoint, pointHasValue;\n            if (hasMinPoint) {\n                outPoint = getter(min - 1);\n                pointHasValue = hasValue(series, outPoint.item);\n                if (!pointHasValue) {\n                    minPoint = findNext({\n                        start: min,\n                        dir: -1,\n                        min: 0,\n                        max: count - 1,\n                        getter: getter,\n                        hasItem: hasItem,\n                        series: series\n                    });\n                } else {\n                    minPoint = outPoint;\n                }\n            }\n\n            if (hasMaxPoint) {\n                outPoint = getter(max + 1);\n                pointHasValue = hasValue(series, outPoint.item);\n                if (!pointHasValue) {\n                    maxPoint = findNext({\n                        start: max,\n                        dir: 1,\n                        min: 0,\n                        max: count - 1,\n                        getter: getter,\n                        hasItem: hasItem,\n                        series: series\n                    });\n                } else {\n                    maxPoint = outPoint;\n                }\n            }\n        }\n\n        if (minPoint) {\n            series._outOfRangeMinPoint = minPoint;\n        }\n\n        if (maxPoint) {\n            series._outOfRangeMaxPoint = maxPoint;\n        }\n    }\n}","import ErrorRangeCalculator from './error-bars/error-range-calculator';\nimport CategoricalErrorBar from './error-bars/categorical-error-bar';\n\nimport { ERROR_LOW_FIELD, ERROR_HIGH_FIELD } from './constants';\n\nimport { evalOptions, categoriesCount } from './utils';\n\nimport { ChartElement, Box } from '../core';\n\nimport { VALUE, STRING, MIN_VALUE, MAX_VALUE } from '../common/constants';\nimport { convertableToNumber, deepExtend, defined, isNumber, last, setDefaultOptions, sparseArrayLimits } from '../common';\n\nvar CategoricalChart = (function (ChartElement) {\n    function CategoricalChart(plotArea, options) {\n        ChartElement.call(this, options);\n\n        this.plotArea = plotArea;\n        this.chartService = plotArea.chartService;\n        this.categoryAxis = plotArea.seriesCategoryAxis(options.series[0]);\n\n        // Value axis ranges grouped by axis name, e.g.:\n        // primary: { min: 0, max: 1 }\n        this.valueAxisRanges = {};\n\n        this.points = [];\n        this.categoryPoints = [];\n        this.seriesPoints = [];\n        this.seriesOptions = [];\n        this._evalSeries = [];\n\n        this.render();\n    }\n\n    if ( ChartElement ) CategoricalChart.__proto__ = ChartElement;\n    CategoricalChart.prototype = Object.create( ChartElement && ChartElement.prototype );\n    CategoricalChart.prototype.constructor = CategoricalChart;\n\n    CategoricalChart.prototype.render = function render () {\n        this.traverseDataPoints(this.addValue.bind(this));\n    };\n\n    CategoricalChart.prototype.pointOptions = function pointOptions (series, seriesIx) {\n        var options = this.seriesOptions[seriesIx];\n        if (!options) {\n            var defaults = this.pointType().prototype.defaults;\n            this.seriesOptions[seriesIx] = options = deepExtend({ }, defaults, {\n                vertical: !this.options.invertAxes\n            }, series);\n        }\n\n        return options;\n    };\n\n    CategoricalChart.prototype.plotValue = function plotValue (point) {\n        if (!point) {\n            return 0;\n        }\n\n        if (this.options.isStacked100 && isNumber(point.value)) {\n            var categoryIx = point.categoryIx;\n            var categoryPoints = this.categoryPoints[categoryIx];\n            var otherValues = [];\n            var categorySum = 0;\n\n            for (var i = 0; i < categoryPoints.length; i++) {\n                var other = categoryPoints[i];\n                if (other) {\n                    var stack = point.series.stack;\n                    var otherStack = other.series.stack;\n\n                    if ((stack && otherStack) && stack.group !== otherStack.group) {\n                        continue;\n                    }\n\n                    if (isNumber(other.value)) {\n                        categorySum += Math.abs(other.value);\n                        otherValues.push(Math.abs(other.value));\n                    }\n                }\n            }\n\n            if (categorySum > 0) {\n                return point.value / categorySum;\n            }\n        }\n\n        return point.value;\n    };\n\n    CategoricalChart.prototype.plotRange = function plotRange (point, startValue) {\n        var this$1 = this;\n        if ( startValue === void 0 ) startValue = 0;\n\n        var categoryPoints = this.categoryPoints[point.categoryIx];\n\n        if (this.options.isStacked) {\n            var plotValue = this.plotValue(point);\n            var positive = plotValue >= 0;\n            var prevValue = startValue;\n            var isStackedBar = false;\n\n            for (var i = 0; i < categoryPoints.length; i++) {\n                var other = categoryPoints[i];\n\n                if (point === other) {\n                    break;\n                }\n\n                var stack = point.series.stack;\n                var otherStack = other.series.stack;\n                if (stack && otherStack) {\n                    if (typeof stack === STRING && stack !== otherStack) {\n                        continue;\n                    }\n\n                    if (stack.group && stack.group !== otherStack.group) {\n                        continue;\n                    }\n                }\n\n                var otherValue = this$1.plotValue(other);\n                if ((otherValue >= 0 && positive) ||\n                    (otherValue < 0 && !positive)) {\n                    prevValue += otherValue;\n                    plotValue += otherValue;\n                    isStackedBar = true;\n\n                    if (this$1.options.isStacked100) {\n                        plotValue = Math.min(plotValue, 1);\n                    }\n                }\n            }\n\n            if (isStackedBar) {\n                prevValue -= startValue;\n            }\n\n            return [ prevValue, plotValue ];\n        }\n\n        var series = point.series;\n        var valueAxis = this.seriesValueAxis(series);\n        var axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n\n        return [ axisCrossingValue, convertableToNumber(point.value) ? point.value : axisCrossingValue ];\n    };\n\n    CategoricalChart.prototype.stackLimits = function stackLimits (axisName, stackName) {\n        var this$1 = this;\n\n        var min = MAX_VALUE;\n        var max = MIN_VALUE;\n\n        for (var i = 0; i < this.categoryPoints.length; i++) {\n            var categoryPoints = this$1.categoryPoints[i];\n            if (!categoryPoints) {\n                continue;\n            }\n\n            for (var pIx = 0; pIx < categoryPoints.length; pIx++) {\n                var point = categoryPoints[pIx];\n                if (point) {\n                    if (point.series.stack === stackName || point.series.axis === axisName) {\n                        var to = this$1.plotRange(point, 0)[1];\n                        if (defined(to) && isFinite(to)) {\n                            max = Math.max(max, to);\n                            min = Math.min(min, to);\n                        }\n                    }\n                }\n            }\n        }\n\n        return { min: min, max: max };\n    };\n\n    CategoricalChart.prototype.updateStackRange = function updateStackRange () {\n        var this$1 = this;\n\n        var ref = this.options;\n        var isStacked = ref.isStacked;\n        var chartSeries = ref.series;\n        var limitsCache = {};\n\n        if (isStacked) {\n            for (var i = 0; i < chartSeries.length; i++) {\n                var series = chartSeries[i];\n                var axisName = series.axis;\n                var key = axisName + series.stack;\n\n                var limits = limitsCache[key];\n                if (!limits) {\n                    limits = this$1.stackLimits(axisName, series.stack);\n\n                    var errorTotals = this$1.errorTotals;\n                    if (errorTotals) {\n                        if (errorTotals.negative.length) {\n                            limits.min = Math.min(limits.min, sparseArrayLimits(errorTotals.negative).min);\n                        }\n                        if (errorTotals.positive.length) {\n                            limits.max = Math.max(limits.max, sparseArrayLimits(errorTotals.positive).max);\n                        }\n                    }\n\n                    if (limits.min !== MAX_VALUE || limits.max !== MIN_VALUE) {\n                        limitsCache[key] = limits;\n                    } else {\n                        limits = null;\n                    }\n                }\n\n                if (limits) {\n                    this$1.valueAxisRanges[axisName] = limits;\n                }\n            }\n        }\n    };\n\n    CategoricalChart.prototype.addErrorBar = function addErrorBar (point, data, categoryIx) {\n        var value = point.value;\n        var series = point.series;\n        var seriesIx = point.seriesIx;\n        var errorBars = point.options.errorBars;\n        var lowValue = data.fields[ERROR_LOW_FIELD];\n        var highValue = data.fields[ERROR_HIGH_FIELD];\n        var errorRange;\n\n        if (isNumber(lowValue) && isNumber(highValue)) {\n            errorRange = { low: lowValue, high: highValue };\n        } else if (errorBars && defined(errorBars.value)) {\n            this.seriesErrorRanges = this.seriesErrorRanges || [];\n            this.seriesErrorRanges[seriesIx] = this.seriesErrorRanges[seriesIx] ||\n                new ErrorRangeCalculator(errorBars.value, series, VALUE);\n\n            errorRange = this.seriesErrorRanges[seriesIx].getErrorRange(value, errorBars.value);\n        }\n\n        if (errorRange) {\n            point.low = errorRange.low;\n            point.high = errorRange.high;\n            this.addPointErrorBar(point, categoryIx);\n        }\n    };\n\n    CategoricalChart.prototype.addPointErrorBar = function addPointErrorBar (point, categoryIx) {\n        var isVertical = !this.options.invertAxes;\n        var options = point.options.errorBars;\n        var series = point.series;\n        var low = point.low;\n        var high = point.high;\n\n        if (this.options.isStacked) {\n            var stackedErrorRange = this.stackedErrorRange(point, categoryIx);\n            low = stackedErrorRange.low;\n            high = stackedErrorRange.high;\n        } else {\n            var fields = { categoryIx: categoryIx, series: series };\n            this.updateRange({ value: low }, fields);\n            this.updateRange({ value: high }, fields);\n        }\n\n        var errorBar = new CategoricalErrorBar(low, high, isVertical, this, series, options);\n        point.errorBars = [ errorBar ];\n        point.append(errorBar);\n    };\n\n    CategoricalChart.prototype.stackedErrorRange = function stackedErrorRange (point, categoryIx) {\n        var plotValue = this.plotRange(point, 0)[1] - point.value;\n        var low = point.low + plotValue;\n        var high = point.high + plotValue;\n\n        this.errorTotals = this.errorTotals || { positive: [], negative: [] };\n\n        if (low < 0) {\n            this.errorTotals.negative[categoryIx] = Math.min(this.errorTotals.negative[categoryIx] || 0, low);\n        }\n\n        if (high > 0) {\n            this.errorTotals.positive[categoryIx] = Math.max(this.errorTotals.positive[categoryIx] || 0, high);\n        }\n\n        return { low: low, high: high };\n    };\n\n    CategoricalChart.prototype.addValue = function addValue (data, fields) {\n        var categoryIx = fields.categoryIx;\n        var series = fields.series;\n        var seriesIx = fields.seriesIx;\n\n        var categoryPoints = this.categoryPoints[categoryIx];\n        if (!categoryPoints) {\n            this.categoryPoints[categoryIx] = categoryPoints = [];\n        }\n\n        var seriesPoints = this.seriesPoints[seriesIx];\n        if (!seriesPoints) {\n            this.seriesPoints[seriesIx] = seriesPoints = [];\n        }\n\n        var point = this.createPoint(data, fields);\n        if (point) {\n            Object.assign(point, fields);\n\n            point.owner = this;\n            point.noteText = data.fields.noteText;\n            if (!defined(point.dataItem)) {\n                point.dataItem = series.data[categoryIx];\n            }\n            this.addErrorBar(point, data, categoryIx);\n        }\n\n        this.points.push(point);\n        seriesPoints.push(point);\n        categoryPoints.push(point);\n\n        this.updateRange(data.valueFields, fields);\n    };\n\n    CategoricalChart.prototype.evalPointOptions = function evalPointOptions (options, value, fields) {\n        var categoryIx = fields.categoryIx;\n        var category = fields.category;\n        var series = fields.series;\n        var seriesIx = fields.seriesIx;\n        var state = {\n            defaults: series._defaults,\n            excluded: [\n                \"data\", \"aggregate\", \"_events\", \"tooltip\", \"content\", \"template\",\n                \"visual\", \"toggle\", \"_outOfRangeMinPoint\", \"_outOfRangeMaxPoint\",\n                \"drilldownSeriesFactory\"\n            ]\n        };\n\n        var doEval = this._evalSeries[seriesIx];\n        if (!defined(doEval)) {\n            this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n        }\n\n        var pointOptions = options;\n        if (doEval) {\n            pointOptions = deepExtend({}, pointOptions);\n            evalOptions(pointOptions, {\n                value: value,\n                category: category,\n                index: categoryIx,\n                series: series,\n                dataItem: series.data[categoryIx]\n            }, state);\n        }\n\n        return pointOptions;\n    };\n\n    CategoricalChart.prototype.updateRange = function updateRange (data, fields) {\n        var axisName = fields.series.axis;\n        var value = data.value;\n        var axisRange = this.valueAxisRanges[axisName];\n\n        if (isFinite(value) && value !== null) {\n            axisRange = this.valueAxisRanges[axisName] =\n                axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n            axisRange.min = Math.min(axisRange.min, value);\n            axisRange.max = Math.max(axisRange.max, value);\n        }\n    };\n\n    CategoricalChart.prototype.seriesValueAxis = function seriesValueAxis (series) {\n        var plotArea = this.plotArea;\n        var axisName = series.axis;\n        var axis = axisName ? plotArea.namedValueAxes[axisName] : plotArea.valueAxis;\n\n        if (!axis) {\n            throw new Error(\"Unable to locate value axis with name \" + axisName);\n        }\n\n        return axis;\n    };\n\n    CategoricalChart.prototype.reflow = function reflow (targetBox) {\n        var this$1 = this;\n\n        var categorySlots = this.categorySlots = [];\n        var chartPoints = this.points;\n        var categoryAxis = this.categoryAxis;\n        var pointIx = 0;\n\n        this.traverseDataPoints(function (data, fields) {\n            var categoryIx = fields.categoryIx;\n            var currentSeries = fields.series;\n\n            var valueAxis = this$1.seriesValueAxis(currentSeries);\n            var point = chartPoints[pointIx++];\n\n            var categorySlot = categorySlots[categoryIx];\n            if (!categorySlot) {\n                categorySlots[categoryIx] = categorySlot =\n                    this$1.categorySlot(categoryAxis, categoryIx, valueAxis);\n            }\n\n            if (point) {\n                var plotRange = this$1.plotRange(point, valueAxis.startValue());\n                var valueSlot = this$1.valueSlot(valueAxis, plotRange);\n                if (valueSlot) {\n                    var pointSlot = this$1.pointSlot(categorySlot, valueSlot);\n\n                    point.aboveAxis = this$1.aboveAxis(point, valueAxis);\n                    point.stackValue = plotRange[1];\n\n                    if (this$1.options.isStacked100) {\n                        point.percentage = this$1.plotValue(point);\n                    }\n\n                    this$1.reflowPoint(point, pointSlot);\n                } else {\n                    point.visible = false;\n                }\n            }\n        });\n\n        this.reflowCategories(categorySlots);\n        if (!this.options.clip && this.options.limitPoints && this.points.length) {\n            this.limitPoints();\n        }\n\n        this.box = targetBox;\n    };\n\n    CategoricalChart.prototype.valueSlot = function valueSlot (valueAxis, plotRange) {\n        return valueAxis.getSlot(plotRange[0], plotRange[1], !this.options.clip);\n    };\n\n    CategoricalChart.prototype.limitPoints = function limitPoints () {\n        var this$1 = this;\n\n        var categoryPoints = this.categoryPoints;\n        var points = categoryPoints[0].concat(last(categoryPoints));\n        for (var idx = 0; idx < points.length; idx++) {\n            if (points[idx]) {\n                this$1.limitPoint(points[idx]);\n            }\n        }\n    };\n\n    CategoricalChart.prototype.limitPoint = function limitPoint (point) {\n        var limitedSlot = this.categoryAxis.limitSlot(point.box);\n        if (!limitedSlot.equals(point.box)) {\n            point.reflow(limitedSlot);\n        }\n    };\n\n    CategoricalChart.prototype.aboveAxis = function aboveAxis (point, valueAxis) {\n        var axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n        var value = point.value;\n\n        return valueAxis.options.reverse ?\n            value < axisCrossingValue : value >= axisCrossingValue;\n    };\n\n    CategoricalChart.prototype.categoryAxisCrossingValue = function categoryAxisCrossingValue (valueAxis) {\n        var categoryAxis = this.categoryAxis;\n        var options = valueAxis.options;\n        var crossingValues = [].concat(\n            options.axisCrossingValues || options.axisCrossingValue\n        );\n\n        return crossingValues[categoryAxis.axisIndex || 0] || 0;\n    };\n\n    CategoricalChart.prototype.reflowPoint = function reflowPoint (point, pointSlot) {\n        point.reflow(pointSlot);\n    };\n\n    CategoricalChart.prototype.reflowCategories = function reflowCategories () { };\n\n    CategoricalChart.prototype.pointSlot = function pointSlot (categorySlot, valueSlot) {\n        var options = this.options;\n        var invertAxes = options.invertAxes;\n        var slotX = invertAxes ? valueSlot : categorySlot;\n        var slotY = invertAxes ? categorySlot : valueSlot;\n\n        return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n    };\n\n    CategoricalChart.prototype.categorySlot = function categorySlot (categoryAxis, categoryIx) {\n        return categoryAxis.getSlot(categoryIx);\n    };\n\n    CategoricalChart.prototype.traverseDataPoints = function traverseDataPoints (callback) {\n        var this$1 = this;\n\n        var series = this.options.series;\n        var count = categoriesCount(series);\n        var seriesCount = series.length;\n\n        for (var seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n            this$1._outOfRangeCallback(series[seriesIx], \"_outOfRangeMinPoint\", seriesIx, callback);\n        }\n\n        for (var categoryIx = 0; categoryIx < count; categoryIx++) {\n            for (var seriesIx$1 = 0; seriesIx$1 < seriesCount; seriesIx$1++) {\n                var currentSeries = series[seriesIx$1];\n                var currentCategory = this$1.categoryAxis.categoryAt(categoryIx);\n                var pointData = this$1.plotArea.bindPoint(currentSeries, categoryIx);\n\n                callback(pointData, {\n                    category: currentCategory,\n                    categoryIx: categoryIx,\n                    categoriesCount: count,\n                    series: currentSeries,\n                    seriesIx: seriesIx$1\n                });\n            }\n        }\n\n        for (var seriesIx$2 = 0; seriesIx$2 < seriesCount; seriesIx$2++) {\n            this$1._outOfRangeCallback(series[seriesIx$2], \"_outOfRangeMaxPoint\", seriesIx$2, callback);\n        }\n    };\n\n    CategoricalChart.prototype._outOfRangeCallback = function _outOfRangeCallback (series, field, seriesIx, callback) {\n        var outOfRangePoint = series[field];\n        if (outOfRangePoint) {\n            var categoryIx = outOfRangePoint.categoryIx;\n            var pointData = this.plotArea.bindPoint(series, categoryIx, outOfRangePoint.item);\n\n            callback(pointData, {\n                category: outOfRangePoint.category,\n                categoryIx: categoryIx,\n                series: series,\n                seriesIx: seriesIx,\n                dataItem: outOfRangePoint.item\n            });\n        }\n    };\n\n    CategoricalChart.prototype.formatPointValue = function formatPointValue (point, format) {\n        if (point.value === null) {\n            return \"\";\n        }\n\n        return this.chartService.format.auto(format, point.value);\n    };\n\n    CategoricalChart.prototype.pointValue = function pointValue (data) {\n        return data.valueFields.value;\n    };\n\n    return CategoricalChart;\n}(ChartElement));\n\nsetDefaultOptions(CategoricalChart, {\n    series: [],\n    invertAxes: false,\n    isStacked: false,\n    clip: true,\n    limitPoints: true\n});\n\nexport default CategoricalChart;\n","import { SERIES_CLICK, SERIES_HOVER, SERIES_LEAVE, SERIES_OVER } from '../constants';\nimport { eventElement } from '../../common';\n\nvar PointEventsMixin = {\n    click: function(chart, e) {\n        return chart.trigger(\n            SERIES_CLICK,\n            this.eventArgs(e)\n        );\n    },\n\n    hover: function(chart, e) {\n        return chart.trigger(\n            SERIES_HOVER,\n            this.eventArgs(e)\n        );\n    },\n\n    over: function(chart, e) {\n        return chart.trigger(\n            SERIES_OVER,\n            this.eventArgs(e)\n        );\n    },\n\n    out: function(chart, e) {\n        return chart.trigger(\n            SERIES_LEAVE,\n            this.eventArgs(e)\n        );\n    },\n\n    eventArgs: function(e) {\n        return {\n            value: this.value,\n            percentage: this.percentage,\n            stackValue: this.stackValue,\n            category: this.category,\n            series: this.series,\n            dataItem: this.dataItem,\n            runningTotal: this.runningTotal,\n            total: this.total,\n            element: eventElement(e),\n            originalEvent: e,\n            point: this\n        };\n    }\n};\n\nexport default PointEventsMixin;","import { Note } from '../../core';\nimport { defined } from '../../common';\n\nvar NoteMixin = {\n    createNote: function() {\n        var options = this.options.notes;\n        var text = this.noteText || options.label.text;\n\n        if (options.visible !== false && defined(text) && text !== null) {\n            this.note = new Note({\n                value: this.value,\n                text: text,\n                dataItem: this.dataItem,\n                category: this.category,\n                series: this.series\n            }, this.options.notes, this.owner.chartService);\n\n            this.append(this.note);\n        }\n    }\n};\n\nexport default NoteMixin;","import { geometry as geom, Color } from '@progress/kendo-drawing';\n\nimport { ChartElement, TextBox, ShapeElement, Box, Point } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\nimport { LINE_MARKER_SIZE, FADEIN, INITIAL_ANIMATION_DURATION, BORDER_BRIGHTNESS, TOOLTIP_OFFSET, ABOVE, BELOW } from '../constants';\n\nimport { WHITE, CIRCLE, CENTER, TOP, BOTTOM, LEFT, HIGHLIGHT_ZINDEX } from '../../common/constants';\nimport { deepExtend, defined, getTemplate, valueOrDefault, getSpacing } from '../../common';\n\nvar LinePoint = (function (ChartElement) {\n    function LinePoint(value, options) {\n        ChartElement.call(this);\n\n        this.value = value;\n        this.options = options;\n        this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n        this.tooltipTracking = true;\n    }\n\n    if ( ChartElement ) LinePoint.__proto__ = ChartElement;\n    LinePoint.prototype = Object.create( ChartElement && ChartElement.prototype );\n    LinePoint.prototype.constructor = LinePoint;\n\n    LinePoint.prototype.render = function render () {\n        var ref = this.options;\n        var markers = ref.markers;\n        var labels = ref.labels;\n\n        if (this._rendered) {\n            return;\n        }\n\n        this._rendered = true;\n\n        if (markers.visible && markers.size) {\n            this.marker = this.createMarker();\n            this.append(this.marker);\n        }\n\n        if (labels.visible) {\n            var labelTemplate = getTemplate(labels);\n            var pointData = this.pointData();\n            var labelText = this.value;\n            if (labelTemplate) {\n                labelText = labelTemplate(pointData);\n            } else if (labels.format) {\n                labelText = this.formatValue(labels.format);\n            }\n            this.label = new TextBox(labelText,\n                deepExtend({\n                    align: CENTER,\n                    vAlign: CENTER,\n                    margin: {\n                        left: 5,\n                        right: 5\n                    },\n                    zIndex: valueOrDefault(labels.zIndex, this.series.zIndex)\n                }, labels),\n                pointData\n            );\n            this.append(this.label);\n        }\n\n        this.createNote();\n\n        if (this.errorBar) {\n            this.append(this.errorBar);\n        }\n    };\n\n    LinePoint.prototype.markerBorder = function markerBorder () {\n        var options = this.options.markers;\n        var background = options.background;\n        var border = deepExtend({ color: this.color }, options.border);\n\n        if (!defined(border.color)) {\n            border.color = new Color(background).brightness(BORDER_BRIGHTNESS).toHex();\n        }\n\n        return border;\n    };\n\n    LinePoint.prototype.createVisual = function createVisual () {};\n\n    LinePoint.prototype.createMarker = function createMarker () {\n        var options = this.options.markers;\n        var marker = new ShapeElement({\n            type: options.type,\n            width: options.size,\n            height: options.size,\n            rotation: options.rotation,\n            background: options.background,\n            border: this.markerBorder(),\n            opacity: options.opacity,\n            zIndex: valueOrDefault(options.zIndex, this.series.zIndex),\n            animation: options.animation,\n            visual: options.visual\n        }, {\n            dataItem: this.dataItem,\n            value: this.value,\n            series: this.series,\n            category: this.category\n        });\n\n        return marker;\n    };\n\n    LinePoint.prototype.markerBox = function markerBox () {\n        if (!this.marker) {\n            this.marker = this.createMarker();\n            this.marker.reflow(this._childBox);\n        }\n\n        return this.marker.box;\n    };\n\n    LinePoint.prototype.reflow = function reflow (targetBox) {\n        var this$1 = this;\n\n        var ref = this;\n        var options = ref.options;\n        var aboveAxis = ref.aboveAxis;\n        var vertical = options.vertical;\n\n        this.render();\n\n        this.box = targetBox;\n        var childBox = targetBox.clone();\n\n        if (vertical) {\n            if (aboveAxis) {\n                childBox.y1 -= childBox.height();\n            } else {\n                childBox.y2 += childBox.height();\n            }\n        } else {\n            if (aboveAxis) {\n                childBox.x1 += childBox.width();\n            } else {\n                childBox.x2 -= childBox.width();\n            }\n        }\n\n        this._childBox = childBox;\n        if (this.marker) {\n            this.marker.reflow(childBox);\n        }\n\n        this.reflowLabel(childBox);\n\n        if (this.errorBars) {\n            for (var i = 0; i < this.errorBars.length; i++) {\n                this$1.errorBars[i].reflow(childBox);\n            }\n        }\n\n        if (this.note) {\n            var noteTargetBox = this.markerBox();\n\n            if (!(options.markers.visible && options.markers.size)) {\n                var center = noteTargetBox.center();\n                noteTargetBox = new Box(center.x, center.y, center.x, center.y);\n            }\n\n            this.note.reflow(noteTargetBox);\n        }\n    };\n\n    LinePoint.prototype.reflowLabel = function reflowLabel (box) {\n        var ref = this;\n        var options = ref.options;\n        var label = ref.label;\n        var anchor = options.labels.position;\n\n        if (label) {\n            anchor = anchor === ABOVE ? TOP : anchor;\n            anchor = anchor === BELOW ? BOTTOM : anchor;\n\n            label.reflow(box);\n            label.box.alignTo(this.markerBox(), anchor);\n            label.reflow(label.box);\n        }\n    };\n\n    LinePoint.prototype.createHighlight = function createHighlight () {\n        var markers = this.options.highlight.markers;\n        var defaultColor = this.markerBorder().color;\n        var options = this.options.markers;\n        var size = options.size + (options.border.width || 0) + (markers.border.width || 0);\n\n        var shadow = new ShapeElement({\n            type: options.type,\n            width: size,\n            height: size,\n            rotation: options.rotation,\n            background: markers.color || defaultColor,\n            border: {\n                color: markers.border.color,\n                width: markers.border.width,\n                opacity: valueOrDefault(markers.border.opacity, 1)\n            },\n            opacity: valueOrDefault(markers.opacity, 1)\n        });\n        shadow.reflow(this._childBox);\n\n        return shadow.getElement();\n    };\n\n    LinePoint.prototype.highlightVisual = function highlightVisual () {\n        return (this.marker || {}).visual;\n    };\n\n    LinePoint.prototype.highlightVisualArgs = function highlightVisualArgs () {\n        var marker = this.marker;\n        var visual, rect;\n\n        if (marker) {\n            rect = marker.paddingBox.toRect();\n            visual = marker.visual;\n        } else {\n            var size = this.options.markers.size;\n            var halfSize = size / 2;\n            var center = this.box.center();\n            rect = new geom.Rect([ center.x - halfSize, center.y - halfSize ], [ size, size ]);\n        }\n\n        return {\n            options: this.options,\n            rect: rect,\n            visual: visual\n        };\n    };\n\n    LinePoint.prototype.tooltipAnchor = function tooltipAnchor () {\n        var markerBox = this.markerBox();\n        var clipBox = this.owner.pane.clipBox();\n        var showTooltip = !clipBox || clipBox.overlaps(markerBox);\n\n        if (showTooltip) {\n            var x = markerBox.x2 + TOOLTIP_OFFSET;\n            var horizontalAlign = LEFT;\n            var y, verticalAlign;\n\n            if (this.aboveAxis) {\n                y = markerBox.y1;\n                verticalAlign = BOTTOM;\n            } else {\n                y = markerBox.y2;\n                verticalAlign = TOP;\n            }\n\n            return {\n                point: new Point(x, y),\n                align: {\n                    horizontal: horizontalAlign,\n                    vertical: verticalAlign\n                }\n            };\n        }\n    };\n\n    LinePoint.prototype.formatValue = function formatValue (format) {\n        return this.owner.formatPointValue(this, format);\n    };\n\n    LinePoint.prototype.overlapsBox = function overlapsBox (box) {\n        var markerBox = this.markerBox();\n        return markerBox.overlaps(box);\n    };\n\n    LinePoint.prototype.unclipElements = function unclipElements () {\n        if (this.label) {\n            this.label.options.noclip = true;\n        }\n\n        if (this.note) {\n            this.note.options.noclip = true;\n        }\n    };\n\n    LinePoint.prototype.pointData = function pointData () {\n        return {\n            dataItem: this.dataItem,\n            category: this.category,\n            value: this.value,\n            percentage: this.percentage,\n            stackValue: this.stackValue,\n            series: this.series\n        };\n    };\n\n    return LinePoint;\n}(ChartElement));\n\nLinePoint.prototype.defaults = {\n    vertical: true,\n    markers: {\n        visible: true,\n        background: WHITE,\n        size: LINE_MARKER_SIZE,\n        type: CIRCLE,\n        border: {\n            width: 2\n        },\n        opacity: 1\n    },\n    labels: {\n        visible: false,\n        position: ABOVE,\n        margin: getSpacing(3),\n        padding: getSpacing(4),\n        animation: {\n            type: FADEIN,\n            delay: INITIAL_ANIMATION_DURATION\n        }\n    },\n    notes: {\n        label: {}\n    },\n    highlight: {\n        markers: {\n            border: {\n                color: \"#fff\",\n                width: 2\n            }\n        },\n        zIndex: HIGHLIGHT_ZINDEX\n    },\n    errorBars: {\n        line: {\n            width: 1\n        }\n    }\n};\n\ndeepExtend(LinePoint.prototype, PointEventsMixin);\ndeepExtend(LinePoint.prototype, NoteMixin);\n\nexport default LinePoint;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement } from '../../core';\n\nimport { defined, isFunction, setDefaultOptions } from '../../common';\n\nvar LineSegment = (function (ChartElement) {\n    function LineSegment(linePoints, series, seriesIx) {\n        ChartElement.call(this);\n\n        this.linePoints = linePoints;\n        this.series = series;\n        this.seriesIx = seriesIx;\n    }\n\n    if ( ChartElement ) LineSegment.__proto__ = ChartElement;\n    LineSegment.prototype = Object.create( ChartElement && ChartElement.prototype );\n    LineSegment.prototype.constructor = LineSegment;\n\n    LineSegment.prototype.points = function points () {\n        return this.toGeometryPoints(this.linePoints);\n    };\n\n    LineSegment.prototype.toGeometryPoints = function toGeometryPoints (points) {\n        var result = [];\n        for (var i = 0, length = points.length; i < length; i++) {\n            if (points[i] && points[i].visible !== false) {\n                result.push(points[i]._childBox.toRect().center());\n            }\n        }\n\n        return result;\n    };\n\n    LineSegment.prototype.createVisual = function createVisual () {\n        var this$1 = this;\n\n        var customVisual = this.series.visual;\n        if (customVisual) {\n            this.visual = customVisual({\n                points: this.toGeometryPoints(this.linePoints),\n                series: this.series,\n                sender: this.getSender(),\n                createVisual: function () {\n                    this$1.segmentVisual();\n\n                    return this$1.visual;\n                }\n            });\n            if (this.visual && !defined(this.visual.options.zIndex)) {\n                this.visual.options.zIndex = this.series.zIndex;\n            }\n        } else {\n            this.segmentVisual();\n        }\n    };\n\n    LineSegment.prototype.segmentVisual = function segmentVisual () {\n        var ref = this;\n        var options = ref.options;\n        var series = ref.series;\n        var color = series.color;\n        var defaults = series._defaults;\n\n        if (isFunction(color) && defaults) {\n            color = defaults.color;\n        }\n\n        var line = draw.Path.fromPoints(this.points(), {\n            stroke: {\n                color: color,\n                width: series.width,\n                opacity: series.opacity,\n                dashType: series.dashType\n            },\n            zIndex: series.zIndex\n        });\n\n        if (options.closed) {\n            line.close();\n        }\n\n        this.visual = line;\n    };\n\n    LineSegment.prototype.aliasFor = function aliasFor (e, coords) {\n        return this.parent.getNearestPoint(coords.x, coords.y, this.seriesIx);\n    };\n\n    return LineSegment;\n}(ChartElement));\n\nsetDefaultOptions(LineSegment, {\n    closed: false\n});\n\nexport default LineSegment;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport { last } from '../../common';\nimport { X, Y } from '../../common/constants';\n\nvar StepLineMixin = {\n    calculateStepPoints: function(points) {\n        var categoryAxis = this.parent.plotArea.seriesCategoryAxis(this.series);\n        var ref = categoryAxis.options;\n        var justified = ref.justified;\n        var vertical = ref.vertical;\n        var reverse = ref.reverse;\n\n        var stepAxis = vertical ? X : Y;\n        var axis = vertical ? Y : X;\n        var stepDir = reverse ? 2 : 1;\n        var dir = stepDir;\n\n        var previousPoint = toGeometryPoint(points[0], stepAxis, stepDir, axis, dir);\n        var result = [ previousPoint ];\n\n        for (var idx = 1; idx < points.length; idx++) {\n            var point = toGeometryPoint(points[idx], stepAxis, stepDir, axis, dir);\n\n            if (previousPoint[stepAxis] !== point[stepAxis]) {\n                var stepPoint = new geom.Point();\n                stepPoint[stepAxis] = previousPoint[stepAxis];\n                stepPoint[axis] = point[axis];\n\n                result.push(stepPoint, point);\n            }\n\n            previousPoint = point;\n        }\n\n        if (!justified) {\n            result.push(toGeometryPoint(last(points), stepAxis, stepDir, axis, reverse ? 1 : 2));\n        } else if (previousPoint !== last(result)) {\n            result.push(previousPoint);\n        }\n\n        return result;\n\n    }\n};\n\nfunction toGeometryPoint(lintPoint, stepAxis, stepDir, axis, dir) {\n    var box = lintPoint.box;\n    var result = new geom.Point();\n\n    result[stepAxis] = box[stepAxis + stepDir];\n    result[axis] = box[axis + dir];\n\n    return result;\n}\n\nexport default StepLineMixin;","import LineSegment from './line-segment';\nimport StepLineMixin from './step-line-mixin';\nimport { deepExtend } from '../../common';\n\nvar StepLineSegment = (function (LineSegment) {\n    function StepLineSegment () {\n        LineSegment.apply(this, arguments);\n    }\n\n    if ( LineSegment ) StepLineSegment.__proto__ = LineSegment;\n    StepLineSegment.prototype = Object.create( LineSegment && LineSegment.prototype );\n    StepLineSegment.prototype.constructor = StepLineSegment;\n\n    StepLineSegment.prototype.points = function points () {\n        return this.calculateStepPoints(this.linePoints);\n    };\n\n    return StepLineSegment;\n}(LineSegment));\n\ndeepExtend(StepLineSegment.prototype, StepLineMixin);\n\nexport default StepLineSegment;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport LineSegment from './line-segment';\n\nimport { CurveProcessor } from '../../core';\n\nimport { isFunction } from '../../common';\n\nvar SplineSegment = (function (LineSegment) {\n    function SplineSegment () {\n        LineSegment.apply(this, arguments);\n    }\n\n    if ( LineSegment ) SplineSegment.__proto__ = LineSegment;\n    SplineSegment.prototype = Object.create( LineSegment && LineSegment.prototype );\n    SplineSegment.prototype.constructor = SplineSegment;\n\n    SplineSegment.prototype.segmentVisual = function segmentVisual () {\n        var series = this.series;\n        var defaults = series._defaults;\n        var color = series.color;\n\n        if (isFunction(color) && defaults) {\n            color = defaults.color;\n        }\n\n        var curveProcessor = new CurveProcessor(this.options.closed);\n        var segments = curveProcessor.process(this.points());\n        var curve = new draw.Path({\n            stroke: {\n                color: color,\n                width: series.width,\n                opacity: series.opacity,\n                dashType: series.dashType\n            },\n            zIndex: series.zIndex\n        });\n\n        curve.segments.push.apply(curve.segments, segments);\n\n        this.visual = curve;\n    };\n\n    return SplineSegment;\n}(LineSegment));\n\nexport default SplineSegment;","import { ZERO, INTERPOLATE } from '../constants';\n\nimport { Point } from '../../core';\nimport { MAX_VALUE } from '../../common/constants';\nimport { defined } from '../../common';\n\nvar LineChartMixin = {\n    renderSegments: function() {\n        var this$1 = this;\n\n        var ref = this;\n        var options = ref.options;\n        var seriesPoints = ref.seriesPoints;\n        var series = options.series;\n        var seriesCount = seriesPoints.length;\n        var lastSegment;\n\n        this._segments = [];\n\n        for (var seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n            var currentSeries = series[seriesIx];\n            var sortedPoints = this$1.sortPoints(seriesPoints[seriesIx]);\n            var pointCount = sortedPoints.length;\n            var linePoints = [];\n\n            for (var pointIx = 0; pointIx < pointCount; pointIx++) {\n                var point = sortedPoints[pointIx];\n                if (point) {\n                    linePoints.push(point);\n                } else if (this$1.seriesMissingValues(currentSeries) !== INTERPOLATE) {\n                    if (linePoints.length > 1) {\n                        lastSegment = this$1.createSegment(\n                            linePoints, currentSeries, seriesIx, lastSegment\n                        );\n                        this$1._addSegment(lastSegment);\n                    }\n                    linePoints = [];\n                }\n            }\n\n            if (linePoints.length > 1) {\n                lastSegment = this$1.createSegment(\n                    linePoints, currentSeries, seriesIx, lastSegment\n                );\n                this$1._addSegment(lastSegment);\n            }\n        }\n\n        this.children.unshift.apply(this.children, this._segments);\n    },\n\n    _addSegment: function(segment) {\n        this._segments.push(segment);\n        segment.parent = this;\n    },\n\n    sortPoints: function(points) {\n        return points;\n    },\n\n    seriesMissingValues: function(series) {\n        var missingValues = series.missingValues;\n        var assumeZero = !missingValues && this.options.isStacked;\n\n        return assumeZero ? ZERO : missingValues || INTERPOLATE;\n    },\n\n    getNearestPoint: function(x, y, seriesIx) {\n        var target = new Point(x, y);\n        var allPoints = this.seriesPoints[seriesIx];\n        var nearestPointDistance = MAX_VALUE;\n        var nearestPoint;\n\n        for (var i = 0; i < allPoints.length; i++) {\n            var point = allPoints[i];\n\n            if (point && defined(point.value) && point.value !== null && point.visible !== false) {\n                var pointBox = point.box;\n                var pointDistance = pointBox.center().distanceTo(target);\n\n                if (pointDistance < nearestPointDistance) {\n                    nearestPoint = point;\n                    nearestPointDistance = pointDistance;\n                }\n            }\n        }\n\n        return nearestPoint;\n    }\n};\n\nexport default LineChartMixin;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { interpolateValue, setDefaultOptions } from '../../common';\n\nvar ClipAnimation = (function (superclass) {\n    function ClipAnimation () {\n        superclass.apply(this, arguments);\n    }\n\n    if ( superclass ) ClipAnimation.__proto__ = superclass;\n    ClipAnimation.prototype = Object.create( superclass && superclass.prototype );\n    ClipAnimation.prototype.constructor = ClipAnimation;\n\n    ClipAnimation.prototype.setup = function setup () {\n        this._setEnd(this.options.box.x1);\n    };\n\n    ClipAnimation.prototype.step = function step (pos) {\n        var box = this.options.box;\n        this._setEnd(interpolateValue(box.x1, box.x2, pos));\n    };\n\n    ClipAnimation.prototype._setEnd = function _setEnd (x) {\n        var element = this.element;\n        var segments = element.segments;\n        var topRight = segments[1].anchor();\n        var bottomRight = segments[2].anchor();\n\n        element.suspend();\n        topRight.setX(x);\n        element.resume();\n        bottomRight.setX(x);\n    };\n\n    return ClipAnimation;\n}(draw.Animation));\n\nsetDefaultOptions(ClipAnimation, {\n    duration: INITIAL_ANIMATION_DURATION\n});\n\ndraw.AnimationFactory.current.register(\"clip\", ClipAnimation);\n\nexport default ClipAnimation;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ClipAnimation from '../animations/clip-animation';\nimport anyHasZIndex from '../utils/any-has-z-index';\nimport { defined } from '../../common';\n\nvar ClipAnimationMixin = {\n    createAnimation: function() {\n        var root = this.getRoot();\n        if (root && (root.options || {}).transitions !== false) {\n            var box = root.size();\n            var clipPath = draw.Path.fromRect(box.toRect());\n            this.visual.clip(clipPath);\n            this.animation = new ClipAnimation(clipPath, {\n                box: box\n            });\n            if (anyHasZIndex(this.options.series)) {\n                this._setChildrenAnimation(clipPath);\n            }\n        }\n    },\n\n    _setChildrenAnimation: function(clipPath) {\n        var points = this.animationPoints();\n\n        for (var idx = 0; idx < points.length; idx++) {\n            var point = points[idx];\n            if (point && point.visual && defined(point.visual.options.zIndex)) {\n                point.visual.clip(clipPath);\n            }\n        }\n    }\n};\n\nexport default ClipAnimationMixin;","import CategoricalChart from '../categorical-chart';\nimport LinePoint from './line-point';\nimport LineSegment from './line-segment';\nimport StepLineSegment from './step-line-segment';\nimport SplineSegment from './spline-segment';\nimport LineChartMixin from '../mixins/line-chart-mixin';\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\n\nimport { ZERO, SMOOTH, STEP } from '../constants';\n\nimport { deepExtend, defined, isFunction } from '../../common';\n\nvar LineChart = (function (CategoricalChart) {\n    function LineChart () {\n        CategoricalChart.apply(this, arguments);\n    }\n\n    if ( CategoricalChart ) LineChart.__proto__ = CategoricalChart;\n    LineChart.prototype = Object.create( CategoricalChart && CategoricalChart.prototype );\n    LineChart.prototype.constructor = LineChart;\n\n    LineChart.prototype.render = function render () {\n\n        CategoricalChart.prototype.render.call(this);\n\n        this.updateStackRange();\n        this.renderSegments();\n    };\n\n    LineChart.prototype.pointType = function pointType () {\n        return LinePoint;\n    };\n\n    LineChart.prototype.createPoint = function createPoint (data, fields) {\n        var series = fields.series;\n        var seriesIx = fields.seriesIx;\n        var missingValues = this.seriesMissingValues(series);\n        var value = data.valueFields.value;\n\n        if (!defined(value) || value === null) {\n            if (missingValues === ZERO) {\n                value = 0;\n            } else {\n                return null;\n            }\n        }\n\n        var pointOptions = this.pointOptions(series, seriesIx);\n        pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n        var color = data.fields.color || series.color;\n        if (isFunction(series.color)) {\n            color = pointOptions.color;\n        }\n\n        var point = new LinePoint(value, pointOptions);\n        point.color = color;\n\n        this.append(point);\n\n        return point;\n    };\n\n    LineChart.prototype.plotRange = function plotRange (point) {\n        var this$1 = this;\n\n        var plotValue = this.plotValue(point);\n\n        if (this.options.isStacked) {\n            var categoryIx = point.categoryIx;\n            var categoryPoints = this.categoryPoints[categoryIx];\n\n            for (var i = 0; i < categoryPoints.length; i++) {\n                var other = categoryPoints[i];\n\n                if (point === other) {\n                    break;\n                }\n\n                plotValue += this$1.plotValue(other);\n\n                if (this$1.options.isStacked100) {\n                    plotValue = Math.min(plotValue, 1);\n                }\n            }\n\n        }\n\n        return [ plotValue, plotValue ];\n    };\n\n    LineChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx) {\n        var style = currentSeries.style;\n        var pointType;\n\n        if (style === STEP) {\n            pointType = StepLineSegment;\n        } else if (style === SMOOTH) {\n            pointType = SplineSegment;\n        } else {\n            pointType = LineSegment;\n        }\n\n        return new pointType(linePoints, currentSeries, seriesIx);\n    };\n\n    LineChart.prototype.animationPoints = function animationPoints () {\n        var points = this.points;\n        var result = [];\n        for (var idx = 0; idx < points.length; idx++) {\n            result.push((points[idx] || {}).marker);\n        }\n        return result.concat(this._segments);\n    };\n\n    LineChart.prototype.supportsPointInactiveOpacity = function supportsPointInactiveOpacity () {\n        return false;\n    };\n\n    return LineChart;\n}(CategoricalChart));\n\ndeepExtend(LineChart.prototype, LineChartMixin, ClipAnimationMixin);\n\nexport default LineChart;\n","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\nimport LineSegment from '../line-chart/line-segment';\n\nimport { append, deepExtend, isFunction, last } from '../../common';\n\nvar AreaSegment = (function (LineSegment) {\n    function AreaSegment(linePoints, currentSeries, seriesIx, prevSegment, stackPoints) {\n        LineSegment.call(this, linePoints, currentSeries, seriesIx);\n\n        this.prevSegment = prevSegment;\n        this.stackPoints = stackPoints;\n    }\n\n    if ( LineSegment ) AreaSegment.__proto__ = LineSegment;\n    AreaSegment.prototype = Object.create( LineSegment && LineSegment.prototype );\n    AreaSegment.prototype.constructor = AreaSegment;\n\n    AreaSegment.prototype.createVisual = function createVisual () {\n        var series = this.series;\n        var defaults = series._defaults;\n        var lineOptions = series.line || {};\n        var color = series.color;\n\n        if (isFunction(color) && defaults) {\n            color = defaults.color;\n        }\n\n        this.visual = new draw.Group({\n            zIndex: series.zIndex\n        });\n\n        this.createFill({\n            fill: {\n                color: color,\n                opacity: series.opacity\n            },\n            stroke: null\n        });\n\n        if (lineOptions.width > 0 && lineOptions.visible !== false) {\n            this.createStroke({\n                stroke: deepExtend({\n                    color: color,\n                    opacity: series.opacity,\n                    lineCap: \"butt\"\n                }, lineOptions)\n            });\n        }\n    };\n\n    AreaSegment.prototype.strokeSegments = function strokeSegments () {\n        var segments = this._strokeSegments;\n\n        if (!segments) {\n            segments = this._strokeSegments = this.createStrokeSegments();\n        }\n\n        return segments;\n    };\n\n    AreaSegment.prototype.createStrokeSegments = function createStrokeSegments () {\n        return this.segmentsFromPoints(this.points());\n    };\n\n    AreaSegment.prototype.stackSegments = function stackSegments () {\n        if (this.prevSegment) {\n            return this.prevSegment.createStackSegments(this.stackPoints);\n        }\n\n        return this.createStackSegments(this.stackPoints);\n    };\n\n    AreaSegment.prototype.createStackSegments = function createStackSegments (stackPoints) {\n        return this.segmentsFromPoints(this.toGeometryPoints(stackPoints)).reverse();\n    };\n\n    AreaSegment.prototype.segmentsFromPoints = function segmentsFromPoints (points) {\n        return points.map(function (point) { return new geom.Segment(point); });\n    };\n\n    AreaSegment.prototype.createStroke = function createStroke (style) {\n        var stroke = new draw.Path(style);\n        stroke.segments.push.apply(stroke.segments, this.strokeSegments());\n\n        this.visual.append(stroke);\n    };\n\n    AreaSegment.prototype.hasStackSegment = function hasStackSegment () {\n        return this.prevSegment || (this.stackPoints && this.stackPoints.length);\n    };\n\n    AreaSegment.prototype.createFill = function createFill (style) {\n        var strokeSegments = this.strokeSegments();\n        var fillSegments = strokeSegments.slice(0);\n        var hasStackSegments = this.hasStackSegment();\n\n        if (hasStackSegments) {\n            var stackSegments = this.stackSegments();\n\n            append(fillSegments, stackSegments);\n        }\n\n        var fill = new draw.Path(style);\n        fill.segments.push.apply(fill.segments, fillSegments);\n\n        if (!hasStackSegments && strokeSegments.length > 1) {\n            this.fillToAxes(fill);\n        }\n\n        this.visual.append(fill);\n    };\n\n    AreaSegment.prototype.fillToAxes = function fillToAxes (fillPath) {\n        var chart = this.parent;\n        var invertAxes = chart.options.invertAxes;\n        var valueAxis = chart.seriesValueAxis(this.series);\n        var crossingValue = chart.categoryAxisCrossingValue(valueAxis);\n        var endSlot = valueAxis.getSlot(crossingValue, crossingValue, true);\n        var segments = this.strokeSegments();\n        var firstPoint = segments[0].anchor();\n        var lastPoint = last(segments).anchor();\n        var end = invertAxes ? endSlot.x1 : endSlot.y1;\n\n        if (invertAxes) {\n            fillPath.lineTo(end, lastPoint.y)\n                    .lineTo(end, firstPoint.y);\n        } else {\n            fillPath.lineTo(lastPoint.x, end)\n                    .lineTo(firstPoint.x, end);\n        }\n    };\n\n    return AreaSegment;\n}(LineSegment));\n\nexport default AreaSegment;","import StepLineMixin from '../line-chart/step-line-mixin';\nimport AreaSegment from './area-segment';\n\nimport { deepExtend } from '../../common';\n\nvar StepAreaSegment = (function (AreaSegment) {\n    function StepAreaSegment () {\n        AreaSegment.apply(this, arguments);\n    }\n\n    if ( AreaSegment ) StepAreaSegment.__proto__ = AreaSegment;\n    StepAreaSegment.prototype = Object.create( AreaSegment && AreaSegment.prototype );\n    StepAreaSegment.prototype.constructor = StepAreaSegment;\n\n    StepAreaSegment.prototype.createStrokeSegments = function createStrokeSegments () {\n        return this.segmentsFromPoints(this.calculateStepPoints(this.linePoints));\n    };\n\n    StepAreaSegment.prototype.createStackSegments = function createStackSegments (stackPoints) {\n        return this.segmentsFromPoints(this.calculateStepPoints(stackPoints)).reverse();\n    };\n\n    return StepAreaSegment;\n}(AreaSegment));\n\ndeepExtend(StepAreaSegment.prototype, StepLineMixin);\n\nexport default StepAreaSegment;","import { geometry as geom } from '@progress/kendo-drawing';\nimport { CurveProcessor } from '../../core';\n\nimport AreaSegment from './area-segment';\n\nvar SplineAreaSegment = (function (AreaSegment) {\n    function SplineAreaSegment () {\n        AreaSegment.apply(this, arguments);\n    }\n\n    if ( AreaSegment ) SplineAreaSegment.__proto__ = AreaSegment;\n    SplineAreaSegment.prototype = Object.create( AreaSegment && AreaSegment.prototype );\n    SplineAreaSegment.prototype.constructor = SplineAreaSegment;\n\n    SplineAreaSegment.prototype.createStrokeSegments = function createStrokeSegments () {\n        var curveProcessor = new CurveProcessor(this.options.closed);\n        var linePoints = this.points();\n\n        return curveProcessor.process(linePoints);\n    };\n\n    SplineAreaSegment.prototype.createStackSegments = function createStackSegments () {\n        var strokeSegments = this.strokeSegments();\n        var stackSegments = [];\n        for (var idx = strokeSegments.length - 1; idx >= 0; idx--) {\n            var segment = strokeSegments[idx];\n            stackSegments.push(new geom.Segment(\n                segment.anchor(),\n                segment.controlOut(),\n                segment.controlIn()\n            ));\n        }\n\n        return stackSegments;\n    };\n\n    return SplineAreaSegment;\n}(AreaSegment));\n\nexport default SplineAreaSegment;","import LineChart from '../line-chart/line-chart';\nimport LinePoint from '../line-chart/line-point';\n\nimport AreaSegment from './area-segment';\nimport StepAreaSegment from './step-area-segment';\nimport SplineAreaSegment from './spline-area-segment';\n\nimport { STEP, SMOOTH, ZERO } from '../constants';\n\nvar AreaChart = (function (LineChart) {\n    function AreaChart () {\n        LineChart.apply(this, arguments);\n    }\n\n    if ( LineChart ) AreaChart.__proto__ = LineChart;\n    AreaChart.prototype = Object.create( LineChart && LineChart.prototype );\n    AreaChart.prototype.constructor = AreaChart;\n\n    AreaChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx, prevSegment) {\n        var isStacked = this.options.isStacked;\n        var style = (currentSeries.line || {}).style;\n        var previousSegment;\n\n        var stackPoints;\n        if (isStacked && seriesIx > 0 && prevSegment) {\n            var missingValues = this.seriesMissingValues(currentSeries);\n            if (missingValues !== \"gap\") {\n                stackPoints = prevSegment.linePoints;\n                previousSegment = prevSegment;\n            } else {\n                stackPoints = this._gapStackPoints(linePoints, seriesIx, style);\n            }\n        }\n\n        var pointType;\n        if (style === STEP) {\n            pointType = StepAreaSegment;\n        } else if (style === SMOOTH) {\n            pointType = SplineAreaSegment;\n        } else {\n            pointType = AreaSegment;\n        }\n\n        return new pointType(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n    };\n\n    AreaChart.prototype.reflow = function reflow (targetBox) {\n        var this$1 = this;\n\n        LineChart.prototype.reflow.call(this, targetBox);\n\n        var stackPoints = this._stackPoints;\n        if (stackPoints) {\n            for (var idx = 0; idx < stackPoints.length; idx++) {\n                var stackPoint = stackPoints[idx];\n                var pointSlot = this$1.categoryAxis.getSlot(stackPoint.categoryIx);\n                stackPoint.reflow(pointSlot);\n            }\n        }\n    };\n\n    AreaChart.prototype._gapStackPoints = function _gapStackPoints (linePoints, seriesIx, style) {\n        var this$1 = this;\n\n        var seriesPoints = this.seriesPoints;\n        var startIdx = linePoints[0].categoryIx;\n        var length = linePoints.length;\n        if (startIdx < 0) {\n            startIdx = 0;\n            length--;\n        }\n\n        var endIdx = startIdx + length;\n        var pointOffset = this.seriesOptions[0]._outOfRangeMinPoint ? 1 : 0;\n        var stackPoints = [];\n\n        this._stackPoints = this._stackPoints || [];\n        for (var categoryIx = startIdx; categoryIx < endIdx; categoryIx++) {\n            var pointIx = categoryIx + pointOffset;\n            var currentSeriesIx = seriesIx;\n            var point = (void 0);\n\n            do {\n                currentSeriesIx--;\n                point = seriesPoints[currentSeriesIx][pointIx];\n            } while (currentSeriesIx > 0 && !point);\n\n            if (point) {\n                if (style !== STEP && categoryIx > startIdx && !seriesPoints[currentSeriesIx][pointIx - 1]) {\n                    stackPoints.push(this$1._previousSegmentPoint(categoryIx, pointIx, pointIx - 1, currentSeriesIx));\n                }\n\n                stackPoints.push(point);\n\n                if (style !== STEP && categoryIx + 1 < endIdx && !seriesPoints[currentSeriesIx][pointIx + 1]) {\n                    stackPoints.push(this$1._previousSegmentPoint(categoryIx, pointIx, pointIx + 1, currentSeriesIx));\n                }\n            } else {\n                var gapStackPoint = this$1._createGapStackPoint(categoryIx);\n                this$1._stackPoints.push(gapStackPoint);\n                stackPoints.push(gapStackPoint);\n            }\n        }\n\n        return stackPoints;\n    };\n\n    AreaChart.prototype._previousSegmentPoint = function _previousSegmentPoint (categoryIx, pointIx, segmentIx, seriesIdx) {\n        var seriesPoints = this.seriesPoints;\n        var index = seriesIdx;\n        var point;\n\n        while (index > 0 && !point) {\n            index--;\n            point = seriesPoints[index][segmentIx];\n        }\n\n        if (!point) {\n            point = this._createGapStackPoint(categoryIx);\n            this._stackPoints.push(point);\n        } else {\n            point = seriesPoints[index][pointIx];\n        }\n\n        return point;\n    };\n\n    AreaChart.prototype._createGapStackPoint = function _createGapStackPoint (categoryIx) {\n        var options = this.pointOptions({}, 0);\n        var point = new LinePoint(0, options);\n        point.categoryIx = categoryIx;\n        point.series = {};\n\n        return point;\n    };\n\n    AreaChart.prototype.seriesMissingValues = function seriesMissingValues (series) {\n        return series.missingValues || ZERO;\n    };\n\n    AreaChart.prototype.supportsPointInactiveOpacity = function supportsPointInactiveOpacity () {\n        return false;\n    };\n\n    return AreaChart;\n}(LineChart));\n\nexport default AreaChart;\n","import { MIN_VALUE, MAX_VALUE } from '../common/constants';\nimport { Class } from '../common';\n\nvar AxisGroupRangeTracker = (function (Class) {\n    function AxisGroupRangeTracker() {\n        Class.call(this);\n\n        this.axisRanges = {};\n    }\n\n    if ( Class ) AxisGroupRangeTracker.__proto__ = Class;\n    AxisGroupRangeTracker.prototype = Object.create( Class && Class.prototype );\n    AxisGroupRangeTracker.prototype.constructor = AxisGroupRangeTracker;\n\n    AxisGroupRangeTracker.prototype.update = function update (chartAxisRanges) {\n        var axisRanges = this.axisRanges;\n\n        for (var axisName in chartAxisRanges) {\n            var chartRange = chartAxisRanges[axisName];\n            var range = axisRanges[axisName];\n            axisRanges[axisName] = range = range || { min: MAX_VALUE, max: MIN_VALUE };\n\n            range.min = Math.min(range.min, chartRange.min);\n            range.max = Math.max(range.max, chartRange.max);\n        }\n    };\n\n    AxisGroupRangeTracker.prototype.reset = function reset (axisName) {\n        this.axisRanges[axisName] = undefined;\n    };\n\n    AxisGroupRangeTracker.prototype.query = function query (axisName) {\n        return this.axisRanges[axisName];\n    };\n\n    return AxisGroupRangeTracker;\n}(Class));\n\nexport default AxisGroupRangeTracker;","import { ChartElement, TextBox, Box } from '../../core';\nimport { FADEIN, INITIAL_ANIMATION_DURATION, INSIDE_END, INSIDE_BASE, OUTSIDE_END } from '../constants';\n\nimport { CENTER, TOP, BOTTOM, LEFT, RIGHT, X, Y, BLACK } from '../../common/constants';\nimport { getSpacing, setDefaultOptions } from '../../common';\n\nvar BarLabel = (function (ChartElement) {\n    function BarLabel(content, options, pointData) {\n        ChartElement.call(this, options);\n\n        this.textBox = new TextBox(content, this.options, pointData);\n        this.append(this.textBox);\n    }\n\n    if ( ChartElement ) BarLabel.__proto__ = ChartElement;\n    BarLabel.prototype = Object.create( ChartElement && ChartElement.prototype );\n    BarLabel.prototype.constructor = BarLabel;\n\n    BarLabel.prototype.createVisual = function createVisual () {\n        this.textBox.options.noclip = this.options.noclip;\n    };\n\n    BarLabel.prototype.reflow = function reflow (targetBox) {\n        var options = this.options;\n        var vertical = options.vertical;\n        var aboveAxis = options.aboveAxis;\n        var text = this.children[0];\n        var textOptions = text.options;\n        var box = text.box;\n        var padding = text.options.padding;\n        var labelBox = targetBox;\n\n        textOptions.align = vertical ? CENTER : LEFT;\n        textOptions.vAlign = vertical ? TOP : CENTER;\n\n        if (options.position === INSIDE_END) {\n            if (vertical) {\n                textOptions.vAlign = TOP;\n\n                if (!aboveAxis && box.height() < targetBox.height()) {\n                    textOptions.vAlign = BOTTOM;\n                }\n            } else {\n                textOptions.align = aboveAxis ? RIGHT : LEFT;\n            }\n        } else if (options.position === CENTER) {\n            textOptions.vAlign = CENTER;\n            textOptions.align = CENTER;\n        } else if (options.position === INSIDE_BASE) {\n            if (vertical) {\n                textOptions.vAlign = aboveAxis ? BOTTOM : TOP;\n            } else {\n                textOptions.align = aboveAxis ? LEFT : RIGHT;\n            }\n        } else if (options.position === OUTSIDE_END) {\n            if (vertical) {\n                if (aboveAxis) {\n                    labelBox = new Box(\n                        targetBox.x1, targetBox.y1 - box.height(),\n                        targetBox.x2, targetBox.y1\n                    );\n                } else {\n                    labelBox = new Box(\n                        targetBox.x1, targetBox.y2,\n                        targetBox.x2, targetBox.y2 + box.height()\n                    );\n                }\n            } else {\n                textOptions.align = CENTER;\n                if (aboveAxis) {\n                    labelBox = new Box(\n                        targetBox.x2, targetBox.y1,\n                        targetBox.x2 + box.width(), targetBox.y2\n                    );\n                } else {\n                    labelBox = new Box(\n                        targetBox.x1 - box.width(), targetBox.y1,\n                        targetBox.x1, targetBox.y2\n                    );\n                }\n            }\n        }\n\n        if (!options.rotation) {\n            if (vertical) {\n                padding.left = padding.right =\n                    (labelBox.width() - text.contentBox.width()) / 2;\n            } else {\n                padding.top = padding.bottom =\n                    (labelBox.height() - text.contentBox.height()) / 2;\n            }\n        }\n\n        text.reflow(labelBox);\n    };\n\n    BarLabel.prototype.alignToClipBox = function alignToClipBox (clipBox) {\n        var vertical = this.options.vertical;\n        var field = vertical ? Y : X;\n        var start = field + \"1\";\n        var end = field + \"2\";\n        var text = this.children[0];\n        var parentBox = this.parent.box;\n\n        if (parentBox[start] < clipBox[start] || clipBox[end] < parentBox[end]) {\n            var targetBox = text.paddingBox.clone();\n            targetBox[start] = Math.max(parentBox[start], clipBox[start]);\n            targetBox[end] = Math.min(parentBox[end], clipBox[end]);\n\n            this.reflow(targetBox);\n        }\n    };\n\n    return BarLabel;\n}(ChartElement));\n\nsetDefaultOptions(BarLabel, {\n    position: OUTSIDE_END,\n    margin: getSpacing(3),\n    padding: getSpacing(4),\n    color: BLACK,\n    background: \"\",\n    border: {\n        width: 1,\n        color: \"\"\n    },\n    aboveAxis: true,\n    vertical: false,\n    animation: {\n        type: FADEIN,\n        delay: INITIAL_ANIMATION_DURATION\n    },\n    zIndex: 2\n});\n\nexport default BarLabel;","import { drawing as draw, Color } from '@progress/kendo-drawing';\n\nimport BarLabel from './bar-label';\n\nimport { BORDER_BRIGHTNESS, TOOLTIP_OFFSET } from '../constants';\n\nimport hasGradientOverlay from '../utils/has-gradient-overlay';\n\nimport { ChartElement, Point } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\n\nimport { WHITE, LEFT, RIGHT, BOTTOM, TOP } from '../../common/constants';\nimport { alignPathToPixel, deepExtend, defined, getTemplate, valueOrDefault } from '../../common';\n\nvar BAR_ALIGN_MIN_WIDTH = 6;\n\nvar Bar = (function (ChartElement) {\n    function Bar(value, options) {\n        ChartElement.call(this);\n\n        this.options = options;\n        this.color = options.color || WHITE;\n        this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n        this.value = value;\n    }\n\n    if ( ChartElement ) Bar.__proto__ = ChartElement;\n    Bar.prototype = Object.create( ChartElement && ChartElement.prototype );\n    Bar.prototype.constructor = Bar;\n\n    Bar.prototype.render = function render () {\n        if (this._rendered) {\n            return;\n        }\n\n        this._rendered = true;\n\n        this.createLabel();\n        this.createNote();\n\n        if (this.errorBar) {\n            this.append(this.errorBar);\n        }\n    };\n\n    Bar.prototype.createLabel = function createLabel () {\n        var options = this.options;\n        var labels = options.labels;\n\n        if (labels.visible) {\n            var pointData = this.pointData();\n            var labelTemplate = getTemplate(labels);\n            var labelText;\n\n            if (labelTemplate) {\n                labelText = labelTemplate(pointData);\n            } else {\n                labelText = this.formatValue(labels.format);\n            }\n\n            this.label = new BarLabel(labelText,\n                deepExtend({\n                    vertical: options.vertical\n                },\n                labels\n            ), pointData);\n            this.append(this.label);\n        }\n    };\n\n    Bar.prototype.formatValue = function formatValue (format) {\n        return this.owner.formatPointValue(this, format);\n    };\n\n    Bar.prototype.reflow = function reflow (targetBox) {\n        var this$1 = this;\n\n        this.render();\n\n        var label = this.label;\n\n        this.box = targetBox;\n\n        if (label) {\n            label.options.aboveAxis = this.aboveAxis;\n            label.reflow(targetBox);\n        }\n\n        if (this.note) {\n            this.note.reflow(targetBox);\n        }\n\n        if (this.errorBars) {\n            for (var i = 0; i < this.errorBars.length; i++) {\n                this$1.errorBars[i].reflow(targetBox);\n            }\n        }\n    };\n\n    Bar.prototype.createVisual = function createVisual () {\n        var this$1 = this;\n\n        var ref = this;\n        var box = ref.box;\n        var options = ref.options;\n        var customVisual = options.visual;\n\n        if (this.visible !== false) {\n            ChartElement.prototype.createVisual.call(this);\n\n            if (customVisual) {\n                var visual = this.rectVisual = customVisual({\n                    category: this.category,\n                    dataItem: this.dataItem,\n                    value: this.value,\n                    sender: this.getSender(),\n                    series: this.series,\n                    percentage: this.percentage,\n                    stackValue: this.stackValue,\n                    runningTotal: this.runningTotal,\n                    total: this.total,\n                    rect: box.toRect(),\n                    createVisual: function () {\n                        var group = new draw.Group();\n                        this$1.createRect(group);\n                        return group;\n                    },\n                    options: options\n                });\n\n                if (visual) {\n                    this.visual.append(visual);\n                }\n            } else if (box.width() > 0 && box.height() > 0) {\n                this.createRect(this.visual);\n            }\n        }\n    };\n\n    Bar.prototype.createRect = function createRect (visual) {\n        var options = this.options;\n        var border = options.border;\n        var strokeOpacity = defined(border.opacity) ? border.opacity : options.opacity;\n        var rect = this.box.toRect();\n\n        rect.size.width = Math.round(rect.size.width);\n\n        var path = this.rectVisual = draw.Path.fromRect(rect, {\n            fill: {\n                color: this.color,\n                opacity: options.opacity\n            },\n            stroke: {\n                color: this.getBorderColor(),\n                width: border.width,\n                opacity: strokeOpacity,\n                dashType: border.dashType\n            }\n        });\n\n        var width = this.box.width();\n        var height = this.box.height();\n\n        var size = options.vertical ? width : height;\n\n        if (size > BAR_ALIGN_MIN_WIDTH) {\n            alignPathToPixel(path);\n\n            // Fixes lineJoin issue in firefox when the joined lines are parallel\n            if (width < 1 || height < 1) {\n                path.options.stroke.lineJoin = \"round\";\n            }\n        }\n\n        visual.append(path);\n\n        if (hasGradientOverlay(options)) {\n            var overlay = this.createGradientOverlay(path, { baseColor: this.color }, deepExtend({\n                end: !options.vertical ? [ 0, 1 ] : undefined\n            }, options.overlay));\n\n            visual.append(overlay);\n        }\n    };\n\n    Bar.prototype.createHighlight = function createHighlight (style) {\n        var highlight = draw.Path.fromRect(this.box.toRect(), style);\n\n        return alignPathToPixel(highlight);\n    };\n\n    Bar.prototype.highlightVisual = function highlightVisual () {\n        return this.rectVisual;\n    };\n\n    Bar.prototype.highlightVisualArgs = function highlightVisualArgs () {\n        return {\n            options: this.options,\n            rect: this.box.toRect(),\n            visual: this.rectVisual\n        };\n    };\n\n    Bar.prototype.getBorderColor = function getBorderColor () {\n        var color = this.color;\n        var border = this.options.border;\n        var brightness = border._brightness || BORDER_BRIGHTNESS;\n        var borderColor = border.color;\n\n        if (!defined(borderColor)) {\n            borderColor = new Color(color).brightness(brightness).toHex();\n        }\n\n        return borderColor;\n    };\n\n    Bar.prototype.tooltipAnchor = function tooltipAnchor () {\n        var ref = this;\n        var options = ref.options;\n        var box = ref.box;\n        var aboveAxis = ref.aboveAxis;\n        var clipBox = this.owner.pane.clipBox() || box;\n        var horizontalAlign = LEFT;\n        var verticalAlign = TOP;\n        var x, y;\n\n        if (options.vertical) {\n            x = Math.min(box.x2, clipBox.x2) + TOOLTIP_OFFSET;\n            if (aboveAxis) {\n                y = Math.max(box.y1, clipBox.y1);\n            } else {\n                y = Math.min(box.y2, clipBox.y2);\n                verticalAlign = BOTTOM;\n            }\n        } else {\n            var x1 = Math.max(box.x1, clipBox.x1);\n            var x2 = Math.min(box.x2, clipBox.x2);\n\n            if (options.isStacked) {\n                verticalAlign = BOTTOM;\n                if (aboveAxis) {\n                    horizontalAlign = RIGHT;\n                    x = x2;\n                } else {\n                    x = x1;\n                }\n                y = Math.max(box.y1, clipBox.y1) - TOOLTIP_OFFSET;\n            } else {\n                if (aboveAxis) {\n                    x = x2 + TOOLTIP_OFFSET;\n                } else {\n                    x = x1 - TOOLTIP_OFFSET;\n                    horizontalAlign = RIGHT;\n                }\n                y = Math.max(box.y1, clipBox.y1);\n            }\n        }\n\n        return {\n            point: new Point(x, y),\n            align: {\n                horizontal: horizontalAlign,\n                vertical: verticalAlign\n            }\n        };\n    };\n\n    Bar.prototype.overlapsBox = function overlapsBox (box) {\n        return this.box.overlaps(box);\n    };\n\n    Bar.prototype.pointData = function pointData () {\n        return {\n            dataItem: this.dataItem,\n            category: this.category,\n            value: this.value,\n            percentage: this.percentage,\n            stackValue: this.stackValue,\n            runningTotal: this.runningTotal,\n            total: this.total,\n            series: this.series\n        };\n    };\n\n    return Bar;\n}(ChartElement));\n\ndeepExtend(Bar.prototype, PointEventsMixin);\ndeepExtend(Bar.prototype, NoteMixin);\n\nBar.prototype.defaults = {\n    border: {\n        width: 1\n    },\n    vertical: true,\n    overlay: {\n        gradient: \"glass\"\n    },\n    labels: {\n        visible: false,\n        format: \"{0}\"\n    },\n    opacity: 1,\n    notes: {\n        label: {}\n    }\n};\n\nexport default Bar;","export function forEach(elements, callback) {\n    elements.forEach(callback);\n}\n\nexport function forEachReverse(elements, callback) {\n    var length = elements.length;\n\n    for (var idx = length - 1; idx >= 0; idx--) {\n        callback(elements[idx], idx - length - 1);\n    }\n}","import { ChartElement } from '../../core';\n\nimport { X, Y } from '../../common/constants';\nimport { setDefaultOptions } from '../../common';\nimport { forEach, forEachReverse } from './utils';\n\nvar ClusterLayout = (function (ChartElement) {\n    function ClusterLayout(options) {\n        ChartElement.call(this, options);\n\n        this.forEach = options.rtl ? forEachReverse : forEach;\n    }\n\n    if ( ChartElement ) ClusterLayout.__proto__ = ChartElement;\n    ClusterLayout.prototype = Object.create( ChartElement && ChartElement.prototype );\n    ClusterLayout.prototype.constructor = ClusterLayout;\n\n    ClusterLayout.prototype.reflow = function reflow (box) {\n        var ref = this.options;\n        var vertical = ref.vertical;\n        var gap = ref.gap;\n        var spacing = ref.spacing;\n        var children = this.children;\n        var count = children.length;\n        var axis = vertical ? Y : X;\n        var slots = count + gap + (spacing * (count - 1));\n        var slotSize = (vertical ? box.height() : box.width()) / slots;\n        var position = box[axis + 1] + slotSize * (gap / 2);\n\n        this.forEach(children, function (child, idx) {\n            var childBox = (child.box || box).clone();\n\n            childBox[axis + 1] = position;\n            childBox[axis + 2] = position + slotSize;\n\n            child.reflow(childBox);\n            if (idx < count - 1) {\n                position += (slotSize * spacing);\n            }\n\n            position += slotSize;\n        });\n    };\n\n    return ClusterLayout;\n}(ChartElement));\n\nsetDefaultOptions(ClusterLayout, {\n    vertical: false,\n    gap: 0,\n    spacing: 0\n});\n\nexport default ClusterLayout;","import { ChartElement, Box } from '../../core';\n\nimport { X, Y } from '../../common/constants';\nimport { setDefaultOptions } from '../../common';\n\nvar StackWrap = (function (ChartElement) {\n    function StackWrap () {\n        ChartElement.apply(this, arguments);\n    }\n\n    if ( ChartElement ) StackWrap.__proto__ = ChartElement;\n    StackWrap.prototype = Object.create( ChartElement && ChartElement.prototype );\n    StackWrap.prototype.constructor = StackWrap;\n\n    StackWrap.prototype.reflow = function reflow (targetBox) {\n        var this$1 = this;\n\n        var positionAxis = this.options.vertical ? X : Y;\n        var children = this.children;\n        var childrenCount = children.length;\n        var box = this.box = new Box();\n\n        for (var i = 0; i < childrenCount; i++) {\n            var currentChild = children[i];\n\n            if (currentChild.visible !== false) {\n                var childBox = currentChild.box.clone();\n                childBox.snapTo(targetBox, positionAxis);\n\n                if (i === 0) {\n                    box = this$1.box = childBox.clone();\n                }\n\n                currentChild.reflow(childBox);\n                box.wrap(childBox);\n            }\n        }\n    };\n\n    return StackWrap;\n}(ChartElement));\n\nsetDefaultOptions(StackWrap, {\n    vertical: true\n});\n\nexport default StackWrap;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport Bar from './bar';\n\nimport CategoricalChart from '../categorical-chart';\nimport ClusterLayout from '../layout/cluster-layout';\nimport StackWrap from '../layout/stack-wrap';\nimport { BAR, OUTSIDE_END, INSIDE_END } from '../constants';\n\nimport anyHasZIndex from '../utils/any-has-z-index';\n\nimport { STRING, X, Y } from '../../common/constants';\nimport { defined, isFunction, setDefaultOptions } from '../../common';\n\nvar BarChart = (function (CategoricalChart) {\n    function BarChart () {\n        CategoricalChart.apply(this, arguments);\n    }\n\n    if ( CategoricalChart ) BarChart.__proto__ = CategoricalChart;\n    BarChart.prototype = Object.create( CategoricalChart && CategoricalChart.prototype );\n    BarChart.prototype.constructor = BarChart;\n\n    BarChart.prototype.render = function render () {\n        CategoricalChart.prototype.render.call(this);\n        this.updateStackRange();\n    };\n\n    BarChart.prototype.pointType = function pointType () {\n        return Bar;\n    };\n\n    BarChart.prototype.clusterType = function clusterType () {\n        return ClusterLayout;\n    };\n\n    BarChart.prototype.stackType = function stackType () {\n        return StackWrap;\n    };\n\n    BarChart.prototype.stackLimits = function stackLimits (axisName, stackName) {\n        var limits = CategoricalChart.prototype.stackLimits.call(this, axisName, stackName);\n\n        return limits;\n    };\n\n    BarChart.prototype.createPoint = function createPoint (data, fields) {\n        var categoryIx = fields.categoryIx;\n        var series = fields.series;\n        var seriesIx = fields.seriesIx;\n        var ref = this;\n        var options = ref.options;\n        var children = ref.children;\n        var isStacked = options.isStacked;\n        var value = this.pointValue(data);\n        var pointOptions = this.pointOptions(series, seriesIx);\n\n        var labelOptions = pointOptions.labels;\n        if (isStacked) {\n            if (labelOptions.position === OUTSIDE_END) {\n                labelOptions.position = INSIDE_END;\n            }\n        }\n\n        pointOptions.isStacked = isStacked;\n\n        var color = data.fields.color || series.color;\n        if (value < 0 && pointOptions.negativeColor) {\n            color = pointOptions.negativeColor;\n        }\n\n        pointOptions = this.evalPointOptions(pointOptions, value, fields);\n        if (isFunction(series.color)) {\n            color = pointOptions.color;\n        }\n\n        var pointType = this.pointType();\n        var point = new pointType(value, pointOptions);\n        point.color = color;\n\n        var cluster = children[categoryIx];\n        if (!cluster) {\n            var clusterType = this.clusterType();\n            cluster = new clusterType({\n                vertical: options.invertAxes,\n                gap: options.gap,\n                spacing: options.spacing,\n                rtl: !options.invertAxes && (this.chartService || {}).rtl\n            });\n            this.append(cluster);\n        }\n\n        if (isStacked) {\n            var stackWrap = this.getStackWrap(series, cluster);\n            stackWrap.append(point);\n        } else {\n            cluster.append(point);\n        }\n\n        return point;\n    };\n\n    BarChart.prototype.getStackWrap = function getStackWrap (series, cluster) {\n        var stack = series.stack;\n        var stackGroup = stack ? stack.group || stack : stack;\n        var wraps = cluster.children;\n        var stackWrap;\n\n        if (typeof stackGroup === STRING) {\n            for (var i = 0; i < wraps.length; i++) {\n                if (wraps[i]._stackGroup === stackGroup) {\n                    stackWrap = wraps[i];\n                    break;\n                }\n            }\n        } else {\n            stackWrap = wraps[0];\n        }\n\n        if (!stackWrap) {\n            var stackType = this.stackType();\n            stackWrap = new stackType({\n                vertical: !this.options.invertAxes\n            });\n            stackWrap._stackGroup = stackGroup;\n            cluster.append(stackWrap);\n        }\n\n        return stackWrap;\n    };\n\n    BarChart.prototype.categorySlot = function categorySlot (categoryAxis, categoryIx, valueAxis) {\n        var options = this.options;\n        var categorySlot = categoryAxis.getSlot(categoryIx);\n        var startValue = valueAxis.startValue();\n\n        if (options.isStacked) {\n            var zeroSlot = valueAxis.getSlot(startValue, startValue, true);\n            var stackAxis = options.invertAxes ? X : Y;\n            categorySlot[stackAxis + 1] = categorySlot[stackAxis + 2] = zeroSlot[stackAxis + 1];\n        }\n\n        return categorySlot;\n    };\n\n    BarChart.prototype.reflowCategories = function reflowCategories (categorySlots) {\n        var children = this.children;\n        var childrenLength = children.length;\n\n        for (var i = 0; i < childrenLength; i++) {\n            children[i].reflow(categorySlots[i]);\n        }\n    };\n\n    BarChart.prototype.createAnimation = function createAnimation () {\n        this._setAnimationOptions();\n        CategoricalChart.prototype.createAnimation.call(this);\n\n        if (anyHasZIndex(this.options.series)) {\n            this._setChildrenAnimation();\n        }\n    };\n\n    BarChart.prototype._setChildrenAnimation = function _setChildrenAnimation () {\n        var this$1 = this;\n\n        var points = this.points;\n\n        for (var idx = 0; idx < points.length; idx++) {\n            var point = points[idx];\n            var pointVisual = point.visual;\n            if (pointVisual && defined(pointVisual.options.zIndex)) {\n                point.options.animation = this$1.options.animation;\n                point.createAnimation();\n            }\n        }\n    };\n\n    BarChart.prototype._setAnimationOptions = function _setAnimationOptions () {\n        var options = this.options;\n        var animation = options.animation || {};\n        var origin;\n\n        if (options.isStacked) {\n            var valueAxis = this.seriesValueAxis(options.series[0]);\n            origin = valueAxis.getSlot(valueAxis.startValue());\n        } else {\n            origin = this.categoryAxis.getSlot(0);\n        }\n\n        animation.origin = new geom.Point(origin.x1, origin.y1);\n        animation.vertical = !options.invertAxes;\n    };\n\n    return BarChart;\n}(CategoricalChart));\n\nsetDefaultOptions(BarChart, {\n    animation: {\n        type: BAR\n    }\n});\n\nexport default BarChart;\n","import { drawing as draw, Color } from '@progress/kendo-drawing';\n\nimport { ChartElement, Point } from '../../core';\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\n\nimport { TOOLTIP_OFFSET } from '../constants';\nimport hasGradientOverlay from '../utils/has-gradient-overlay';\n\nimport { WHITE, LEFT, TOP } from '../../common/constants';\nimport { alignPathToPixel, deepExtend, defined, setDefaultOptions, valueOrDefault } from '../../common';\n\nvar Candlestick = (function (ChartElement) {\n    function Candlestick(value, options) {\n        ChartElement.call(this, options);\n        this.value = value;\n    }\n\n    if ( ChartElement ) Candlestick.__proto__ = ChartElement;\n    Candlestick.prototype = Object.create( ChartElement && ChartElement.prototype );\n    Candlestick.prototype.constructor = Candlestick;\n\n    Candlestick.prototype.reflow = function reflow (box) {\n        var ref = this;\n        var options = ref.options;\n        var value = ref.value;\n        var chart = ref.owner;\n        var valueAxis = chart.seriesValueAxis(options);\n        var ocSlot = valueAxis.getSlot(value.open, value.close);\n        var lhSlot = valueAxis.getSlot(value.low, value.high);\n\n        ocSlot.x1 = lhSlot.x1 = box.x1;\n        ocSlot.x2 = lhSlot.x2 = box.x2;\n\n        this.realBody = ocSlot;\n\n        var mid = lhSlot.center().x;\n        var points = [];\n\n        points.push([ [ mid, lhSlot.y1 ], [ mid, ocSlot.y1 ] ]);\n        points.push([ [ mid, ocSlot.y2 ], [ mid, lhSlot.y2 ] ]);\n\n        this.lines = points;\n\n        this.box = lhSlot.clone().wrap(ocSlot);\n\n        if (!this._rendered) {\n            this._rendered = true;\n            this.createNote();\n        }\n\n        this.reflowNote();\n    };\n\n    Candlestick.prototype.reflowNote = function reflowNote () {\n        if (this.note) {\n            this.note.reflow(this.box);\n        }\n    };\n\n    Candlestick.prototype.createVisual = function createVisual () {\n        ChartElement.prototype.createVisual.call(this);\n        this._mainVisual = this.mainVisual(this.options);\n        this.visual.append(\n            this._mainVisual\n        );\n\n        this.createOverlay();\n    };\n\n    Candlestick.prototype.mainVisual = function mainVisual (options) {\n        var group = new draw.Group();\n\n        this.createBody(group, options);\n        this.createLines(group, options);\n\n        return group;\n    };\n\n    Candlestick.prototype.createBody = function createBody (container, options) {\n        var body = draw.Path.fromRect(this.realBody.toRect(), {\n            fill: {\n                color: this.color,\n                opacity: options.opacity\n            },\n            stroke: null\n        });\n\n        if (options.border.width > 0) {\n            body.options.set(\"stroke\", {\n                color: this.getBorderColor(),\n                width: options.border.width,\n                dashType: options.border.dashType,\n                opacity: valueOrDefault(options.border.opacity, options.opacity)\n            });\n        }\n\n        alignPathToPixel(body);\n        container.append(body);\n\n        if (hasGradientOverlay(options)) {\n            container.append(this.createGradientOverlay(body, { baseColor: this.color }, deepExtend({\n                end: !options.vertical ? [ 0, 1 ] : undefined\n            }, options.overlay)));\n        }\n    };\n\n    Candlestick.prototype.createLines = function createLines (container, options) {\n        this.drawLines(container, options, this.lines, options.line);\n    };\n\n    Candlestick.prototype.drawLines = function drawLines (container, options, lines, lineOptions) {\n        if (!lines) {\n            return;\n        }\n\n        var lineStyle = {\n            stroke: {\n                color: lineOptions.color || this.color,\n                opacity: valueOrDefault(lineOptions.opacity, options.opacity),\n                width: lineOptions.width,\n                dashType: lineOptions.dashType,\n                lineCap: \"butt\"\n            }\n        };\n\n        for (var i = 0; i < lines.length; i++) {\n            var line = draw.Path.fromPoints(lines[i], lineStyle);\n            alignPathToPixel(line);\n            container.append(line);\n        }\n    };\n\n    Candlestick.prototype.getBorderColor = function getBorderColor () {\n        var border = this.options.border;\n        var borderColor = border.color;\n\n        if (!defined(borderColor)) {\n            borderColor = new Color(this.color).brightness(border._brightness).toHex();\n        }\n\n        return borderColor;\n    };\n\n    Candlestick.prototype.createOverlay = function createOverlay () {\n        var overlay = draw.Path.fromRect(this.box.toRect(), {\n            fill: {\n                color: WHITE,\n                opacity: 0\n            },\n            stroke: null\n        });\n\n        this.visual.append(overlay);\n    };\n\n    Candlestick.prototype.createHighlight = function createHighlight () {\n        var highlight = this.options.highlight;\n        var normalColor = this.color;\n\n        this.color = highlight.color || this.color;\n        var overlay = this.mainVisual(\n            deepExtend({}, this.options, {\n                line: {\n                    color: this.getBorderColor()\n                }\n            }, highlight)\n        );\n        this.color = normalColor;\n\n        return overlay;\n    };\n\n    Candlestick.prototype.highlightVisual = function highlightVisual () {\n        return this._mainVisual;\n    };\n\n    Candlestick.prototype.highlightVisualArgs = function highlightVisualArgs () {\n        return {\n            options: this.options,\n            rect: this.box.toRect(),\n            visual: this._mainVisual\n        };\n    };\n\n    Candlestick.prototype.tooltipAnchor = function tooltipAnchor () {\n        var box = this.box;\n        var clipBox = this.owner.pane.clipBox() || box;\n\n        return {\n            point: new Point(box.x2 + TOOLTIP_OFFSET, Math.max(box.y1, clipBox.y1) + TOOLTIP_OFFSET),\n            align: {\n                horizontal: LEFT,\n                vertical: TOP\n            }\n        };\n    };\n\n    Candlestick.prototype.formatValue = function formatValue (format) {\n        return this.owner.formatPointValue(this, format);\n    };\n\n    Candlestick.prototype.overlapsBox = function overlapsBox (box) {\n        return this.box.overlaps(box);\n    };\n\n    return Candlestick;\n}(ChartElement));\n\nsetDefaultOptions(Candlestick, {\n    vertical: true,\n    border: {\n        _brightness: 0.8\n    },\n    line: {\n        width: 2\n    },\n    overlay: {\n        gradient: \"glass\"\n    },\n    tooltip: {\n        format: \"<table>\" +\n                    \"<tr><th colspan='2'>{4:d}</th></tr>\" +\n                    \"<tr><td>Open:</td><td>{0:C}</td></tr>\" +\n                    \"<tr><td>High:</td><td>{1:C}</td></tr>\" +\n                    \"<tr><td>Low:</td><td>{2:C}</td></tr>\" +\n                    \"<tr><td>Close:</td><td>{3:C}</td></tr>\" +\n                \"</table>\"\n    },\n    highlight: {\n        opacity: 1,\n        border: {\n            width: 1,\n            opacity: 1\n        },\n        line: {\n            width: 1,\n            opacity: 1\n        }\n    },\n    notes: {\n        visible: true,\n        label: {}\n    }\n});\n\ndeepExtend(Candlestick.prototype, PointEventsMixin);\ndeepExtend(Candlestick.prototype, NoteMixin);\n\nexport default Candlestick;","import CategoricalChart from '../categorical-chart';\nimport ClusterLayout from '../layout/cluster-layout';\nimport Candlestick from './candlestick';\n\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\nimport { CANDLESTICK, OHLC } from '../constants';\nimport areNumbers from '../utils/are-numbers';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { deepExtend, isFunction } from '../../common';\n\nvar CandlestickChart = (function (CategoricalChart) {\n    function CandlestickChart () {\n        CategoricalChart.apply(this, arguments);\n    }\n\n    if ( CategoricalChart ) CandlestickChart.__proto__ = CategoricalChart;\n    CandlestickChart.prototype = Object.create( CategoricalChart && CategoricalChart.prototype );\n    CandlestickChart.prototype.constructor = CandlestickChart;\n\n    CandlestickChart.prototype.reflowCategories = function reflowCategories (categorySlots) {\n        var children = this.children;\n        var childrenLength = children.length;\n\n        for (var i = 0; i < childrenLength; i++) {\n            children[i].reflow(categorySlots[i]);\n        }\n    };\n\n    CandlestickChart.prototype.addValue = function addValue (data, fields) {\n        var categoryIx = fields.categoryIx;\n        var category = fields.category;\n        var series = fields.series;\n        var seriesIx = fields.seriesIx;\n        var ref = this;\n        var children = ref.children;\n        var options = ref.options;\n        var value = data.valueFields;\n        var valueParts = this.splitValue(value);\n        var hasValue = areNumbers(valueParts);\n        var dataItem = series.data[categoryIx];\n        var categoryPoints = this.categoryPoints[categoryIx];\n        var point;\n\n        if (!categoryPoints) {\n            this.categoryPoints[categoryIx] = categoryPoints = [];\n        }\n\n        if (hasValue) {\n            point = this.createPoint(data, fields);\n        }\n\n        var cluster = children[categoryIx];\n        if (!cluster) {\n            cluster = new ClusterLayout({\n                vertical: options.invertAxes,\n                gap: options.gap,\n                spacing: options.spacing,\n                rtl: !options.invertAxes && (this.chartService || {}).rtl\n            });\n            this.append(cluster);\n        }\n\n        if (point) {\n            this.updateRange(value, fields);\n\n            cluster.append(point);\n\n            point.categoryIx = categoryIx;\n            point.category = category;\n            point.series = series;\n            point.seriesIx = seriesIx;\n            point.owner = this;\n            point.dataItem = dataItem;\n            point.noteText = data.fields.noteText;\n        }\n\n        this.points.push(point);\n        categoryPoints.push(point);\n    };\n\n    CandlestickChart.prototype.pointType = function pointType () {\n        return Candlestick;\n    };\n\n    CandlestickChart.prototype.createPoint = function createPoint (data, fields) {\n        var series = fields.series;\n        var pointType = this.pointType();\n        var value = data.valueFields;\n        var pointOptions = deepExtend({}, series);\n        var color = data.fields.color || series.color;\n\n        pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n        if (series.type === CANDLESTICK || series.type === OHLC) {\n            if (value.open > value.close) {\n                color = data.fields.downColor || series.downColor || series.color;\n            }\n        }\n\n        if (isFunction(series.color)) {\n            color = pointOptions.color;\n        }\n\n        pointOptions.vertical = !this.options.invertAxes;\n\n        var point = new pointType(value, pointOptions);\n        point.color = color;\n\n        return point;\n    };\n\n    CandlestickChart.prototype.splitValue = function splitValue (value) {\n        return [ value.low, value.open, value.close, value.high ];\n    };\n\n    CandlestickChart.prototype.updateRange = function updateRange (value, fields) {\n        var axisName = fields.series.axis;\n        var parts = this.splitValue(value);\n        var axisRange = this.valueAxisRanges[axisName];\n\n        axisRange = this.valueAxisRanges[axisName] =\n            axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n        axisRange = this.valueAxisRanges[axisName] = {\n            min: Math.min.apply(Math, parts.concat([ axisRange.min ])),\n            max: Math.max.apply(Math, parts.concat([ axisRange.max ]))\n        };\n    };\n\n    CandlestickChart.prototype.formatPointValue = function formatPointValue (point, format) {\n        var value = point.value;\n\n        return this.chartService.format.auto(format,\n            value.open, value.high,\n            value.low, value.close, point.category\n        );\n    };\n\n    CandlestickChart.prototype.animationPoints = function animationPoints () {\n        return this.points;\n    };\n\n    return CandlestickChart;\n}(CategoricalChart));\n\ndeepExtend(CandlestickChart.prototype, ClipAnimationMixin);\n\nexport default CandlestickChart;\n","import { Color } from '@progress/kendo-drawing';\n\nimport Candlestick from '../candlestick-chart/candlestick';\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport { ShapeElement } from '../../core';\n\nimport { LINE_MARKER_SIZE, BORDER_BRIGHTNESS } from '../constants';\n\nimport { CROSS, CIRCLE, WHITE } from '../../common/constants';\nimport { deepExtend, defined, setDefaultOptions } from '../../common';\n\nvar BoxPlot = (function (Candlestick) {\n    function BoxPlot(value, options) {\n        Candlestick.call(this, value, options);\n\n        this.createNote();\n    }\n\n    if ( Candlestick ) BoxPlot.__proto__ = Candlestick;\n    BoxPlot.prototype = Object.create( Candlestick && Candlestick.prototype );\n    BoxPlot.prototype.constructor = BoxPlot;\n\n    BoxPlot.prototype.reflow = function reflow (box) {\n        var ref = this;\n        var options = ref.options;\n        var value = ref.value;\n        var chart = ref.owner;\n        var valueAxis = chart.seriesValueAxis(options);\n        var whiskerSlot, boxSlot;\n\n        this.boxSlot = boxSlot = valueAxis.getSlot(value.q1, value.q3);\n        this.realBody = boxSlot;\n        this.reflowBoxSlot(box);\n\n        this.whiskerSlot = whiskerSlot = valueAxis.getSlot(value.lower, value.upper);\n        this.reflowWhiskerSlot(box);\n\n        var medianSlot = valueAxis.getSlot(value.median);\n\n        if (value.mean) {\n            var meanSlot = valueAxis.getSlot(value.mean);\n            this.meanPoints = this.calcMeanPoints(box, meanSlot);\n        }\n\n        this.whiskerPoints = this.calcWhiskerPoints(boxSlot, whiskerSlot);\n        this.medianPoints = this.calcMedianPoints(box, medianSlot);\n\n        this.box = whiskerSlot.clone().wrap(boxSlot);\n        this.reflowNote();\n    };\n\n    BoxPlot.prototype.reflowBoxSlot = function reflowBoxSlot (box) {\n        this.boxSlot.x1 = box.x1;\n        this.boxSlot.x2 = box.x2;\n    };\n\n    BoxPlot.prototype.reflowWhiskerSlot = function reflowWhiskerSlot (box) {\n        this.whiskerSlot.x1 = box.x1;\n        this.whiskerSlot.x2 = box.x2;\n    };\n\n    BoxPlot.prototype.calcMeanPoints = function calcMeanPoints (box, meanSlot) {\n        return [\n            [ [ box.x1, meanSlot.y1 ], [ box.x2, meanSlot.y1 ] ]\n        ];\n    };\n\n    BoxPlot.prototype.calcWhiskerPoints = function calcWhiskerPoints (boxSlot, whiskerSlot) {\n        var mid = whiskerSlot.center().x;\n        return [ [\n            [ mid - 5, whiskerSlot.y1 ], [ mid + 5, whiskerSlot.y1 ],\n            [ mid, whiskerSlot.y1 ], [ mid, boxSlot.y1 ]\n        ], [\n            [ mid - 5, whiskerSlot.y2 ], [ mid + 5, whiskerSlot.y2 ],\n            [ mid, whiskerSlot.y2 ], [ mid, boxSlot.y2 ]\n        ] ];\n    };\n\n    BoxPlot.prototype.calcMedianPoints = function calcMedianPoints (box, medianSlot) {\n        return [\n            [ [ box.x1, medianSlot.y1 ], [ box.x2, medianSlot.y1 ] ]\n        ];\n    };\n\n    BoxPlot.prototype.renderOutliers = function renderOutliers (options) {\n        var this$1 = this;\n\n        var value = this.value;\n        var outliers = value.outliers || [];\n        var outerFence = Math.abs(value.q3 - value.q1) * 3;\n        var elements = [];\n        var markers = options.markers || {};\n\n        for (var i = 0; i < outliers.length; i++) {\n            var outlierValue = outliers[i];\n            if (outlierValue < value.q3 + outerFence && outlierValue > value.q1 - outerFence) {\n                markers = options.outliers;\n            } else {\n                markers = options.extremes;\n            }\n            var markersBorder = deepExtend({}, markers.border);\n\n            if (!defined(markersBorder.color)) {\n                if (defined(this$1.color)) {\n                    markersBorder.color = this$1.color;\n                } else {\n                    markersBorder.color =\n                        new Color(markers.background).brightness(BORDER_BRIGHTNESS).toHex();\n                }\n            }\n\n            var shape = new ShapeElement({\n                type: markers.type,\n                width: markers.size,\n                height: markers.size,\n                rotation: markers.rotation,\n                background: markers.background,\n                border: markersBorder,\n                opacity: markers.opacity\n            });\n\n            shape.value = outlierValue;\n\n            elements.push(shape);\n        }\n\n        this.reflowOutliers(elements);\n        return elements;\n    };\n\n    BoxPlot.prototype.reflowOutliers = function reflowOutliers (outliers) {\n        var this$1 = this;\n\n        var valueAxis = this.owner.seriesValueAxis(this.options);\n        var center = this.box.center();\n\n        for (var i = 0; i < outliers.length; i++) {\n            var outlierValue = outliers[i].value;\n            var markerBox = valueAxis.getSlot(outlierValue);\n\n            if (this$1.options.vertical) {\n                markerBox.move(center.x);\n            } else {\n                markerBox.move(undefined, center.y);\n            }\n\n            this$1.box = this$1.box.wrap(markerBox);\n            outliers[i].reflow(markerBox);\n        }\n    };\n\n    BoxPlot.prototype.mainVisual = function mainVisual (options) {\n        var group = Candlestick.prototype.mainVisual.call(this, options);\n        var outliers = this.renderOutliers(options);\n\n        for (var i = 0; i < outliers.length; i++) {\n            var element = outliers[i].getElement();\n            if (element) {\n                group.append(element);\n            }\n        }\n\n        return group;\n    };\n\n    BoxPlot.prototype.createLines = function createLines (container, options) {\n        this.drawLines(container, options, this.whiskerPoints, options.whiskers);\n        this.drawLines(container, options, this.medianPoints, options.median);\n        this.drawLines(container, options, this.meanPoints, options.mean);\n    };\n\n    BoxPlot.prototype.getBorderColor = function getBorderColor () {\n        if ((this.options.border || {}).color) {\n            return this.options.border.color;\n        }\n\n        if (this.color) {\n            return this.color;\n        }\n\n        return Candlestick.prototype.getBorderColor.call(this);\n    };\n\n    return BoxPlot;\n}(Candlestick));\n\nsetDefaultOptions(BoxPlot, {\n    border: {\n        _brightness: 0.8\n    },\n    line: {\n        width: 2\n    },\n    median: {\n        color: \"#f6f6f6\"\n    },\n    mean: {\n        width: 2,\n        dashType: \"dash\",\n        color: \"#f6f6f6\"\n    },\n    overlay: {\n        gradient: \"glass\"\n    },\n    tooltip: {\n        format: \"<table>\" +\n                    \"<tr><th colspan='2'>{6:d}</th></tr>\" +\n                    \"<tr><td>Lower:</td><td>{0:C}</td></tr>\" +\n                    \"<tr><td>Q1:</td><td>{1:C}</td></tr>\" +\n                    \"<tr><td>Median:</td><td>{2:C}</td></tr>\" +\n                    \"<tr><td>Mean:</td><td>{5:C}</td></tr>\" +\n                    \"<tr><td>Q3:</td><td>{3:C}</td></tr>\" +\n                    \"<tr><td>Upper:</td><td>{4:C}</td></tr>\" +\n                \"</table>\"\n    },\n    highlight: {\n        opacity: 1,\n        border: {\n            width: 1,\n            opacity: 1\n        },\n        line: {\n            width: 1,\n            opacity: 1\n        }\n    },\n    notes: {\n        visible: true,\n        label: {}\n    },\n    outliers: {\n        visible: true,\n        size: LINE_MARKER_SIZE,\n        type: CROSS,\n        background: WHITE,\n        border: {\n            width: 2,\n            opacity: 1\n        },\n        opacity: 0\n    },\n    extremes: {\n        visible: true,\n        size: LINE_MARKER_SIZE,\n        type: CIRCLE,\n        background: WHITE,\n        border: {\n            width: 2,\n            opacity: 1\n        },\n        opacity: 0\n    }\n});\n\ndeepExtend(BoxPlot.prototype, PointEventsMixin);\n\nexport default BoxPlot;","import BoxPlot from './box-plot';\n\nvar VerticalBoxPlot = (function (BoxPlot) {\n    function VerticalBoxPlot () {\n        BoxPlot.apply(this, arguments);\n    }\n\n    if ( BoxPlot ) VerticalBoxPlot.__proto__ = BoxPlot;\n    VerticalBoxPlot.prototype = Object.create( BoxPlot && BoxPlot.prototype );\n    VerticalBoxPlot.prototype.constructor = VerticalBoxPlot;\n\n    VerticalBoxPlot.prototype.reflowBoxSlot = function reflowBoxSlot (box) {\n        this.boxSlot.y1 = box.y1;\n        this.boxSlot.y2 = box.y2;\n    };\n\n    VerticalBoxPlot.prototype.reflowWhiskerSlot = function reflowWhiskerSlot (box) {\n        this.whiskerSlot.y1 = box.y1;\n        this.whiskerSlot.y2 = box.y2;\n    };\n\n    VerticalBoxPlot.prototype.calcMeanPoints = function calcMeanPoints (box, meanSlot) {\n        return [\n            [ [ meanSlot.x1, box.y1 ], [ meanSlot.x1, box.y2 ] ]\n        ];\n    };\n\n    VerticalBoxPlot.prototype.calcWhiskerPoints = function calcWhiskerPoints (boxSlot, whiskerSlot) {\n        var mid = whiskerSlot.center().y;\n        return [ [\n            [ whiskerSlot.x1, mid - 5 ], [ whiskerSlot.x1, mid + 5 ],\n            [ whiskerSlot.x1, mid ], [ boxSlot.x1, mid ]\n        ], [\n            [ whiskerSlot.x2, mid - 5 ], [ whiskerSlot.x2, mid + 5 ],\n            [ whiskerSlot.x2, mid ], [ boxSlot.x2, mid ]\n        ] ];\n    };\n\n    VerticalBoxPlot.prototype.calcMedianPoints = function calcMedianPoints (box, medianSlot) {\n        return [\n            [ [ medianSlot.x1, box.y1 ], [ medianSlot.x1, box.y2 ] ]\n        ];\n    };\n\n    return VerticalBoxPlot;\n}(BoxPlot));\n\nexport default VerticalBoxPlot;","import CandlestickChart from '../candlestick-chart/candlestick-chart';\nimport VerticalBoxPlot from './vertical-box-plot';\nimport BoxPlot from './box-plot';\nimport ClusterLayout from '../layout/cluster-layout';\n\nimport areNumbers from '../utils/are-numbers';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { defined } from '../../common';\n\nvar BoxPlotChart = (function (CandlestickChart) {\n    function BoxPlotChart () {\n        CandlestickChart.apply(this, arguments);\n    }\n\n    if ( CandlestickChart ) BoxPlotChart.__proto__ = CandlestickChart;\n    BoxPlotChart.prototype = Object.create( CandlestickChart && CandlestickChart.prototype );\n    BoxPlotChart.prototype.constructor = BoxPlotChart;\n\n    BoxPlotChart.prototype.addValue = function addValue (data, fields) {\n        var categoryIx = fields.categoryIx;\n        var category = fields.category;\n        var series = fields.series;\n        var seriesIx = fields.seriesIx;\n        var ref = this;\n        var children = ref.children;\n        var options = ref.options;\n        var value = data.valueFields;\n        var valueParts = this.splitValue(value);\n        var hasValue = areNumbers(valueParts);\n        var dataItem = series.data[categoryIx];\n        var categoryPoints = this.categoryPoints[categoryIx];\n        var point;\n\n        if (!categoryPoints) {\n            this.categoryPoints[categoryIx] = categoryPoints = [];\n        }\n\n        if (hasValue) {\n            point = this.createPoint(data, fields);\n        }\n\n        var cluster = children[categoryIx];\n        if (!cluster) {\n            cluster = new ClusterLayout({\n                vertical: options.invertAxes,\n                gap: options.gap,\n                spacing: options.spacing,\n                rtl: !options.invertAxes && (this.chartService || {}).rtl\n            });\n            this.append(cluster);\n        }\n\n        if (point) {\n            this.updateRange(value, fields);\n\n            cluster.append(point);\n\n            point.categoryIx = categoryIx;\n            point.category = category;\n            point.series = series;\n            point.seriesIx = seriesIx;\n            point.owner = this;\n            point.dataItem = dataItem;\n        }\n\n        this.points.push(point);\n        categoryPoints.push(point);\n    };\n\n    BoxPlotChart.prototype.pointType = function pointType () {\n        if (this.options.invertAxes) {\n            return VerticalBoxPlot;\n        }\n\n        return BoxPlot;\n    };\n\n    BoxPlotChart.prototype.splitValue = function splitValue (value) {\n        return [\n            value.lower, value.q1, value.median,\n            value.q3, value.upper\n        ];\n    };\n\n    BoxPlotChart.prototype.updateRange = function updateRange (value, fields) {\n        var axisName = fields.series.axis;\n        var axisRange = this.valueAxisRanges[axisName];\n        var parts = this.splitValue(value).concat(this.filterOutliers(value.outliers));\n\n        if (defined(value.mean)) {\n            parts = parts.concat(value.mean);\n        }\n\n        axisRange = this.valueAxisRanges[axisName] =\n            axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n        axisRange = this.valueAxisRanges[axisName] = {\n            min: Math.min.apply(Math, parts.concat([ axisRange.min ])),\n            max: Math.max.apply(Math, parts.concat([ axisRange.max ]))\n        };\n    };\n\n    BoxPlotChart.prototype.formatPointValue = function formatPointValue (point, format) {\n        var value = point.value;\n\n        return this.chartService.format.auto(format,\n            value.lower, value.q1, value.median,\n            value.q3, value.upper, value.mean, point.category\n        );\n    };\n\n    BoxPlotChart.prototype.filterOutliers = function filterOutliers (items) {\n        var length = (items || []).length;\n        var result = [];\n\n        for (var i = 0; i < length; i++) {\n            var item = items[i];\n            if (defined(item) && item !== null) {\n                result.push(item);\n            }\n        }\n\n        return result;\n    };\n\n    BoxPlotChart.prototype.supportsPointInactiveOpacity = function supportsPointInactiveOpacity () {\n        return false;\n    };\n\n    return BoxPlotChart;\n}(CandlestickChart));\n\nexport default BoxPlotChart;\n","import ErrorBarBase from './error-bar-base';\n\nvar ScatterErrorBar = (function (ErrorBarBase) {\n    function ScatterErrorBar () {\n        ErrorBarBase.apply(this, arguments);\n    }\n\n    if ( ErrorBarBase ) ScatterErrorBar.__proto__ = ErrorBarBase;\n    ScatterErrorBar.prototype = Object.create( ErrorBarBase && ErrorBarBase.prototype );\n    ScatterErrorBar.prototype.constructor = ScatterErrorBar;\n\n    ScatterErrorBar.prototype.getAxis = function getAxis () {\n        var axes = this.chart.seriesAxes(this.series);\n        var axis = this.isVertical ? axes.y : axes.x;\n\n        return axis;\n    };\n\n    return ScatterErrorBar;\n}(ErrorBarBase));\n\nexport default ScatterErrorBar;","import { ChartElement, Box } from '../../core';\n\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\nimport ErrorRangeCalculator from '../error-bars/error-range-calculator';\nimport ScatterErrorBar from '../error-bars/scatter-error-bar';\nimport LinePoint from '../line-chart/line-point';\n\nimport { hasValue, evalOptions } from '../utils';\n\nimport { deepExtend, isNumber, isString, defined, isFunction, setDefaultOptions } from '../../common';\nimport { X, Y, MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { parseDate } from '../../date-utils';\n\nvar ScatterChart = (function (ChartElement) {\n    function ScatterChart(plotArea, options) {\n\n        ChartElement.call(this, options);\n\n        this.plotArea = plotArea;\n        this.chartService = plotArea.chartService;\n        this._initFields();\n\n        this.render();\n    }\n\n    if ( ChartElement ) ScatterChart.__proto__ = ChartElement;\n    ScatterChart.prototype = Object.create( ChartElement && ChartElement.prototype );\n    ScatterChart.prototype.constructor = ScatterChart;\n\n    ScatterChart.prototype._initFields = function _initFields () {\n        // X and Y axis ranges grouped by name, e.g.:\n        // primary: { min: 0, max: 1 }\n        this.xAxisRanges = {};\n        this.yAxisRanges = {};\n\n        this.points = [];\n        this.seriesPoints = [];\n        this.seriesOptions = [];\n        this._evalSeries = [];\n    };\n\n    ScatterChart.prototype.render = function render () {\n        this.traverseDataPoints(this.addValue.bind(this));\n    };\n\n    ScatterChart.prototype.addErrorBar = function addErrorBar (point, field, fields) {\n        var value = point.value[field];\n        var valueErrorField = field + \"Value\";\n        var lowField = field + \"ErrorLow\";\n        var highField = field + \"ErrorHigh\";\n        var seriesIx = fields.seriesIx;\n        var series = fields.series;\n        var errorBars = point.options.errorBars;\n        var lowValue = fields[lowField];\n        var highValue = fields[highField];\n\n        if (isNumber(value)) {\n            var errorRange;\n            if (isNumber(lowValue) && isNumber(highValue)) {\n                errorRange = { low: lowValue, high: highValue };\n            }\n\n            if (errorBars && defined(errorBars[valueErrorField])) {\n                this.seriesErrorRanges = this.seriesErrorRanges || { x: [], y: [] };\n                this.seriesErrorRanges[field][seriesIx] = this.seriesErrorRanges[field][seriesIx] ||\n                    new ErrorRangeCalculator(errorBars[valueErrorField], series, field);\n\n                errorRange = this.seriesErrorRanges[field][seriesIx].getErrorRange(value, errorBars[valueErrorField]);\n            }\n\n            if (errorRange) {\n                this.addPointErrorBar(errorRange, point, field);\n            }\n        }\n    };\n\n    ScatterChart.prototype.addPointErrorBar = function addPointErrorBar (errorRange, point, field) {\n        var low = errorRange.low;\n        var high = errorRange.high;\n        var series = point.series;\n        var options = point.options.errorBars;\n        var isVertical = field === Y;\n        var item = {};\n\n        point[field + \"Low\"] = low;\n        point[field + \"High\"] = high;\n\n        point.errorBars = point.errorBars || [];\n        var errorBar = new ScatterErrorBar(low, high, isVertical, this, series, options);\n        point.errorBars.push(errorBar);\n        point.append(errorBar);\n\n        item[field] = low;\n        this.updateRange(item, series);\n        item[field] = high;\n        this.updateRange(item, series);\n    };\n\n    ScatterChart.prototype.addValue = function addValue (value, fields) {\n        var x = value.x;\n        var y = value.y;\n        var seriesIx = fields.seriesIx;\n        var series = this.options.series[seriesIx];\n        var missingValues = this.seriesMissingValues(series);\n        var seriesPoints = this.seriesPoints[seriesIx];\n\n        var pointValue = value;\n        if (!(hasValue(x) && hasValue(y))) {\n            pointValue = this.createMissingValue(pointValue, missingValues);\n        }\n\n        var point;\n        if (pointValue) {\n            point = this.createPoint(pointValue, fields);\n            if (point) {\n                Object.assign(point, fields);\n                this.addErrorBar(point, X, fields);\n                this.addErrorBar(point, Y, fields);\n            }\n            this.updateRange(pointValue, fields.series);\n        }\n\n        this.points.push(point);\n        seriesPoints.push(point);\n    };\n\n    ScatterChart.prototype.seriesMissingValues = function seriesMissingValues (series) {\n        return series.missingValues;\n    };\n\n    ScatterChart.prototype.createMissingValue = function createMissingValue () {};\n\n    ScatterChart.prototype.updateRange = function updateRange (value, series) {\n        var intlService = this.chartService.intl;\n        var xAxisName = series.xAxis;\n        var yAxisName = series.yAxis;\n        var x = value.x;\n        var y = value.y;\n        var xAxisRange = this.xAxisRanges[xAxisName];\n        var yAxisRange = this.yAxisRanges[yAxisName];\n\n        if (hasValue(x)) {\n            xAxisRange = this.xAxisRanges[xAxisName] =\n                xAxisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n            if (isString(x)) {\n                x = parseDate(intlService, x);\n            }\n\n            xAxisRange.min = Math.min(xAxisRange.min, x);\n            xAxisRange.max = Math.max(xAxisRange.max, x);\n        }\n\n        if (hasValue(y)) {\n            yAxisRange = this.yAxisRanges[yAxisName] =\n                yAxisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n            if (isString(y)) {\n                y = parseDate(intlService, y);\n            }\n\n            yAxisRange.min = Math.min(yAxisRange.min, y);\n            yAxisRange.max = Math.max(yAxisRange.max, y);\n        }\n    };\n\n    ScatterChart.prototype.evalPointOptions = function evalPointOptions (options, value, fields) {\n        var series = fields.series;\n        var seriesIx = fields.seriesIx;\n        var state = {\n            defaults: series._defaults,\n            excluded: [\n                \"data\", \"tooltip\", \"content\", \"template\", \"visual\", \"toggle\",\n                \"_outOfRangeMinPoint\", \"_outOfRangeMaxPoint\",\n                \"drilldownSeriesFactory\"\n            ]\n        };\n\n        var doEval = this._evalSeries[seriesIx];\n        if (!defined(doEval)) {\n            this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n        }\n\n        var pointOptions = options;\n        if (doEval) {\n            pointOptions = deepExtend({}, options);\n            evalOptions(pointOptions, {\n                value: value,\n                series: series,\n                dataItem: fields.dataItem\n            }, state);\n        }\n\n        return pointOptions;\n    };\n\n    ScatterChart.prototype.pointType = function pointType () {\n        return LinePoint;\n    };\n\n    ScatterChart.prototype.pointOptions = function pointOptions (series, seriesIx) {\n        var options = this.seriesOptions[seriesIx];\n        if (!options) {\n            var defaults = this.pointType().prototype.defaults;\n            this.seriesOptions[seriesIx] = options = deepExtend({}, defaults, {\n                markers: {\n                    opacity: series.opacity\n                },\n                tooltip: {\n                    format: this.options.tooltip.format\n                },\n                labels: {\n                    format: this.options.labels.format\n                }\n            }, series);\n        }\n\n        return options;\n    };\n\n    ScatterChart.prototype.createPoint = function createPoint (value, fields) {\n        var series = fields.series;\n        var pointOptions = this.pointOptions(series, fields.seriesIx);\n        var color = fields.color || series.color;\n\n        pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n        if (isFunction(series.color)) {\n            color = pointOptions.color;\n        }\n\n        var point = new LinePoint(value, pointOptions);\n        point.color = color;\n\n        this.append(point);\n\n        return point;\n    };\n\n    ScatterChart.prototype.seriesAxes = function seriesAxes (series) {\n        var xAxisName = series.xAxis;\n        var yAxisName = series.yAxis;\n        var plotArea = this.plotArea;\n        var xAxis = xAxisName ? plotArea.namedXAxes[xAxisName] : plotArea.axisX;\n        var yAxis = yAxisName ? plotArea.namedYAxes[yAxisName] : plotArea.axisY;\n\n        if (!xAxis) {\n            throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n        }\n\n        if (!yAxis) {\n            throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n        }\n\n        return {\n            x: xAxis,\n            y: yAxis\n        };\n    };\n\n    ScatterChart.prototype.reflow = function reflow (targetBox) {\n        var this$1 = this;\n\n        var chartPoints = this.points;\n        var limit = !this.options.clip;\n        var pointIx = 0;\n\n\n        this.traverseDataPoints(function (value, fields) {\n            var point = chartPoints[pointIx++];\n            var seriesAxes = this$1.seriesAxes(fields.series);\n            var slotX = seriesAxes.x.getSlot(value.x, value.x, limit);\n            var slotY = seriesAxes.y.getSlot(value.y, value.y, limit);\n\n            if (point) {\n                if (slotX && slotY) {\n                    var pointSlot = this$1.pointSlot(slotX, slotY);\n                    point.reflow(pointSlot);\n                } else {\n                    point.visible = false;\n                }\n            }\n        });\n\n        this.box = targetBox;\n    };\n\n    ScatterChart.prototype.pointSlot = function pointSlot (slotX, slotY) {\n        return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n    };\n\n    ScatterChart.prototype.traverseDataPoints = function traverseDataPoints (callback) {\n        var this$1 = this;\n\n        var ref = this;\n        var series = ref.options.series;\n        var seriesPoints = ref.seriesPoints;\n\n        for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n            var currentSeries = series[seriesIx];\n            var currentSeriesPoints = seriesPoints[seriesIx];\n            if (!currentSeriesPoints) {\n                seriesPoints[seriesIx] = [];\n            }\n\n            for (var pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n                var ref$1 = this$1.plotArea.bindPoint(currentSeries, pointIx);\n                var value = ref$1.valueFields;\n                var fields = ref$1.fields;\n\n                callback(value, deepExtend({\n                    pointIx: pointIx,\n                    series: currentSeries,\n                    seriesIx: seriesIx,\n                    dataItem: currentSeries.data[pointIx],\n                    owner: this$1\n                }, fields));\n            }\n        }\n    };\n\n    ScatterChart.prototype.formatPointValue = function formatPointValue (point, format) {\n        var value = point.value;\n        return this.chartService.format.auto(format, value.x, value.y);\n    };\n\n    ScatterChart.prototype.animationPoints = function animationPoints () {\n        var points = this.points;\n        var result = [];\n        for (var idx = 0; idx < points.length; idx++) {\n            result.push((points[idx] || {}).marker);\n        }\n        return result;\n    };\n\n    return ScatterChart;\n}(ChartElement));\nsetDefaultOptions(ScatterChart, {\n    series: [],\n    tooltip: {\n        format: \"{0}, {1}\"\n    },\n    labels: {\n        format: \"{0}, {1}\"\n    },\n    clip: true\n});\ndeepExtend(ScatterChart.prototype, ClipAnimationMixin);\n\nexport default ScatterChart;\n","import { drawing as draw, geometry as geom, Color } from '@progress/kendo-drawing';\n\nimport LinePoint from '../line-chart/line-point';\nimport { BORDER_BRIGHTNESS } from '../constants';\n\nimport { CENTER } from '../../common/constants';\nimport { deepExtend } from '../../common';\n\nvar Bubble = (function (LinePoint) {\n    function Bubble(value, options) {\n        LinePoint.call(this, value, options);\n\n        this.category = value.category;\n    }\n\n    if ( LinePoint ) Bubble.__proto__ = LinePoint;\n    Bubble.prototype = Object.create( LinePoint && LinePoint.prototype );\n    Bubble.prototype.constructor = Bubble;\n\n    Bubble.prototype.createHighlight = function createHighlight () {\n        var highlight = this.options.highlight;\n        var border = highlight.border;\n        var markers = this.options.markers;\n        var center = this.box.center();\n        var radius = (markers.size + markers.border.width + border.width) / 2;\n        var highlightGroup = new draw.Group();\n        var shadow = new draw.Circle(new geom.Circle([ center.x, center.y + radius / 5 + border.width / 2 ], radius + border.width / 2), {\n            stroke: {\n                color: 'none'\n            },\n            fill: this.createGradient({\n                gradient: 'bubbleShadow',\n                color: markers.background,\n                stops: [ {\n                    offset: 0,\n                    color: markers.background,\n                    opacity: 0.3\n                }, {\n                    offset: 1,\n                    color: markers.background,\n                    opacity: 0\n                } ]\n            })\n        });\n        var overlay = new draw.Circle(new geom.Circle([ center.x, center.y ], radius), {\n            stroke: {\n                color: border.color ||\n                    new Color(markers.background).brightness(BORDER_BRIGHTNESS).toHex(),\n                width: border.width,\n                opacity: border.opacity\n            },\n            fill: {\n                color: markers.background,\n                opacity: highlight.opacity\n            }\n        });\n\n        highlightGroup.append(shadow, overlay);\n\n        return highlightGroup;\n    };\n\n    return Bubble;\n}(LinePoint));\n\nBubble.prototype.defaults = deepExtend({}, Bubble.prototype.defaults, {\n    labels: {\n        position: CENTER\n    },\n    highlight: {\n        opacity: 1,\n        border: {\n            color: \"#fff\",\n            width: 2,\n            opacity: 1\n        }\n    }\n});\n\nBubble.prototype.defaults.highlight.zIndex = undefined;\n\nexport default Bubble;","import ScatterChart from '../scatter-charts/scatter-chart';\nimport Bubble from './bubble';\n\nimport { INITIAL_ANIMATION_DURATION, BUBBLE } from '../constants';\n\nimport { MIN_VALUE, CIRCLE } from '../../common/constants';\nimport { deepExtend, isFunction, setDefaultOptions, valueOrDefault } from '../../common';\n\nvar BubbleChart = (function (ScatterChart) {\n    function BubbleChart () {\n        ScatterChart.apply(this, arguments);\n    }\n\n    if ( ScatterChart ) BubbleChart.__proto__ = ScatterChart;\n    BubbleChart.prototype = Object.create( ScatterChart && ScatterChart.prototype );\n    BubbleChart.prototype.constructor = BubbleChart;\n\n    BubbleChart.prototype._initFields = function _initFields () {\n        this._maxSize = MIN_VALUE;\n        ScatterChart.prototype._initFields.call(this);\n    };\n\n    BubbleChart.prototype.addValue = function addValue (value, fields) {\n        if (value.size !== null && (value.size > 0 || (value.size < 0 && fields.series.negativeValues.visible))) {\n            this._maxSize = Math.max(this._maxSize, Math.abs(value.size));\n            ScatterChart.prototype.addValue.call(this, value, fields);\n        } else {\n            this.points.push(null);\n            this.seriesPoints[fields.seriesIx].push(null);\n        }\n    };\n\n    BubbleChart.prototype.reflow = function reflow (box) {\n        this.updateBubblesSize(box);\n        ScatterChart.prototype.reflow.call(this, box);\n    };\n\n    BubbleChart.prototype.pointType = function pointType () {\n        return Bubble;\n    };\n\n    BubbleChart.prototype.createPoint = function createPoint (value, fields) {\n        var series = fields.series;\n        var pointsCount = series.data.length;\n        var delay = fields.pointIx * (INITIAL_ANIMATION_DURATION / pointsCount);\n        var animationOptions = {\n            delay: delay,\n            duration: INITIAL_ANIMATION_DURATION - delay,\n            type: BUBBLE\n        };\n\n        var color = fields.color || series.color;\n        if (value.size < 0 && series.negativeValues.visible) {\n            color = valueOrDefault(\n                series.negativeValues.color, color\n            );\n        }\n\n        var pointOptions = deepExtend({\n            labels: {\n                animation: {\n                    delay: delay,\n                    duration: INITIAL_ANIMATION_DURATION - delay\n                }\n            }\n        }, this.pointOptions(series, fields.seriesIx), {\n            markers: {\n                type: CIRCLE,\n                border: series.border,\n                opacity: series.opacity,\n                animation: animationOptions\n            }\n        });\n\n        pointOptions = this.evalPointOptions(pointOptions, value, fields);\n        if (isFunction(series.color)) {\n            color = pointOptions.color;\n        }\n\n        pointOptions.markers.background = color;\n\n        var point = new Bubble(value, pointOptions);\n        point.color = color;\n\n        this.append(point);\n\n        return point;\n    };\n\n    BubbleChart.prototype.updateBubblesSize = function updateBubblesSize (box) {\n        var this$1 = this;\n\n        var ref = this;\n        var series = ref.options.series;\n        var boxSize = Math.min(box.width(), box.height());\n\n        for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n            var currentSeries = series[seriesIx];\n            var seriesPoints = this$1.seriesPoints[seriesIx];\n            var minSize = currentSeries.minSize || Math.max(boxSize * 0.02, 10);\n            var maxSize = currentSeries.maxSize || boxSize * 0.2;\n            var minR = minSize / 2;\n            var maxR = maxSize / 2;\n            var minArea = Math.PI * minR * minR;\n            var maxArea = Math.PI * maxR * maxR;\n            var areaRange = maxArea - minArea;\n            var areaRatio = areaRange / this$1._maxSize;\n\n            for (var pointIx = 0; pointIx < seriesPoints.length; pointIx++) {\n                var point = seriesPoints[pointIx];\n                if (point) {\n                    var area = Math.abs(point.value.size) * areaRatio;\n                    var radius = Math.sqrt((minArea + area) / Math.PI);\n                    var baseZIndex = valueOrDefault(point.options.zIndex, 0);\n                    var zIndex = baseZIndex + (1 - radius / maxR);\n\n                    deepExtend(point.options, {\n                        zIndex: zIndex,\n                        markers: {\n                            size: radius * 2,\n                            zIndex: zIndex\n                        },\n                        labels: {\n                            zIndex: zIndex + 1\n                        }\n                    });\n                }\n            }\n        }\n    };\n\n    BubbleChart.prototype.formatPointValue = function formatPointValue (point, format) {\n        var value = point.value;\n        return this.chartService.format.auto(format, value.x, value.y, value.size, point.category);\n    };\n\n    BubbleChart.prototype.createAnimation = function createAnimation () {};\n    BubbleChart.prototype.createVisual = function createVisual () {};\n\n    return BubbleChart;\n}(ScatterChart));\n\nsetDefaultOptions(BubbleChart, {\n    tooltip: {\n        format: \"{3}\"\n    },\n    labels: {\n        format: \"{3}\"\n    }\n});\n\nexport default BubbleChart;","import { ShapeElement } from '../../core';\nimport { deepExtend } from '../../common';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nvar Target = (function (ShapeElement) {\n\tfunction Target () {\n\t\tShapeElement.apply(this, arguments);\n\t}if ( ShapeElement ) Target.__proto__ = ShapeElement;\n\tTarget.prototype = Object.create( ShapeElement && ShapeElement.prototype );\n\tTarget.prototype.constructor = Target;\n\n\t\n\n\treturn Target;\n}(ShapeElement));\n\ndeepExtend(Target.prototype, PointEventsMixin);\n\nexport default Target;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport Target from './target';\n\nimport { Box, ChartElement } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\nimport Bar from '../bar-chart/bar';\n\nimport { WHITE, TOP, RIGHT } from '../../common/constants';\nimport { alignPathToPixel, deepExtend, defined, getTemplate, setDefaultOptions, valueOrDefault } from '../../common';\n\nimport BarLabel from '../bar-chart/bar-label';\n\nvar Bullet = (function (ChartElement) {\n    function Bullet(value, options) {\n        ChartElement.call(this, options);\n\n        this.aboveAxis = this.options.aboveAxis;\n        this.color = options.color || WHITE;\n        this.value = value;\n    }\n\n    if ( ChartElement ) Bullet.__proto__ = ChartElement;\n    Bullet.prototype = Object.create( ChartElement && ChartElement.prototype );\n    Bullet.prototype.constructor = Bullet;\n\n    Bullet.prototype.render = function render () {\n        var options = this.options;\n\n        if (!this._rendered) {\n            this._rendered = true;\n\n            if (defined(this.value.target)) {\n                this.target = new Target({\n                    type: options.target.shape,\n                    background: options.target.color || this.color,\n                    opacity: options.opacity,\n                    zIndex: options.zIndex,\n                    border: options.target.border,\n                    vAlign: TOP,\n                    align: RIGHT\n                });\n\n                this.target.value = this.value;\n                this.target.dataItem = this.dataItem;\n                this.target.series = this.series;\n\n                this.append(this.target);\n            }\n\n            this.createLabel();\n            this.createNote();\n        }\n    };\n\n    Bullet.prototype.createLabel = function createLabel () {\n        var options = this.options;\n        var labels = options.labels;\n\n        if (labels.visible) {\n            var pointData = this.pointData();\n            var labelTemplate = getTemplate(labels);\n            var labelText;\n\n            if (labelTemplate) {\n                labelText = labelTemplate(pointData);\n            } else {\n                labelText = this.formatValue(labels.format);\n            }\n\n            this.label = new BarLabel(labelText, labels, pointData);\n            this.append(this.label);\n        }\n    };\n\n    Bullet.prototype.reflow = function reflow (box) {\n        this.render();\n\n        var ref = this;\n        var options = ref.options;\n        var target = ref.target;\n        var chart = ref.owner;\n        var invertAxes = options.invertAxes;\n        var valueAxis = chart.seriesValueAxis(this.options);\n        var categorySlot = chart.categorySlot(chart.categoryAxis, options.categoryIx, valueAxis);\n        var targetValueSlot = valueAxis.getSlot(this.value.target);\n        var targetSlotX = invertAxes ? targetValueSlot : categorySlot;\n        var targetSlotY = invertAxes ? categorySlot : targetValueSlot;\n\n        if (target) {\n            var targetSlot = new Box(\n                targetSlotX.x1, targetSlotY.y1,\n                targetSlotX.x2, targetSlotY.y2\n            );\n            target.options.height = invertAxes ? targetSlot.height() : options.target.line.width;\n            target.options.width = invertAxes ? options.target.line.width : targetSlot.width();\n            target.reflow(targetSlot);\n        }\n\n        var label = this.label;\n        if (label) {\n            label.options.aboveAxis = this.aboveAxis;\n            label.reflow(box);\n        }\n\n        if (this.note) {\n            this.note.reflow(box);\n        }\n\n        this.box = box;\n    };\n\n    Bullet.prototype.createVisual = function createVisual () {\n        ChartElement.prototype.createVisual.call(this);\n\n        var options = this.options;\n        var body = draw.Path.fromRect(this.box.toRect(), {\n            fill: {\n                color: this.color,\n                opacity: options.opacity\n            },\n            stroke: null\n        });\n\n        if (options.border.width > 0) {\n            body.options.set(\"stroke\", {\n                color: options.border.color || this.color,\n                width: options.border.width,\n                dashType: options.border.dashType,\n                opacity: valueOrDefault(options.border.opacity, options.opacity)\n            });\n        }\n\n        this.bodyVisual = body;\n\n        alignPathToPixel(body);\n        this.visual.append(body);\n    };\n\n    Bullet.prototype.createAnimation = function createAnimation () {\n        if (this.bodyVisual) {\n            this.animation = draw.Animation.create(\n                this.bodyVisual, this.options.animation\n            );\n        }\n    };\n\n    Bullet.prototype.createHighlight = function createHighlight (style) {\n        return draw.Path.fromRect(this.box.toRect(), style);\n    };\n\n    Bullet.prototype.highlightVisual = function highlightVisual () {\n        return this.bodyVisual;\n    };\n\n    Bullet.prototype.highlightVisualArgs = function highlightVisualArgs () {\n        return {\n            rect: this.box.toRect(),\n            visual: this.bodyVisual,\n            options: this.options\n        };\n    };\n\n    Bullet.prototype.formatValue = function formatValue (format) {\n        return this.owner.formatPointValue(this, format);\n    };\n\n    Bullet.prototype.pointData = function pointData () {\n        return {\n            dataItem: this.dataItem,\n            category: this.category,\n            value: this.value,\n            series: this.series\n        };\n    };\n\n    Bullet.prototype.overlapsBox = function overlapsBox (box) {\n        return this.box.overlaps(box);\n    };\n\n    return Bullet;\n}(ChartElement));\n\nBullet.prototype.tooltipAnchor = Bar.prototype.tooltipAnchor;\n\nsetDefaultOptions(Bullet, {\n    border: {\n        width: 1\n    },\n    vertical: false,\n    opacity: 1,\n    target: {\n        shape: \"\",\n        border: {\n            width: 0,\n            color: \"green\"\n        },\n        line: {\n            width: 2\n        }\n    },\n    labels: {\n        visible: false\n    },\n    tooltip: {\n        format: \"Current: {0}<br />Target: {1}\"\n    },\n    notes: {\n        label: {}\n    }\n});\n\ndeepExtend(Bullet.prototype, PointEventsMixin);\ndeepExtend(Bullet.prototype, NoteMixin);\n\nexport default Bullet;","\nimport CategoricalChart from '../categorical-chart';\nimport BarChart from '../bar-chart/bar-chart';\nimport Bullet from './bullet';\nimport ClusterLayout from '../layout/cluster-layout';\nimport { BAR } from '../constants';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { deepExtend, defined, isArray, isFunction, isObject, setDefaultOptions } from '../../common';\n\nvar BulletChart = (function (CategoricalChart) {\n    function BulletChart(plotArea, options) {\n\n        wrapData(options);\n\n        CategoricalChart.call(this, plotArea, options);\n    }\n\n    if ( CategoricalChart ) BulletChart.__proto__ = CategoricalChart;\n    BulletChart.prototype = Object.create( CategoricalChart && CategoricalChart.prototype );\n    BulletChart.prototype.constructor = BulletChart;\n\n    BulletChart.prototype.reflowCategories = function reflowCategories (categorySlots) {\n        var children = this.children;\n        var childrenLength = children.length;\n\n        for (var i = 0; i < childrenLength; i++) {\n            children[i].reflow(categorySlots[i]);\n        }\n    };\n\n    BulletChart.prototype.plotRange = function plotRange (point) {\n        var series = point.series;\n        var valueAxis = this.seriesValueAxis(series);\n        var axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n\n        return [ axisCrossingValue, point.value.current || axisCrossingValue ];\n    };\n\n    BulletChart.prototype.createPoint = function createPoint (data, fields) {\n        var categoryIx = fields.categoryIx;\n        var series = fields.series;\n        var ref = this;\n        var options = ref.options;\n        var children = ref.children;\n        var value = data.valueFields;\n\n        var bulletOptions = deepExtend({\n            vertical: !options.invertAxes,\n            overlay: series.overlay,\n            categoryIx: categoryIx,\n            invertAxes: options.invertAxes\n        }, series);\n\n        var color = data.fields.color || series.color;\n        bulletOptions = this.evalPointOptions(bulletOptions, value, fields);\n        if (isFunction(series.color)) {\n            color = bulletOptions.color;\n        }\n\n        var bullet = new Bullet(value, bulletOptions);\n        bullet.color = color;\n\n        var cluster = children[categoryIx];\n        if (!cluster) {\n            cluster = new ClusterLayout({\n                vertical: options.invertAxes,\n                gap: options.gap,\n                spacing: options.spacing,\n                rtl: !options.invertAxes && (this.chartService || {}).rtl\n            });\n            this.append(cluster);\n        }\n\n        cluster.append(bullet);\n\n        return bullet;\n    };\n\n    BulletChart.prototype.updateRange = function updateRange (value, fields) {\n        var current = value.current;\n        var target = value.target;\n        var axisName = fields.series.axis;\n        var axisRange = this.valueAxisRanges[axisName];\n\n        if (defined(current) && !isNaN(current) && defined(target && !isNaN(target))) {\n            axisRange = this.valueAxisRanges[axisName] =\n                axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n            axisRange.min = Math.min(axisRange.min, current, target);\n            axisRange.max = Math.max(axisRange.max, current, target);\n        }\n    };\n\n    BulletChart.prototype.formatPointValue = function formatPointValue (point, format) {\n        return this.chartService.format.auto(format, point.value.current, point.value.target);\n    };\n\n    BulletChart.prototype.pointValue = function pointValue (data) {\n        return data.valueFields.current;\n    };\n\n    BulletChart.prototype.aboveAxis = function aboveAxis (point) {\n        var value = point.value.current;\n\n        return value > 0;\n    };\n\n    BulletChart.prototype.createAnimation = function createAnimation () {\n        var this$1 = this;\n\n        var points = this.points;\n\n        this._setAnimationOptions();\n\n        for (var idx = 0; idx < points.length; idx++) {\n            var point = points[idx];\n            point.options.animation = this$1.options.animation;\n            point.createAnimation();\n        }\n    };\n\n    return BulletChart;\n}(CategoricalChart));\n\nBulletChart.prototype._setAnimationOptions = BarChart.prototype._setAnimationOptions;\n\nsetDefaultOptions(BulletChart, {\n    animation: {\n        type: BAR\n    }\n});\n\nfunction wrapData(options) {\n    var series = options.series;\n\n    for (var i = 0; i < series.length; i++) {\n        var seriesItem = series[i];\n        var data = seriesItem.data;\n        if (data && !isArray(data[0]) && !isObject(data[0])) {\n            seriesItem.data = [ data ];\n        }\n    }\n}\n\nexport default BulletChart;\n","import { Color } from '@progress/kendo-drawing';\n\nimport { Class, defined, deepExtend, setDefaultOptions, valueOrDefault, getSpacing, styleValue } from '../../common';\nimport { SHOW_TOOLTIP, HIDE_TOOLTIP } from '../constants';\n\nvar BaseTooltip = (function (Class) {\n    function BaseTooltip(chartService, options) {\n        Class.call(this);\n\n        this.chartService = chartService;\n        this.options = deepExtend({}, this.options, options);\n    }\n\n    if ( Class ) BaseTooltip.__proto__ = Class;\n    BaseTooltip.prototype = Object.create( Class && Class.prototype );\n    BaseTooltip.prototype.constructor = BaseTooltip;\n\n    BaseTooltip.prototype.getStyle = function getStyle (options, point) {\n        var background = options.background;\n        var border = options.border.color;\n\n        if (point) {\n            var pointColor = point.color || point.options.color;\n            background = valueOrDefault(background, pointColor);\n            border = valueOrDefault(border, pointColor);\n        }\n\n        var padding = getSpacing(options.padding || {}, \"auto\");\n\n        return {\n            backgroundColor: background,\n            borderColor: border,\n            font: options.font,\n            color: options.color,\n            opacity: options.opacity,\n            borderWidth: styleValue(options.border.width),\n            paddingTop: styleValue(padding.top),\n            paddingBottom: styleValue(padding.bottom),\n            paddingLeft: styleValue(padding.left),\n            paddingRight: styleValue(padding.right)\n        };\n    };\n\n    BaseTooltip.prototype.show = function show (options, tooltipOptions, point) {\n        options.format = tooltipOptions.format;\n\n        var style = this.getStyle(tooltipOptions, point);\n        options.style = style;\n\n        var background = new Color(style.backgroundColor);\n        if (!defined(tooltipOptions.color) && !background.isDark()) {\n            options.className = \"k-chart-tooltip-inverse\";\n        }\n\n        this.chartService.notify(SHOW_TOOLTIP, options);\n\n        this.visible = true;\n    };\n\n    BaseTooltip.prototype.hide = function hide () {\n        if (this.chartService) {\n            this.chartService.notify(HIDE_TOOLTIP);\n        }\n\n        this.visible = false;\n    };\n\n    BaseTooltip.prototype.destroy = function destroy () {\n        delete this.chartService;\n    };\n\n    return BaseTooltip;\n}(Class));\n\nsetDefaultOptions(BaseTooltip, {\n    border: {\n        width: 1\n    },\n    opacity: 1\n});\n\nexport default BaseTooltip;\n","import BaseTooltip from '../tooltip/base-tooltip';\n\nimport { HIDE_TOOLTIP } from '../constants';\nimport { TOP, BOTTOM, LEFT, RIGHT, CENTER, DATE } from '../../common/constants';\nimport { setDefaultOptions } from '../../common';\n\nvar CrosshairTooltip = (function (BaseTooltip) {\n    function CrosshairTooltip(chartService, crosshair, options) {\n        BaseTooltip.call(this, chartService, options);\n\n        this.crosshair = crosshair;\n        this.formatService = chartService.format;\n        this.initAxisName();\n    }\n\n    if ( BaseTooltip ) CrosshairTooltip.__proto__ = BaseTooltip;\n    CrosshairTooltip.prototype = Object.create( BaseTooltip && BaseTooltip.prototype );\n    CrosshairTooltip.prototype.constructor = CrosshairTooltip;\n\n    CrosshairTooltip.prototype.initAxisName = function initAxisName () {\n        var axis = this.crosshair.axis;\n        var plotArea = axis.plotArea;\n        var name;\n        if (plotArea.categoryAxis) {\n            name = axis.getCategory ? \"categoryAxis\" : \"valueAxis\";\n        } else {\n            name = axis.options.vertical ? \"yAxis\" : \"xAxis\";\n        }\n        this.axisName = name;\n    };\n\n    CrosshairTooltip.prototype.showAt = function showAt (point) {\n        var ref = this;\n        var axis = ref.crosshair.axis;\n        var options = ref.options;\n        var value = axis[options.stickyMode ? \"getCategory\" : \"getValue\"](point);\n        var formattedValue = value;\n\n        if (options.format) {\n            formattedValue = this.formatService.auto(options.format, value);\n        } else if (axis.options.type === DATE) {\n            formattedValue = this.formatService.auto(axis.options.labels.dateFormats[axis.options.baseUnit], value);\n        }\n\n        this.show({\n            point: point,\n            anchor: this.getAnchor(),\n            crosshair: this.crosshair,\n            value: formattedValue,\n            axisName: this.axisName,\n            axisIndex: this.crosshair.axis.axisIndex\n        }, this.options);\n    };\n\n    CrosshairTooltip.prototype.hide = function hide () {\n        this.chartService.notify(HIDE_TOOLTIP, {\n            crosshair: this.crosshair,\n            axisName: this.axisName,\n            axisIndex: this.crosshair.axis.axisIndex\n        });\n    };\n\n    CrosshairTooltip.prototype.getAnchor = function getAnchor () {\n        var ref = this;\n        var crosshair = ref.crosshair;\n        var ref_options = ref.options;\n        var position = ref_options.position;\n        var padding = ref_options.padding;\n        var vertical = !crosshair.axis.options.vertical;\n        var lineBox = crosshair.line.bbox();\n        var horizontalAlign, verticalAlign, point;\n\n        if (vertical) {\n            horizontalAlign = CENTER;\n            if (position === BOTTOM) {\n                verticalAlign = TOP;\n                point = lineBox.bottomLeft().translate(0, padding);\n            } else {\n                verticalAlign = BOTTOM;\n                point = lineBox.topLeft().translate(0, -padding);\n            }\n        } else {\n            verticalAlign = CENTER;\n            if (position === LEFT) {\n                horizontalAlign = RIGHT;\n                point = lineBox.topLeft().translate(-padding, 0);\n            } else {\n                horizontalAlign = LEFT;\n                point = lineBox.topRight().translate(padding, 0);\n            }\n        }\n\n        return {\n            point: point,\n            align: {\n                horizontal: horizontalAlign,\n                vertical: verticalAlign\n            }\n        };\n    };\n\n    return CrosshairTooltip;\n}(BaseTooltip));\n\nsetDefaultOptions(CrosshairTooltip, {\n    padding: 10\n});\n\nexport default CrosshairTooltip;\n\n","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { ChartElement, CategoryAxis } from '../../core';\nimport CrosshairTooltip from './crosshair-tooltip';\n\nimport { BLACK, X, Y } from '../../common/constants';\nimport { deepExtend, setDefaultOptions } from '../../common';\n\nvar Crosshair = (function (ChartElement) {\n    function Crosshair(chartService, axis, options) {\n        ChartElement.call(this, options);\n\n        this.axis = axis;\n        this.stickyMode = axis instanceof CategoryAxis;\n\n        var tooltipOptions = this.options.tooltip;\n\n        if (tooltipOptions.visible) {\n            this.tooltip = new CrosshairTooltip(chartService, this,\n                deepExtend({}, tooltipOptions, { stickyMode: this.stickyMode })\n            );\n        }\n    }\n\n    if ( ChartElement ) Crosshair.__proto__ = ChartElement;\n    Crosshair.prototype = Object.create( ChartElement && ChartElement.prototype );\n    Crosshair.prototype.constructor = Crosshair;\n\n    Crosshair.prototype.showAt = function showAt (point) {\n        this.point = point;\n        this.moveLine();\n        this.line.visible(true);\n\n        if (this.tooltip) {\n            this.tooltip.showAt(point);\n        }\n    };\n\n    Crosshair.prototype.hide = function hide () {\n        this.line.visible(false);\n\n        if (this.tooltip) {\n            this.tooltip.hide();\n        }\n    };\n\n    Crosshair.prototype.moveLine = function moveLine () {\n        var ref = this;\n        var axis = ref.axis;\n        var point = ref.point;\n        var vertical = axis.options.vertical;\n        var box = this.getBox();\n        var dim = vertical ? Y : X;\n        var lineStart = new geom.Point(box.x1, box.y1);\n        var lineEnd;\n\n        if (vertical) {\n            lineEnd = new geom.Point(box.x2, box.y1);\n        } else {\n            lineEnd = new geom.Point(box.x1, box.y2);\n        }\n\n        if (point) {\n            if (this.stickyMode) {\n                var slot = axis.getSlot(axis.pointCategoryIndex(point));\n                lineStart[dim] = lineEnd[dim] = slot.center()[dim];\n            } else {\n                lineStart[dim] = lineEnd[dim] = point[dim];\n            }\n        }\n\n        this.box = box;\n\n        this.line.moveTo(lineStart).lineTo(lineEnd);\n    };\n\n    Crosshair.prototype.getBox = function getBox () {\n        var axis = this.axis;\n        var axes = axis.pane.axes;\n        var length = axes.length;\n        var vertical = axis.options.vertical;\n        var box = axis.lineBox().clone();\n        var dim = vertical ? X : Y;\n        var axisLineBox;\n\n        for (var i = 0; i < length; i++) {\n            var currentAxis = axes[i];\n            if (currentAxis.options.vertical !== vertical) {\n                if (!axisLineBox) {\n                    axisLineBox = currentAxis.lineBox().clone();\n                } else {\n                    axisLineBox.wrap(currentAxis.lineBox());\n                }\n            }\n        }\n\n        box[dim + 1] = axisLineBox[dim + 1];\n        box[dim + 2] = axisLineBox[dim + 2];\n\n        return box;\n    };\n\n    Crosshair.prototype.createVisual = function createVisual () {\n        ChartElement.prototype.createVisual.call(this);\n\n        var options = this.options;\n        this.line = new draw.Path({\n            stroke: {\n                color: options.color,\n                width: options.width,\n                opacity: options.opacity,\n                dashType: options.dashType\n            },\n            visible: false\n        });\n\n        this.moveLine();\n        this.visual.append(this.line);\n    };\n\n    Crosshair.prototype.destroy = function destroy () {\n        if (this.tooltip) {\n            this.tooltip.destroy();\n        }\n\n        ChartElement.prototype.destroy.call(this);\n    };\n\n    return Crosshair;\n}(ChartElement));\n\nsetDefaultOptions(Crosshair, {\n    color: BLACK,\n    width: 2,\n    zIndex: -1,\n    tooltip: {\n        visible: false\n    }\n});\n\nexport default Crosshair;","import { drawing as draw } from '@progress/kendo-drawing';\nimport { alignPathToPixel } from '../common';\n\nimport { ChartElement } from '../core';\n\nvar ChartContainer = (function (ChartElement) {\n    function ChartContainer(options, pane) {\n        ChartElement.call(this, options);\n        this.pane = pane;\n    }\n\n    if ( ChartElement ) ChartContainer.__proto__ = ChartElement;\n    ChartContainer.prototype = Object.create( ChartElement && ChartElement.prototype );\n    ChartContainer.prototype.constructor = ChartContainer;\n\n    ChartContainer.prototype.shouldClip = function shouldClip () {\n        var children = this.children;\n        var length = children.length;\n\n        for (var i = 0; i < length; i++) {\n            if (children[i].options.clip === true) {\n                return true;\n            }\n        }\n        return false;\n    };\n\n    ChartContainer.prototype._clipBox = function _clipBox () {\n        return this.pane.chartsBox();\n    };\n\n    ChartContainer.prototype.createVisual = function createVisual () {\n        this.visual = new draw.Group({\n            zIndex: 0\n        });\n\n        if (this.shouldClip()) {\n            var clipBox = this.clipBox = this._clipBox();\n            var clipRect = clipBox.toRect();\n            var clipPath = draw.Path.fromRect(clipRect);\n            alignPathToPixel(clipPath);\n\n            this.visual.clip(clipPath);\n            this.unclipLabels();\n        }\n    };\n\n    ChartContainer.prototype.stackRoot = function stackRoot () {\n        return this;\n    };\n\n    ChartContainer.prototype.unclipLabels = function unclipLabels () {\n        var ref = this;\n        var charts = ref.children;\n        var clipBox = ref.clipBox;\n\n        for (var i = 0; i < charts.length; i++) {\n            var points = charts[i].points || {};\n            var length = points.length;\n\n            for (var j = 0; j < length; j++) {\n                var point = points[j];\n                if (point && point.visible !== false && point.overlapsBox && point.overlapsBox(clipBox)) {\n                    if (point.unclipElements) {\n                        point.unclipElements();\n                    } else {\n                        var label = point.label;\n                        var note = point.note;\n\n                        if (label && label.options.visible) {\n                            if (label.alignToClipBox) {\n                                label.alignToClipBox(clipBox);\n                            }\n                            label.options.noclip = true;\n                        }\n\n                        if (note && note.options.visible) {\n                            note.options.noclip = true;\n                        }\n                    }\n                }\n            }\n        }\n    };\n\n    ChartContainer.prototype.destroy = function destroy () {\n        ChartElement.prototype.destroy.call(this);\n\n        delete this.parent;\n    };\n\n    return ChartContainer;\n}(ChartElement));\n\nChartContainer.prototype.isStackRoot = true;\n\nexport default ChartContainer;","import { ChartElement, BoxElement, Title, Box } from '../core';\nimport { ChartPane } from './api-elements';\nimport ChartContainer from './chart-container';\n\nimport { PANE_RENDER } from './constants';\nimport { TOP, LEFT, X, Y } from '../common/constants';\nimport { append, deepExtend, isObject, last, setDefaultOptions } from '../common';\n\nvar Pane = (function (BoxElement) {\n    function Pane(options) {\n        BoxElement.call(this, options);\n\n        this.id = paneID();\n\n        this.createTitle();\n\n        this.content = new ChartElement();\n\n        this.chartContainer = new ChartContainer({}, this);\n        this.append(this.content);\n\n        this.axes = [];\n        this.charts = [];\n    }\n\n    if ( BoxElement ) Pane.__proto__ = BoxElement;\n    Pane.prototype = Object.create( BoxElement && BoxElement.prototype );\n    Pane.prototype.constructor = Pane;\n\n    Pane.prototype.createTitle = function createTitle () {\n        var titleOptions = this.options.title;\n        if (isObject(titleOptions)) {\n            titleOptions = deepExtend({}, titleOptions, {\n                align: titleOptions.position,\n                position: TOP\n            });\n        }\n\n        this.title = Title.buildTitle(titleOptions, Pane.prototype.options.title);\n        if (this.title) {\n            this.append(this.title);\n        }\n    };\n\n    Pane.prototype.appendAxis = function appendAxis (axis) {\n        this.content.append(axis);\n        this.axes.push(axis);\n        axis.pane = this;\n    };\n\n    Pane.prototype.appendAxisAt = function appendAxisAt (axis, pos) {\n        this.content.append(axis);\n        this.axes.splice(pos, 0, axis);\n        axis.pane = this;\n    };\n\n    Pane.prototype.appendChart = function appendChart (chart) {\n        if (this.chartContainer.parent !== this.content) {\n            this.content.append(this.chartContainer);\n        }\n\n        this.charts.push(chart);\n        this.chartContainer.append(chart);\n        chart.pane = this;\n    };\n\n    Pane.prototype.empty = function empty () {\n        var this$1 = this;\n\n        var plotArea = this.parent;\n\n        if (plotArea) {\n            for (var i = 0; i < this.axes.length; i++) {\n                plotArea.removeAxis(this$1.axes[i]);\n            }\n\n            for (var i$1 = 0; i$1 < this.charts.length; i$1++) {\n                plotArea.removeChart(this$1.charts[i$1]);\n            }\n        }\n\n        this.axes = [];\n        this.charts = [];\n\n        this.content.destroy();\n        this.content.children = [];\n        this.chartContainer.children = [];\n    };\n\n    Pane.prototype.reflow = function reflow (targetBox) {\n        // Content (such as charts) is rendered, but excluded from reflows\n        var content;\n        if (last(this.children) === this.content) {\n            content = this.children.pop();\n        }\n\n        BoxElement.prototype.reflow.call(this, targetBox);\n\n        if (content) {\n            this.children.push(content);\n        }\n\n        if (this.title) {\n            this.contentBox.y1 += this.title.box.height();\n        }\n    };\n\n    Pane.prototype.visualStyle = function visualStyle () {\n        var style = BoxElement.prototype.visualStyle.call(this);\n        style.zIndex = -10;\n\n        return style;\n    };\n\n    Pane.prototype.renderComplete = function renderComplete () {\n        if (this.options.visible) {\n            this.createGridLines();\n        }\n    };\n\n    Pane.prototype.stackRoot = function stackRoot () {\n        return this;\n    };\n\n    Pane.prototype.clipRoot = function clipRoot () {\n        return this;\n    };\n\n    Pane.prototype.createGridLines = function createGridLines () {\n        var axes = this.axes;\n        var allAxes = axes.concat(this.parent.axes);\n        var vGridLines = [];\n        var hGridLines = [];\n\n        // TODO\n        // Is full combination really necessary?\n        for (var i = 0; i < axes.length; i++) {\n            var axis = axes[i];\n            var vertical = axis.options.vertical;\n            var gridLines = vertical ? vGridLines : hGridLines;\n            for (var j = 0; j < allAxes.length; j++) {\n                if (gridLines.length === 0) {\n                    var altAxis = allAxes[j];\n                    if (vertical !== altAxis.options.vertical) {\n                        append(gridLines, axis.createGridLines(altAxis));\n                    }\n                }\n            }\n        }\n    };\n\n    Pane.prototype.refresh = function refresh () {\n        this.visual.clear();\n\n        this.content.parent = null;\n        this.content.createGradient = this.createGradient.bind(this);\n        this.content.renderVisual();\n        this.content.parent = this;\n\n        if (this.title) {\n            this.visual.append(this.title.visual);\n        }\n\n        this.visual.append(this.content.visual);\n\n        this.renderComplete();\n        this.notifyRender();\n    };\n\n    Pane.prototype.chartsBox = function chartsBox () {\n        var axes = this.axes;\n        var length = axes.length;\n        var chartsBox = new Box();\n\n        for (var idx = 0; idx < length; idx++) {\n            var axis = axes[idx];\n            var axisValueField = axis.options.vertical ? Y : X;\n            var lineBox = axis.lineBox();\n            chartsBox[axisValueField + 1] = lineBox[axisValueField + 1];\n            chartsBox[axisValueField + 2] = lineBox[axisValueField + 2];\n        }\n\n        if (chartsBox.x2 === 0) {\n            var allAxes = this.parent.axes;\n            var length$1 = allAxes.length;\n\n            for (var idx$1 = 0; idx$1 < length$1; idx$1++) {\n                var axis$1 = allAxes[idx$1];\n                if (!axis$1.options.vertical) {\n                    var lineBox$1 = axis$1.lineBox();\n                    chartsBox.x1 = lineBox$1.x1;\n                    chartsBox.x2 = lineBox$1.x2;\n                }\n            }\n        }\n        return chartsBox;\n    };\n\n    Pane.prototype.clipBox = function clipBox () {\n        return this.chartContainer.clipBox;\n    };\n\n    Pane.prototype.notifyRender = function notifyRender () {\n        var service = this.getService();\n        if (service) {\n            service.notify(PANE_RENDER, {\n                pane: new ChartPane(this),\n                index: this.paneIndex,\n                name: this.options.name\n            });\n        }\n    };\n\n    return Pane;\n}(BoxElement));\n\nvar ID = 1;\n\nfunction paneID() {\n    return \"pane\" + ID++;\n}\n\nPane.prototype.isStackRoot = true;\n\nsetDefaultOptions(Pane, {\n    zIndex: -1,\n    shrinkToFit: true,\n    title: {\n        align: LEFT\n    },\n    visible: true\n});\n\nexport default Pane;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Box } from '../../core';\nimport Crosshair from '../crosshair/crosshair';\nimport Pane from '../pane';\nimport { hasValue } from '../utils';\nimport SeriesBinder from '../series-binder';\n\nimport { WHITE, BLACK, X, Y, COORD_PRECISION, TOP, BOTTOM, LEFT, RIGHT, START, END, INHERIT } from '../../common/constants';\nimport { append, deepExtend, defined, getSpacing, getTemplate, inArray, isFunction, isString, limitValue, round, setDefaultOptions, last } from '../../common';\nimport { TRENDLINE_SERIES } from '../constants';\n\nvar PlotAreaBase = (function (ChartElement) {\n    function PlotAreaBase(series, options, chartService) {\n        ChartElement.call(this, options);\n\n        this.initFields(series, options);\n        this.series = series;\n        this.initSeries();\n        this.charts = [];\n        this.options.legend = this.options.legend || {};\n        this.options.legend.items = [];\n        this.axes = [];\n        this.crosshairs = [];\n        this.chartService = chartService;\n        this.originalOptions = options;\n        this.originalSeries = series;\n        this._bindCache = new WeakMap();\n\n        this.createPanes();\n        this.render();\n        this.createCrosshairs();\n    }\n\n    if ( ChartElement ) PlotAreaBase.__proto__ = ChartElement;\n    PlotAreaBase.prototype = Object.create( ChartElement && ChartElement.prototype );\n    PlotAreaBase.prototype.constructor = PlotAreaBase;\n\n    PlotAreaBase.prototype.initFields = function initFields () { };\n\n    PlotAreaBase.prototype.initSeries = function initSeries () {\n        var series = this.series;\n\n        for (var i = 0; i < series.length; i++) {\n            series[i].index = i;\n        }\n    };\n\n    PlotAreaBase.prototype.bindPoint = function bindPoint (series, pointIx, item) {\n        var cached = this._bindCache.get(series);\n        if (!cached) {\n            cached = [];\n            this._bindCache.set(series, cached);\n        }\n\n        var data = cached[pointIx];\n        if (!data) {\n            data = cached[pointIx] = SeriesBinder.current.bindPoint(series, pointIx, item);\n        }\n\n        return data;\n    };\n\n    PlotAreaBase.prototype.createPanes = function createPanes () {\n        var this$1 = this;\n\n        var titleOptions = this.options.title || {};\n        var paneDefaults = this.options.paneDefaults;\n        var paneOptions = this.options.panes || [];\n        var panesLength = Math.max(paneOptions.length, 1);\n        var panes = [];\n\n        var defaults = deepExtend({\n            title: {\n                color: titleOptions.color\n            }\n        }, paneDefaults);\n\n        for (var i = 0; i < panesLength; i++) {\n            var options = deepExtend({}, defaults, paneOptions[i]);\n            if (isString(options.title)) {\n                options.title = deepExtend({ text: options.title }, defaults.title);\n            }\n\n            var currentPane = new Pane(options);\n            currentPane.paneIndex = i;\n\n            panes.push(currentPane);\n            this$1.append(currentPane);\n        }\n\n        this.panes = panes;\n    };\n\n    PlotAreaBase.prototype.crosshairOptions = function crosshairOptions (axis) {\n        return axis.options.crosshair;\n    };\n\n    PlotAreaBase.prototype.createCrosshairs = function createCrosshairs (panes) {\n        var this$1 = this;\n        if ( panes === void 0 ) panes = this.panes;\n\n        for (var i = 0; i < panes.length; i++) {\n            var pane = panes[i];\n            for (var j = 0; j < pane.axes.length; j++) {\n                var axis = pane.axes[j];\n                var options = this$1.crosshairOptions(axis);\n                if (options && options.visible) {\n                    var currentCrosshair = new Crosshair(this$1.chartService, axis, options);\n\n                    this$1.crosshairs.push(currentCrosshair);\n                    pane.content.append(currentCrosshair);\n                }\n            }\n        }\n    };\n\n    PlotAreaBase.prototype.removeCrosshairs = function removeCrosshairs (pane) {\n        var crosshairs = this.crosshairs;\n        var axes = pane.axes;\n\n        for (var i = crosshairs.length - 1; i >= 0; i--) {\n            for (var j = 0; j < axes.length; j++) {\n                if (crosshairs[i].axis === axes[j]) {\n                    crosshairs.splice(i, 1);\n                    break;\n                }\n            }\n        }\n    };\n\n    PlotAreaBase.prototype.hideCrosshairs = function hideCrosshairs () {\n        var crosshairs = this.crosshairs;\n        for (var idx = 0; idx < crosshairs.length; idx++) {\n            crosshairs[idx].hide();\n        }\n    };\n\n    PlotAreaBase.prototype.findPane = function findPane (name) {\n        var panes = this.panes;\n        var matchingPane;\n\n        for (var i = 0; i < panes.length; i++) {\n            if (panes[i].options.name === name) {\n                matchingPane = panes[i];\n                break;\n            }\n        }\n\n        return matchingPane || panes[0];\n    };\n\n    PlotAreaBase.prototype.findPointPane = function findPointPane (point) {\n        var panes = this.panes;\n        var matchingPane;\n\n        for (var i = 0; i < panes.length; i++) {\n            if (panes[i].box.containsPoint(point)) {\n                matchingPane = panes[i];\n                break;\n            }\n        }\n\n        return matchingPane;\n    };\n\n    PlotAreaBase.prototype.appendAxis = function appendAxis (axis) {\n        var pane = this.findPane(axis.options.pane);\n\n        pane.appendAxis(axis);\n        this.axes.push(axis);\n        axis.plotArea = this;\n    };\n\n    PlotAreaBase.prototype.removeAxis = function removeAxis (axisToRemove) {\n        var this$1 = this;\n\n        var filteredAxes = [];\n\n        for (var i = 0; i < this.axes.length; i++) {\n            var axis = this$1.axes[i];\n            if (axisToRemove !== axis) {\n                filteredAxes.push(axis);\n            } else {\n                axis.destroy();\n            }\n        }\n\n        this.axes = filteredAxes;\n    };\n\n    PlotAreaBase.prototype.appendChart = function appendChart (chart, pane) {\n        this.charts.push(chart);\n        if (pane) {\n            pane.appendChart(chart);\n        } else {\n            this.append(chart);\n        }\n    };\n\n    PlotAreaBase.prototype.removeChart = function removeChart (chartToRemove) {\n        var this$1 = this;\n\n        var filteredCharts = [];\n\n        for (var i = 0; i < this.charts.length; i++) {\n            var chart = this$1.charts[i];\n            if (chart !== chartToRemove) {\n                filteredCharts.push(chart);\n            } else {\n                chart.destroy();\n            }\n        }\n\n        this.charts = filteredCharts;\n    };\n\n    PlotAreaBase.prototype.addToLegend = function addToLegend (series) {\n        var count = series.length;\n        var legend = this.options.legend;\n        var labels = legend.labels || {};\n        var inactiveItems = legend.inactiveItems || {};\n        var inactiveItemsLabels = inactiveItems.labels || {};\n        var data = [];\n\n        for (var i = 0; i < count; i++) {\n            var currentSeries = series[i];\n            var seriesVisible = currentSeries.visible !== false;\n            if (currentSeries.visibleInLegend === false) {\n                continue;\n            }\n\n            var text = currentSeries.name;\n            var labelTemplate = seriesVisible ? getTemplate(labels) : getTemplate(inactiveItemsLabels) || getTemplate(labels);\n            if (labelTemplate) {\n                text = labelTemplate({\n                    text: hasValue(text) ? text : \"\",\n                    series: currentSeries\n                });\n            }\n\n            var defaults = currentSeries._defaults;\n            var color = currentSeries.color;\n            if (isFunction(color) && defaults) {\n                color = defaults.color;\n            }\n\n            var itemLabelOptions = (void 0), markerColor = (void 0);\n            if (seriesVisible) {\n                itemLabelOptions = {};\n                markerColor = color;\n            } else {\n                itemLabelOptions = {\n                    color: inactiveItemsLabels.color,\n                    font: inactiveItemsLabels.font\n                };\n                markerColor = inactiveItems.markers.color;\n            }\n\n            if (hasValue(text) && text !== \"\") {\n                data.push({\n                    text: text,\n                    labels: itemLabelOptions,\n                    markerColor: markerColor,\n                    series: currentSeries,\n                    active: seriesVisible\n                });\n            }\n        }\n\n        append(legend.items, data);\n    };\n\n    PlotAreaBase.prototype.groupAxes = function groupAxes (panes) {\n        var xAxes = [];\n        var yAxes = [];\n\n        for (var paneIx = 0; paneIx < panes.length; paneIx++) {\n            var paneAxes = panes[paneIx].axes;\n            for (var axisIx = 0; axisIx < paneAxes.length; axisIx++) {\n                var axis = paneAxes[axisIx];\n                if (axis.options.vertical) {\n                    yAxes.push(axis);\n                } else {\n                    xAxes.push(axis);\n                }\n            }\n        }\n\n        return { x: xAxes, y: yAxes, any: xAxes.concat(yAxes) };\n    };\n\n    PlotAreaBase.prototype.groupSeriesByPane = function groupSeriesByPane () {\n        var this$1 = this;\n\n        var series = this.series;\n        var seriesByPane = {};\n\n        for (var i = 0; i < series.length; i++) {\n            var currentSeries = series[i];\n            var pane = this$1.seriesPaneName(currentSeries);\n\n            if (seriesByPane[pane]) {\n                seriesByPane[pane].push(currentSeries);\n            } else {\n                seriesByPane[pane] = [ currentSeries ];\n            }\n        }\n\n        return seriesByPane;\n    };\n\n    PlotAreaBase.prototype.filterVisibleSeries = function filterVisibleSeries (series) {\n        var result = [];\n\n        for (var i = 0; i < series.length; i++) {\n            var currentSeries = series[i];\n            if (currentSeries.visible !== false) {\n                result.push(currentSeries);\n            }\n        }\n\n        return result;\n    };\n\n    PlotAreaBase.prototype.reflow = function reflow (targetBox) {\n        var options = this.options.plotArea;\n        var panes = this.panes;\n        var margin = getSpacing(options.margin);\n\n        this.box = targetBox.clone().unpad(margin);\n        this.reflowPanes();\n\n        this.detachLabels();\n        this.reflowAxes(panes);\n        this.reflowCharts(panes);\n    };\n\n    PlotAreaBase.prototype.redraw = function redraw (panes) {\n        var this$1 = this;\n\n        var panesArray = [].concat(panes);\n        this.initSeries();\n\n        //prevents leak during partial redraws. the cached gradients observers retain reference to the destroyed elements.\n        var root = this.getRoot();\n        if (root) {\n            root.cleanGradients();\n        }\n\n        for (var i = 0; i < panesArray.length; i++) {\n            this$1.removeCrosshairs(panesArray[i]);\n            panesArray[i].empty();\n        }\n\n        this._bindCache = new WeakMap();\n\n        this.render(panesArray);\n        this.detachLabels();\n        this.reflowAxes(this.panes);\n        this.reflowCharts(panesArray);\n\n        this.createCrosshairs(panesArray);\n\n        for (var i$1 = 0; i$1 < panesArray.length; i$1++) {\n            panesArray[i$1].refresh();\n        }\n    };\n\n    PlotAreaBase.prototype.axisCrossingValues = function axisCrossingValues (axis, crossingAxes) {\n        var options = axis.options;\n        var crossingValues = [].concat(\n            options.axisCrossingValues || options.axisCrossingValue\n        );\n        var valuesToAdd = crossingAxes.length - crossingValues.length;\n        var defaultValue = crossingValues[0] || 0;\n\n        for (var i = 0; i < valuesToAdd; i++) {\n            crossingValues.push(defaultValue);\n        }\n\n        return crossingValues;\n    };\n\n    PlotAreaBase.prototype.alignAxisTo = function alignAxisTo (axis, targetAxis, crossingValue, targetCrossingValue) {\n        var slot = axis.getSlot(crossingValue, crossingValue, true);\n        var slotEdge = axis.options.reverse ? 2 : 1;\n        var targetSlot = targetAxis.getSlot(targetCrossingValue, targetCrossingValue, true);\n        var targetEdge = targetAxis.options.reverse ? 2 : 1;\n        var axisBox = axis.box.translate(\n            targetSlot[X + targetEdge] - slot[X + slotEdge],\n            targetSlot[Y + targetEdge] - slot[Y + slotEdge]\n        );\n\n        if (axis.pane !== targetAxis.pane) {\n            axisBox.translate(0, axis.pane.box.y1 - targetAxis.pane.box.y1);\n        }\n\n        axis.reflow(axisBox);\n    };\n\n    PlotAreaBase.prototype.alignAxes = function alignAxes (xAxes, yAxes) {\n        var this$1 = this;\n\n        var xAnchor = xAxes[0];\n        var yAnchor = yAxes[0];\n        var xAnchorCrossings = this.axisCrossingValues(xAnchor, yAxes);\n        var yAnchorCrossings = this.axisCrossingValues(yAnchor, xAxes);\n        var leftAnchors = {};\n        var rightAnchors = {};\n        var topAnchors = {};\n        var bottomAnchors = {};\n\n        for (var i = 0; i < yAxes.length; i++) {\n            var axis = yAxes[i];\n            var pane = axis.pane;\n            var paneId = pane.id;\n            var visible = axis.options.visible !== false;\n\n            // Locate pane anchor, if any, and use its axisCrossingValues\n            var anchor = paneAnchor(xAxes, pane) || xAnchor;\n            var anchorCrossings = xAnchorCrossings;\n\n            if (anchor !== xAnchor) {\n                anchorCrossings = this$1.axisCrossingValues(anchor, yAxes);\n            }\n\n            this$1.alignAxisTo(axis, anchor, yAnchorCrossings[i], anchorCrossings[i]);\n\n            if (axis.options._overlap) {\n                continue;\n            }\n\n            if (round(axis.lineBox().x1) === round(anchor.lineBox().x1)) {\n                // Push the axis to the left the previous y-axis so they don't overlap\n                if (leftAnchors[paneId]) {\n                    axis.reflow(axis.box\n                        .alignTo(leftAnchors[paneId].box, LEFT)\n                        .translate(-axis.options.margin, 0)\n                    );\n                }\n\n                if (visible) {\n                    leftAnchors[paneId] = axis;\n                }\n            }\n\n            if (round(axis.lineBox().x2) === round(anchor.lineBox().x2)) {\n                // Flip the labels on the right if we're at the right end of the pane\n                if (!axis._mirrored) {\n                    axis.options.labels.mirror = !axis.options.labels.mirror;\n                    axis._mirrored = true;\n                }\n\n                this$1.alignAxisTo(axis, anchor, yAnchorCrossings[i], anchorCrossings[i]);\n\n                // Push the axis to the right the previous y-axis so they don't overlap\n                if (rightAnchors[paneId]) {\n                    axis.reflow(axis.box\n                        .alignTo(rightAnchors[paneId].box, RIGHT)\n                        .translate(axis.options.margin, 0)\n                    );\n                }\n\n                if (visible) {\n                    rightAnchors[paneId] = axis;\n                }\n            }\n\n            if (i !== 0 && yAnchor.pane === axis.pane) {\n                axis.alignTo(yAnchor);\n                axis.reflow(axis.box);\n            }\n        }\n\n        for (var i$1 = 0; i$1 < xAxes.length; i$1++) {\n            var axis$1 = xAxes[i$1];\n            var pane$1 = axis$1.pane;\n            var paneId$1 = pane$1.id;\n            var visible$1 = axis$1.options.visible !== false;\n\n            // Locate pane anchor and use its axisCrossingValues\n            var anchor$1 = paneAnchor(yAxes, pane$1) || yAnchor;\n            var anchorCrossings$1 = yAnchorCrossings;\n            if (anchor$1 !== yAnchor) {\n                anchorCrossings$1 = this$1.axisCrossingValues(anchor$1, xAxes);\n            }\n\n            this$1.alignAxisTo(axis$1, anchor$1, xAnchorCrossings[i$1], anchorCrossings$1[i$1]);\n\n            if (axis$1.options._overlap) {\n                continue;\n            }\n\n            if (round(axis$1.lineBox().y1) === round(anchor$1.lineBox().y1)) {\n                // Flip the labels on top if we're at the top of the pane\n                if (!axis$1._mirrored) {\n                    axis$1.options.labels.mirror = !axis$1.options.labels.mirror;\n                    axis$1._mirrored = true;\n                }\n                this$1.alignAxisTo(axis$1, anchor$1, xAnchorCrossings[i$1], anchorCrossings$1[i$1]);\n\n                // Push the axis above the previous x-axis so they don't overlap\n                if (topAnchors[paneId$1]) {\n                    axis$1.reflow(axis$1.box\n                        .alignTo(topAnchors[paneId$1].box, TOP)\n                        .translate(0, -axis$1.options.margin)\n                    );\n                }\n\n                if (visible$1) {\n                    topAnchors[paneId$1] = axis$1;\n                }\n            }\n\n            if (round(axis$1.lineBox().y2, COORD_PRECISION) === round(anchor$1.lineBox().y2, COORD_PRECISION)) {\n                // Push the axis below the previous x-axis so they don't overlap\n                if (bottomAnchors[paneId$1]) {\n                    axis$1.reflow(axis$1.box\n                        .alignTo(bottomAnchors[paneId$1].box, BOTTOM)\n                        .translate(0, axis$1.options.margin)\n                    );\n                }\n\n                if (visible$1) {\n                    bottomAnchors[paneId$1] = axis$1;\n                }\n            }\n\n            if (i$1 !== 0) {\n                axis$1.alignTo(xAnchor);\n                axis$1.reflow(axis$1.box);\n            }\n        }\n    };\n\n    PlotAreaBase.prototype.shrinkAxisWidth = function shrinkAxisWidth (panes) {\n        var axes = this.groupAxes(panes).any;\n        var axisBox = axisGroupBox(axes);\n        var overflowX = 0;\n\n        for (var i = 0; i < panes.length; i++) {\n            var currentPane = panes[i];\n\n            if (currentPane.axes.length > 0) {\n                overflowX = Math.max(\n                    overflowX,\n                    axisBox.width() - currentPane.contentBox.width()\n                );\n            }\n        }\n\n        if (overflowX !== 0) {\n            for (var i$1 = 0; i$1 < axes.length; i$1++) {\n                var currentAxis = axes[i$1];\n\n                if (!currentAxis.options.vertical) {\n                    currentAxis.reflow(currentAxis.box.shrink(overflowX, 0));\n                }\n            }\n        }\n    };\n\n    PlotAreaBase.prototype.shrinkAxisHeight = function shrinkAxisHeight (panes) {\n        var shrinked;\n\n        for (var i = 0; i < panes.length; i++) {\n            var currentPane = panes[i];\n            var axes = currentPane.axes;\n            var overflowY = Math.max(0, axisGroupBox(axes).height() - currentPane.contentBox.height());\n\n            if (overflowY !== 0) {\n                for (var j = 0; j < axes.length; j++) {\n                    var currentAxis = axes[j];\n\n                    if (currentAxis.options.vertical) {\n                        currentAxis.reflow(\n                            currentAxis.box.shrink(0, overflowY)\n                        );\n                    }\n                }\n                shrinked = true;\n            }\n        }\n\n        return shrinked;\n    };\n\n    PlotAreaBase.prototype.fitAxes = function fitAxes (panes) {\n        var axes = this.groupAxes(panes).any;\n        var offsetX = 0;\n\n        for (var i = 0; i < panes.length; i++) {\n            var currentPane = panes[i];\n            var paneAxes = currentPane.axes;\n            var paneBox = currentPane.contentBox;\n\n            if (paneAxes.length > 0) {\n                var axisBox = axisGroupBox(paneAxes);\n                // OffsetY is calculated and applied per pane\n                var offsetY = Math.max(paneBox.y1 - axisBox.y1, paneBox.y2 - axisBox.y2);\n\n                // OffsetX is calculated and applied globally\n                offsetX = Math.max(offsetX, paneBox.x1 - axisBox.x1);\n\n\n                for (var j = 0; j < paneAxes.length; j++) {\n                    var currentAxis = paneAxes[j];\n\n                    currentAxis.reflow(\n                        currentAxis.box.translate(0, offsetY)\n                    );\n                }\n            }\n        }\n\n        for (var i$1 = 0; i$1 < axes.length; i$1++) {\n            var currentAxis$1 = axes[i$1];\n\n            currentAxis$1.reflow(\n                currentAxis$1.box.translate(offsetX, 0)\n            );\n        }\n    };\n\n    PlotAreaBase.prototype.reflowAxes = function reflowAxes (panes) {\n        var this$1 = this;\n\n        var axes = this.groupAxes(panes);\n\n        for (var i = 0; i < panes.length; i++) {\n            this$1.reflowPaneAxes(panes[i]);\n        }\n\n        if (axes.x.length > 0 && axes.y.length > 0) {\n            this.alignAxes(axes.x, axes.y);\n            this.shrinkAxisWidth(panes);\n\n            this.autoRotateAxisLabels(axes);\n\n            this.alignAxes(axes.x, axes.y);\n            if (this.shrinkAxisWidth(panes)) {\n                this.alignAxes(axes.x, axes.y);\n            }\n\n            this.shrinkAxisHeight(panes);\n            this.alignAxes(axes.x, axes.y);\n\n            if (this.shrinkAxisHeight(panes)) {\n                this.alignAxes(axes.x, axes.y);\n            }\n\n            this.fitAxes(panes);\n        }\n    };\n\n    PlotAreaBase.prototype.autoRotateAxisLabels = function autoRotateAxisLabels (groupedAxes) {\n        var this$1 = this;\n\n        var ref = this;\n        var panes = ref.panes;\n        var axes = allPaneAxes(panes);\n        var rotated;\n\n        for (var idx = 0; idx < axes.length; idx++) {\n            var axis = axes[idx];\n            if (axis.autoRotateLabels()) {\n                rotated = true;\n            }\n        }\n\n        if (rotated) {\n            for (var idx$1 = 0; idx$1 < panes.length; idx$1++) {\n                this$1.reflowPaneAxes(panes[idx$1]);\n            }\n\n            if (groupedAxes.x.length > 0 && groupedAxes.y.length > 0) {\n                this.alignAxes(groupedAxes.x, groupedAxes.y);\n                this.shrinkAxisWidth(panes);\n            }\n        }\n    };\n\n    PlotAreaBase.prototype.reflowPaneAxes = function reflowPaneAxes (pane) {\n        var axes = pane.axes;\n        var length = axes.length;\n\n        if (length > 0) {\n            for (var i = 0; i < length; i++) {\n                axes[i].reflow(pane.contentBox);\n            }\n        }\n    };\n\n    PlotAreaBase.prototype.reflowCharts = function reflowCharts (panes) {\n        var charts = this.charts;\n        var count = charts.length;\n        var box = this.box;\n\n        for (var i = 0; i < count; i++) {\n            var chartPane = charts[i].pane;\n            if (!chartPane || inArray(chartPane, panes)) {\n                charts[i].reflow(box);\n            }\n        }\n    };\n\n    PlotAreaBase.prototype.reflowPanes = function reflowPanes () {\n        var ref = this;\n        var box = ref.box;\n        var panes = ref.panes;\n        var panesLength = panes.length;\n        var remainingHeight = box.height();\n        var remainingPanes = panesLength;\n        var autoHeightPanes = 0;\n        var top = box.y1;\n\n        for (var i = 0; i < panesLength; i++) {\n            var currentPane = panes[i];\n            var height = currentPane.options.height;\n\n            currentPane.options.width = box.width();\n\n            if (!currentPane.options.height) {\n                autoHeightPanes++;\n            } else {\n                if (height.indexOf && height.indexOf(\"%\")) {\n                    var percents = parseInt(height, 10) / 100;\n                    currentPane.options.height = percents * box.height();\n                }\n\n                currentPane.reflow(box.clone());\n\n                remainingHeight -= currentPane.options.height;\n            }\n        }\n\n        for (var i$1 = 0; i$1 < panesLength; i$1++) {\n            var currentPane$1 = panes[i$1];\n\n            if (!currentPane$1.options.height) {\n                currentPane$1.options.height = remainingHeight / autoHeightPanes;\n            }\n        }\n\n        for (var i$2 = 0; i$2 < panesLength; i$2++) {\n            var currentPane$2 = panes[i$2];\n            var paneBox = box\n                .clone()\n                .move(box.x1, top);\n\n            currentPane$2.reflow(paneBox);\n\n            remainingPanes--;\n            top += currentPane$2.options.height;\n        }\n    };\n\n    PlotAreaBase.prototype.backgroundBox = function backgroundBox () {\n        var axes = this.axes;\n        var axesCount = axes.length;\n        var box;\n\n        for (var i = 0; i < axesCount; i++) {\n            var axisA = axes[i];\n\n            for (var j = 0; j < axesCount; j++) {\n                var axisB = axes[j];\n\n                if (axisA.options.vertical !== axisB.options.vertical) {\n                    var lineBox = axisA.lineBox().clone().wrap(axisB.lineBox());\n\n                    if (!box) {\n                        box = lineBox;\n                    } else {\n                        box = box.wrap(lineBox);\n                    }\n                }\n            }\n        }\n\n        return box || this.box;\n    };\n\n    PlotAreaBase.prototype.chartsBoxes = function chartsBoxes () {\n        var panes = this.panes;\n        var boxes = [];\n\n        for (var idx = 0; idx < panes.length; idx++) {\n            boxes.push(panes[idx].chartsBox());\n        }\n\n        return boxes;\n    };\n\n    PlotAreaBase.prototype.addBackgroundPaths = function addBackgroundPaths (multipath) {\n        var boxes = this.chartsBoxes();\n        for (var idx = 0; idx < boxes.length; idx++) {\n            multipath.paths.push(draw.Path.fromRect(boxes[idx].toRect()));\n        }\n    };\n\n    PlotAreaBase.prototype.backgroundContainsPoint = function backgroundContainsPoint (point) {\n        var boxes = this.chartsBoxes();\n        for (var idx = 0; idx < boxes.length; idx++) {\n            if (boxes[idx].containsPoint(point)) {\n                return true;\n            }\n        }\n    };\n\n    PlotAreaBase.prototype.createVisual = function createVisual () {\n        ChartElement.prototype.createVisual.call(this);\n\n        var options = this.options.plotArea;\n        var opacity = options.opacity;\n        var background = options.background;\n        var border = options.border; if ( border === void 0 ) border = {};\n        if (isTransparent(background)) {\n            background = WHITE;\n            opacity = 0;\n        }\n\n        var bg = this._bgVisual = new draw.MultiPath({\n            fill: {\n                color: background,\n                opacity: opacity\n            },\n            stroke: {\n                color: border.width ? border.color : \"\",\n                width: border.width,\n                dashType: border.dashType\n            },\n            zIndex: -1\n        });\n\n        this.addBackgroundPaths(bg);\n\n        this.appendVisual(bg);\n    };\n\n    PlotAreaBase.prototype.pointsByCategoryIndex = function pointsByCategoryIndex (categoryIndex) {\n        var charts = this.charts;\n        var result = [];\n\n        if (categoryIndex !== null) {\n            for (var i = 0; i < charts.length; i++) {\n                var chart = charts[i];\n                if (chart.pane.options.name === \"_navigator\") {\n                    continue;\n                }\n\n                var points = charts[i].categoryPoints[categoryIndex];\n                if (points && points.length) {\n                    for (var j = 0; j < points.length; j++) {\n                        var point = points[j];\n                        if (point && defined(point.value) && point.value !== null) {\n                            result.push(point);\n                        }\n                    }\n                }\n            }\n        }\n\n        return result;\n    };\n\n    PlotAreaBase.prototype.pointsBySeriesIndex = function pointsBySeriesIndex (seriesIndex) {\n        return this.filterPoints(function(point) {\n            return point.series.index === seriesIndex;\n        });\n    };\n\n    PlotAreaBase.prototype.pointsBySeriesName = function pointsBySeriesName (name) {\n        return this.filterPoints(function(point) {\n            return point.series.name === name;\n        });\n    };\n\n    PlotAreaBase.prototype.filterPoints = function filterPoints (callback) {\n        var charts = this.charts;\n        var result = [];\n\n        for (var i = 0; i < charts.length; i++) {\n            var chart = charts[i];\n            var points = chart.points;\n            for (var j = 0; j < points.length; j++) {\n                var point = points[j];\n                if (point && point.visible !== false && callback(point)) {\n                    result.push(point);\n                }\n            }\n        }\n\n        return result;\n    };\n\n    PlotAreaBase.prototype.findPoint = function findPoint (callback) {\n        var charts = this.charts;\n\n        for (var i = 0; i < charts.length; i++) {\n            var chart = charts[i];\n            var points = chart.points;\n            for (var j = 0; j < points.length; j++) {\n                var point = points[j];\n                if (point && point.visible !== false && callback(point)) {\n                    return point;\n                }\n            }\n        }\n    };\n\n    PlotAreaBase.prototype.paneByPoint = function paneByPoint (point) {\n        var panes = this.panes;\n\n        for (var i = 0; i < panes.length; i++) {\n            var pane = panes[i];\n            if (pane.box.containsPoint(point)) {\n                return pane;\n            }\n        }\n    };\n\n    PlotAreaBase.prototype.detachLabels = function detachLabels () {\n        var axes = this.groupAxes(this.panes);\n        var xAxes = axes.x;\n        var yAxes = axes.y;\n\n        this.detachAxisGroupLabels(yAxes, xAxes);\n        this.detachAxisGroupLabels(xAxes, yAxes);\n    };\n\n    PlotAreaBase.prototype.detachAxisGroupLabels = function detachAxisGroupLabels (axes, crossingAxes) {\n        var this$1 = this;\n\n        var labelAxisCount = 0;\n\n        for (var i = 0; i < axes.length; i++) {\n            var axis = axes[i];\n            var pane = axis.pane;\n            var anchor = paneAnchor(crossingAxes, pane) || crossingAxes[0];\n            var axisIndex = i + labelAxisCount;\n            var labelAxis = this$1.createLabelAxis(axis, axisIndex, anchor);\n\n            if (labelAxis) {\n                labelAxisCount++;\n\n                var pos = pane.axes.indexOf(axis) + labelAxisCount;\n                pane.appendAxisAt(labelAxis, pos);\n            }\n        }\n    };\n\n    PlotAreaBase.prototype.createLabelAxis = function createLabelAxis (axis, axisIndex, anchor) {\n        var labelOptions = axis.options.labels;\n        var position = labelOptions.position;\n        var onAxis = position !== END && position !== START;\n        var visible = labelOptions.visible;\n\n        if (onAxis || visible === false) {\n            return null;\n        }\n\n        var allAxes = this.groupAxes(this.panes);\n        var crossingAxes = anchor.options.vertical ? allAxes.x : allAxes.y;\n        var anchorCrossings = this.axisCrossingValues(anchor, crossingAxes);\n        var end = position === END;\n        var range = anchor.range();\n        var edge = end ? range.max : range.min;\n        var crossingValue = limitValue(anchorCrossings[axisIndex], range.min, range.max);\n\n        if (crossingValue - edge === 0) {\n            return null;\n        }\n\n        anchorCrossings.splice(axisIndex + 1, 0, edge);\n        anchor.options.axisCrossingValues = anchorCrossings;\n\n        var labelAxis = axis.clone();\n        axis.clear();\n\n        labelAxis.options.name = undefined;\n        labelAxis.options.line.visible = false;\n\n        labelAxis.options.crosshair = undefined;\n        labelAxis.options.notes = undefined;\n        labelAxis.options.plotBands = undefined;\n\n        return labelAxis;\n    };\n\n    PlotAreaBase.prototype.isTrendline = function isTrendline (series) {\n        return series && inArray(series.type, TRENDLINE_SERIES);\n    };\n\n    PlotAreaBase.prototype.trendlineFactory = function trendlineFactory () { /* abstract */ };\n\n    PlotAreaBase.prototype.createTrendlineSeries = function createTrendlineSeries () {\n        var this$1 = this;\n\n        var modifiedSeries = [];\n\n        this.series = this.series.map(function (series) {\n            if (!this$1.isTrendline(series)) {\n                return series;\n            }\n\n            var forSeries = this$1.seriesByName(series.for);\n            if (!forSeries) {\n                throw new Error('Invalid Configuration: Unable to locate linked series ' +\n                    \"\\\"\" + (series.for) + \"\\\" for trendline \\\"\" + (series.name) + \"\\\".\");\n            }\n\n            var valueFields = SeriesBinder.current.valueFields(forSeries);\n            var field = last(valueFields); // Use the last field for multi-field series\n\n            var trendlineSeries = this$1.trendlineFactory(Object.assign({}, {field: field}, series), forSeries);\n            if (trendlineSeries) {\n                if (forSeries.visible === false) {\n                    trendlineSeries.visible = false;\n                }\n\n                if (trendlineSeries.color === INHERIT) {\n                    trendlineSeries.color = forSeries.color;\n                }\n\n                modifiedSeries.push(trendlineSeries);\n            }\n\n            return trendlineSeries;\n        }).filter(function (series) { return series !== null; });\n\n        return modifiedSeries;\n    };\n\n    PlotAreaBase.prototype.seriesByName = function seriesByName (name) {\n        return this.series.find(function (series) { return series.name === name; });\n    };\n\n    return PlotAreaBase;\n}(ChartElement));\n\nfunction isSingleAxis(axis) {\n    return !axis.pane.axes.some(function (a) { return a.options.vertical === axis.options.vertical && a !== axis && a.options.visible !== false; }\n    );\n}\n\nfunction axisGroupBox(axes) {\n    var length = axes.length;\n    var box;\n\n    for (var i = 0; i < length; i++) {\n        var axis = axes[i];\n        var visible = axis.options.visible !== false;\n        if (visible || isSingleAxis(axis)) {\n            var axisBox = visible ? axis.contentBox() : axis.lineBox();\n\n            if (!box) {\n                box = axisBox.clone();\n            } else {\n                box.wrap(axisBox);\n            }\n        }\n    }\n\n    return box || new Box();\n}\n\nfunction paneAnchor(axes, pane) {\n    for (var i = 0; i < axes.length; i++) {\n        var anchor = axes[i];\n        if (anchor && anchor.pane === pane) {\n            return anchor;\n        }\n    }\n}\n\nfunction isTransparent(color) {\n    return color === \"\" || color === null || color === \"none\" || color === \"transparent\" || !defined(color);\n}\n\nvar allPaneAxes = function (panes) { return panes.reduce(function (acc, pane) { return acc.concat(pane.axes); }, []); };\n\nsetDefaultOptions(PlotAreaBase, {\n    series: [],\n    plotArea: {\n        margin: {}\n    },\n    background: \"\",\n    border: {\n        color: BLACK,\n        width: 0\n    },\n    paneDefaults: {\n        title: {}\n    },\n    legend: {\n        inactiveItems: {\n            labels: {\n                color: \"#919191\"\n            },\n            markers: {\n                color: \"#919191\"\n            }\n        }\n    }\n});\n\nexport default PlotAreaBase;\n","import { PLOT_AREA_HOVER, PLOT_AREA_CLICK } from '../constants';\n\nvar PlotAreaEventsMixin = {\n    hover: function(chart, e) {\n        this._dispatchEvent(chart, e, PLOT_AREA_HOVER);\n    },\n\n    click: function(chart, e) {\n        this._dispatchEvent(chart, e, PLOT_AREA_CLICK);\n    }\n};\n\nexport default PlotAreaEventsMixin;","import Aggregates from './aggregates';\n\nimport { Class, defined, inArray, isArray, isFunction, isNumber, isObject } from '../../common';\n\nvar SeriesAggregator = (function (Class) {\n    function SeriesAggregator(series, binder, defaultAggregates) {\n        Class.call(this);\n\n        var canonicalFields = binder.canonicalFields(series);\n        var valueFields = binder.valueFields(series);\n        var sourceFields = binder.sourceFields(series, canonicalFields);\n        var seriesFields = this._seriesFields = [];\n        var defaults = defaultAggregates.query(series.type);\n        var rootAggregate = series.aggregate || defaults;\n\n        this._series = series;\n        this._binder = binder;\n\n        for (var i = 0; i < canonicalFields.length; i++) {\n            var field = canonicalFields[i];\n            var fieldAggregate = (void 0);\n\n            if (isObject(rootAggregate)) {\n                fieldAggregate = rootAggregate[field];\n            } else if (i === 0 || inArray(field, valueFields)) {\n                fieldAggregate = rootAggregate;\n            } else {\n                break;\n            }\n\n            if (fieldAggregate) {\n                seriesFields.push({\n                    canonicalName: field,\n                    name: sourceFields[i],\n                    transform: isFunction(fieldAggregate) ? fieldAggregate : Aggregates[fieldAggregate]\n                });\n            }\n        }\n    }\n\n    if ( Class ) SeriesAggregator.__proto__ = Class;\n    SeriesAggregator.prototype = Object.create( Class && Class.prototype );\n    SeriesAggregator.prototype.constructor = SeriesAggregator;\n\n    SeriesAggregator.prototype.aggregatePoints = function aggregatePoints (srcPoints, group) {\n        var this$1 = this;\n\n        var ref = this;\n        var series = ref._series;\n        var seriesFields = ref._seriesFields;\n        var data = this._bindPoints(srcPoints || []);\n        var firstDataItem = data.dataItems[0];\n        var result = {};\n\n        if (firstDataItem && !isNumber(firstDataItem) && !isArray(firstDataItem)) {\n            var fn = function() {};\n            fn.prototype = firstDataItem;\n            result = new fn();\n        }\n\n        for (var i = 0; i < seriesFields.length; i++) {\n            var field = seriesFields[i];\n            var srcValues = this$1._bindField(data.values, field.canonicalName);\n            var value = field.transform(srcValues, series, data.dataItems, group);\n\n            if (value !== null && isObject(value) && !defined(value.length) && !(value instanceof Date)) {\n                result = value;\n                break;\n            } else {\n                if (defined(value)) {\n                    setValue(field.name, result, value);\n                }\n            }\n        }\n\n        return result;\n    };\n\n    SeriesAggregator.prototype._bindPoints = function _bindPoints (points) {\n        var ref = this;\n        var binder = ref._binder;\n        var series = ref._series;\n        var values = [];\n        var dataItems = [];\n\n        for (var i = 0; i < points.length; i++) {\n            var pointIx = points[i];\n\n            values.push(binder.bindPoint(series, pointIx));\n            dataItems.push(series.data[pointIx]);\n        }\n\n        return {\n            values: values,\n            dataItems: dataItems\n        };\n    };\n\n    SeriesAggregator.prototype._bindField = function _bindField (data, field) {\n        var values = [];\n        var count = data.length;\n\n        for (var i = 0; i < count; i++) {\n            var item = data[i];\n            var valueFields = item.valueFields;\n            var value = (void 0);\n\n            if (defined(valueFields[field])) {\n                value = valueFields[field];\n            } else {\n                value = item.fields[field];\n            }\n\n            values.push(value);\n        }\n\n        return values;\n    };\n\n    return SeriesAggregator;\n}(Class));\n\nfunction setValue(fieldName, target, value) {\n    var parentObj = target;\n    var field = fieldName;\n\n    if (fieldName.indexOf(\".\") > -1) {\n        var parts = fieldName.split(\".\");\n\n        while (parts.length > 1) {\n            field = parts.shift();\n            if (!defined(parentObj[field])) {\n                parentObj[field] = {};\n            }\n            parentObj = parentObj[field];\n        }\n        field = parts.shift();\n    }\n\n    parentObj[field] = value;\n}\n\nexport default SeriesAggregator;","import { Class } from '../../common';\n\nvar DefaultAggregates = (function (Class) {\n    function DefaultAggregates() {\n        Class.call(this);\n\n        this._defaults = {};\n    }\n\n    if ( Class ) DefaultAggregates.__proto__ = Class;\n    DefaultAggregates.prototype = Object.create( Class && Class.prototype );\n    DefaultAggregates.prototype.constructor = DefaultAggregates;\n\n    DefaultAggregates.prototype.register = function register (seriesTypes, aggregates) {\n        var this$1 = this;\n\n        for (var i = 0; i < seriesTypes.length; i++) {\n            this$1._defaults[seriesTypes[i]] = aggregates;\n        }\n    };\n\n    DefaultAggregates.prototype.query = function query (seriesType) {\n        return this._defaults[seriesType];\n    };\n\n    return DefaultAggregates;\n}(Class));\n\nDefaultAggregates.current = new DefaultAggregates();\n\nexport default DefaultAggregates;","import Bar from '../bar-chart/bar';\nimport BarLabel from '../bar-chart/bar-label';\n\nimport { deepExtend, getTemplate } from '../../common';\n\nvar RangeBar = (function (Bar) {\n    function RangeBar () {\n        Bar.apply(this, arguments);\n    }\n\n    if ( Bar ) RangeBar.__proto__ = Bar;\n    RangeBar.prototype = Object.create( Bar && Bar.prototype );\n    RangeBar.prototype.constructor = RangeBar;\n\n    RangeBar.prototype.createLabel = function createLabel () {\n        var labels = this.options.labels;\n        var fromOptions = deepExtend({}, labels, labels.from);\n        var toOptions = deepExtend({}, labels, labels.to);\n\n        if (fromOptions.visible) {\n            this.labelFrom = this._createLabel(fromOptions);\n            this.append(this.labelFrom);\n        }\n\n        if (toOptions.visible) {\n            this.labelTo = this._createLabel(toOptions);\n            this.append(this.labelTo);\n        }\n    };\n\n    RangeBar.prototype._createLabel = function _createLabel (options) {\n        var labelTemplate = getTemplate(options);\n        var pointData = this.pointData();\n\n        var labelText;\n\n        if (labelTemplate) {\n            labelText = labelTemplate(pointData);\n        } else {\n            labelText = this.formatValue(options.format);\n        }\n\n        return new BarLabel(labelText,\n            deepExtend({\n                vertical: this.options.vertical\n            },\n            options\n        ), pointData);\n    };\n\n    RangeBar.prototype.reflow = function reflow (targetBox) {\n        this.render();\n\n        var ref = this;\n        var labelFrom = ref.labelFrom;\n        var labelTo = ref.labelTo;\n        var value = ref.value;\n\n        this.box = targetBox;\n\n        if (labelFrom) {\n            labelFrom.options.aboveAxis = value.from > value.to;\n            labelFrom.reflow(targetBox);\n        }\n\n        if (labelTo) {\n            labelTo.options.aboveAxis = value.to > value.from;\n            labelTo.reflow(targetBox);\n        }\n\n        if (this.note) {\n            this.note.reflow(targetBox);\n        }\n    };\n\n    return RangeBar;\n}(Bar));\n\nRangeBar.prototype.defaults = deepExtend({}, RangeBar.prototype.defaults, {\n    labels: {\n        format: \"{0} - {1}\"\n    },\n    tooltip: {\n        format: \"{1}\"\n    }\n});\n\nexport default RangeBar;","import BarChart from '../bar-chart/bar-chart';\nimport RangeBar from './range-bar';\nimport CategoricalChart from '../categorical-chart';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { isNumber } from '../../common';\n\nvar RangeBarChart = (function (BarChart) {\n    function RangeBarChart () {\n        BarChart.apply(this, arguments);\n    }\n\n    if ( BarChart ) RangeBarChart.__proto__ = BarChart;\n    RangeBarChart.prototype = Object.create( BarChart && BarChart.prototype );\n    RangeBarChart.prototype.constructor = RangeBarChart;\n\n    RangeBarChart.prototype.pointType = function pointType () {\n        return RangeBar;\n    };\n\n    RangeBarChart.prototype.pointValue = function pointValue (data) {\n        return data.valueFields;\n    };\n\n    RangeBarChart.prototype.formatPointValue = function formatPointValue (point, format) {\n        if (point.value.from === null && point.value.to === null) {\n            return \"\";\n        }\n\n        return this.chartService.format.auto(format, point.value.from, point.value.to);\n    };\n\n    RangeBarChart.prototype.plotRange = function plotRange (point) {\n        if (!point) {\n            return 0;\n        }\n\n        return [ point.value.from, point.value.to ];\n    };\n\n    RangeBarChart.prototype.updateRange = function updateRange (value, fields) {\n        var axisName = fields.series.axis;\n        var from = value.from;\n        var to = value.to;\n        var axisRange = this.valueAxisRanges[axisName];\n\n        if (value !== null && isNumber(from) && isNumber(to)) {\n            axisRange = this.valueAxisRanges[axisName] = axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n            axisRange.min = Math.min(axisRange.min, from);\n            axisRange.max = Math.max(axisRange.max, from);\n\n            axisRange.min = Math.min(axisRange.min, to);\n            axisRange.max = Math.max(axisRange.max, to);\n        }\n    };\n\n    RangeBarChart.prototype.aboveAxis = function aboveAxis (point) {\n        var value = point.value;\n        return value.from < value.to;\n    };\n\n    return RangeBarChart;\n}(BarChart));\n\nRangeBarChart.prototype.plotLimits = CategoricalChart.prototype.plotLimits;\n\nexport default RangeBarChart;","import LinePoint from '../line-chart/line-point';\n\nvar RangeLinePoint = (function (LinePoint) {\n    function RangeLinePoint () {\n        LinePoint.apply(this, arguments);\n    }\n\n    if ( LinePoint ) RangeLinePoint.__proto__ = LinePoint;\n    RangeLinePoint.prototype = Object.create( LinePoint && LinePoint.prototype );\n    RangeLinePoint.prototype.constructor = RangeLinePoint;\n\n    RangeLinePoint.prototype.aliasFor = function aliasFor () {\n        return this.parent;\n    };\n\n    return RangeLinePoint;\n}(LinePoint));\n\nexport default RangeLinePoint;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Point } from '../../core';\nimport RangeLinePoint from './range-line-point';\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\n\nimport { LINE_MARKER_SIZE, FADEIN, INITIAL_ANIMATION_DURATION, TOOLTIP_OFFSET, ABOVE, BELOW } from '../constants';\nimport { WHITE, CIRCLE, HIGHLIGHT_ZINDEX, LEFT, RIGHT, BOTTOM, CENTER } from '../../common/constants';\nimport { deepExtend, valueOrDefault, getSpacing } from '../../common';\n\nvar AUTO = 'auto';\nvar DEFAULT_FROM_FORMAT = '{0}';\nvar DEFAULT_TO_FORMAT = '{1}';\n\nvar RangeAreaPoint = (function (ChartElement) {\n    function RangeAreaPoint(value, options) {\n        ChartElement.call(this);\n\n        this.value = value;\n        this.options = options;\n        this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n        this.tooltipTracking = true;\n        this.initLabelsFormat();\n    }\n\n    if ( ChartElement ) RangeAreaPoint.__proto__ = ChartElement;\n    RangeAreaPoint.prototype = Object.create( ChartElement && ChartElement.prototype );\n    RangeAreaPoint.prototype.constructor = RangeAreaPoint;\n\n    RangeAreaPoint.prototype.render = function render () {\n        if (this._rendered) {\n            return;\n        }\n\n        this._rendered = true;\n\n        var ref = this.options;\n        var markers = ref.markers;\n        var labels = ref.labels;\n        var value = this.value;\n\n        var fromPoint = this.fromPoint = new RangeLinePoint(value, deepExtend({}, this.options, {\n            labels: labels.from,\n            markers: markers.from\n        }));\n\n        var toPoint = this.toPoint = new RangeLinePoint(value, deepExtend({}, this.options, {\n            labels: labels.to,\n            markers: markers.to\n        }));\n\n        this.copyFields(fromPoint);\n        this.copyFields(toPoint);\n\n        this.append(fromPoint);\n        this.append(toPoint);\n    };\n\n    RangeAreaPoint.prototype.reflow = function reflow (targetBox) {\n        this.render();\n\n        var fromBox = targetBox.from;\n        var toBox = targetBox.to;\n\n        this.positionLabels(fromBox, toBox);\n\n        this.fromPoint.reflow(fromBox);\n        this.toPoint.reflow(toBox);\n\n        this.box = this.fromPoint.markerBox().clone().wrap(this.toPoint.markerBox());\n    };\n\n    RangeAreaPoint.prototype.createHighlight = function createHighlight () {\n        var group = new draw.Group();\n        group.append(this.fromPoint.createHighlight());\n        group.append(this.toPoint.createHighlight());\n\n        return group;\n    };\n\n    RangeAreaPoint.prototype.highlightVisual = function highlightVisual () {\n        return this.visual;\n    };\n\n    RangeAreaPoint.prototype.highlightVisualArgs = function highlightVisualArgs () {\n        return {\n            options: this.options,\n            from: this.fromPoint.highlightVisualArgs(),\n            to: this.toPoint.highlightVisualArgs()\n        };\n    };\n\n    RangeAreaPoint.prototype.tooltipAnchor = function tooltipAnchor () {\n        var clipBox = this.owner.pane.clipBox();\n        var showTooltip = !clipBox || clipBox.overlaps(this.box);\n\n        if (showTooltip) {\n            var box = this.box;\n            var center = box.center();\n            var horizontalAlign = LEFT;\n            var x, y, verticalAlign;\n\n            if (this.options.vertical) {\n                x = center.x;\n                y = box.y1 - TOOLTIP_OFFSET;\n                verticalAlign = BOTTOM;\n            } else {\n                x = box.x2 + TOOLTIP_OFFSET;\n                y = center.y;\n                verticalAlign = CENTER;\n            }\n\n            return {\n                point: new Point(x, y),\n                align: {\n                    horizontal: horizontalAlign,\n                    vertical: verticalAlign\n                }\n            };\n        }\n    };\n\n    RangeAreaPoint.prototype.formatValue = function formatValue (format) {\n        return this.owner.formatPointValue(this, format);\n    };\n\n    RangeAreaPoint.prototype.overlapsBox = function overlapsBox (box) {\n        return this.box.overlaps(box);\n    };\n\n    RangeAreaPoint.prototype.unclipElements = function unclipElements () {\n        this.fromPoint.unclipElements();\n        this.toPoint.unclipElements();\n    };\n\n    RangeAreaPoint.prototype.initLabelsFormat = function initLabelsFormat () {\n        var labels = this.options.labels;\n        if (!labels.format) {\n            if (!labels.from || !labels.from.format) {\n                labels.from = Object.assign({}, labels.from, {\n                    format: DEFAULT_FROM_FORMAT\n                });\n            }\n\n            if (!labels.to || !labels.to.format) {\n                labels.to = Object.assign({}, labels.to, {\n                    format: DEFAULT_TO_FORMAT\n                });\n            }\n        }\n    };\n\n    RangeAreaPoint.prototype.positionLabels = function positionLabels (fromBox, toBox) {\n        var ref = this.options;\n        var labels = ref.labels;\n        var vertical = ref.vertical;\n\n        if (labels.position === AUTO) {\n            var fromLabelPosition, toLabelPosition;\n            if (vertical) {\n                if (toBox.y1 <= fromBox.y1) {\n                    toLabelPosition = ABOVE;\n                    fromLabelPosition = BELOW;\n                } else {\n                    toLabelPosition = BELOW;\n                    fromLabelPosition = ABOVE;\n                }\n            } else {\n                if (toBox.x1 <= fromBox.x1) {\n                    toLabelPosition = LEFT;\n                    fromLabelPosition = RIGHT;\n                } else {\n                    toLabelPosition = RIGHT;\n                    fromLabelPosition = LEFT;\n                }\n            }\n\n            if (!labels.from || !labels.from.position) {\n                this.fromPoint.options.labels.position = fromLabelPosition;\n            }\n\n            if (!labels.to || !labels.to.position) {\n                this.toPoint.options.labels.position = toLabelPosition;\n            }\n        }\n    };\n\n    RangeAreaPoint.prototype.copyFields = function copyFields (point) {\n        point.dataItem = this.dataItem;\n        point.category = this.category;\n        point.series = this.series;\n        point.color = this.color;\n        point.owner = this.owner;\n    };\n\n    return RangeAreaPoint;\n}(ChartElement));\n\ndeepExtend(RangeAreaPoint.prototype, PointEventsMixin);\ndeepExtend(RangeAreaPoint.prototype, NoteMixin);\n\nRangeAreaPoint.prototype.defaults = {\n    markers: {\n        visible: false,\n        background: WHITE,\n        size: LINE_MARKER_SIZE,\n        type: CIRCLE,\n        border: {\n            width: 2\n        },\n        opacity: 1\n    },\n    labels: {\n        visible: false,\n        margin: getSpacing(3),\n        padding: getSpacing(4),\n        animation: {\n            type: FADEIN,\n            delay: INITIAL_ANIMATION_DURATION\n        },\n        position: AUTO\n    },\n    notes: {\n        label: {}\n    },\n    highlight: {\n        markers: {\n            border: {\n                color: WHITE,\n                width: 2\n            }\n        },\n        zIndex: HIGHLIGHT_ZINDEX\n    },\n    tooltip: {\n        format: '{0} - {1}'\n    }\n};\n\nexport default RangeAreaPoint;\n","import { drawing as draw } from '@progress/kendo-drawing';\nimport AreaSegment from '../area-chart/area-segment';\n\nvar RangeAreaSegment = (function (AreaSegment) {\n    function RangeAreaSegment () {\n        AreaSegment.apply(this, arguments);\n    }\n\n    if ( AreaSegment ) RangeAreaSegment.__proto__ = AreaSegment;\n    RangeAreaSegment.prototype = Object.create( AreaSegment && AreaSegment.prototype );\n    RangeAreaSegment.prototype.constructor = RangeAreaSegment;\n\n    RangeAreaSegment.prototype.createStrokeSegments = function createStrokeSegments () {\n        return this.segmentsFromPoints(this.toGeometryPoints(this.toPoints()));\n    };\n\n    RangeAreaSegment.prototype.stackSegments = function stackSegments () {\n        var fromSegments = this.fromSegments;\n        if (!this.fromSegments) {\n            fromSegments = this.fromSegments = this.segmentsFromPoints(this.toGeometryPoints(this.fromPoints().reverse()));\n        }\n\n        return fromSegments;\n    };\n\n    RangeAreaSegment.prototype.createStroke = function createStroke (style) {\n        var toPath = new draw.Path(style);\n        var fromPath = new draw.Path(style);\n\n        toPath.segments.push.apply(toPath.segments, this.strokeSegments());\n        fromPath.segments.push.apply(fromPath.segments, this.stackSegments());\n\n        this.visual.append(toPath);\n        this.visual.append(fromPath);\n    };\n\n    RangeAreaSegment.prototype.hasStackSegment = function hasStackSegment () {\n        return true;\n    };\n\n    RangeAreaSegment.prototype.fromPoints = function fromPoints () {\n        return this.linePoints.map(function (point) { return point.fromPoint; });\n    };\n\n    RangeAreaSegment.prototype.toPoints = function toPoints () {\n        return this.linePoints.map(function (point) { return point.toPoint; });\n    };\n\n    return RangeAreaSegment;\n}(AreaSegment));\n\nexport default RangeAreaSegment;","import { CurveProcessor } from '../../core';\n\nimport RangeAreaSegment from './range-area-segment';\n\nvar SplineRangeAreaSegment = (function (RangeAreaSegment) {\n    function SplineRangeAreaSegment () {\n        RangeAreaSegment.apply(this, arguments);\n    }\n\n    if ( RangeAreaSegment ) SplineRangeAreaSegment.__proto__ = RangeAreaSegment;\n    SplineRangeAreaSegment.prototype = Object.create( RangeAreaSegment && RangeAreaSegment.prototype );\n    SplineRangeAreaSegment.prototype.constructor = SplineRangeAreaSegment;\n\n    SplineRangeAreaSegment.prototype.createStrokeSegments = function createStrokeSegments () {\n        return this.createCurveSegments(this.toPoints());\n    };\n\n    SplineRangeAreaSegment.prototype.stackSegments = function stackSegments () {\n        var fromSegments = this.fromSegments;\n        if (!this.fromSegments) {\n            fromSegments = this.fromSegments = this.createCurveSegments(this.fromPoints().reverse());\n        }\n\n        return fromSegments;\n    };\n\n    SplineRangeAreaSegment.prototype.createCurveSegments = function createCurveSegments (points) {\n        var curveProcessor = new CurveProcessor();\n\n        return curveProcessor.process(this.toGeometryPoints(points));\n    };\n\n    return SplineRangeAreaSegment;\n}(RangeAreaSegment));\n\nexport default SplineRangeAreaSegment;","import StepLineMixin from '../line-chart/step-line-mixin';\nimport RangeAreaSegment from './range-area-segment';\nimport { deepExtend } from '../../common';\n\nvar StepRangeAreaSegment = (function (RangeAreaSegment) {\n    function StepRangeAreaSegment () {\n        RangeAreaSegment.apply(this, arguments);\n    }\n\n    if ( RangeAreaSegment ) StepRangeAreaSegment.__proto__ = RangeAreaSegment;\n    StepRangeAreaSegment.prototype = Object.create( RangeAreaSegment && RangeAreaSegment.prototype );\n    StepRangeAreaSegment.prototype.constructor = StepRangeAreaSegment;\n\n    StepRangeAreaSegment.prototype.createStrokeSegments = function createStrokeSegments () {\n        return this.segmentsFromPoints(this.calculateStepPoints(this.toPoints()));\n    };\n\n    StepRangeAreaSegment.prototype.stackSegments = function stackSegments () {\n        var fromSegments = this.fromSegments;\n        if (!this.fromSegments) {\n            fromSegments = this.fromSegments = this.segmentsFromPoints(this.calculateStepPoints(this.fromPoints()));\n            fromSegments.reverse();\n        }\n\n        return fromSegments;\n    };\n\n    return StepRangeAreaSegment;\n}(RangeAreaSegment));\n\ndeepExtend(StepRangeAreaSegment.prototype, StepLineMixin);\n\nexport default StepRangeAreaSegment;","import CategoricalChart from '../categorical-chart';\nimport LineChartMixin from '../mixins/line-chart-mixin';\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\nimport RangeAreaPoint from './range-area-point';\nimport RangeAreaSegment from './range-area-segment';\nimport SplineRangeAreaSegment from './spline-range-area-segment';\nimport StepRangeAreaSegment from './step-range-area-segment';\n\nimport { Box } from '../../core';\nimport { ZERO } from '../constants';\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { isNumber } from '../../common';\nimport { deepExtend, isFunction } from '../../common';\nimport { hasValue } from '../utils';\n\nvar RangeAreaChart = (function (CategoricalChart) {\n    function RangeAreaChart () {\n        CategoricalChart.apply(this, arguments);\n    }\n\n    if ( CategoricalChart ) RangeAreaChart.__proto__ = CategoricalChart;\n    RangeAreaChart.prototype = Object.create( CategoricalChart && CategoricalChart.prototype );\n    RangeAreaChart.prototype.constructor = RangeAreaChart;\n\n    RangeAreaChart.prototype.render = function render () {\n        CategoricalChart.prototype.render.call(this);\n\n        this.renderSegments();\n    };\n\n    RangeAreaChart.prototype.pointType = function pointType () {\n        return RangeAreaPoint;\n    };\n\n    RangeAreaChart.prototype.createPoint = function createPoint (data, fields) {\n        var series = fields.series;\n        var seriesIx = fields.seriesIx;\n        var value = data.valueFields;\n\n        if (!hasValue(value.from) && !hasValue(value.to)) {\n            if (this.seriesMissingValues(series) === ZERO) {\n                value = {\n                    from: 0,\n                    to: 0\n                };\n            } else {\n                return null;\n            }\n        }\n\n        var pointOptions = this.pointOptions(series, seriesIx);\n        pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n        var color = data.fields.color || series.color;\n        if (isFunction(series.color)) {\n            color = pointOptions.color;\n        }\n\n        var point = new RangeAreaPoint(value, pointOptions);\n        point.color = color;\n\n        this.append(point);\n\n        return point;\n    };\n\n    RangeAreaChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx) {\n        var style = (currentSeries.line || {}).style;\n        var segmentType;\n        if (style === \"smooth\") {\n            segmentType = SplineRangeAreaSegment;\n        } else if (style === \"step\") {\n            segmentType = StepRangeAreaSegment;\n        } else {\n            segmentType = RangeAreaSegment;\n        }\n\n        return new segmentType(linePoints, currentSeries, seriesIx);\n    };\n\n    RangeAreaChart.prototype.plotRange = function plotRange (point, startValue) {\n        if (!point) {\n            return [ startValue, startValue ];\n        }\n\n        return [ point.value.from, point.value.to ];\n    };\n\n    RangeAreaChart.prototype.valueSlot = function valueSlot (valueAxis, plotRange) {\n        var fromSlot = valueAxis.getSlot(plotRange[0], plotRange[0], !this.options.clip);\n        var toSlot = valueAxis.getSlot(plotRange[1], plotRange[1], !this.options.clip);\n        if (fromSlot && toSlot) {\n            return {\n                from: fromSlot,\n                to: toSlot\n            };\n        }\n    };\n\n    RangeAreaChart.prototype.pointSlot = function pointSlot (categorySlot, valueSlot) {\n        var from = valueSlot.from;\n        var to = valueSlot.to;\n        var fromSlot, toSlot;\n\n        if (this.options.invertAxes) {\n            fromSlot = new Box(from.x1, categorySlot.y1, from.x2, categorySlot.y2);\n            toSlot = new Box(to.x1, categorySlot.y1, to.x2, categorySlot.y2);\n        } else {\n            fromSlot = new Box(categorySlot.x1, from.y1, categorySlot.x2, from.y2);\n            toSlot = new Box(categorySlot.x1, to.y1, categorySlot.x2, to.y2);\n        }\n\n        return {\n            from: fromSlot,\n            to: toSlot\n        };\n    };\n\n    RangeAreaChart.prototype.addValue = function addValue (data, fields) {\n        var valueFields = data.valueFields;\n        if (!isNumber(valueFields.from)) {\n            valueFields.from = valueFields.to;\n        }\n\n        if (!isNumber(valueFields.to)) {\n            valueFields.to = valueFields.from;\n        }\n\n        CategoricalChart.prototype.addValue.call(this, data, fields);\n    };\n\n    RangeAreaChart.prototype.updateRange = function updateRange (value, fields) {\n        if (value !== null && isNumber(value.from) && isNumber(value.to)) {\n            var axisName = fields.series.axis;\n            var axisRange = this.valueAxisRanges[axisName] = this.valueAxisRanges[axisName] || { min: MAX_VALUE, max: MIN_VALUE };\n            var from = value.from;\n            var to = value.to;\n\n            axisRange.min = Math.min(axisRange.min, from, to);\n            axisRange.max = Math.max(axisRange.max, from, to);\n        }\n    };\n\n    RangeAreaChart.prototype.formatPointValue = function formatPointValue (point, format) {\n        var value = point.value;\n\n        return this.chartService.format.auto(format, value.from, value.to);\n    };\n\n    RangeAreaChart.prototype.animationPoints = function animationPoints () {\n        var points = this.points;\n        var result = [];\n        for (var idx = 0; idx < points.length; idx++) {\n            var point = points[idx];\n            if (point) {\n                result.push((point.fromPoint || {}).marker);\n                result.push((point.toPoint || {}).marker);\n            }\n        }\n\n        return result.concat(this._segments);\n    };\n\n    return RangeAreaChart;\n}(CategoricalChart));\n\ndeepExtend(RangeAreaChart.prototype, LineChartMixin, ClipAnimationMixin);\n\nexport default RangeAreaChart;\n","import Candlestick from '../candlestick-chart/candlestick';\n\nvar OHLCPoint = (function (Candlestick) {\n    function OHLCPoint () {\n        Candlestick.apply(this, arguments);\n    }\n\n    if ( Candlestick ) OHLCPoint.__proto__ = Candlestick;\n    OHLCPoint.prototype = Object.create( Candlestick && Candlestick.prototype );\n    OHLCPoint.prototype.constructor = OHLCPoint;\n\n    OHLCPoint.prototype.reflow = function reflow (box) {\n        var ref = this;\n        var options = ref.options;\n        var value = ref.value;\n        var chart = ref.owner;\n        var valueAxis = chart.seriesValueAxis(options);\n        var oPoints = [];\n        var cPoints = [];\n        var lhPoints = [];\n\n        var lhSlot = valueAxis.getSlot(value.low, value.high);\n        var oSlot = valueAxis.getSlot(value.open, value.open);\n        var cSlot = valueAxis.getSlot(value.close, value.close);\n\n        oSlot.x1 = cSlot.x1 = lhSlot.x1 = box.x1;\n        oSlot.x2 = cSlot.x2 = lhSlot.x2 = box.x2;\n\n        var mid = lhSlot.center().x;\n\n        oPoints.push([ oSlot.x1, oSlot.y1 ]);\n        oPoints.push([ mid, oSlot.y1 ]);\n        cPoints.push([ mid, cSlot.y1 ]);\n        cPoints.push([ cSlot.x2, cSlot.y1 ]);\n        lhPoints.push([ mid, lhSlot.y1 ]);\n        lhPoints.push([ mid, lhSlot.y2 ]);\n\n        this.lines = [\n            oPoints, cPoints, lhPoints\n        ];\n\n        this.box = lhSlot.clone().wrap(oSlot.clone().wrap(cSlot));\n\n        this.reflowNote();\n    };\n\n    OHLCPoint.prototype.createBody = function createBody () {};\n\n    return OHLCPoint;\n}(Candlestick));\n\nexport default OHLCPoint;","import CandlestickChart from '../candlestick-chart/candlestick-chart';\nimport OHLCPoint from './ohlc-point';\n\nvar OHLCChart = (function (CandlestickChart) {\n    function OHLCChart () {\n        CandlestickChart.apply(this, arguments);\n    }\n\n    if ( CandlestickChart ) OHLCChart.__proto__ = CandlestickChart;\n    OHLCChart.prototype = Object.create( CandlestickChart && CandlestickChart.prototype );\n    OHLCChart.prototype.constructor = OHLCChart;\n\n    OHLCChart.prototype.pointType = function pointType () {\n        return OHLCPoint;\n    };\n\n    return OHLCChart;\n}(CandlestickChart));\n\nexport default OHLCChart;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement } from '../../core';\n\nimport { FADEIN, INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { alignPathToPixel, setDefaultOptions } from '../../common';\n\nvar WaterfallSegment = (function (ChartElement) {\n    function WaterfallSegment(from, to, series) {\n        ChartElement.call(this);\n\n        this.from = from;\n        this.to = to;\n        this.series = series;\n    }\n\n    if ( ChartElement ) WaterfallSegment.__proto__ = ChartElement;\n    WaterfallSegment.prototype = Object.create( ChartElement && ChartElement.prototype );\n    WaterfallSegment.prototype.constructor = WaterfallSegment;\n\n    WaterfallSegment.prototype.linePoints = function linePoints () {\n        var from = this.from;\n        var ref = this;\n        var fromBox = ref.from.box;\n        var toBox = ref.to.box;\n        var points = [];\n\n        if (from.isVertical) {\n            var y = from.aboveAxis ? fromBox.y1 : fromBox.y2;\n            points.push(\n                [ fromBox.x1, y ],\n                [ toBox.x2, y ]\n            );\n        } else {\n            var x = from.aboveAxis ? fromBox.x2 : fromBox.x1;\n            points.push(\n                [ x, fromBox.y1 ],\n                [ x, toBox.y2 ]\n            );\n        }\n\n        return points;\n    };\n\n    WaterfallSegment.prototype.createVisual = function createVisual () {\n        ChartElement.prototype.createVisual.call(this);\n\n        var line = this.series.line || {};\n\n        var path = draw.Path.fromPoints(this.linePoints(), {\n            stroke: {\n                color: line.color,\n                width: line.width,\n                opacity: line.opacity,\n                dashType: line.dashType\n            }\n        });\n\n        alignPathToPixel(path);\n        this.visual.append(path);\n    };\n\n    return WaterfallSegment;\n}(ChartElement));\n\nsetDefaultOptions(WaterfallSegment, {\n    animation: {\n        type: FADEIN,\n        delay: INITIAL_ANIMATION_DURATION\n    }\n});\n\nexport default WaterfallSegment;","import BarChart from '../bar-chart/bar-chart';\nimport SeriesBinder from '../series-binder';\nimport WaterfallSegment from './waterfall-segment';\n\nimport categoriesCount from '../utils/categories-count';\n\nimport { isNumber } from '../../common';\n\nvar WaterfallChart = (function (BarChart) {\n    function WaterfallChart () {\n        BarChart.apply(this, arguments);\n    }\n\n    if ( BarChart ) WaterfallChart.__proto__ = BarChart;\n    WaterfallChart.prototype = Object.create( BarChart && BarChart.prototype );\n    WaterfallChart.prototype.constructor = WaterfallChart;\n\n    WaterfallChart.prototype.render = function render () {\n        BarChart.prototype.render.call(this);\n        this.createSegments();\n    };\n\n    WaterfallChart.prototype.traverseDataPoints = function traverseDataPoints (callback) {\n        var this$1 = this;\n\n        var series = this.options.series;\n        var totalCategories = categoriesCount(series);\n        var isVertical = !this.options.invertAxes;\n\n        for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n            var currentSeries = series[seriesIx];\n            var total = 0;\n            var runningTotal = 0;\n\n            for (var categoryIx = 0; categoryIx < totalCategories; categoryIx++) {\n                var data = SeriesBinder.current.bindPoint(currentSeries, categoryIx);\n                var value = data.valueFields.value;\n                var summary = data.fields.summary;\n                var from = total;\n                var to = (void 0);\n\n                if (summary) {\n                    if (summary.toLowerCase() === \"total\") {\n                        data.valueFields.value = total;\n                        from = 0;\n                        to = total;\n                    } else {\n                        data.valueFields.value = runningTotal;\n                        to = from - runningTotal;\n                        runningTotal = 0;\n                    }\n                } else if (isNumber(value)) {\n                    runningTotal += value;\n                    total += value;\n                    to = total;\n                }\n\n                callback(data, {\n                    category: this$1.categoryAxis.categoryAt(categoryIx),\n                    categoryIx: categoryIx,\n                    series: currentSeries,\n                    seriesIx: seriesIx,\n                    total: total,\n                    runningTotal: runningTotal,\n                    from: from,\n                    to: to,\n                    isVertical: isVertical\n                });\n            }\n        }\n    };\n\n    WaterfallChart.prototype.updateRange = function updateRange (value, fields) {\n        BarChart.prototype.updateRange.call(this, { value: fields.to }, fields);\n    };\n\n    WaterfallChart.prototype.aboveAxis = function aboveAxis (point) {\n        return point.value >= 0;\n    };\n\n    WaterfallChart.prototype.plotRange = function plotRange (point) {\n        return [ point.from, point.to ];\n    };\n\n    WaterfallChart.prototype.createSegments = function createSegments () {\n        var this$1 = this;\n\n        var series = this.options.series;\n        var seriesPoints = this.seriesPoints;\n        var segments = this.segments = [];\n\n        for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n            var currentSeries = series[seriesIx];\n            var points = seriesPoints[seriesIx];\n\n            if (points) {\n                var prevPoint = (void 0);\n                for (var pointIx = 0; pointIx < points.length; pointIx++) {\n                    var point = points[pointIx];\n\n                    if (point && prevPoint) {\n                        var segment = new WaterfallSegment(prevPoint, point, currentSeries);\n                        segments.push(segment);\n                        this$1.append(segment);\n                    }\n\n                    prevPoint = point;\n                }\n            }\n        }\n    };\n\n    return WaterfallChart;\n}(BarChart));\n\nexport default WaterfallChart;","function trendlineFactory(registry, type, context) {\n    var impl = registry[String(type)];\n    if (impl) {\n        return impl(context);\n    }\n\n    return null;\n}\n\nexport default trendlineFactory;\n","function calculateSlope(sourceValues, valueGetter) {\n    var x = 0;\n    var y = 0;\n    var x2 = 0;\n    var xy = 0;\n    var count = 0;\n    var slope, intercept;\n    var xMin = Number.MAX_VALUE;\n    var xMax = Number.MIN_VALUE;\n\n    for (var i = 0; i < sourceValues.length; i++) {\n        var value = sourceValues[i];\n        var ref = valueGetter(value);\n        var xValue = ref.xValue;\n        var yValue = ref.yValue;\n\n        if (isFinite(xValue) && xValue !== null && isFinite(yValue) && yValue !== null) {\n            xMin = Math.min(xValue, xMin);\n            xMax = Math.max(xValue, xMax);\n\n            count++;\n            x += xValue;\n            y += yValue;\n            x2 += Math.pow(xValue, 2);\n            xy += xValue * yValue;\n        }\n    }\n\n    if (count > 0) {\n        slope = (count * xy - x * y) / (count * x2 - Math.pow(x, 2));\n        intercept = (y - slope * x) / count;\n    }\n\n    return { slope: slope, intercept: intercept, count: count, xMin: xMin, xMax: xMax };\n}\n\nexport default calculateSlope;\n","import calculateSlope from './calculate-slope';\n\nfunction linearTrendline(context) {\n    var options = context.options;\n    var categoryAxis = context.categoryAxis;\n    var seriesValues = context.seriesValues;\n\n    var ref = getData({ seriesValues: seriesValues, categoryAxis: categoryAxis, options: options });\n    var data = ref.data;\n    if (data) {\n        return Object.assign({}, options,\n\n            {type: 'line',\n            data: data,\n            categoryField: 'category',\n            field: 'value'});\n    }\n\n    return null;\n}\n\nvar valueGetter = function (fieldName) { return function (ref) {\n        var categoryIx = ref.categoryIx;\n        var valueFields = ref.valueFields;\n\n        return ({ xValue: categoryIx + 1, yValue: valueFields[fieldName] });\n; }    };\n\nfunction getData(ref) {\n    var seriesValues = ref.seriesValues;\n    var categoryAxis = ref.categoryAxis;\n    var options = ref.options;\n\n    var ref$1 = calculateSlope(seriesValues(), valueGetter(options.field));\n    var slope = ref$1.slope;\n    var intercept = ref$1.intercept;\n    var count = ref$1.count;\n\n    if (count > 0) {\n        var data = [];\n        var totalRange = categoryAxis.totalRangeIndices();\n        var currentRange = categoryAxis.currentRangeIndices();\n        var range = {\n            min: Math.floor(Math.max(currentRange.min - 1, totalRange.min)),\n            max: Math.ceil(Math.min(currentRange.max + 2, totalRange.max))\n        };\n\n        for (var i = range.min; i < range.max; i++) {\n            data[i] = {\n                category: categoryAxis.categoryAt(i, true),\n                value: slope * (i + 1) + intercept\n            };\n        }\n\n        return { data: data };\n    }\n\n    return { data: null };\n}\n\nexport default linearTrendline;\n","import { MIN_MOVING_AVERAGE_PERIOD } from '../constants';\n\nfunction calculateMovingAverage(sourceValues, valueGetter, period) {\n    var averagePoints = [];\n    var values = [];\n    var start = Math.max(MIN_MOVING_AVERAGE_PERIOD, period) - 1;\n\n    var end = 0;\n    var sum = 0;\n\n    for (var i = 0; i < sourceValues.length; i++) {\n        var value = sourceValues[i];\n        var ref = valueGetter(value);\n        var xValue = ref.xValue;\n        var yValue = ref.yValue;\n\n        if (isFinite(yValue) && yValue !== null) {\n            values.push(yValue);\n            sum += yValue;\n            end = Math.max(i, end);\n        } else {\n            values.push(null);\n        }\n\n        if (i >= start) {\n            var count = values.filter(function (value) { return value !== null; }).length;\n            var lastValue = values.shift() || 0;\n\n            if (count > 0) {\n                var average = sum / count;\n                averagePoints.push([xValue, average]);\n\n                sum -= lastValue;\n                continue;\n            }\n        }\n\n        averagePoints.push([xValue, null]);\n    }\n\n    return averagePoints.slice(0, end + 1);\n}\n\nexport default calculateMovingAverage;\n","import { MIN_MOVING_AVERAGE_PERIOD } from '../constants';\nimport calculateMovingAverage from './calculate-moving-average';\n\nfunction movingAverageTrendline(context) {\n    var options = context.options;\n\n    var ref = getData(context);\n    var data = ref.data;\n    if (data) {\n        return Object.assign({}, options,\n\n            {type: 'line',\n            data: data,\n            categoryField: 'category',\n            field: 'value'});\n    }\n\n    return null;\n}\n\nvar valueGetter = function (fieldName) { return function (ref) {\n        var categoryIx = ref.categoryIx;\n        var valueFields = ref.valueFields;\n\n        return ({ xValue: categoryIx, yValue: valueFields[fieldName] });\n; }    };\n\nfunction calculatePoints(ref) {\n    var options = ref.options;\n    var categoryAxis = ref.categoryAxis;\n    var seriesValues = ref.seriesValues;\n\n    var period = (options.trendline || {}).period || MIN_MOVING_AVERAGE_PERIOD;\n    var totalRange = categoryAxis.totalRangeIndices();\n    var currentRange = categoryAxis.currentRangeIndices();\n    var range = {\n        min: Math.floor(Math.max(currentRange.min - period, totalRange.min)),\n        max: Math.ceil(Math.min(currentRange.max + period + 2, totalRange.max))\n    };\n\n    return calculateMovingAverage(seriesValues(range), valueGetter(options.field), period);\n}\n\nfunction getData(context) {\n    var categoryAxis = context.categoryAxis;\n    var points = calculatePoints(context);\n    var data = [];\n    points.forEach(function (ref) {\n        var categoryIx = ref[0];\n        var value = ref[1];\n\n        data[categoryIx] = {\n            category: categoryAxis.categoryAt(categoryIx, true),\n            value: value\n        };\n    });\n\n    if (data.length > 0) {\n        return { data: data };\n    }\n\n    return { data: null };\n}\n\nexport default movingAverageTrendline;\n","import linearTrendline from './linear-trendline';\nimport movingAverageTrendline from './moving-average';\nimport { TRENDLINE_LINEAR, TRENDLINE_MOVING_AVERAGE } from '../constants';\n\nvar registry = {};\nregistry[TRENDLINE_LINEAR] = linearTrendline;\nregistry[TRENDLINE_MOVING_AVERAGE] = movingAverageTrendline;\n\nexport default registry;\n","import PlotAreaBase from './plotarea-base';\nimport AxisGroupRangeTracker from '../axis-group-range-tracker';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\nimport SeriesAggregator from '../aggregates/series-aggregator';\nimport DefaultAggregates from '../aggregates/default-aggregates';\nimport SeriesBinder from '../series-binder';\nimport BarChart from '../bar-chart/bar-chart';\nimport RangeBarChart from '../range-bar-chart/range-bar-chart';\nimport BulletChart from '../bullet-chart/bullet-chart';\nimport LineChart from '../line-chart/line-chart';\nimport AreaChart from '../area-chart/area-chart';\nimport RangeAreaChart from '../range-area-chart/range-area-chart';\nimport OHLCChart from '../ohlc-chart/ohlc-chart';\nimport CandlestickChart from '../candlestick-chart/candlestick-chart';\nimport BoxPlotChart from '../box-plot-chart/box-plot-chart';\nimport WaterfallChart from '../waterfall-chart/waterfall-chart';\nimport trendlineFactory from '../trendlines/trendline-factory';\nimport trendlineRegistry from '../trendlines/trendline-registry';\n\nimport { CategoryAxis, DateCategoryAxis, NumericAxis, LogarithmicAxis, Point } from '../../core';\n\nimport { appendIfNotNull, categoriesCount, createOutOfRangePoints, equalsIgnoreCase, filterSeriesByType,\n    getDateField, getField, isDateAxis, singleItemOrArray } from '../utils';\n\nimport { BAR, COLUMN, BULLET, VERTICAL_BULLET, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA,\n    RANGE_AREA, VERTICAL_RANGE_AREA, RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL,\n    BOX_PLOT, VERTICAL_BOX_PLOT, OHLC, CANDLESTICK, LOGARITHMIC, STEP, EQUALLY_SPACED_SERIES } from '../constants';\n\nimport { DATE, MAX_VALUE } from '../../common/constants';\nimport { setDefaultOptions, inArray, deepExtend, defined, eventElement, grep } from '../../common';\n\nvar AREA_SERIES = [ AREA, VERTICAL_AREA, RANGE_AREA, VERTICAL_RANGE_AREA ];\nvar OUT_OF_RANGE_SERIES = [ LINE, VERTICAL_LINE ].concat(AREA_SERIES);\n\nvar CategoricalPlotArea = (function (PlotAreaBase) {\n    function CategoricalPlotArea () {\n        PlotAreaBase.apply(this, arguments);\n    }\n\n    if ( PlotAreaBase ) CategoricalPlotArea.__proto__ = PlotAreaBase;\n    CategoricalPlotArea.prototype = Object.create( PlotAreaBase && PlotAreaBase.prototype );\n    CategoricalPlotArea.prototype.constructor = CategoricalPlotArea;\n\n    CategoricalPlotArea.prototype.initFields = function initFields (series) {\n        var this$1 = this;\n\n        this.namedCategoryAxes = {};\n        this.namedValueAxes = {};\n        this.valueAxisRangeTracker = new AxisGroupRangeTracker();\n        this._seriesPointsCache = {};\n        this._currentPointsCache = {};\n\n        if (series.length > 0) {\n            this.invertAxes = inArray(\n                series[0].type, [ BAR, BULLET, VERTICAL_LINE, VERTICAL_AREA, VERTICAL_RANGE_AREA,\n                                 RANGE_BAR, HORIZONTAL_WATERFALL, VERTICAL_BOX_PLOT ]\n            );\n\n            for (var i = 0; i < series.length; i++) {\n                var stack = series[i].stack;\n                if (stack && stack.type === \"100%\") {\n                    this$1.stack100 = true;\n                    break;\n                }\n            }\n        }\n    };\n\n    CategoricalPlotArea.prototype.render = function render (panes) {\n        if ( panes === void 0 ) panes = this.panes;\n\n        this.series = [].concat( this.originalSeries );\n        this.createCategoryAxes(panes);\n\n        this.aggregateCategories(panes);\n        this.createTrendlineSeries(panes);\n\n        this.createCategoryAxesLabels(panes);\n        this.createCharts(panes);\n        this.createValueAxes(panes);\n    };\n\n    CategoricalPlotArea.prototype.removeAxis = function removeAxis (axis) {\n        var axisName = axis.options.name;\n\n        PlotAreaBase.prototype.removeAxis.call(this, axis);\n\n        if (axis instanceof CategoryAxis) {\n            delete this.namedCategoryAxes[axisName];\n        } else {\n            this.valueAxisRangeTracker.reset(axisName);\n            delete this.namedValueAxes[axisName];\n        }\n\n        if (axis === this.categoryAxis) {\n            delete this.categoryAxis;\n        }\n\n        if (axis === this.valueAxis) {\n            delete this.valueAxis;\n        }\n    };\n\n    CategoricalPlotArea.prototype.trendlineFactory = function trendlineFactory$1 (options, series) {\n        var categoryAxis = this.seriesCategoryAxis(options);\n        var seriesValues = this.seriesValues.bind(this, series.index);\n\n        var trendline = trendlineFactory(trendlineRegistry, options.type, {\n            options: options,\n            categoryAxis: categoryAxis,\n            seriesValues: seriesValues\n        });\n\n        if (trendline) {\n            // Inherit settings\n            trendline.categoryAxis = series.categoryAxis;\n            trendline.valueAxis = series.valueAxis;\n\n            return this.filterSeries(trendline, categoryAxis);\n        }\n\n        return trendline;\n    };\n\n    CategoricalPlotArea.prototype.trendlineAggregateForecast = function trendlineAggregateForecast () {\n        return this.series\n            .map(function (series) { return (series.trendline || {}).forecast; })\n            .filter(function (forecast) { return forecast !== undefined; })\n            .reduce(function (result, forecast) { return ({\n                before: Math.max(result.before, forecast.before || 0),\n                after: Math.max(result.after, forecast.after || 0)\n            }); }, { before: 0, after: 0 });\n    };\n\n    CategoricalPlotArea.prototype.seriesValues = function seriesValues (seriesIx, range) {\n        var this$1 = this;\n\n        var result = [];\n\n        var series = this.srcSeries[seriesIx];\n        var categoryAxis = this.seriesCategoryAxis(series);\n        var dateAxis = equalsIgnoreCase(categoryAxis.options.type, DATE);\n        if (dateAxis) {\n            this._seriesPointsCache = {};\n            this._currentPointsCache = {};\n            categoryAxis.options.dataItems = [];\n            series = this.aggregateSeries(series, categoryAxis, categoryAxis.totalRangeIndices());\n        }\n\n        var min = range ? range.min : 0;\n        var max = range ? range.max : series.data.length;\n        for (var categoryIx = min; categoryIx < max; categoryIx++) {\n            var data = this$1.bindPoint(series, categoryIx);\n            result.push({ categoryIx: categoryIx, category: data.fields.category, valueFields: data.valueFields });\n        }\n\n        return result;\n    };\n\n    CategoricalPlotArea.prototype.createCharts = function createCharts (panes) {\n        var this$1 = this;\n\n        var seriesByPane = this.groupSeriesByPane();\n\n        for (var i = 0; i < panes.length; i++) {\n            var pane = panes[i];\n            var paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n            this$1.addToLegend(paneSeries);\n\n            var visibleSeries = this$1.filterVisibleSeries(paneSeries);\n            if (!visibleSeries) {\n                continue;\n            }\n\n            var groups = this$1.groupSeriesByCategoryAxis(visibleSeries);\n            for (var groupIx = 0; groupIx < groups.length; groupIx++) {\n                this$1.createChartGroup(groups[groupIx], pane);\n            }\n        }\n    };\n\n    CategoricalPlotArea.prototype.createChartGroup = function createChartGroup (series, pane) {\n        this.createAreaChart(\n            filterSeriesByType(series, [ AREA, VERTICAL_AREA ]), pane\n        );\n\n        this.createRangeAreaChart(\n            filterSeriesByType(series, [ RANGE_AREA, VERTICAL_RANGE_AREA ]), pane\n        );\n\n        this.createBarChart(\n            filterSeriesByType(series, [ COLUMN, BAR ]), pane\n        );\n\n        this.createRangeBarChart(\n            filterSeriesByType(series, [ RANGE_COLUMN, RANGE_BAR ]), pane\n        );\n\n        this.createBulletChart(\n            filterSeriesByType(series, [ BULLET, VERTICAL_BULLET ]), pane\n        );\n\n        this.createCandlestickChart(\n            filterSeriesByType(series, CANDLESTICK), pane\n        );\n\n        this.createBoxPlotChart(\n            filterSeriesByType(series, [ BOX_PLOT, VERTICAL_BOX_PLOT ]), pane\n        );\n\n        this.createOHLCChart(\n            filterSeriesByType(series, OHLC), pane\n        );\n\n        this.createWaterfallChart(\n            filterSeriesByType(series, [ WATERFALL, HORIZONTAL_WATERFALL ]), pane\n        );\n\n        this.createLineChart(\n            filterSeriesByType(series, [ LINE, VERTICAL_LINE ]), pane\n        );\n    };\n\n    CategoricalPlotArea.prototype.aggregateCategories = function aggregateCategories (panes) {\n        var this$1 = this;\n\n        var series = [].concat( this.series );\n        var processedSeries = [];\n        this._currentPointsCache = {};\n        this._seriesPointsCache = this._seriesPointsCache || {};\n\n        for (var i = 0; i < series.length; i++) {\n            var currentSeries = series[i];\n\n            if (!this$1.isTrendline(currentSeries)) {\n                var categoryAxis = this$1.seriesCategoryAxis(currentSeries);\n                var axisPane = this$1.findPane(categoryAxis.options.pane);\n                var dateAxis = equalsIgnoreCase(categoryAxis.options.type, DATE);\n\n                if ((dateAxis || currentSeries.categoryField) && inArray(axisPane, panes)) {\n                    currentSeries = this$1.aggregateSeries(currentSeries, categoryAxis, categoryAxis.currentRangeIndices());\n                } else {\n                    currentSeries = this$1.filterSeries(currentSeries, categoryAxis);\n                }\n            }\n\n            processedSeries.push(currentSeries);\n        }\n\n        this._seriesPointsCache = this._currentPointsCache;\n        this._currentPointsCache = null;\n\n        this.srcSeries = series;\n        this.series = processedSeries;\n    };\n\n    CategoricalPlotArea.prototype.filterSeries = function filterSeries (series, categoryAxis) {\n        var dataLength = (series.data || {}).length;\n        categoryAxis._seriesMax = Math.max(categoryAxis._seriesMax || 0, dataLength);\n\n        if (!(defined(categoryAxis.options.min) || defined(categoryAxis.options.max))) {\n            return series;\n        }\n\n        var range = categoryAxis.currentRangeIndices();\n        var outOfRangePoints = inArray(series.type, OUT_OF_RANGE_SERIES);\n        var currentSeries = deepExtend({}, series);\n\n        currentSeries.data = (currentSeries.data || []).slice(range.min, range.max + 1);\n\n        if (outOfRangePoints) {\n            createOutOfRangePoints(currentSeries, range, dataLength, function (idx) { return ({\n                item: series.data[idx],\n                category: categoryAxis.categoryAt(idx, true),\n                categoryIx: idx - range.min\n            }); }, function (idx) { return defined(series.data[idx]); });\n        }\n\n        return currentSeries;\n    };\n\n    CategoricalPlotArea.prototype.clearSeriesPointsCache = function clearSeriesPointsCache () {\n        this._seriesPointsCache = {};\n    };\n\n    CategoricalPlotArea.prototype.seriesSourcePoints = function seriesSourcePoints (series, categoryAxis) {\n        var this$1 = this;\n\n        var key = (series.index) + \";\" + (categoryAxis.categoriesHash());\n        if (this._seriesPointsCache && this._seriesPointsCache[key]) {\n            this._currentPointsCache[key] = this._seriesPointsCache[key];\n            return this._seriesPointsCache[key];\n        }\n\n        var axisOptions = categoryAxis.options;\n        var srcCategories = axisOptions.srcCategories;\n        var dateAxis = equalsIgnoreCase(axisOptions.type, DATE);\n        var srcData = series.data;\n        var getFn = dateAxis ? getDateField : getField;\n        var result = [];\n        if (!dateAxis) {\n            categoryAxis.mapCategories(); //fixes major performance issue caused by searching for the index for large data\n        }\n\n        for (var idx = 0; idx < srcData.length; idx++) {\n            var category = (void 0);\n            if (series.categoryField) {\n                category = getFn(series.categoryField, srcData[idx], this$1.chartService.intl);\n            } else {\n                category = srcCategories[idx];\n            }\n\n            if (defined(category) && category !== null) {\n                var categoryIx = categoryAxis.totalIndex(category);\n                result[categoryIx] = result[categoryIx] || { items: [], category: category };\n                result[categoryIx].items.push(idx);\n            }\n        }\n\n        this._currentPointsCache[key] = result;\n\n        return result;\n    };\n\n    CategoricalPlotArea.prototype.aggregateSeries = function aggregateSeries (series, categoryAxis, range) {\n        var srcData = series.data;\n        if (!srcData.length) {\n            return series;\n        }\n\n        var srcPoints = this.seriesSourcePoints(series, categoryAxis);\n        var result = deepExtend({}, series);\n        var aggregator = new SeriesAggregator(deepExtend({}, series), SeriesBinder.current, DefaultAggregates.current);\n        var data = result.data = [];\n\n        var dataItems = categoryAxis.options.dataItems || [];\n\n        var categoryItem = function (idx) {\n            var categoryIdx = idx - range.min;\n            var point = srcPoints[idx];\n            if (!point) {\n                point = srcPoints[idx] = {};\n            }\n\n            point.categoryIx = categoryIdx;\n\n            if (!point.item) {\n                var category = categoryAxis.categoryAt(idx, true);\n                point.category = category;\n                point.item = aggregator.aggregatePoints(point.items, category);\n            }\n\n            return point;\n        };\n\n        for (var idx = range.min; idx <= range.max; idx++) {\n            var point = categoryItem(idx);\n            data[point.categoryIx] = point.item;\n\n            if (point.items && point.items.length) {\n                dataItems[point.categoryIx] = point.item;\n            }\n        }\n\n        if (inArray(result.type, OUT_OF_RANGE_SERIES)) {\n            createOutOfRangePoints(result, range, categoryAxis.totalCount(), categoryItem, function (idx) { return srcPoints[idx]; });\n        }\n\n        categoryAxis.options.dataItems = dataItems;\n\n        return result;\n    };\n\n    CategoricalPlotArea.prototype.appendChart = function appendChart (chart, pane) {\n        var series = chart.options.series;\n        var categoryAxis = this.seriesCategoryAxis(series[0]);\n        var categories = categoryAxis.options.categories;\n        var categoriesToAdd = Math.max(0, categoriesCount(series) - categories.length);\n\n        if (categoriesToAdd > 0) {//consider setting an option to axis instead of adding fake categories\n            categories = categoryAxis.options.categories = categoryAxis.options.categories.slice(0);\n            while (categoriesToAdd--) {\n                categories.push(\"\");\n            }\n        }\n\n        this.valueAxisRangeTracker.update(chart.valueAxisRanges);\n\n        PlotAreaBase.prototype.appendChart.call(this, chart, pane);\n    };\n\n    // TODO: Refactor, optionally use series.pane option\n    CategoricalPlotArea.prototype.seriesPaneName = function seriesPaneName (series) {\n        var options = this.options;\n        var axisName = series.axis;\n        var axisOptions = [].concat(options.valueAxis);\n        var axis = grep(axisOptions, function(a) { return a.name === axisName; })[0];\n        var panes = options.panes || [ {} ];\n        var defaultPaneName = (panes[0] || {}).name || \"default\";\n        var paneName = (axis || {}).pane || defaultPaneName;\n\n        return paneName;\n    };\n\n    CategoricalPlotArea.prototype.seriesCategoryAxis = function seriesCategoryAxis (series) {\n        var axisName = series.categoryAxis;\n        var axis = axisName ? this.namedCategoryAxes[axisName] : this.categoryAxis;\n\n        if (!axis) {\n            throw new Error(\"Unable to locate category axis with name \" + axisName);\n        }\n\n        return axis;\n    };\n\n    CategoricalPlotArea.prototype.stackableChartOptions = function stackableChartOptions (firstSeries, pane) {\n        var stack = firstSeries.stack;\n        var isStacked100 = stack && stack.type === \"100%\";\n        var clip = pane.options.clip;\n\n        return {\n            isStacked: stack,\n            isStacked100: isStacked100,\n            clip: clip\n        };\n    };\n\n    CategoricalPlotArea.prototype.groupSeriesByCategoryAxis = function groupSeriesByCategoryAxis (series) {\n        var categoryAxes = [];\n        var unique = {};\n        for (var idx = 0; idx < series.length; idx++) {\n            var name = series[idx].categoryAxis || \"$$default$$\";\n            if (!unique.hasOwnProperty(name)) {\n                unique[name] = true;\n                categoryAxes.push(name);\n            }\n        }\n\n        var groups = [];\n        for (var axisIx = 0; axisIx < categoryAxes.length; axisIx++) {\n            var axis = categoryAxes[axisIx];\n            var axisSeries = groupSeries(series, axis, axisIx);\n            if (axisSeries.length === 0) {\n                continue;\n            }\n\n            groups.push(axisSeries);\n        }\n\n        return groups;\n    };\n\n    CategoricalPlotArea.prototype.createBarChart = function createBarChart (series, pane) {\n        if (series.length === 0) {\n            return;\n        }\n\n        var firstSeries = series[0];\n        var barChart = new BarChart(this, Object.assign({\n            series: series,\n            invertAxes: this.invertAxes,\n            gap: firstSeries.gap,\n            spacing: firstSeries.spacing\n        }, this.stackableChartOptions(firstSeries, pane)));\n\n        this.appendChart(barChart, pane);\n    };\n\n    CategoricalPlotArea.prototype.createRangeBarChart = function createRangeBarChart (series, pane) {\n        if (series.length === 0) {\n            return;\n        }\n\n        var firstSeries = series[0];\n        var rangeColumnChart = new RangeBarChart(this, {\n            series: series,\n            invertAxes: this.invertAxes,\n            gap: firstSeries.gap,\n            spacing: firstSeries.spacing\n        });\n\n        this.appendChart(rangeColumnChart, pane);\n    };\n\n    CategoricalPlotArea.prototype.createBulletChart = function createBulletChart (series, pane) {\n        if (series.length === 0) {\n            return;\n        }\n\n        var firstSeries = series[0];\n        var bulletChart = new BulletChart(this, {\n            series: series,\n            invertAxes: this.invertAxes,\n            gap: firstSeries.gap,\n            spacing: firstSeries.spacing,\n            clip: pane.options.clip\n        });\n\n        this.appendChart(bulletChart, pane);\n    };\n\n    CategoricalPlotArea.prototype.createLineChart = function createLineChart (series, pane) {\n        if (series.length === 0) {\n            return;\n        }\n\n        var firstSeries = series[0];\n        var lineChart = new LineChart(this, Object.assign({\n            invertAxes: this.invertAxes,\n            series: series\n        }, this.stackableChartOptions(firstSeries, pane)));\n\n        this.appendChart(lineChart, pane);\n    };\n\n    CategoricalPlotArea.prototype.createAreaChart = function createAreaChart (series, pane) {\n        if (series.length === 0) {\n            return;\n        }\n\n        var firstSeries = series[0];\n        var areaChart = new AreaChart(this, Object.assign({\n            invertAxes: this.invertAxes,\n            series: series\n        }, this.stackableChartOptions(firstSeries, pane)));\n\n        this.appendChart(areaChart, pane);\n    };\n\n    CategoricalPlotArea.prototype.createRangeAreaChart = function createRangeAreaChart (series, pane) {\n        if (series.length === 0) {\n            return;\n        }\n\n        var rangeAreaChart = new RangeAreaChart(this, {\n            invertAxes: this.invertAxes,\n            series: series,\n            clip: pane.options.clip\n        });\n\n        this.appendChart(rangeAreaChart, pane);\n    };\n\n    CategoricalPlotArea.prototype.createOHLCChart = function createOHLCChart (series, pane) {\n        if (series.length === 0) {\n            return;\n        }\n\n        var firstSeries = series[0];\n        var chart = new OHLCChart(this, {\n            invertAxes: this.invertAxes,\n            gap: firstSeries.gap,\n            series: series,\n            spacing: firstSeries.spacing,\n            clip: pane.options.clip\n        });\n\n        this.appendChart(chart, pane);\n    };\n\n    CategoricalPlotArea.prototype.createCandlestickChart = function createCandlestickChart (series, pane) {\n        if (series.length === 0) {\n            return;\n        }\n\n        var firstSeries = series[0];\n        var chart = new CandlestickChart(this, {\n            invertAxes: this.invertAxes,\n            gap: firstSeries.gap,\n            series: series,\n            spacing: firstSeries.spacing,\n            clip: pane.options.clip\n        });\n\n        this.appendChart(chart, pane);\n    };\n\n    CategoricalPlotArea.prototype.createBoxPlotChart = function createBoxPlotChart (series, pane) {\n        if (series.length === 0) {\n            return;\n        }\n\n        var firstSeries = series[0];\n        var chart = new BoxPlotChart(this, {\n            invertAxes: this.invertAxes,\n            gap: firstSeries.gap,\n            series: series,\n            spacing: firstSeries.spacing,\n            clip: pane.options.clip\n        });\n\n        this.appendChart(chart, pane);\n    };\n\n    CategoricalPlotArea.prototype.createWaterfallChart = function createWaterfallChart (series, pane) {\n        if (series.length === 0) {\n            return;\n        }\n\n        var firstSeries = series[0];\n        var waterfallChart = new WaterfallChart(this, {\n            series: series,\n            invertAxes: this.invertAxes,\n            gap: firstSeries.gap,\n            spacing: firstSeries.spacing\n        });\n\n        this.appendChart(waterfallChart, pane);\n    };\n\n    CategoricalPlotArea.prototype.axisRequiresRounding = function axisRequiresRounding (categoryAxisName, categoryAxisIndex) {\n        var this$1 = this;\n\n        var centeredSeries = filterSeriesByType(this.series, EQUALLY_SPACED_SERIES);\n\n        for (var seriesIx = 0; seriesIx < this.series.length; seriesIx++) {\n            var currentSeries = this$1.series[seriesIx];\n            if (inArray(currentSeries.type, AREA_SERIES)) {\n                var line = currentSeries.line;\n                if (line && line.style === STEP) {\n                    centeredSeries.push(currentSeries);\n                }\n            }\n        }\n\n        for (var seriesIx$1 = 0; seriesIx$1 < centeredSeries.length; seriesIx$1++) {\n            var seriesAxis = centeredSeries[seriesIx$1].categoryAxis || \"\";\n            if (seriesAxis === categoryAxisName || (!seriesAxis && categoryAxisIndex === 0)) {\n                return true;\n            }\n        }\n    };\n\n    CategoricalPlotArea.prototype.aggregatedAxis = function aggregatedAxis (categoryAxisName, categoryAxisIndex) {\n        var series = this.series;\n\n        for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n            var seriesAxis = series[seriesIx].categoryAxis || \"\";\n            if ((seriesAxis === categoryAxisName || (!seriesAxis && categoryAxisIndex === 0)) && series[seriesIx].categoryField) {\n                return true;\n            }\n        }\n    };\n\n    CategoricalPlotArea.prototype.createCategoryAxesLabels = function createCategoryAxesLabels () {\n        var axes = this.axes;\n        for (var i = 0; i < axes.length; i++) {\n            if (axes[i] instanceof CategoryAxis) {\n                axes[i].createLabels();\n            }\n        }\n    };\n\n    CategoricalPlotArea.prototype.createCategoryAxes = function createCategoryAxes (panes) {\n        var this$1 = this;\n\n        var invertAxes = this.invertAxes;\n        var definitions = [].concat(this.options.categoryAxis);\n        var axes = [];\n\n        for (var i = 0; i < definitions.length; i++) {\n            var axisOptions = definitions[i];\n            var axisPane = this$1.findPane(axisOptions.pane);\n\n            if (inArray(axisPane, panes)) {\n                var name = axisOptions.name;\n                var categories = axisOptions.categories; if ( categories === void 0 ) categories = [];\n                axisOptions = deepExtend({\n                    vertical: invertAxes,\n                    reverse: !invertAxes && this$1.chartService.rtl,\n                    axisCrossingValue: invertAxes ? MAX_VALUE : 0\n                }, axisOptions);\n\n                if (!defined(axisOptions.justified)) {\n                    axisOptions.justified = this$1.isJustified();\n                }\n\n                if (this$1.axisRequiresRounding(name, i)) {\n                    axisOptions.justified = false;\n                }\n\n                var categoryAxis = (void 0);\n\n                if (isDateAxis(axisOptions, categories[0])) {\n                    axisOptions._forecast = this$1.trendlineAggregateForecast();\n                    categoryAxis = new DateCategoryAxis(axisOptions, this$1.chartService);\n                } else {\n                    categoryAxis = new CategoryAxis(axisOptions, this$1.chartService);\n                }\n\n                definitions[i].categories = categoryAxis.options.srcCategories;\n\n                if (name) {\n                    if (this$1.namedCategoryAxes[name]) {\n                        throw new Error((\"Category axis with name \" + name + \" is already defined\"));\n                    }\n                    this$1.namedCategoryAxes[name] = categoryAxis;\n                }\n\n                categoryAxis.axisIndex = i;\n                axes.push(categoryAxis);\n                this$1.appendAxis(categoryAxis);\n            }\n        }\n\n        var primaryAxis = this.categoryAxis || axes[0];\n        this.categoryAxis = primaryAxis;\n\n        if (invertAxes) {\n            this.axisY = primaryAxis;\n        } else {\n            this.axisX = primaryAxis;\n        }\n    };\n\n    CategoricalPlotArea.prototype.isJustified = function isJustified () {\n        var series = this.series;\n\n        for (var i = 0; i < series.length; i++) {\n            var currentSeries = series[i];\n            if (!inArray(currentSeries.type, AREA_SERIES)) {\n                return false;\n            }\n        }\n\n        return true;\n    };\n\n    CategoricalPlotArea.prototype.createValueAxes = function createValueAxes (panes) {\n        var this$1 = this;\n\n        var tracker = this.valueAxisRangeTracker;\n        var defaultRange = tracker.query();\n        var definitions = [].concat(this.options.valueAxis);\n        var invertAxes = this.invertAxes;\n        var baseOptions = { vertical: !invertAxes, reverse: invertAxes && this.chartService.rtl };\n        var axes = [];\n\n        if (this.stack100) {\n            baseOptions.roundToMajorUnit = false;\n            baseOptions.labels = { format: \"P0\" };\n        }\n\n        for (var i = 0; i < definitions.length; i++) {\n            var axisOptions = definitions[i];\n            var axisPane = this$1.findPane(axisOptions.pane);\n\n            if (inArray(axisPane, panes)) {\n                var name = axisOptions.name;\n                var defaultAxisRange = equalsIgnoreCase(axisOptions.type, LOGARITHMIC) ? { min: 0.1, max: 1 } : { min: 0, max: 1 };\n                var range = tracker.query(name) || defaultRange || defaultAxisRange;\n\n                if (i === 0 && range && defaultRange) {\n                    range.min = Math.min(range.min, defaultRange.min);\n                    range.max = Math.max(range.max, defaultRange.max);\n                }\n\n                var axisType = (void 0);\n                if (equalsIgnoreCase(axisOptions.type, LOGARITHMIC)) {\n                    axisType = LogarithmicAxis;\n                } else {\n                    axisType = NumericAxis;\n                }\n\n                var valueAxis = new axisType(range.min, range.max,\n                    deepExtend({}, baseOptions, axisOptions),\n                    this$1.chartService\n                );\n\n                if (name) {\n                    if (this$1.namedValueAxes[name]) {\n                        throw new Error((\"Value axis with name \" + name + \" is already defined\"));\n                    }\n                    this$1.namedValueAxes[name] = valueAxis;\n                }\n                valueAxis.axisIndex = i;\n\n                axes.push(valueAxis);\n                this$1.appendAxis(valueAxis);\n            }\n        }\n\n        var primaryAxis = this.valueAxis || axes[0];\n        this.valueAxis = primaryAxis;\n\n        if (invertAxes) {\n            this.axisX = primaryAxis;\n        } else {\n            this.axisY = primaryAxis;\n        }\n    };\n\n    CategoricalPlotArea.prototype._dispatchEvent = function _dispatchEvent (chart, e, eventType) {\n        var coords = chart._eventCoordinates(e);\n        var point = new Point(coords.x, coords.y);\n        var pane = this.pointPane(point);\n        var categories = [];\n        var values = [];\n\n        if (!pane) {\n            return;\n        }\n\n        var allAxes = pane.axes;\n        for (var i = 0; i < allAxes.length; i++) {\n            var axis = allAxes[i];\n            if (axis.getValue) {\n                appendIfNotNull(values, axis.getValue(point));\n            } else {\n                appendIfNotNull(categories, axis.getCategory(point));\n            }\n        }\n\n        if (categories.length === 0) {\n            appendIfNotNull(categories, this.categoryAxis.getCategory(point));\n        }\n\n        if (categories.length > 0 && values.length > 0) {\n            chart.trigger(eventType, {\n                element: eventElement(e),\n                originalEvent: e,\n                category: singleItemOrArray(categories),\n                value: singleItemOrArray(values)\n            });\n        }\n    };\n\n    CategoricalPlotArea.prototype.pointPane = function pointPane (point) {\n        var panes = this.panes;\n\n        for (var i = 0; i < panes.length; i++) {\n            var currentPane = panes[i];\n            if (currentPane.contentBox.containsPoint(point)) {\n                return currentPane;\n            }\n        }\n    };\n\n    CategoricalPlotArea.prototype.updateAxisOptions = function updateAxisOptions$1 (axis, options) {\n        updateAxisOptions(this.options, axis, options);\n        updateAxisOptions(this.originalOptions, axis, options);\n    };\n\n    return CategoricalPlotArea;\n}(PlotAreaBase));\n\nfunction updateAxisOptions(targetOptions, axis, options) {\n    var axesOptions = axis instanceof CategoryAxis ? [].concat(targetOptions.categoryAxis) : [].concat(targetOptions.valueAxis);\n    deepExtend(axesOptions[axis.axisIndex], options);\n}\n\nfunction groupSeries(series, axis, axisIx) {\n    return grep(series, function(s) {\n        return (axisIx === 0 && !s.categoryAxis) || (s.categoryAxis === axis);\n    });\n}\n\nsetDefaultOptions(CategoricalPlotArea, {\n    categoryAxis: {},\n    valueAxis: {}\n});\n\ndeepExtend(CategoricalPlotArea.prototype, PlotAreaEventsMixin);\n\nexport default CategoricalPlotArea;\n","import Class from './class';\n\nvar Observable = (function (Class) {\n    function Observable() {\n        Class.call(this);\n\n        this._events = {};\n    }\n\n    if ( Class ) Observable.__proto__ = Class;\n    Observable.prototype = Object.create( Class && Class.prototype );\n    Observable.prototype.constructor = Observable;\n\n    Observable.prototype.bind = function bind (eventName, handlers, one) {\n        var arguments$1 = arguments;\n        var this$1 = this;\n\n        var eventNames = getArray(eventName);\n        var handlersIsFunction = isFunction(handlers);\n        var length = eventNames.length;\n\n        if (handlers === undefined) {\n            for (var field in eventName) {\n                this$1.bind(field, eventName[field]);\n            }\n            return this;\n        }\n\n        var loop = function ( idx ) {\n            var eventName$1 = eventNames[idx];\n\n            var handler = handlersIsFunction ? handlers : handlers[eventName$1];\n\n            if (handler) {\n                if (one) {\n                    var original = handler;\n                    handler = function () { // eslint-disable-line no-loop-func\n                        this$1.unbind(eventName$1, handler);\n                        original.apply(this$1, arguments$1);\n                    };\n                    handler.original = original;\n                }\n                var events = this$1._events[eventName$1] = this$1._events[eventName$1] || [];\n                events.push(handler);\n            }\n        };\n\n        for (var idx = 0; idx < length; idx++) loop( idx );\n\n        return this;\n    };\n\n    Observable.prototype.one = function one (eventNames, handlers) {\n        return this.bind(eventNames, handlers, true);\n    };\n\n    Observable.prototype.first = function first (eventName, handlers) {\n        var this$1 = this;\n\n        var eventNames = getArray(eventName);\n        var handlersIsFunction = isFunction(handlers);\n\n        for (var idx = 0, length = eventNames.length; idx < length; idx++) {\n            var eventName$1 = eventNames[idx];\n\n            var handler = handlersIsFunction ? handlers : handlers[eventName$1];\n\n            if (handler) {\n                var events = this$1._events[eventName$1] = this$1._events[eventName$1] || [];\n                events.unshift(handler);\n            }\n        }\n\n        return this;\n    };\n\n    Observable.prototype.trigger = function trigger (eventName, e) {\n        var this$1 = this;\n        if ( e === void 0 ) e = {};\n\n        var events = this._events[eventName];\n\n        if (events) {\n            var length = events.length;\n\n            e.sender = this;\n            e._defaultPrevented = false;\n            e.preventDefault = preventDefault;\n            e.isDefaultPrevented = isDefaultPrevented;\n\n            events = events.slice();\n\n            for (var idx = 0; idx < length; idx++) {\n                events[idx].call(this$1, e);\n            }\n\n            return e._defaultPrevented === true;\n        }\n\n        return false;\n    };\n\n    Observable.prototype.unbind = function unbind (eventName, handler) {\n        var events = this._events[eventName];\n\n        if (eventName === undefined) {\n            this._events = {};\n        } else if (events) {\n            if (handler) {\n                for (var idx = events.length - 1; idx >= 0; idx--) {\n                    if (events[idx] === handler || events[idx].original === handler) {\n                        events.splice(idx, 1);\n                    }\n                }\n            } else {\n                this._events[eventName] = [];\n            }\n        }\n\n        return this;\n    };\n\n    return Observable;\n}(Class));\n\nfunction isFunction(value) {\n    return typeof value === \"function\";\n}\n\nfunction getArray(value) {\n    return typeof value === \"string\" ? [ value ] : value;\n}\n\nfunction preventDefault() {\n    this._defaultPrevented = true;\n}\n\nfunction isDefaultPrevented() {\n    return this._defaultPrevented === true;\n}\n\nexport default Observable;","import Group from '../shapes/group';\nimport Point from '../geometry/point';\nimport { Observable } from '../common';\nimport { eventElement, eventCoordinates, elementPadding, elementScale, elementSize, elementOffset } from '../util';\n\nvar events = [\n    \"click\",\n    \"mouseenter\",\n    \"mouseleave\",\n    \"mousemove\",\n    \"resize\"\n];\n\nvar Surface = (function (Observable) {\n    function Surface(element, options) {\n        Observable.call(this);\n\n        this.options = Object.assign({}, options);\n        this.element = element;\n        this.element._kendoExportVisual = this.exportVisual.bind(this);\n\n        this._click = this._handler(\"click\");\n        this._mouseenter = this._handler(\"mouseenter\");\n        this._mouseleave = this._handler(\"mouseleave\");\n        this._mousemove = this._handler(\"mousemove\");\n\n        this._visual = new Group();\n\n        elementSize(element, this.options);\n\n        this.bind(events, this.options);\n\n        this._enableTracking();\n    }\n\n    if ( Observable ) Surface.__proto__ = Observable;\n    Surface.prototype = Object.create( Observable && Observable.prototype );\n    Surface.prototype.constructor = Surface;\n\n    Surface.prototype.draw = function draw (element) {\n        this._visual.children.push(element);\n    };\n\n    Surface.prototype.clear = function clear () {\n        this._visual.children = [];\n    };\n\n    Surface.prototype.destroy = function destroy () {\n        this._visual = null;\n        this.element._kendoExportVisual = null;\n        this.unbind();\n    };\n\n    Surface.prototype.eventTarget = function eventTarget (e) {\n        var this$1 = this;\n\n        var domNode = eventElement(e);\n        var node;\n\n        while (!node && domNode) {\n            node = domNode._kendoNode;\n            if (domNode === this$1.element) {\n                break;\n            }\n\n            domNode = domNode.parentElement;\n        }\n\n        if (node) {\n            return node.srcElement;\n        }\n    };\n\n    Surface.prototype.exportVisual = function exportVisual () {\n        return this._visual;\n    };\n\n    Surface.prototype.getSize = function getSize () {\n        return elementSize(this.element);\n    };\n\n    Surface.prototype.currentSize = function currentSize (size) {\n        if (size) {\n            this._size = size;\n        } else {\n            return this._size;\n        }\n    };\n\n    Surface.prototype.setSize = function setSize (size) {\n        elementSize(this.element, size);\n\n        this.currentSize(size);\n        this._resize();\n    };\n\n    Surface.prototype.resize = function resize (force) {\n        var size = this.getSize();\n        var currentSize = this.currentSize();\n\n        if (force || (size.width > 0 || size.height > 0) && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n            this.currentSize(size);\n            this._resize(size, force);\n            this.trigger(\"resize\", size);\n        }\n    };\n\n    Surface.prototype.size = function size (value) {\n        if (!value) {\n            return this.getSize();\n        }\n\n        this.setSize(value);\n    };\n\n    Surface.prototype.suspendTracking = function suspendTracking () {\n        this._suspendedTracking = true;\n    };\n\n    Surface.prototype.resumeTracking = function resumeTracking () {\n        this._suspendedTracking = false;\n    };\n\n    Surface.prototype._enableTracking = function _enableTracking () {};\n\n    Surface.prototype._resize = function _resize () {};\n\n    Surface.prototype._handler = function _handler (eventName) {\n        var this$1 = this;\n\n        return function (e) {\n            var node = this$1.eventTarget(e);\n            if (node && !this$1._suspendedTracking) {\n                this$1.trigger(eventName, {\n                    element: node,\n                    originalEvent: e,\n                    type: eventName\n                });\n            }\n        };\n    };\n\n    Surface.prototype._elementOffset = function _elementOffset () {\n        var element = this.element;\n        var padding = elementPadding(element);\n        var ref = elementOffset(element);\n        var left = ref.left;\n        var top = ref.top;\n\n        return {\n            left: left + padding.left,\n            top: top + padding.top\n        };\n    };\n\n    Surface.prototype._surfacePoint = function _surfacePoint (e) {\n        var offset = this._elementOffset();\n        var coord = eventCoordinates(e);\n        var x = coord.x - offset.left;\n        var y = coord.y - offset.top;\n\n        var inverseTransform = elementScale(this.element).invert();\n        var point = new Point(\n            x,\n            y\n        ).transform(inverseTransform);\n\n        return point;\n    };\n\n    return Surface;\n}(Observable));\n\nexport default Surface;\n","import { Class } from '../common';\n\nvar BaseNode = (function (Class) {\n    function BaseNode(srcElement) {\n        Class.call(this);\n\n        this.childNodes = [];\n        this.parent = null;\n\n        if (srcElement) {\n            this.srcElement = srcElement;\n            this.observe();\n        }\n    }\n\n    if ( Class ) BaseNode.__proto__ = Class;\n    BaseNode.prototype = Object.create( Class && Class.prototype );\n    BaseNode.prototype.constructor = BaseNode;\n\n    BaseNode.prototype.destroy = function destroy () {\n        var this$1 = this;\n\n        if (this.srcElement) {\n            this.srcElement.removeObserver(this);\n        }\n\n        var children = this.childNodes;\n        for (var i = 0; i < children.length; i++) {\n            this$1.childNodes[i].destroy();\n        }\n\n        this.parent = null;\n    };\n\n    BaseNode.prototype.load = function load () {};\n\n    BaseNode.prototype.observe = function observe () {\n        if (this.srcElement) {\n            this.srcElement.addObserver(this);\n        }\n    };\n\n    BaseNode.prototype.append = function append (node) {\n        this.childNodes.push(node);\n        node.parent = this;\n    };\n\n    BaseNode.prototype.insertAt = function insertAt (node, pos) {\n        this.childNodes.splice(pos, 0, node);\n        node.parent = this;\n    };\n\n    BaseNode.prototype.remove = function remove (index, count) {\n        var this$1 = this;\n\n        var end = index + count;\n        for (var i = index; i < end; i++) {\n            this$1.childNodes[i].removeSelf();\n        }\n        this.childNodes.splice(index, count);\n    };\n\n    BaseNode.prototype.removeSelf = function removeSelf () {\n        this.clear();\n        this.destroy();\n    };\n\n    BaseNode.prototype.clear = function clear () {\n        this.remove(0, this.childNodes.length);\n    };\n\n    BaseNode.prototype.invalidate = function invalidate () {\n        if (this.parent) {\n            this.parent.invalidate();\n        }\n    };\n\n    BaseNode.prototype.geometryChange = function geometryChange () {\n        this.invalidate();\n    };\n\n    BaseNode.prototype.optionsChange = function optionsChange () {\n        this.invalidate();\n    };\n\n    BaseNode.prototype.childrenChange = function childrenChange (e) {\n        if (e.action === \"add\") {\n            this.load(e.items, e.index);\n        } else if (e.action === \"remove\") {\n            this.remove(e.index, e.items.length);\n        }\n\n        this.invalidate();\n    };\n\n    return BaseNode;\n}(Class));\n\nexport default BaseNode;","import { defined } from '../../util';\n\nexport default function renderAttr(name, value) {\n    return (defined(value) && value !== null) ? (\" \" + name + \"=\\\"\" + value + \"\\\" \") : \"\";\n}","import renderAttr from './render-attribute';\n\nexport default function renderAllAttr(attrs) {\n    var output = \"\";\n    for (var i = 0; i < attrs.length; i++) {\n        output += renderAttr(attrs[i][0], attrs[i][1]);\n    }\n\n    return output;\n}","import { defined } from '../../util';\n\nexport default function renderStyle(attrs) {\n    var output = \"\";\n    for (var i = 0; i < attrs.length; i++) {\n        var value = attrs[i][1];\n        if (defined(value)) {\n            output += attrs[i][0] + \":\" + value + \";\";\n        }\n    }\n\n    if (output !== \"\") {\n        return output;\n    }\n}","var NODE_MAP = {};\n\nexport default NODE_MAP;","/**\n * @hidden\n */\nexport var isWindowAvailable = function () {\n    return typeof window !== 'undefined';\n};\n","/* tslint:disable:object-literal-sort-keys max-line-length */\nimport { isWindowAvailable } from './util';\nvar agentRxs = {\n    wp: /(Windows Phone(?: OS)?)\\s(\\d+)\\.(\\d+(\\.\\d+)?)/,\n    fire: /(Silk)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n    android: /(Android|Android.*(?:Opera|Firefox).*?\\/)\\s*(\\d+)(\\.(\\d+(\\.\\d+)?))?/,\n    iphone: /(iPhone|iPod).*OS\\s+(\\d+)[\\._]([\\d\\._]+)/,\n    ipad: /(iPad).*OS\\s+(\\d+)[\\._]([\\d_]+)/,\n    meego: /(MeeGo).+NokiaBrowser\\/(\\d+)\\.([\\d\\._]+)/,\n    webos: /(webOS)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n    blackberry: /(BlackBerry|BB10).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n    playbook: /(PlayBook).*?Tablet\\s*OS\\s*(\\d+)\\.(\\d+(\\.\\d+)?)/,\n    windows: /(MSIE)\\s+(\\d+)\\.(\\d+(\\.\\d+)?)/,\n    tizen: /(tizen).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/i,\n    sailfish: /(sailfish).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*firefox/i,\n    ffos: /(Mobile).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*Firefox/\n};\nvar osRxs = {\n    ios: /^i(phone|pad|pod)$/i,\n    android: /^android|fire$/i,\n    blackberry: /^blackberry|playbook/i,\n    windows: /windows/,\n    wp: /wp/,\n    flat: /sailfish|ffos|tizen/i,\n    meego: /meego/\n};\nvar desktopBrowserRxs = {\n    edge: /(edge)[ \\/]([\\w.]+)/i,\n    webkit: /(chrome)[ \\/]([\\w.]+)/i,\n    safari: /(webkit)[ \\/]([\\w.]+)/i,\n    opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n    msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n    mozilla: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\nvar mobileBrowserRxs = {\n    omini: /Opera\\sMini/i,\n    omobile: /Opera\\sMobi/i,\n    firefox: /Firefox|Fennec/i,\n    mobilesafari: /version\\/.*safari/i,\n    ie: /MSIE|Windows\\sPhone/i,\n    chrome: /chrome|crios/i,\n    webkit: /webkit/i\n};\nvar testRx = function (agent, rxs, dflt) {\n    for (var rx in rxs) {\n        if (rxs.hasOwnProperty(rx) && rxs[rx].test(agent)) {\n            return rx;\n        }\n    }\n    return dflt !== undefined ? dflt : agent;\n};\n/**\n * A function that detects the mobile browser based on the given UserAgent.\n *\n * @param ua - The user agent string.\n * @returns - A browser info object containing the browser type and version.\n *\n * @example\n * ```ts-no-run\n * const userAgent = 'Mozilla/5.0 (Linux; Android 8.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Focus/1.3 Chrome/61.0.3163.81 Mobile Safari/537.36';\n * detectMobileOS(userAgent); // { android: true };\n * ```\n */\nexport var detectMobileOS = function (ua) {\n    var minorVersion;\n    var match = [];\n    for (var agent in agentRxs) {\n        if (agentRxs.hasOwnProperty(agent)) {\n            match = ua.match(agentRxs[agent]);\n            if (!match) {\n                continue;\n            }\n            if (agent === 'windows' && 'plugins' in window.navigator) {\n                return null;\n            } // Break if not Metro/Mobile Windows\n            var os = {};\n            os.device = agent;\n            os.browser = testRx(ua, mobileBrowserRxs, 'default');\n            os.name = testRx(agent, osRxs);\n            os[os.name] = true;\n            os.majorVersion = match[2];\n            os.minorVersion = match[3] ? match[3].replace('_', '.') : '.0';\n            minorVersion = os.minorVersion.replace('.', '').substr(0, 2);\n            os.flatVersion = os.majorVersion + minorVersion +\n                (new Array(3 - (minorVersion.length < 3 ? minorVersion.length : 2)).join('0'));\n            os.cordova = typeof window.PhoneGap !== undefined\n                || typeof window.cordova !== undefined; // Use file protocol to detect appModes.\n            os.appMode = window.navigator.standalone\n                || (/file|local|wmapp/).test(window.location.protocol)\n                || os.cordova; // Use file protocol to detect appModes.\n            return os;\n        }\n    }\n    return null;\n};\n/**\n * A function that detects the desktop browser based on the given UserAgent.\n *\n * @param ua - The user agent string.\n * @returns - A browser info object containing the browser type and version.\n *\n * @example\n * ```ts-no-run\n * const userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.151 Safari/535.19';\n * detectDesktopBrowser(userAgent); // { chrome: true, webkit: true };\n * ```\n */\nexport var detectDesktopBrowser = function (ua) {\n    var browserInfo = null;\n    var match = [];\n    for (var agent in desktopBrowserRxs) {\n        if (desktopBrowserRxs.hasOwnProperty(agent)) {\n            match = ua.match(desktopBrowserRxs[agent]);\n            if (match) {\n                browserInfo = {};\n                browserInfo[agent] = true;\n                browserInfo[match[1].toLowerCase().split(' ')[0].split('/')[0]] = true;\n                browserInfo.version = parseInt(document.documentMode || match[2], 10);\n                break;\n            }\n        }\n    }\n    return browserInfo;\n};\nvar userAgent = isWindowAvailable() && window.navigator ? window.navigator.userAgent : null;\n/**\n * A constant holding the desktop browser info. The variable persists the result of the detectDesktopBrowser(window.navigator.userAgent) call.\n * If no desktop browser is detected, the constant will be `null`.\n */\nexport var browser = userAgent ? detectDesktopBrowser(userAgent) : null;\n/**\n * A constant holding the mobile OS info. The variable persists the result of the detectMobileOS(window.navigator.userAgent) call.\n * If no mobile OS is detected, the constant will be `null`.\n */\nexport var mobileOS = userAgent ? detectMobileOS(userAgent) : null;\n/**\n * A constant reporting the browser `touch` events support.\n */\nexport var touch = isWindowAvailable() && 'ontouchstart' in window;\n/**\n * @hidden\n * A constant reporting the browser `msPointers` events support.\n */\nexport var msPointers = browser && !browser.chrome && window.MSPointerEvent;\n/**\n * A constant reporting the browser `pointers` events support.\n */\nexport var pointers = browser && !browser.chrome && window.PointerEvent;\n/**\n * A constant reporting whether the browser is touch enabled.\n */\nexport var touchEnabled = mobileOS && (touch || msPointers || pointers);\n","import { fieldList } from './field-list';\nvar getterCache = {};\n// tslint:disable-next-line:no-string-literal\ngetterCache['undefined'] = function (obj) { return obj; };\n/**\n * @hidden\n */\nexport function getter(field) {\n    if (getterCache[field]) {\n        return getterCache[field];\n    }\n    var fields = fieldList(field);\n    getterCache[field] = function (obj) {\n        var result = obj;\n        for (var idx = 0; idx < fields.length && result; idx++) {\n            result = result[fields[idx]];\n        }\n        return result;\n    };\n    return getterCache[field];\n}\n","var reComment = /\\/\\*[\\s\\S]*?\\*\\//g;\n/*\n([^\\s:;]+?)\\s*:\\s*         # Property name and colon\n(\n  (?:\n    (?:                    # Begin alternation\n      url\\(                # Match 'url('\n        \\s*\n        (?:\n          (?:[^\"')\\\\]|\\\\.)*  # Content inside url(), excluding quotes and closing parenthesis\n          |\n          \"(?:[^\"\\\\]|\\\\.)*\"  # Double-quoted strings, handling escaped characters\n          |\n          '(?:[^'\\\\]|\\\\.)*'  # Single-quoted strings, handling escaped characters\n        )\n        \\s*\n      \\)\n      |\n      \"(?:[^\"\\\\]|\\\\.)*\"     # Double-quoted strings, handling escaped characters\n      |\n      '(?:[^'\\\\]|\\\\.)*'     # Single-quoted strings, handling escaped characters\n      |\n      [^;\"']                # Any character except ';', double or single quotes\n    )*?                     # Repeat zero or more times, non-greedy\n    \\s*\n  )\n)\n(?=;|$)                     # Lookahead for ';' or end of string\n*/\nvar reDeclaration = /([^\\s:;]+?)\\s*:\\s*((?:(?:url\\(\\s*(?:(?:[^\"')\\\\]|\\\\.)*|\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*')\\s*\\)|\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*'|[^;\"'])*?)\\s*)(?=;|$)/gi;\nvar reDoubleQuoted = /&quot;|&#34;|&#x22;/gi;\nvar reSingleQuoted = /&apos;|&#39;|&#x27;/gi;\nvar doubleQuote = '\"';\nvar singleQuote = \"'\";\nvar empty = '';\nfunction replaceQuoteEntities(str) {\n    return str.replace(reDoubleQuoted, doubleQuote)\n        .replace(reSingleQuoted, singleQuote);\n}\n/**\n * Parse inline styles string into object.\n *\n * @param styleString - inline styles string\n * @returns object with styles\n */\nexport function parseInlineStyles(styleString) {\n    var styleObject = {};\n    var input = replaceQuoteEntities((styleString || empty).replace(reComment, empty));\n    var match = reDeclaration.exec(input), property, value;\n    while (match !== null) {\n        property = match[1].trim();\n        value = match[2].trim();\n        styleObject[property] = value;\n        match = reDeclaration.exec(input);\n    }\n    return styleObject;\n}\n","import { parseInlineStyles } from '@progress/kendo-common';\r\n\r\nexport var setStyle = function (element, styleString) {\r\n    var styles = parseInlineStyles(styleString);\r\n    Object.keys(styles).forEach(function (key) {\r\n        element.style[key] = styles[key];\r\n    });\r\n};\r\n\r\nvar styleAttr = 'data-style';\r\nexport var replaceStyleAttr = function (html) { return (html || '').replace(/\\sstyle=/g, ' ' + styleAttr + '='); };\r\nexport var restoreStyleAttr = function (container) {\r\n    Array.from(container.querySelectorAll('[' + styleAttr +']')).forEach(function (element) {\r\n        var styleString = element.getAttribute(styleAttr);\r\n        element.removeAttribute(styleAttr);\r\n        setStyle(element, styleString);\r\n    });\r\n};\r\n\r\nexport var setInnerHTML = function (container, html) {\r\n    container.innerHTML = replaceStyleAttr(html);\r\n    restoreStyleAttr(container);\r\n};\r\n","var SVG_NS = \"http://www.w3.org/2000/svg\";\nvar NONE = \"none\";\nvar POINT_DIGITS = 3;\n\nexport { SVG_NS, NONE, POINT_DIGITS };","import { replaceStyleAttr, restoreStyleAttr, setInnerHTML } from '../../util/element-set-styles-safe';\nimport { SVG_NS } from '../constants';\n\nvar renderSVG = function(container, svg) {\n    setInnerHTML(container, svg);\n};\n\nif (typeof document !== \"undefined\") {\n    var testFragment = \"<svg xmlns='\" + SVG_NS + \"'></svg>\";\n    var testContainer = document.createElement(\"div\");\n    var hasParser = typeof DOMParser !== \"undefined\";\n\n    testContainer.innerHTML = testFragment;\n\n    if (hasParser && testContainer.firstChild.namespaceURI !== SVG_NS) {\n        renderSVG = function(container, svg) {\n            var parser = new DOMParser();\n            var chartDoc = parser.parseFromString(replaceStyleAttr(svg), \"text/xml\");\n            restoreStyleAttr(chartDoc);\n            var importedDoc = document.adoptNode(chartDoc.documentElement);\n\n            container.innerHTML = \"\";\n            container.appendChild(importedDoc);\n        };\n    }\n}\n\nexport default renderSVG;\n","var ampRegExp = /&/g;\nvar ltRegExp = /</g;\nvar quoteRegExp = /\"/g;\nvar aposRegExp = /'/g;\nvar gtRegExp = />/g;\n\nexport default function htmlEncode(value) {\n    return String(value).replace(ampRegExp, \"&amp;\").replace(ltRegExp, \"&lt;\").replace(gtRegExp, \"&gt;\").replace(quoteRegExp, \"&quot;\").replace(aposRegExp, \"&#39;\");\n}","import BaseNode from '../core/base-node';\nimport renderAllAttr from './utils/render-all-attributes';\nimport renderAttr from './utils/render-attribute';\nimport renderStyle from './utils/render-style';\nimport NODE_MAP from './node-map';\nimport renderSVG from './utils/render-svg';\nimport { SVG_NS, NONE } from './constants';\nimport { support, htmlEncode } from '../common';\nimport { defined } from '../util';\nimport { PATTERN } from '../core/constants';\n\nvar TRANSFORM = \"transform\";\nvar DefinitionMap = {\n    clip: \"clip-path\",\n    fill: \"fill\"\n};\n\nfunction isDefinition(type, value) {\n    return type === \"clip\" || (type === \"fill\" && (!value || value.nodeType === \"Gradient\" || value.nodeType === PATTERN));\n}\n\nfunction baseUrl() {\n    var base = document.getElementsByTagName(\"base\")[0];\n    var href = document.location.href;\n    var url = \"\";\n\n    if (base && !(support.browser || {}).msie) {\n        var hashIndex = href.indexOf(\"#\");\n        if (hashIndex !== -1) {\n            href = href.substring(0, hashIndex);\n        }\n\n        url = href;\n    }\n\n    return url;\n}\n\nvar Node = (function (BaseNode) {\n    function Node(srcElement, options) {\n        BaseNode.call(this, srcElement);\n        this.definitions = {};\n\n        this.options = options;\n    }\n\n    if ( BaseNode ) Node.__proto__ = BaseNode;\n    Node.prototype = Object.create( BaseNode && BaseNode.prototype );\n    Node.prototype.constructor = Node;\n\n    Node.prototype.destroy = function destroy () {\n        if (this.element) {\n            this.element._kendoNode = null;\n            this.element = null;\n        }\n\n        this.clearDefinitions();\n        BaseNode.prototype.destroy.call(this);\n    };\n\n    Node.prototype.load = function load (elements, pos) {\n        var this$1 = this;\n\n        for (var i = 0; i < elements.length; i++) {\n            var srcElement = elements[i];\n            var children = srcElement.children;\n\n            var childNode = new NODE_MAP[srcElement.nodeType](srcElement, this$1.options);\n\n            if (defined(pos)) {\n                this$1.insertAt(childNode, pos);\n            } else {\n                this$1.append(childNode);\n            }\n\n            childNode.createDefinitions();\n\n            if (children && children.length > 0) {\n                childNode.load(children);\n            }\n\n            var element = this$1.element;\n            if (element) {\n                childNode.attachTo(element, pos);\n            }\n        }\n    };\n\n    Node.prototype.root = function root () {\n        var root = this;\n\n        while (root.parent) {\n            root = root.parent;\n        }\n\n        return root;\n    };\n\n    Node.prototype.attachTo = function attachTo (domElement, pos) {\n        var container = document.createElement(\"div\");\n        renderSVG(container,\n            \"<svg xmlns='\" + SVG_NS + \"' version='1.1'>\" +\n                this.render() +\n            \"</svg>\"\n        );\n\n        var element = container.firstChild.firstChild;\n        if (element) {\n            if (defined(pos)) {\n                domElement.insertBefore(element, domElement.childNodes[pos] || null);\n            } else {\n                domElement.appendChild(element);\n            }\n            this.setElement(element);\n        }\n    };\n\n    Node.prototype.setElement = function setElement (element) {\n        if (this.element) {\n            this.element._kendoNode = null;\n        }\n\n        this.element = element;\n        this.element._kendoNode = this;\n\n        var nodes = this.childNodes;\n        for (var i = 0; i < nodes.length; i++) {\n            var childElement = element.childNodes[i];\n            nodes[i].setElement(childElement);\n        }\n    };\n\n    Node.prototype.clear = function clear () {\n        this.clearDefinitions();\n\n        if (this.element) {\n            this.element.innerHTML = \"\";\n        }\n\n        var children = this.childNodes;\n        for (var i = 0; i < children.length; i++) {\n            children[i].destroy();\n        }\n\n        this.childNodes = [];\n    };\n\n    Node.prototype.removeSelf = function removeSelf () {\n        if (this.element) {\n            var parentNode = this.element.parentNode;\n            if (parentNode) {\n                parentNode.removeChild(this.element);\n            }\n            this.element = null;\n        }\n\n        BaseNode.prototype.removeSelf.call(this);\n    };\n\n    Node.prototype.template = function template () {\n        return this.renderChildren();\n    };\n\n    Node.prototype.render = function render () {\n        return this.template();\n    };\n\n    Node.prototype.renderChildren = function renderChildren () {\n        var nodes = this.childNodes;\n        var output = \"\";\n\n        for (var i = 0; i < nodes.length; i++) {\n            output += nodes[i].render();\n        }\n\n        return output;\n    };\n\n    Node.prototype.optionsChange = function optionsChange (e) {\n        var field = e.field;\n        var value = e.value;\n\n        if (field === \"visible\") {\n            this.css(\"display\", value ? \"\" : NONE);\n        } else if (DefinitionMap[field] && isDefinition(field, value)) {\n            this.updateDefinition(field, value);\n        } else if (field === \"opacity\") {\n            this.attr(\"opacity\", value);\n        } else if (field === \"cursor\") {\n            this.css(\"cursor\", value);\n        } else if (field === \"id\") {\n            if (value) {\n                this.attr(\"id\", value);\n            } else {\n                this.removeAttr(\"id\");\n            }\n        }\n\n        BaseNode.prototype.optionsChange.call(this, e);\n    };\n\n    Node.prototype.accessibilityOptionsChange = function accessibilityOptionsChange (e) {\n        var field = e.field;\n        var value = e.value;\n\n\n        if (field === \"role\") {\n            if (value) {\n                this.attr(\"role\", value);\n            } else {\n                this.removeAttr(\"role\");\n            }\n        } else if (field === \"ariaLabel\") {\n            if (value) {\n                this.attr(\"aria-label\", htmlEncode(value));\n            } else {\n                this.removeAttr(\"aria-label\");\n            }\n        } else if (field === \"ariaRoleDescription\") {\n            if (value) {\n                this.attr(\"aria-roledescription\", htmlEncode(value));\n            } else {\n                this.removeAttr(\"aria-roledescription\");\n            }\n        } else if (field === \"ariaChecked\") {\n            if (defined(value)) {\n                this.attr(\"aria-checked\", value);\n            } else {\n                this.removeAttr(\"aria-checked\");\n            }\n        } else if (field === \"className\") {\n            this.className(value);\n        }\n    };\n\n    Node.prototype.attr = function attr (name, value) {\n        if (this.element) {\n            this.element.setAttribute(name, value);\n        }\n    };\n\n    Node.prototype.allAttr = function allAttr (attrs) {\n        var this$1 = this;\n\n        for (var i = 0; i < attrs.length; i++) {\n            this$1.attr(attrs[i][0], attrs[i][1]);\n        }\n    };\n\n    Node.prototype.toggleAttr = function toggleAttr (name, value) {\n        if (value) {\n            this.attr(name, value);\n        } else {\n            this.removeAttr(name);\n        }\n    };\n\n    Node.prototype.css = function css (name, value) {\n        if (this.element) {\n            this.element.style[name] = value;\n        }\n    };\n\n    Node.prototype.allCss = function allCss (styles) {\n        var this$1 = this;\n\n        for (var i = 0; i < styles.length; i++) {\n            this$1.css(styles[i][0], styles[i][1]);\n        }\n    };\n\n    Node.prototype.className = function className (value) {\n        var this$1 = this;\n\n        if (this.element) {\n            (ref = this.element.classList).remove.apply(ref, this.element.classList);\n            value.split(\" \").forEach(function (item) {\n                this$1.element.classList.add(item);\n            });\n        }\n        var ref;\n    };\n\n    Node.prototype.removeAttr = function removeAttr (name) {\n        if (this.element) {\n            this.element.removeAttribute(name);\n        }\n    };\n\n    Node.prototype.mapTransform = function mapTransform (transform) {\n        var attrs = [];\n        if (transform) {\n            attrs.push([\n                TRANSFORM,\n                \"matrix(\" + transform.matrix().toString(6) + \")\"\n            ]);\n        }\n\n        return attrs;\n    };\n\n    Node.prototype.renderTransform = function renderTransform () {\n        return renderAllAttr(\n            this.mapTransform(this.srcElement.transform())\n        );\n    };\n\n    Node.prototype.transformChange = function transformChange (value) {\n        if (value) {\n            this.allAttr(this.mapTransform(value));\n        } else {\n            this.removeAttr(TRANSFORM);\n        }\n    };\n\n    Node.prototype.mapStyle = function mapStyle () {\n        var options = this.srcElement.options;\n        var style = [ [ \"cursor\", options.cursor ] ];\n\n        if (options.visible === false) {\n            style.push([ \"display\", NONE ]);\n        }\n\n        return style;\n    };\n\n    Node.prototype.renderStyle = function renderStyle$1 () {\n        return renderAttr(\"style\", renderStyle(this.mapStyle(true)));\n    };\n\n    Node.prototype.renderOpacity = function renderOpacity () {\n        return renderAttr(\"opacity\", this.srcElement.options.opacity);\n    };\n\n    Node.prototype.renderId = function renderId () {\n        return renderAttr(\"id\", this.srcElement.options.id);\n    };\n\n    Node.prototype.renderClassName = function renderClassName () {\n        return renderAttr(\"class\", this.srcElement.options.className);\n    };\n\n    Node.prototype.renderRole = function renderRole () {\n        return renderAttr(\"role\", this.srcElement.options.role);\n    };\n\n    Node.prototype.renderAriaLabel = function renderAriaLabel () {\n        var value = this.srcElement.options.ariaLabel;\n        if (value) {\n            value = htmlEncode(value);\n        }\n        return renderAttr(\"aria-label\", value);\n    };\n\n    Node.prototype.renderAriaRoleDescription = function renderAriaRoleDescription () {\n        var value = this.srcElement.options.ariaRoleDescription;\n        if (value) {\n            value = htmlEncode(value);\n        }\n        return renderAttr(\"aria-roledescription\", value);\n    };\n\n    Node.prototype.renderAriaChecked = function renderAriaChecked () {\n        return renderAttr(\"aria-checked\", this.srcElement.options.ariaChecked);\n    };\n\n    Node.prototype.createDefinitions = function createDefinitions () {\n        var srcElement = this.srcElement;\n        var definitions = this.definitions;\n        if (srcElement) {\n            var options = srcElement.options;\n            var hasDefinitions;\n\n            for (var field in DefinitionMap) {\n                var definition = options.get(field);\n                if (definition && isDefinition(field, definition)) {\n                    definitions[field] = definition;\n                    hasDefinitions = true;\n                }\n            }\n            if (hasDefinitions) {\n                this.definitionChange({\n                    action: \"add\",\n                    definitions: definitions\n                });\n            }\n        }\n    };\n\n    Node.prototype.definitionChange = function definitionChange (e) {\n        if (this.parent) {\n            this.parent.definitionChange(e);\n        }\n    };\n\n    Node.prototype.updateDefinition = function updateDefinition (type, value) {\n        var definitions = this.definitions;\n        var current = definitions[type];\n        var attr = DefinitionMap[type];\n        var definition = {};\n        if (current) {\n            definition[type] = current;\n            this.definitionChange({\n                action: \"remove\",\n                definitions: definition\n            });\n            delete definitions[type];\n        }\n\n        if (!value) {\n            if (current) {\n                this.removeAttr(attr);\n            }\n        } else {\n            definition[type] = value;\n            this.definitionChange({\n                action: \"add\",\n                definitions: definition\n            });\n            definitions[type] = value;\n            this.attr(attr, this.refUrl(value.id));\n        }\n    };\n\n    Node.prototype.clearDefinitions = function clearDefinitions () {\n        var definitions = this.definitions;\n\n        this.definitionChange({\n            action: \"remove\",\n            definitions: definitions\n        });\n        this.definitions = {};\n    };\n\n    Node.prototype.renderDefinitions = function renderDefinitions () {\n        return renderAllAttr(this.mapDefinitions());\n    };\n\n    Node.prototype.mapDefinitions = function mapDefinitions () {\n        var this$1 = this;\n\n        var definitions = this.definitions;\n        var attrs = [];\n\n        for (var field in definitions) {\n            attrs.push([ DefinitionMap[field], this$1.refUrl(definitions[field].id) ]);\n        }\n\n        return attrs;\n    };\n\n    Node.prototype.refUrl = function refUrl (id) {\n        var skipBaseHref = (this.options || {}).skipBaseHref;\n        var baseHref = this.baseUrl().replace(/'/g, \"\\\\'\");\n        var base = skipBaseHref ? '' : baseHref;\n        return (\"url(\" + base + \"#\" + id + \")\");\n    };\n\n    Node.prototype.baseUrl = function baseUrl$1 () {\n        return baseUrl();\n    };\n\n    return Node;\n}(BaseNode));\n\nexport default Node;\n","import Node from './node';\nimport renderAttr from './utils/render-attribute';\n\nvar GradientStopNode = (function (Node) {\n    function GradientStopNode () {\n        Node.apply(this, arguments);\n    }\n\n    if ( Node ) GradientStopNode.__proto__ = Node;\n    GradientStopNode.prototype = Object.create( Node && Node.prototype );\n    GradientStopNode.prototype.constructor = GradientStopNode;\n\n    GradientStopNode.prototype.template = function template () {\n        return (\"<stop \" + (this.renderOffset()) + \" \" + (this.renderStyle()) + \" />\");\n    };\n\n    GradientStopNode.prototype.renderOffset = function renderOffset () {\n        return renderAttr(\"offset\", this.srcElement.offset());\n    };\n\n    GradientStopNode.prototype.mapStyle = function mapStyle () {\n        var srcElement = this.srcElement;\n        return [\n            [ \"stop-color\", srcElement.color() ],\n            [ \"stop-opacity\", srcElement.opacity() ]\n        ];\n    };\n\n    GradientStopNode.prototype.optionsChange = function optionsChange (e) {\n        if (e.field === \"offset\") {\n            this.attr(e.field, e.value);\n        } else if (e.field === \"color\" || e.field === \"opacity\") {\n            this.css(\"stop-\" + e.field, e.value);\n        }\n    };\n\n    return GradientStopNode;\n}(Node));\n\nexport default GradientStopNode;","import GradientStopNode from './gradient-stop-node';\nimport BaseNode from '../core/base-node';\nimport Node from './node';\nimport renderAllAttr from './utils/render-all-attributes';\n\nvar GradientNode = (function (Node) {\n    function GradientNode(srcElement) {\n        Node.call(this, srcElement);\n\n        this.id = srcElement.id;\n\n        this.loadStops();\n    }\n\n    if ( Node ) GradientNode.__proto__ = Node;\n    GradientNode.prototype = Object.create( Node && Node.prototype );\n    GradientNode.prototype.constructor = GradientNode;\n\n    GradientNode.prototype.loadStops = function loadStops () {\n        var this$1 = this;\n\n        var stops = this.srcElement.stops;\n        var element = this.element;\n\n        for (var idx = 0; idx < stops.length; idx++) {\n            var stopNode = new GradientStopNode(stops[idx]);\n            this$1.append(stopNode);\n            if (element) {\n                stopNode.attachTo(element);\n            }\n        }\n    };\n\n    GradientNode.prototype.optionsChange = function optionsChange (e) {\n        if (e.field === \"gradient.stops\") {\n            BaseNode.prototype.clear.call(this);\n            this.loadStops();\n        } else if (e.field === \"gradient\") {\n            this.allAttr(this.mapCoordinates());\n        }\n    };\n\n    GradientNode.prototype.renderCoordinates = function renderCoordinates () {\n        return renderAllAttr(this.mapCoordinates());\n    };\n\n    GradientNode.prototype.mapSpace = function mapSpace () {\n        return [ \"gradientUnits\", this.srcElement.userSpace() ? \"userSpaceOnUse\" : \"objectBoundingBox\" ];\n    };\n\n    return GradientNode;\n}(Node));\n\nexport default GradientNode;","import GradientNode from './gradient-node';\n\nvar LinearGradientNode = (function (GradientNode) {\n    function LinearGradientNode () {\n        GradientNode.apply(this, arguments);\n    }\n\n    if ( GradientNode ) LinearGradientNode.__proto__ = GradientNode;\n    LinearGradientNode.prototype = Object.create( GradientNode && GradientNode.prototype );\n    LinearGradientNode.prototype.constructor = LinearGradientNode;\n\n    LinearGradientNode.prototype.template = function template () {\n        return (\"<linearGradient id='\" + (this.id) + \"' \" + (this.renderCoordinates()) + \">\" + (this.renderChildren()) + \"</linearGradient>\");\n    };\n\n    LinearGradientNode.prototype.mapCoordinates = function mapCoordinates () {\n        var srcElement = this.srcElement;\n        var start = srcElement.start();\n        var end = srcElement.end();\n        var attrs = [\n            [ \"x1\", start.x ],\n            [ \"y1\", start.y ],\n            [ \"x2\", end.x ],\n            [ \"y2\", end.y ],\n            this.mapSpace()\n        ];\n\n        return attrs;\n    };\n\n    return LinearGradientNode;\n}(GradientNode));\n\nexport default LinearGradientNode;","import GradientNode from './gradient-node';\n\nvar RadialGradientNode = (function (GradientNode) {\n    function RadialGradientNode () {\n        GradientNode.apply(this, arguments);\n    }\n\n    if ( GradientNode ) RadialGradientNode.__proto__ = GradientNode;\n    RadialGradientNode.prototype = Object.create( GradientNode && GradientNode.prototype );\n    RadialGradientNode.prototype.constructor = RadialGradientNode;\n\n    RadialGradientNode.prototype.template = function template () {\n        return (\"<radialGradient id='\" + (this.id) + \"' \" + (this.renderCoordinates()) + \">\" + (this.renderChildren()) + \"</radialGradient>\");\n    };\n\n    RadialGradientNode.prototype.mapCoordinates = function mapCoordinates () {\n        var srcElement = this.srcElement;\n        var center = srcElement.center();\n        var radius = srcElement.radius();\n        var attrs = [\n            [ \"cx\", center.x ],\n            [ \"cy\", center.y ],\n            [ \"r\", radius ],\n            this.mapSpace()\n        ];\n        return attrs;\n    };\n\n    return RadialGradientNode;\n}(GradientNode));\n\nexport default RadialGradientNode;","import Node from './node';\n\nexport var PatternNode = (function (Node) {\n    function PatternNode(pattern) {\n        Node.call(this, pattern);\n\n        this.id = pattern.id;\n        this.load(pattern.children);\n    }\n\n    if ( Node ) PatternNode.__proto__ = Node;\n    PatternNode.prototype = Object.create( Node && Node.prototype );\n    PatternNode.prototype.constructor = PatternNode;\n\n    PatternNode.prototype.template = function template () {\n        var width = this.srcElement.size().getWidth();\n        var height = this.srcElement.size().getHeight();\n\n        return \"<pattern id='\" + (this.srcElement.id) + \"' width='\" + width + \"' height='\" + height + \"' patternUnits='userSpaceOnUse'>\" +\n                    \"\" + (this.renderChildren()) +\n                \"</pattern>\";\n    };\n\n    return PatternNode;\n}(Node));\n","import Node from './node';\nimport renderAttr from './utils/render-attribute';\n\nvar ClipNode = (function (Node) {\n    function ClipNode(srcElement) {\n        Node.call(this);\n\n        this.srcElement = srcElement;\n        this.id = srcElement.id;\n\n        this.load([ srcElement ]);\n    }\n\n    if ( Node ) ClipNode.__proto__ = Node;\n    ClipNode.prototype = Object.create( Node && Node.prototype );\n    ClipNode.prototype.constructor = ClipNode;\n\n    ClipNode.prototype.renderClipRule = function renderClipRule () {\n        return renderAttr(\"clip-rule\", \"evenodd\");\n    };\n    ClipNode.prototype.template = function template () {\n        return (\"<clipPath \" + (this.renderClipRule()) + \" id='\" + (this.id) + \"'>\" + (this.renderChildren()) + \"</clipPath>\");\n    };\n\n    return ClipNode;\n}(Node));\n\nexport default ClipNode;","import LinearGradient from '../gradients/linear-gradient';\nimport RadialGradient from '../gradients/radial-gradient';\nimport LinearGradientNode from './linear-gradient-node';\nimport RadialGradientNode from './radial-gradient-node';\nimport { PatternNode } from './pattern-node';\nimport Node from './node';\nimport ClipNode from './clip-node';\nimport { PATTERN } from '../core/constants';\n\nvar DefinitionNode = (function (Node) {\n    function DefinitionNode() {\n        Node.call(this);\n        this.definitionMap = {};\n    }\n\n    if ( Node ) DefinitionNode.__proto__ = Node;\n    DefinitionNode.prototype = Object.create( Node && Node.prototype );\n    DefinitionNode.prototype.constructor = DefinitionNode;\n\n    DefinitionNode.prototype.attachTo = function attachTo (domElement) {\n        this.element = domElement;\n    };\n\n    DefinitionNode.prototype.template = function template () {\n        return (\"<defs>\" + (this.renderChildren()) + \"</defs>\");\n    };\n\n    DefinitionNode.prototype.definitionChange = function definitionChange (e) {\n        var definitions = e.definitions;\n        var action = e.action;\n\n        if (action === \"add\") {\n            this.addDefinitions(definitions);\n        } else if (action === \"remove\") {\n            this.removeDefinitions(definitions);\n        }\n    };\n\n    DefinitionNode.prototype.createDefinition = function createDefinition (type, item) {\n        var nodeType;\n        if (type === \"clip\") {\n            nodeType = ClipNode;\n        } else if (type === \"fill\") {\n            if (item instanceof LinearGradient) {\n                nodeType = LinearGradientNode;\n            } else if (item instanceof RadialGradient) {\n                nodeType = RadialGradientNode;\n            } else if (item.nodeType === PATTERN) {\n                nodeType = PatternNode;\n            }\n        }\n        return new nodeType(item);\n    };\n\n    DefinitionNode.prototype.addDefinitions = function addDefinitions (definitions) {\n        var this$1 = this;\n\n        for (var field in definitions) {\n            this$1.addDefinition(field, definitions[field]);\n        }\n    };\n\n    DefinitionNode.prototype.addDefinition = function addDefinition (type, srcElement) {\n        var ref = this;\n        var element = ref.element;\n        var definitionMap = ref.definitionMap;\n        var id = srcElement.id;\n        var mapItem = definitionMap[id];\n        if (!mapItem) {\n            var node = this.createDefinition(type, srcElement);\n            definitionMap[id] = {\n                element: node,\n                count: 1\n            };\n            this.append(node);\n            if (element) {\n                node.attachTo(this.element);\n            }\n        } else {\n            mapItem.count++;\n        }\n    };\n\n    DefinitionNode.prototype.removeDefinitions = function removeDefinitions (definitions) {\n        var this$1 = this;\n\n        for (var field in definitions) {\n            this$1.removeDefinition(definitions[field]);\n        }\n    };\n\n    DefinitionNode.prototype.removeDefinition = function removeDefinition (srcElement) {\n        var definitionMap = this.definitionMap;\n        var id = srcElement.id;\n        var mapItem = definitionMap[id];\n\n        if (mapItem) {\n            mapItem.count--;\n            if (mapItem.count === 0) {\n                this.remove(this.childNodes.indexOf(mapItem.element), 1);\n                delete definitionMap[id];\n            }\n        }\n    };\n\n    return DefinitionNode;\n}(Node));\n\nexport default DefinitionNode;","import BaseNode from '../core/base-node';\nimport Node from './node';\nimport DefinitionNode from './definition-node';\n\nvar RootNode = (function (Node) {\n    function RootNode(options) {\n        Node.call(this);\n        this.options = options;\n        this.defs = new DefinitionNode();\n    }\n\n    if ( Node ) RootNode.__proto__ = Node;\n    RootNode.prototype = Object.create( Node && Node.prototype );\n    RootNode.prototype.constructor = RootNode;\n\n    RootNode.prototype.attachTo = function attachTo (domElement) {\n        this.element = domElement;\n        this.defs.attachTo(domElement.firstElementChild);\n    };\n\n    RootNode.prototype.clear = function clear () {\n        BaseNode.prototype.clear.call(this);\n    };\n\n    RootNode.prototype.template = function template () {\n        return this.defs.render() + this.renderChildren();\n    };\n\n    RootNode.prototype.definitionChange = function definitionChange (e) {\n        this.defs.definitionChange(e);\n    };\n\n    return RootNode;\n}(Node));\n\nexport default RootNode;","import Node from './node';\nimport { defined, isTransparent } from '../util';\nimport { DASH_ARRAYS, SOLID, BUTT, PATTERN } from '../core/constants';\nimport { NONE, POINT_DIGITS } from './constants';\nimport renderAllAttr from './utils/render-all-attributes';\nimport renderAttr from './utils/render-attribute';\n\nvar ATTRIBUTE_MAP = {\n    \"fill.opacity\": \"fill-opacity\",\n    \"stroke.color\": \"stroke\",\n    \"stroke.width\": \"stroke-width\",\n    \"stroke.opacity\": \"stroke-opacity\"\n};\n\nvar PathNode = (function (Node) {\n    function PathNode () {\n        Node.apply(this, arguments);\n    }\n\n    if ( Node ) PathNode.__proto__ = Node;\n    PathNode.prototype = Object.create( Node && Node.prototype );\n    PathNode.prototype.constructor = PathNode;\n\n    PathNode.prototype.geometryChange = function geometryChange () {\n        this.attr(\"d\", this.renderData());\n        this.invalidate();\n    };\n\n    PathNode.prototype.optionsChange = function optionsChange (e) {\n        switch (e.field) {\n        case \"fill\":\n            if (e.value) {\n                this.allAttr(this.mapFill(e.value));\n            } else {\n                this.removeAttr(\"fill\");\n            }\n            break;\n\n        case \"fill.color\":\n            this.allAttr(this.mapFill({ color: e.value }));\n            break;\n\n        case \"stroke\":\n            if (e.value) {\n                this.allAttr(this.mapStroke(e.value));\n            } else {\n                this.removeAttr(\"stroke\");\n            }\n            break;\n\n        case \"transform\":\n            this.transformChange(e.value);\n            break;\n\n        default:\n            var name = ATTRIBUTE_MAP[e.field];\n            if (name) {\n                this.attr(name, e.value);\n            }\n            break;\n        }\n\n        this.accessibilityOptionsChange(e);\n\n        Node.prototype.optionsChange.call(this, e);\n    };\n\n    PathNode.prototype.content = function content () {\n        if (this.element) {\n            this.element.textContent = this.srcElement.content();\n        }\n    };\n\n    PathNode.prototype.renderData = function renderData () {\n        return this.srcElement.toString(POINT_DIGITS) || undefined;\n    };\n\n    PathNode.prototype.mapStroke = function mapStroke (stroke) {\n        var attrs = [];\n\n        if (stroke && !isTransparent(stroke.color)) {\n            attrs.push([ \"stroke\", stroke.color ]);\n            attrs.push([ \"stroke-width\", stroke.width ]);\n            attrs.push([ \"stroke-linecap\", this.renderLinecap(stroke) ]);\n            attrs.push([ \"stroke-linejoin\", stroke.lineJoin ]);\n\n            if (defined(stroke.opacity)) {\n                attrs.push([ \"stroke-opacity\", stroke.opacity ]);\n            }\n\n            if (defined(stroke.dashType)) {\n                attrs.push([ \"stroke-dasharray\", this.renderDashType(stroke) ]);\n            }\n        } else {\n            attrs.push([ \"stroke\", NONE ]);\n        }\n\n        return attrs;\n    };\n\n    PathNode.prototype.renderStroke = function renderStroke () {\n        return renderAllAttr(\n            this.mapStroke(this.srcElement.options.stroke)\n        );\n    };\n\n    PathNode.prototype.renderDashType = function renderDashType (stroke) {\n        var dashType = stroke.dashType;\n        var width = stroke.width; if ( width === void 0 ) width = 1;\n\n        if (dashType && dashType !== SOLID) {\n            var dashArray = DASH_ARRAYS[dashType.toLowerCase()];\n            var result = [];\n\n            for (var i = 0; i < dashArray.length; i++) {\n                result.push(dashArray[i] * width);\n            }\n\n            return result.join(\" \");\n        }\n    };\n\n    PathNode.prototype.renderLinecap = function renderLinecap (stroke) {\n        var dashType = stroke.dashType;\n        var lineCap = stroke.lineCap;\n\n        return (dashType && dashType !== SOLID) ? BUTT : lineCap;\n    };\n\n    PathNode.prototype.mapFill = function mapFill (fill) {\n        var attrs = [];\n        if (!(fill && (fill.nodeType === \"Gradient\" || fill.nodeType === PATTERN))) {\n            if (fill && !isTransparent(fill.color)) {\n                attrs.push([ \"fill\", fill.color ]);\n\n                if (defined(fill.opacity)) {\n                    attrs.push([ \"fill-opacity\", fill.opacity ]);\n                }\n            } else {\n                attrs.push([ \"fill\", NONE ]);\n            }\n        }\n\n        return attrs;\n    };\n\n    PathNode.prototype.renderFill = function renderFill () {\n        return renderAllAttr(\n            this.mapFill(this.srcElement.options.fill)\n        );\n    };\n\n    PathNode.prototype.template = function template () {\n        return \"<path \" + (this.renderId()) + \" \" + (this.renderStyle()) + \" \" + (this.renderOpacity()) + \" \" + (renderAttr('d', this.renderData())) +\n                \"\" + (this.renderStroke()) + (this.renderFill()) + (this.renderDefinitions()) + (this.renderTransform()) +\n                (this.renderClassName()) + \" \" + (this.renderRole()) +\n                (this.renderAriaLabel()) + \" \" + (this.renderAriaRoleDescription()) +\n                (this.renderAriaChecked()) + \" ></path>\";\n    };\n\n    return PathNode;\n}(Node));\n\nexport default PathNode;\n","import { POINT_DIGITS } from './constants';\nimport PathNode from './path-node';\n\nvar ArcNode = (function (PathNode) {\n    function ArcNode () {\n        PathNode.apply(this, arguments);\n    }\n\n    if ( PathNode ) ArcNode.__proto__ = PathNode;\n    ArcNode.prototype = Object.create( PathNode && PathNode.prototype );\n    ArcNode.prototype.constructor = ArcNode;\n\n    ArcNode.prototype.renderData = function renderData () {\n        return this.srcElement.toPath().toString(POINT_DIGITS);\n    };\n\n    return ArcNode;\n}(PathNode));\n\nexport default ArcNode;\n","import PathNode from './path-node';\n\nvar CircleNode = (function (PathNode) {\n    function CircleNode () {\n        PathNode.apply(this, arguments);\n    }\n\n    if ( PathNode ) CircleNode.__proto__ = PathNode;\n    CircleNode.prototype = Object.create( PathNode && PathNode.prototype );\n    CircleNode.prototype.constructor = CircleNode;\n\n    CircleNode.prototype.geometryChange = function geometryChange () {\n        var center = this.center();\n        this.attr(\"cx\", center.x);\n        this.attr(\"cy\", center.y);\n        this.attr(\"r\", this.radius());\n        this.invalidate();\n    };\n\n    CircleNode.prototype.center = function center () {\n        return this.srcElement.geometry().center;\n    };\n\n    CircleNode.prototype.radius = function radius () {\n        return this.srcElement.geometry().radius;\n    };\n\n    CircleNode.prototype.template = function template () {\n        return \"<circle \" + (this.renderId()) + \" \" + (this.renderStyle()) + \" \" + (this.renderOpacity()) +\n                    \"cx='\" + (this.center().x) + \"' cy='\" + (this.center().y) + \"' r='\" + (this.radius()) + \"'\" +\n                    (this.renderStroke()) + \" \" + (this.renderFill()) + \" \" + (this.renderDefinitions()) +\n                    (this.renderClassName()) + \" \" + (this.renderRole()) +\n                    (this.renderAriaLabel()) + \" \" + (this.renderAriaRoleDescription()) +\n                    (this.renderAriaChecked()) + \" \" + (this.renderTransform()) + \" ></circle>\";\n    };\n\n    return CircleNode;\n}(PathNode));\n\nexport default CircleNode;\n","import Node from './node';\nimport renderAttr from './utils/render-attribute';\n\nvar GroupNode = (function (Node) {\n    function GroupNode () {\n        Node.apply(this, arguments);\n    }\n\n    if ( Node ) GroupNode.__proto__ = Node;\n    GroupNode.prototype = Object.create( Node && Node.prototype );\n    GroupNode.prototype.constructor = GroupNode;\n\n    GroupNode.prototype.template = function template () {\n        return (\"<g\" + (this.renderId() + \n            this.renderTransform() + \n            this.renderClassName() + \n            this.renderStyle() + \n            this.renderOpacity() + \n            this.renderRole() + \n            this.renderAriaLabel() + \n            this.renderAriaRoleDescription() + \n            this.renderAriaChecked() +\n            this.renderDefinitions()) + \">\" + (this.renderChildren()) + \"</g>\");\n    };\n\n    GroupNode.prototype.optionsChange = function optionsChange (e) {\n        var field = e.field;\n        var value = e.value;\n\n        if (field === \"transform\") {\n            this.transformChange(value);\n        }\n\n        this.accessibilityOptionsChange(e);\n\n        Node.prototype.optionsChange.call(this, e);\n    };\n\n    return GroupNode;\n}(Node));\n\nexport default GroupNode;\n","import PathNode from './path-node';\nimport renderAllAttr from './utils/render-all-attributes';\nimport { htmlEncode } from '../common';\n\nvar ImageNode = (function (PathNode) {\n    function ImageNode () {\n        PathNode.apply(this, arguments);\n    }\n\n    if ( PathNode ) ImageNode.__proto__ = PathNode;\n    ImageNode.prototype = Object.create( PathNode && PathNode.prototype );\n    ImageNode.prototype.constructor = ImageNode;\n\n    ImageNode.prototype.geometryChange = function geometryChange () {\n        this.allAttr(this.mapPosition());\n        this.invalidate();\n    };\n\n    ImageNode.prototype.optionsChange = function optionsChange (e) {\n        if (e.field === \"src\") {\n            this.allAttr(this.mapSource());\n        }\n\n        PathNode.prototype.optionsChange.call(this, e);\n    };\n\n    ImageNode.prototype.mapPosition = function mapPosition () {\n        var rect = this.srcElement.rect();\n        var tl = rect.topLeft();\n\n        return [\n            [ \"x\", tl.x ],\n            [ \"y\", tl.y ],\n            [ \"width\", rect.width() + \"px\" ],\n            [ \"height\", rect.height() + \"px\" ]\n        ];\n    };\n\n    ImageNode.prototype.renderPosition = function renderPosition () {\n        return renderAllAttr(this.mapPosition());\n    };\n\n    ImageNode.prototype.mapSource = function mapSource (encode) {\n        var src = this.srcElement.src();\n\n        if (encode) {\n            src = htmlEncode(src);\n        }\n\n        return [ [ \"xlink:href\", src ] ];\n    };\n\n    ImageNode.prototype.renderSource = function renderSource () {\n        return renderAllAttr(this.mapSource(true));\n    };\n\n    ImageNode.prototype.template = function template () {\n        return \"<image preserveAspectRatio='none' \" + (this.renderId()) + \" \" + (this.renderStyle()) + \" \" + (this.renderTransform()) + \" \" + (this.renderOpacity()) +\n               (this.renderPosition()) + \" \" + (this.renderSource()) + \" \" + (this.renderDefinitions()) +\n               (this.renderClassName()) + \" \" + (this.renderRole()) +\n                (this.renderAriaLabel()) + \" \" + (this.renderAriaRoleDescription()) +\n                (this.renderAriaChecked()) + \" >\" +\n               \"</image>\";\n    };\n\n    return ImageNode;\n}(PathNode));\n\nexport default ImageNode;\n","import { POINT_DIGITS } from './constants';\nimport PathNode from './path-node';\n\nvar MultiPathNode = (function (PathNode) {\n    function MultiPathNode () {\n        PathNode.apply(this, arguments);\n    }\n\n    if ( PathNode ) MultiPathNode.__proto__ = PathNode;\n    MultiPathNode.prototype = Object.create( PathNode && PathNode.prototype );\n    MultiPathNode.prototype.constructor = MultiPathNode;\n\n    MultiPathNode.prototype.renderData = function renderData () {\n        return this.srcElement.toString(POINT_DIGITS) || 'undefined';\n    };\n\n    return MultiPathNode;\n}(PathNode));\n\nexport default MultiPathNode;\n","import PathNode from './path-node';\n\nvar RectNode = (function (PathNode) {\n    function RectNode () {\n        PathNode.apply(this, arguments);\n    }\n\n    if ( PathNode ) RectNode.__proto__ = PathNode;\n    RectNode.prototype = Object.create( PathNode && PathNode.prototype );\n    RectNode.prototype.constructor = RectNode;\n\n    RectNode.prototype.geometryChange = function geometryChange () {\n        var geometry = this.srcElement.geometry();\n        this.attr(\"x\", geometry.origin.x);\n        this.attr(\"y\", geometry.origin.y);\n        this.attr(\"width\", geometry.size.width);\n        this.attr(\"height\", geometry.size.height);\n        this.attr(\"rx\", geometry.cornerRadius[0]);\n        this.attr(\"ry\", geometry.cornerRadius[1]);\n        this.invalidate();\n    };\n\n    RectNode.prototype.size = function size () {\n        return this.srcElement.geometry().size;\n    };\n\n    RectNode.prototype.origin = function origin () {\n        return this.srcElement.geometry().origin;\n    };\n\n    RectNode.prototype.rx = function rx () {\n        return this.srcElement.geometry().cornerRadius[0];\n    };\n\n    RectNode.prototype.ry = function ry () {\n        return this.srcElement.geometry().cornerRadius[1];\n    };\n\n    RectNode.prototype.template = function template () {\n        return \"<rect \" + (this.renderId()) + \" \" + (this.renderStyle()) + \" \" + (this.renderOpacity()) + \" x='\" + (this.origin().x) + \"' y='\" + (this.origin().y) + \"' \" +\n                    \"rx='\" + (this.rx()) + \"' ry='\" + (this.ry()) + \"' \" +\n                    \"width='\" + (this.size().width) + \"' height='\" + (this.size().height) + \"' \" + (this.renderStroke()) + \" \" +\n                    (this.renderFill()) + \" \" + (this.renderDefinitions()) + \" \" + (this.renderTransform()) +\n                    (this.renderClassName()) + \" \" + (this.renderRole()) +\n                    (this.renderAriaLabel()) + \" \" + (this.renderAriaRoleDescription()) +\n                    (this.renderAriaChecked()) + \" />\";\n    };\n\n    return RectNode;\n}(PathNode));\n\nexport default RectNode;\n","import PathNode from './path-node';\nimport renderStyle from './utils/render-style';\nimport renderAttr from './utils/render-attribute';\nimport { htmlEncode, support } from '../common';\nimport { normalizeText } from '../text-metrics';\n\nvar ENTITY_REGEX = /&(?:[a-zA-Z]+|#\\d+);/g;\n\nfunction decodeEntities(text) {\n    if (!text || typeof text !== \"string\" || !ENTITY_REGEX.test(text)) {\n        return text;\n    }\n\n    var element = decodeEntities._element;\n    ENTITY_REGEX.lastIndex = 0;\n\n    return text.replace(ENTITY_REGEX, function (match) {\n        element.innerHTML = match;\n\n        return element.textContent || element.innerText;\n    });\n}\n\nif (typeof document !== \"undefined\") {\n    decodeEntities._element = document.createElement(\"span\");\n}\n\nvar TextNode = (function (PathNode) {\n    function TextNode () {\n        PathNode.apply(this, arguments);\n    }\n\n    if ( PathNode ) TextNode.__proto__ = PathNode;\n    TextNode.prototype = Object.create( PathNode && PathNode.prototype );\n    TextNode.prototype.constructor = TextNode;\n\n    TextNode.prototype.geometryChange = function geometryChange () {\n        var pos = this.pos();\n        this.attr(\"x\", pos.x);\n        this.attr(\"y\", pos.y);\n        this.invalidate();\n    };\n\n    TextNode.prototype.optionsChange = function optionsChange (e) {\n        if (e.field === \"font\") {\n            this.attr(\"style\", renderStyle(this.mapStyle()));\n            this.geometryChange();\n        } else if (e.field === \"content\") {\n            PathNode.prototype.content.call(this, this.srcElement.content());\n        }\n\n        PathNode.prototype.optionsChange.call(this, e);\n    };\n\n    TextNode.prototype.mapStyle = function mapStyle (encode) {\n        var style = PathNode.prototype.mapStyle.call(this, encode);\n        var font = this.srcElement.options.font;\n\n        if (encode) {\n            font = htmlEncode(font);\n        }\n\n        style.push([ \"font\", font ], [ \"white-space\", \"pre\" ]);\n\n        return style;\n    };\n\n    TextNode.prototype.pos = function pos () {\n        var pos = this.srcElement.position();\n        var size = this.srcElement.measure();\n        return pos.clone().setY(pos.y + size.baseline);\n    };\n\n    TextNode.prototype.renderContent = function renderContent () {\n        var content = this.srcElement.content();\n        content = decodeEntities(content);\n        content = htmlEncode(content);\n\n        return normalizeText(content);\n    };\n\n    TextNode.prototype.renderTextAnchor = function renderTextAnchor () {\n        var anchor;\n\n        if ((this.options || {}).rtl && !(support.browser.msie || support.browser.edge)) {\n            anchor = 'end';\n        }\n\n        return renderAttr(\"text-anchor\", anchor);\n    };\n\n    TextNode.prototype.renderPaintOrder = function renderPaintOrder () {\n        var paintOrder = this.srcElement.options.paintOrder;\n        return paintOrder ? renderAttr(\"paint-order\", paintOrder) : \"\";\n    };\n\n    TextNode.prototype.template = function template () {\n        return \"<text \" + (this.renderId()) + \" \" + (this.renderTextAnchor()) + \" \" + (this.renderStyle()) + \" \" + (this.renderOpacity()) +\n                    \"x='\" + (this.pos().x) + \"' y='\" + (this.pos().y) + \"' \" + (this.renderStroke()) + \" \" + (this.renderTransform()) + \" \" + (this.renderDefinitions()) +\n                    \"\" + (this.renderPaintOrder()) +\n                    \"\" + (this.renderFill()) +\n                    (this.renderClassName()) + \" \" + (this.renderRole()) +\n                    (this.renderAriaLabel()) + \" \" + (this.renderAriaRoleDescription()) +\n                    (this.renderAriaChecked()) + \">\" + (this.renderContent()) + \"</text>\";\n    };\n\n    return TextNode;\n}(PathNode));\n\nexport default TextNode;\n","import BaseSurface from '../core/surface';\nimport RootNode from './root-node';\nimport Group from '../shapes/group';\nimport transform from '../geometry/transform';\nimport renderSVG from './utils/render-svg';\nimport { SVG_NS } from './constants';\nimport { bindEvents, unbindEvents, elementStyles } from '../util';\n\nimport ArcNode from './arc-node';\nimport CircleNode from './circle-node';\nimport GroupNode from './group-node';\nimport ImageNode from './image-node';\nimport MultiPathNode from './multi-path-node';\nimport PathNode from './path-node';\nimport RectNode from './rect-node';\nimport TextNode from './text-node';\nimport NODE_MAP from './node-map';\n\nNODE_MAP.Arc = ArcNode;\nNODE_MAP.Circle = CircleNode;\nNODE_MAP.Group = GroupNode;\nNODE_MAP.Image = ImageNode;\nNODE_MAP.MultiPath = MultiPathNode;\nNODE_MAP.Path = PathNode;\nNODE_MAP.Rect = RectNode;\nNODE_MAP.Text = TextNode;\n\nvar RTL = 'rtl';\n\nfunction alignToScreen(element) {\n    var ctm;\n\n    try {\n        ctm = element.getScreenCTM ? element.getScreenCTM() : null;\n    } catch (e) { } // eslint-disable-line no-empty\n\n    if (ctm) {\n        var left = - ctm.e % 1;\n        var top = - ctm.f % 1;\n        var style = element.style;\n\n        if (left !== 0 || top !== 0) {\n            style.left = left + \"px\";\n            style.top = top + \"px\";\n        }\n    }\n}\n\nvar Surface = (function (BaseSurface) {\n    function Surface(element, options) {\n        BaseSurface.call(this, element, options);\n\n        this._root = new RootNode(Object.assign({\n            rtl: elementStyles(element, 'direction').direction === RTL\n        }, this.options));\n\n        renderSVG(this.element, this._template(''));\n\n        this._rootElement = this.element.firstElementChild;\n        this._rootElement.style.width = '100%';\n        this._rootElement.style.height = '100%';\n        this._rootElement.style.overflow = 'hidden';\n\n        alignToScreen(this._rootElement);\n\n        this._root.attachTo(this._rootElement);\n\n        bindEvents(this.element, {\n            click: this._click,\n            mouseover: this._mouseenter,\n            mouseout: this._mouseleave,\n            mousemove: this._mousemove\n        });\n\n        this.resize();\n    }\n\n    if ( BaseSurface ) Surface.__proto__ = BaseSurface;\n    Surface.prototype = Object.create( BaseSurface && BaseSurface.prototype );\n    Surface.prototype.constructor = Surface;\n\n    var prototypeAccessors = { type: { configurable: true } };\n\n    prototypeAccessors.type.get = function () {\n        return \"svg\";\n    };\n\n    Surface.prototype.destroy = function destroy () {\n        if (this._root) {\n            this._root.destroy();\n            this._root = null;\n            this._rootElement = null;\n            unbindEvents(this.element, {\n                click: this._click,\n                mouseover: this._mouseenter,\n                mouseout: this._mouseleave,\n                mousemove: this._mousemove\n            });\n        }\n\n        BaseSurface.prototype.destroy.call(this);\n    };\n\n    Surface.prototype.translate = function translate (offset) {\n        var viewBox = (Math.round(offset.x)) + \" \" + (Math.round(offset.y)) + \" \" + (this._size.width) + \" \" + (this._size.height);\n\n        this._offset = offset;\n        this._rootElement.setAttribute(\"viewBox\", viewBox);\n    };\n\n    Surface.prototype.draw = function draw (element) {\n        BaseSurface.prototype.draw.call(this, element);\n        this._root.load([ element ]);\n    };\n\n    Surface.prototype.clear = function clear () {\n        BaseSurface.prototype.clear.call(this);\n        this._root.clear();\n    };\n\n    Surface.prototype.svg = function svg () {\n        return \"<?xml version='1.0' ?>\" + this._template();\n    };\n\n    Surface.prototype.exportVisual = function exportVisual () {\n        var ref = this;\n        var visual = ref._visual;\n        var offset = ref._offset;\n\n        if (offset) {\n            var wrap = new Group();\n            wrap.children.push(visual);\n\n            wrap.transform(\n                transform().translate(-offset.x, -offset.y)\n            );\n\n            visual = wrap;\n        }\n\n        return visual;\n    };\n\n    Surface.prototype._resize = function _resize () {\n        if (this._offset) {\n            this.translate(this._offset);\n        }\n    };\n\n    Surface.prototype._template = function _template (svgStyles) {\n        var styles = typeof svgStyles === 'string' ? svgStyles :\n            \"style='width: 100%; height: 100%; overflow: hidden;' \";\n        return (\"<svg \" + styles + \"xmlns='\" + SVG_NS + \"' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.1'>\" + (this._root.render()) + \"</svg>\");\n    };\n\n    Object.defineProperties( Surface.prototype, prototypeAccessors );\n\n    return Surface;\n}(BaseSurface));\n\nexport default Surface;\n","var NODE_MAP = {};\n\nexport default NODE_MAP;","import BaseNode from '../core/base-node';\nimport NODE_MAP from './node-map';\nimport { defined } from '../util';\n\nvar Node = (function (BaseNode) {\n    function Node(srcElement) {\n        BaseNode.call(this, srcElement);\n        if (srcElement) {\n            this.initClip();\n        }\n    }\n\n    if ( BaseNode ) Node.__proto__ = BaseNode;\n    Node.prototype = Object.create( BaseNode && BaseNode.prototype );\n    Node.prototype.constructor = Node;\n\n    Node.prototype.initClip = function initClip () {\n        var clip = this.srcElement.clip();\n        if (clip) {\n            this.clip = clip;\n            clip.addObserver(this);\n        }\n    };\n\n    Node.prototype.clear = function clear () {\n        if (this.srcElement) {\n            this.srcElement.removeObserver(this);\n        }\n\n        this.clearClip();\n\n        BaseNode.prototype.clear.call(this);\n    };\n\n    Node.prototype.clearClip = function clearClip () {\n        if (this.clip) {\n            this.clip.removeObserver(this);\n            delete this.clip;\n        }\n    };\n\n    Node.prototype.setClip = function setClip (ctx) {\n        if (this.clip) {\n            ctx.beginPath();\n\n            var clipNode = new NODE_MAP[this.clip.nodeType](this.clip);\n            clipNode.renderPoints(ctx, this.clip);\n\n            ctx.clip(\"evenodd\");\n        }\n    };\n\n    Node.prototype.optionsChange = function optionsChange (e) {\n        if (e.field === \"clip\") {\n            this.clearClip();\n            this.initClip();\n        }\n\n        BaseNode.prototype.optionsChange.call(this, e);\n    };\n\n    Node.prototype.setTransform = function setTransform (ctx) {\n        if (this.srcElement) {\n            var transform = this.srcElement.transform();\n            if (transform) {\n                ctx.transform.apply(ctx, transform.matrix().toArray(6));\n            }\n        }\n    };\n\n    Node.prototype.loadElements = function loadElements (elements, pos, cors) {\n        var this$1 = this;\n\n        for (var i = 0; i < elements.length; i++) {\n            var srcElement = elements[i];\n            var children = srcElement.children;\n\n            var childNode = new NODE_MAP[srcElement.nodeType](srcElement, cors);\n\n            if (children && children.length > 0) {\n                childNode.load(children, pos, cors);\n            }\n\n            if (defined(pos)) {\n                this$1.insertAt(childNode, pos);\n            } else {\n                this$1.append(childNode);\n            }\n        }\n    };\n\n    Node.prototype.load = function load (elements, pos, cors) {\n        this.loadElements(elements, pos, cors);\n\n        this.invalidate();\n    };\n\n    Node.prototype.setOpacity = function setOpacity (ctx) {\n        if (this.srcElement) {\n            var opacity = this.srcElement.opacity();\n            if (defined(opacity)) {\n                this.globalAlpha(ctx, opacity);\n            }\n        }\n    };\n\n    Node.prototype.globalAlpha = function globalAlpha (ctx, value) {\n        var opactity = value;\n        if (opactity && ctx.globalAlpha) {\n            opactity *= ctx.globalAlpha;\n        }\n        ctx.globalAlpha = opactity;\n    };\n\n    Node.prototype.visible = function visible () {\n        var src = this.srcElement;\n        return !src || (src && src.options.visible !== false);\n    };\n\n    return Node;\n}(BaseNode));\n\nexport default Node;","import Node from './node';\nimport traversable from '../mixins/traversable';\n\n\nvar GroupNode = (function (superclass) {\n    function GroupNode () {\n        superclass.apply(this, arguments);\n    }\n\n    if ( superclass ) GroupNode.__proto__ = superclass;\n    GroupNode.prototype = Object.create( superclass && superclass.prototype );\n    GroupNode.prototype.constructor = GroupNode;\n\n    GroupNode.prototype.renderTo = function renderTo (ctx) {\n        if (!this.visible()) {\n            return;\n        }\n\n        ctx.save();\n\n        this.setTransform(ctx);\n        this.setClip(ctx);\n        this.setOpacity(ctx);\n\n        var childNodes = this.childNodes;\n        for (var i = 0; i < childNodes.length; i++) {\n            var child = childNodes[i];\n            if (child.visible()) {\n                child.renderTo(ctx);\n            }\n        }\n\n        ctx.restore();\n    };\n\n    return GroupNode;\n}(traversable(Node, \"childNodes\")));\n\nexport default GroupNode;\n","import now from '../util/now';\n\nexport default function throttle(fn, delay) {\n    var lastExecTime = 0;\n    var timeout;\n\n    if (!delay || delay <= 0) {\n        return fn;\n    }\n\n    var throttled = function() {\n        var elapsed = now() - lastExecTime;\n        var args = arguments;\n\n        var exec = function() {\n            fn.apply(null, args);\n            lastExecTime = now();\n        };\n\n        // first execution\n        if (!lastExecTime) {\n            return exec();\n        }\n\n        if (timeout) {\n            clearTimeout(timeout);\n        }\n\n        if (elapsed > delay) {\n            exec();\n        } else {\n            timeout = setTimeout(exec, delay - elapsed);\n        }\n    };\n\n    throttled.cancel = function() {\n        clearTimeout(timeout);\n    };\n\n    return throttled;\n}\n","import GroupNode from './group-node';\nimport traversable from '../mixins/traversable';\nimport { animationFrame, throttle } from '../common';\n\n\nvar FRAME_DELAY = 1000 / 60;\n\nvar RootNode = (function (superclass) {\n    function RootNode(canvas, size) {\n        superclass.call(this);\n\n        this.canvas = canvas;\n        this.size = size;\n        this.ctx = canvas.getContext(\"2d\");\n\n        var invalidateHandler = this._invalidate.bind(this);\n        this.invalidate = throttle(function () {\n            animationFrame(invalidateHandler);\n        }, FRAME_DELAY);\n    }\n\n    if ( superclass ) RootNode.__proto__ = superclass;\n    RootNode.prototype = Object.create( superclass && superclass.prototype );\n    RootNode.prototype.constructor = RootNode;\n\n    RootNode.prototype.destroy = function destroy () {\n        superclass.prototype.destroy.call(this);\n        this.canvas = null;\n        this.ctx = null;\n    };\n\n    RootNode.prototype.load = function load (elements, pos, cors) {\n        this.loadElements(elements, pos, cors);\n        this._invalidate();\n    };\n\n    RootNode.prototype._rescale = function _rescale (scale) {\n        var ref = this;\n        var canvas = ref.canvas;\n        var size = ref.size;\n        canvas.width = size.width * scale;\n        canvas.height = size.height * scale;\n        this.ctx.scale(scale, scale);\n    };\n\n    RootNode.prototype._devicePixelRatio = function _devicePixelRatio () {\n        if (typeof window.devicePixelRatio === 'number') {\n            return window.devicePixelRatio;\n        }\n\n        return 1;\n    };\n\n    RootNode.prototype._invalidate = function _invalidate (options) {\n        if (!this.ctx) {\n            return;\n        }\n\n        var fixedScale = options && options.fixedScale;\n        var scale = fixedScale ? 1 : this._devicePixelRatio();\n        this._rescale(scale);\n\n        this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n        this.renderTo(this.ctx);\n    };\n\n    return RootNode;\n}(traversable(GroupNode, \"childNodes\")));\n\nexport default RootNode;\n","import { Class } from '../common';\n\nvar QuadRoot = (function (Class) {\n    function QuadRoot() {\n        Class.call(this);\n\n        this.shapes = [];\n    }\n\n    if ( Class ) QuadRoot.__proto__ = Class;\n    QuadRoot.prototype = Object.create( Class && Class.prototype );\n    QuadRoot.prototype.constructor = QuadRoot;\n\n    QuadRoot.prototype._add = function _add (shape, bbox) {\n        this.shapes.push({\n            bbox: bbox,\n            shape: shape\n        });\n        shape._quadNode = this;\n    };\n\n    QuadRoot.prototype.pointShapes = function pointShapes (point) {\n        var shapes = this.shapes;\n        var length = shapes.length;\n        var result = [];\n        for (var idx = 0; idx < length; idx++) {\n            if (shapes[idx].bbox.containsPoint(point)) {\n                result.push(shapes[idx].shape);\n            }\n        }\n        return result;\n    };\n\n    QuadRoot.prototype.insert = function insert (shape, bbox) {\n        this._add(shape, bbox);\n    };\n\n    QuadRoot.prototype.remove = function remove (shape) {\n        var shapes = this.shapes;\n        var length = shapes.length;\n\n        for (var idx = 0; idx < length; idx++) {\n            if (shapes[idx].shape === shape) {\n                shapes.splice(idx, 1);\n                break;\n            }\n        }\n    };\n\n    return QuadRoot;\n}(Class));\n\nexport default QuadRoot;","import QuadRoot from './quad-root';\nimport { Rect } from '../geometry';\nimport { append } from '../util';\n\nvar QuadNode = (function (QuadRoot) {\n    function QuadNode(rect) {\n        QuadRoot.call(this);\n        this.children = [];\n        this.rect = rect;\n    }\n\n    if ( QuadRoot ) QuadNode.__proto__ = QuadRoot;\n    QuadNode.prototype = Object.create( QuadRoot && QuadRoot.prototype );\n    QuadNode.prototype.constructor = QuadNode;\n\n    QuadNode.prototype.inBounds = function inBounds (rect) {\n        var nodeRect = this.rect;\n        var nodeBottomRight = nodeRect.bottomRight();\n        var bottomRight = rect.bottomRight();\n        var inBounds = nodeRect.origin.x <= rect.origin.x && nodeRect.origin.y <= rect.origin.y && bottomRight.x <= nodeBottomRight.x &&\n            bottomRight.y <= nodeBottomRight.y;\n        return inBounds;\n    };\n\n    QuadNode.prototype.pointShapes = function pointShapes (point) {\n        var children = this.children;\n        var length = children.length;\n        var result = QuadRoot.prototype.pointShapes.call(this, point);\n        for (var idx = 0; idx < length; idx++) {\n            append(result, children[idx].pointShapes(point));\n        }\n        return result;\n    };\n\n    QuadNode.prototype.insert = function insert (shape, bbox) {\n        var children = this.children;\n        var inserted = false;\n\n        if (this.inBounds(bbox)) {\n            if (this.shapes.length < 4) {\n                this._add(shape, bbox);\n            } else {\n                if (!children.length) {\n                    this._initChildren();\n                }\n\n                for (var idx = 0; idx < children.length; idx++) {\n                    if (children[idx].insert(shape, bbox)) {\n                        inserted = true;\n                        break;\n                    }\n                }\n\n                if (!inserted) {\n                    this._add(shape, bbox);\n                }\n            }\n            inserted = true;\n        }\n\n        return inserted;\n    };\n\n    QuadNode.prototype._initChildren = function _initChildren () {\n        var ref = this;\n        var rect = ref.rect;\n        var children = ref.children;\n        var center = rect.center();\n        var halfWidth = rect.width() / 2;\n        var halfHeight = rect.height() / 2;\n\n        children.push(\n            new QuadNode(new Rect([ rect.origin.x, rect.origin.y ], [ halfWidth, halfHeight ])),\n            new QuadNode(new Rect([ center.x, rect.origin.y ], [ halfWidth, halfHeight ])),\n            new QuadNode(new Rect([ rect.origin.x, center.y ], [ halfWidth, halfHeight ])),\n            new QuadNode(new Rect([ center.x, center.y ], [ halfWidth, halfHeight ]))\n        );\n    };\n\n    return QuadNode;\n}(QuadRoot));\n\nexport default QuadNode;","import QuadRoot from './quad-root';\nimport QuadNode from './quad-node';\nimport { Rect } from '../geometry';\nimport { Class } from '../common';\nimport { append } from '../util';\n\nvar ROOT_SIZE = 3000;\nvar LEVEL_STEP = 10000;\nvar MAX_LEVEL = 75;\n\nvar ShapesQuadTree = (function (Class) {\n    function ShapesQuadTree() {\n        Class.call(this);\n\n        this.initRoots();\n    }\n\n    if ( Class ) ShapesQuadTree.__proto__ = Class;\n    ShapesQuadTree.prototype = Object.create( Class && Class.prototype );\n    ShapesQuadTree.prototype.constructor = ShapesQuadTree;\n\n    ShapesQuadTree.prototype.initRoots = function initRoots () {\n        this.rootMap = {};\n        this.root = new QuadRoot();\n        this.rootElements = [];\n    };\n\n    ShapesQuadTree.prototype.clear = function clear () {\n        var this$1 = this;\n\n        var rootElements = this.rootElements;\n        for (var idx = 0; idx < rootElements.length; idx++) {\n            this$1.remove(rootElements[idx]);\n        }\n        this.initRoots();\n    };\n\n    ShapesQuadTree.prototype.pointShape = function pointShape (point) {\n        var sectorRoot = ( this.rootMap[ Math.floor( point.x / ROOT_SIZE ) ] || {} )[ Math.floor( point.y / ROOT_SIZE ) ];\n        var result = this.root.pointShapes(point);\n\n        if (sectorRoot) {\n            result = result.concat(sectorRoot.pointShapes(point));\n        }\n\n        this.assignZindex(result);\n\n        result.sort(zIndexComparer);\n        for (var idx = 0; idx < result.length; idx++) {\n            if (result[idx].containsPoint(point)) {\n                return result[idx];\n            }\n        }\n    };\n\n    ShapesQuadTree.prototype.assignZindex = function assignZindex (elements) {\n        var this$1 = this;\n\n        for (var idx = 0; idx < elements.length; idx++) {\n            var element = elements[idx];\n            var zIndex = 0;\n            var levelWeight = Math.pow(LEVEL_STEP, MAX_LEVEL);\n            var parents = [];\n\n            while (element) {\n                parents.push(element);\n                element = element.parent;\n            }\n\n            while (parents.length) {\n                element = parents.pop();\n                zIndex += ((element.parent ? element.parent.children : this$1.rootElements).indexOf(element) + 1) * levelWeight;\n                levelWeight /= LEVEL_STEP;\n            }\n\n            elements[idx]._zIndex = zIndex;\n        }\n    };\n\n    ShapesQuadTree.prototype.optionsChange = function optionsChange (e) {\n        if (e.field === \"transform\" || e.field === \"stroke.width\") {\n            this.bboxChange(e.element);\n        }\n    };\n\n    ShapesQuadTree.prototype.geometryChange = function geometryChange (e) {\n        this.bboxChange(e.element);\n    };\n\n    ShapesQuadTree.prototype.bboxChange = function bboxChange (element) {\n        var this$1 = this;\n\n        if (element.nodeType === \"Group\") {\n            for (var idx = 0; idx < element.children.length; idx++) {\n                this$1.bboxChange(element.children[idx]);\n            }\n        } else {\n            if (element._quadNode) {\n                element._quadNode.remove(element);\n            }\n            this._insertShape(element);\n        }\n    };\n\n    ShapesQuadTree.prototype.add = function add (elements) {\n        var elementsArray = Array.isArray(elements) ? elements.slice(0) : [ elements ];\n\n        append(this.rootElements, elementsArray);\n        this._insert(elementsArray);\n    };\n\n    ShapesQuadTree.prototype.childrenChange = function childrenChange (e) {\n        var this$1 = this;\n\n        if (e.action === \"remove\") {\n            for (var idx = 0; idx < e.items.length; idx++) {\n                this$1.remove(e.items[idx]);\n            }\n        } else {\n            this._insert(Array.prototype.slice.call(e.items, 0));\n        }\n    };\n\n    ShapesQuadTree.prototype._insert = function _insert (elements) {\n        var this$1 = this;\n\n        var element;\n\n        while (elements.length > 0) {\n            element = elements.pop();\n            element.addObserver(this$1);\n            if (element.nodeType === \"Group\") {\n                append(elements, element.children);\n            } else {\n                this$1._insertShape(element);\n            }\n        }\n    };\n\n    ShapesQuadTree.prototype._insertShape = function _insertShape (shape) {\n        var bbox = shape.bbox();\n        if (bbox) {\n            var sectors = this.getSectors(bbox);\n            var x = sectors[0][0];\n            var y = sectors[1][0];\n\n            if (this.inRoot(sectors)) {\n                this.root.insert(shape, bbox);\n            } else {\n                var rootMap = this.rootMap;\n                if (!rootMap[x]) {\n                    rootMap[x] = {};\n                }\n\n                if (!rootMap[x][y]) {\n                    rootMap[x][y] = new QuadNode(\n                        new Rect([ x * ROOT_SIZE, y * ROOT_SIZE ], [ ROOT_SIZE, ROOT_SIZE ])\n                    );\n                }\n\n                rootMap[x][y].insert(shape, bbox);\n            }\n        }\n    };\n\n    ShapesQuadTree.prototype.remove = function remove (element) {\n        var this$1 = this;\n\n        element.removeObserver(this);\n\n        if (element.nodeType === \"Group\") {\n            var children = element.children;\n            for (var idx = 0; idx < children.length; idx++) {\n                this$1.remove(children[idx]);\n            }\n        } else if (element._quadNode) {\n            element._quadNode.remove(element);\n            delete element._quadNode;\n        }\n    };\n\n    ShapesQuadTree.prototype.inRoot = function inRoot (sectors) {\n        return sectors[0].length > 1 || sectors[1].length > 1;\n    };\n\n    ShapesQuadTree.prototype.getSectors = function getSectors (rect) {\n        var bottomRight = rect.bottomRight();\n        var bottomX = Math.floor(bottomRight.x / ROOT_SIZE);\n        var bottomY = Math.floor(bottomRight.y / ROOT_SIZE);\n        var sectors = [ [], [] ];\n        for (var x = Math.floor(rect.origin.x / ROOT_SIZE); x <= bottomX; x++) {\n            sectors[0].push(x);\n        }\n        for (var y = Math.floor(rect.origin.y / ROOT_SIZE); y <= bottomY; y++) {\n            sectors[1].push(y);\n        }\n        return sectors;\n    };\n\n    return ShapesQuadTree;\n}(Class));\n\nfunction zIndexComparer(x1, x2) {\n    if (x1._zIndex < x2._zIndex) {\n        return 1;\n    }\n    if (x1._zIndex > x2._zIndex) {\n        return -1;\n    }\n\n    return 0;\n}\n\nexport default ShapesQuadTree;","import { defined } from '../util';\n\nvar SurfaceCursor = function SurfaceCursor(surface) {\n    surface.bind(\"mouseenter\", this._mouseenter.bind(this));\n    surface.bind(\"mouseleave\", this._mouseleave.bind(this));\n\n    this.element = surface.element;\n};\n\nSurfaceCursor.prototype.clear = function clear () {\n    this._resetCursor();\n};\n\nSurfaceCursor.prototype.destroy = function destroy () {\n    this._resetCursor();\n    delete this.element;\n};\n\nSurfaceCursor.prototype._mouseenter = function _mouseenter (e) {\n    var cursor = this._shapeCursor(e);\n\n    if (!cursor) {\n        this._resetCursor();\n    } else {\n        if (!this._current) {\n            this._defaultCursor = this._getCursor();\n        }\n\n        this._setCursor(cursor);\n    }\n};\n\nSurfaceCursor.prototype._mouseleave = function _mouseleave () {\n    this._resetCursor();\n};\n\nSurfaceCursor.prototype._shapeCursor = function _shapeCursor (e) {\n    var shape = e.element;\n\n    while (shape && !defined(shape.options.cursor)) {\n        shape = shape.parent;\n    }\n\n    if (shape) {\n        return shape.options.cursor;\n    }\n};\n\nSurfaceCursor.prototype._getCursor = function _getCursor () {\n    if (this.element) {\n        return this.element.style.cursor;\n    }\n};\n\nSurfaceCursor.prototype._setCursor = function _setCursor (cursor) {\n    if (this.element) {\n        this.element.style.cursor = cursor;\n        this._current = cursor;\n    }\n};\n\nSurfaceCursor.prototype._resetCursor = function _resetCursor () {\n    if (this._current) {\n        this._setCursor(this._defaultCursor || \"\");\n        delete this._current;\n    }\n};\n\nexport default SurfaceCursor;\n\n","\nexport default function renderPath(ctx, path) {\n    var segments = path.segments;\n\n    if (segments.length === 0) {\n        return;\n    }\n\n    var segment = segments[0];\n    var anchor = segment.anchor();\n    ctx.moveTo(anchor.x, anchor.y);\n\n    for (var i = 1; i < segments.length; i++) {\n        segment = segments[i];\n        anchor = segment.anchor();\n\n        var prevSeg = segments[i - 1];\n        var prevOut = prevSeg.controlOut();\n        var controlIn = segment.controlIn();\n\n        if (prevOut && controlIn) {\n            ctx.bezierCurveTo(prevOut.x, prevOut.y,\n                controlIn.x, controlIn.y,\n                anchor.x, anchor.y);\n        } else {\n            ctx.lineTo(anchor.x, anchor.y);\n        }\n    }\n\n    if (path.options.closed) {\n        ctx.closePath();\n    }\n}\n","import Node from './node';\nimport { parseColor } from '../common';\nimport { isTransparent, valueOrDefault } from '../util';\nimport LinearGradient from '../gradients/linear-gradient';\nimport RadialGradient from '../gradients/radial-gradient';\nimport { DASH_ARRAYS, SOLID, BUTT, PATTERN } from '../core/constants';\nimport renderPath from './utils/render-path';\n\nfunction addGradientStops(gradient, stops) {\n    for (var idx = 0; idx < stops.length; idx++) {\n        var stop = stops[idx];\n        var color = parseColor(stop.color());\n\n        color.a *= stop.opacity();\n\n        gradient.addColorStop(stop.offset(), color.toCssRgba());\n    }\n}\n\nvar PathNode = (function (Node) {\n    function PathNode () {\n        Node.apply(this, arguments);\n    }\n\n    if ( Node ) PathNode.__proto__ = Node;\n    PathNode.prototype = Object.create( Node && Node.prototype );\n    PathNode.prototype.constructor = PathNode;\n\n    PathNode.prototype.renderTo = function renderTo (ctx) {\n        ctx.save();\n\n        this.setTransform(ctx);\n        this.setClip(ctx);\n        this.setOpacity(ctx);\n\n        ctx.beginPath();\n\n        this.renderPoints(ctx, this.srcElement);\n\n        this.setLineDash(ctx);\n        this.setLineCap(ctx);\n        this.setLineJoin(ctx);\n\n        this.setFill(ctx);\n        this.setStroke(ctx);\n\n        ctx.restore();\n    };\n\n    PathNode.prototype.setFill = function setFill (ctx) {\n        var fill = this.srcElement.options.fill;\n        var hasFill = false;\n\n        if (fill) {\n            if (fill.nodeType === \"Gradient\") {\n                this.setGradientFill(ctx, fill);\n                hasFill = true;\n            } else if (fill.nodeType === PATTERN) {\n                this.setPatternFill(ctx, fill);\n                hasFill = true;\n            } else if (!isTransparent(fill.color)) {\n                ctx.fillStyle = fill.color;\n\n                ctx.save();\n                this.globalAlpha(ctx, fill.opacity);\n                ctx.fill();\n                ctx.restore();\n\n                hasFill = true;\n            }\n        }\n\n        return hasFill;\n    };\n\n    PathNode.prototype.setGradientFill = function setGradientFill (ctx, fill) {\n        var bbox = this.srcElement.rawBBox();\n        var gradient;\n\n        if (fill instanceof LinearGradient) {\n            var start = fill.start();\n            var end = fill.end();\n            gradient = ctx.createLinearGradient(start.x, start.y, end.x, end.y);\n        } else if (fill instanceof RadialGradient) {\n            var center = fill.center();\n            gradient = ctx.createRadialGradient(center.x, center.y, 0, center.x, center.y, fill.radius());\n        }\n\n        addGradientStops(gradient, fill.stops);\n\n        ctx.save();\n\n        if (!fill.userSpace()) {\n            ctx.transform(bbox.width(), 0, 0, bbox.height(), bbox.origin.x, bbox.origin.y);\n        }\n        ctx.fillStyle = gradient;\n        ctx.fill();\n\n        ctx.restore();\n    };\n\n    PathNode.prototype.setPatternFill = function setPatternFill (ctx, pattern) {\n        var size = pattern.size();\n        var patternCanvas = document.createElement(\"canvas\");\n        var patternContext = patternCanvas.getContext(\"2d\");\n\n        patternCanvas.width = size.getWidth();\n        patternCanvas.height = size.getHeight();\n\n        this.childNodes.length = 0;\n        this.loadElements(pattern.children);\n\n        var childNodes = this.childNodes;\n        for (var i = 0; i < childNodes.length; i++) {\n            var child = childNodes[i];\n            child.renderTo(patternContext);\n        }\n\n        ctx.save();\n        ctx.fillStyle = ctx.createPattern(patternCanvas, \"repeat\");\n        ctx.fill();\n        ctx.restore();\n    };\n\n    PathNode.prototype.setStroke = function setStroke (ctx) {\n        var stroke = this.srcElement.options.stroke;\n        if (stroke && !isTransparent(stroke.color) && stroke.width > 0) {\n            ctx.strokeStyle = stroke.color;\n            ctx.lineWidth = valueOrDefault(stroke.width, 1);\n            ctx.lineJoin = valueOrDefault(stroke.lineJoin, ctx.lineJoin);\n\n            ctx.save();\n            this.globalAlpha(ctx, stroke.opacity);\n            ctx.stroke();\n            ctx.restore();\n\n            return true;\n        }\n    };\n\n    PathNode.prototype.dashType = function dashType () {\n        var stroke = this.srcElement.options.stroke;\n        if (stroke && stroke.dashType) {\n            return stroke.dashType.toLowerCase();\n        }\n    };\n\n    PathNode.prototype.setLineDash = function setLineDash (ctx) {\n        var dashType = this.dashType();\n        if (dashType && dashType !== SOLID) {\n            var dashArray = DASH_ARRAYS[dashType];\n            if (ctx.setLineDash) {\n                ctx.setLineDash(dashArray);\n            } else {\n                ctx.mozDash = dashArray;\n                ctx.webkitLineDash = dashArray;\n            }\n        }\n    };\n\n    PathNode.prototype.setLineCap = function setLineCap (ctx) {\n        var dashType = this.dashType();\n        var stroke = this.srcElement.options.stroke;\n        if (dashType && dashType !== SOLID) {\n            ctx.lineCap = BUTT;\n        } else if (stroke && stroke.lineCap) {\n            ctx.lineCap = stroke.lineCap;\n        }\n    };\n\n    PathNode.prototype.setLineJoin = function setLineJoin (ctx) {\n        var stroke = this.srcElement.options.stroke;\n        if (stroke && stroke.lineJoin) {\n            ctx.lineJoin = stroke.lineJoin;\n        }\n    };\n\n    PathNode.prototype.renderPoints = function renderPoints (ctx, path) {\n        renderPath(ctx, path);\n    };\n\n    return PathNode;\n}(Node));\n\nexport default PathNode;\n","import PathNode from './path-node';\nimport renderPath from './utils/render-path';\n\nvar ArcNode = (function (PathNode) {\n    function ArcNode () {\n        PathNode.apply(this, arguments);\n    }\n\n    if ( PathNode ) ArcNode.__proto__ = PathNode;\n    ArcNode.prototype = Object.create( PathNode && PathNode.prototype );\n    ArcNode.prototype.constructor = ArcNode;\n\n    ArcNode.prototype.renderPoints = function renderPoints (ctx) {\n        var path = this.srcElement.toPath();\n        renderPath(ctx, path);\n    };\n\n    return ArcNode;\n}(PathNode));\n\nexport default ArcNode;\n","import PathNode from './path-node';\n\nvar CircleNode = (function (PathNode) {\n    function CircleNode () {\n        PathNode.apply(this, arguments);\n    }\n\n    if ( PathNode ) CircleNode.__proto__ = PathNode;\n    CircleNode.prototype = Object.create( PathNode && PathNode.prototype );\n    CircleNode.prototype.constructor = CircleNode;\n\n    CircleNode.prototype.renderPoints = function renderPoints (ctx) {\n        var ref = this.srcElement.geometry();\n        var center = ref.center;\n        var radius = ref.radius;\n\n        ctx.arc(center.x, center.y, radius, 0, Math.PI * 2);\n    };\n\n    return CircleNode;\n}(PathNode));\n\nexport default CircleNode;\n","import PathNode from './path-node';\nimport { createPromise } from '../util';\n\nvar ImageNode = (function (PathNode) {\n    function ImageNode(srcElement, cors) {\n        PathNode.call(this, srcElement);\n\n        this.onLoad = this.onLoad.bind(this);\n        this.onError = this.onError.bind(this);\n\n        this.loading = createPromise();\n\n        var img = this.img = new Image();\n        var src = srcElement.src();\n\n        if (cors && !(/^data:/i.test(src))) {\n            img.crossOrigin = cors;\n        }\n\n        if (src) {\n            img.src = src;\n        }\n\n        if (img.complete) {\n            this.onLoad();\n        } else {\n            img.onload = this.onLoad;\n            img.onerror = this.onError;\n        }\n    }\n\n    if ( PathNode ) ImageNode.__proto__ = PathNode;\n    ImageNode.prototype = Object.create( PathNode && PathNode.prototype );\n    ImageNode.prototype.constructor = ImageNode;\n\n    ImageNode.prototype.renderTo = function renderTo (ctx) {\n        if (this.loading.state() === \"resolved\") {\n            ctx.save();\n\n            this.setTransform(ctx);\n            this.setClip(ctx);\n\n            this.drawImage(ctx);\n\n            ctx.restore();\n        }\n    };\n\n    ImageNode.prototype.optionsChange = function optionsChange (e) {\n        if (e.field === \"src\") {\n            this.loading = createPromise();\n            this.img.src = this.srcElement.src();\n        } else {\n            PathNode.prototype.optionsChange.call(this, e);\n        }\n    };\n\n    ImageNode.prototype.onLoad = function onLoad () {\n        this.loading.resolve();\n        this.invalidate();\n    };\n\n    ImageNode.prototype.onError = function onError () {\n        this.loading.reject(new Error(\n            \"Unable to load image '\" + this.img.src +\n            \"'. Check for connectivity and verify CORS headers.\"\n        ));\n    };\n\n    ImageNode.prototype.drawImage = function drawImage (ctx) {\n        var rect = this.srcElement.rect();\n        var topLeft = rect.topLeft();\n\n        ctx.drawImage(\n            this.img, topLeft.x, topLeft.y, rect.width(), rect.height()\n        );\n    };\n\n    return ImageNode;\n}(PathNode));\n\nexport default ImageNode;\n","import PathNode from './path-node';\nimport renderPath from './utils/render-path';\n\nvar MultiPathNode = (function (PathNode) {\n    function MultiPathNode () {\n        PathNode.apply(this, arguments);\n    }\n\n    if ( PathNode ) MultiPathNode.__proto__ = PathNode;\n    MultiPathNode.prototype = Object.create( PathNode && PathNode.prototype );\n    MultiPathNode.prototype.constructor = MultiPathNode;\n\n    MultiPathNode.prototype.renderPoints = function renderPoints (ctx) {\n        var paths = this.srcElement.paths;\n        for (var i = 0; i < paths.length; i++) {\n            renderPath(ctx, paths[i]);\n        }\n    };\n\n    return MultiPathNode;\n}(PathNode));\n\nexport default MultiPathNode;\n","import { Path } from '../shapes/path';\nimport PathNode from './path-node';\n\nvar RectNode = (function (PathNode) {\n    function RectNode () {\n        PathNode.apply(this, arguments);\n    }\n\n    if ( PathNode ) RectNode.__proto__ = PathNode;\n    RectNode.prototype = Object.create( PathNode && PathNode.prototype );\n    RectNode.prototype.constructor = RectNode;\n\n    RectNode.prototype.renderPoints = function renderPoints (ctx) {\n        var geometry = this.srcElement.geometry();\n        var ref = geometry.cornerRadius;\n        var rx = ref[0];\n        var ry = ref[1];\n\n        if (rx === 0 && ry === 0) {\n            var origin = geometry.origin;\n            var size = geometry.size;\n            ctx.rect(origin.x, origin.y, size.width, size.height);\n        } else {\n            PathNode.prototype.renderPoints.call(this, ctx, Path.fromRect(geometry));\n        }\n    };\n\n    return RectNode;\n}(PathNode));\n\nexport default RectNode;\n","import PathNode from './path-node';\n\nvar TextNode = (function (PathNode) {\n    function TextNode () {\n        PathNode.apply(this, arguments);\n    }\n\n    if ( PathNode ) TextNode.__proto__ = PathNode;\n    TextNode.prototype = Object.create( PathNode && PathNode.prototype );\n    TextNode.prototype.constructor = TextNode;\n\n    TextNode.prototype.renderTo = function renderTo (ctx) {\n        var text = this.srcElement;\n        var pos = text.position();\n        var size = text.measure();\n\n        ctx.save();\n\n        this.setTransform(ctx);\n        this.setClip(ctx);\n        this.setOpacity(ctx);\n\n        ctx.beginPath();\n\n        ctx.font = text.options.font;\n        ctx.textAlign = 'left';\n\n        if (text.options.paintOrder === 'stroke') {\n            this.stroke(ctx, text, pos, size);\n            this.fill(ctx, text, pos, size);\n        } else {\n            this.fill(ctx, text, pos, size);\n            this.stroke(ctx, text, pos, size);\n        }\n\n        ctx.restore();\n    };\n\n    TextNode.prototype.stroke = function stroke (ctx, text, pos, size) {\n        if (this.setStroke(ctx)) {\n            this.setLineDash(ctx);\n            ctx.strokeText(text.content(), pos.x, pos.y + size.baseline);\n        }\n    };\n\n    TextNode.prototype.fill = function fill (ctx, text, pos, size) {\n        if (this.setFill(ctx)) {\n            ctx.fillText(text.content(), pos.x, pos.y + size.baseline);\n        }\n    };\n\n    return TextNode;\n}(PathNode));\n\n\nexport default TextNode;\n","import BaseSurface from '../core/surface';\nimport { createPromise, promiseAll, bindEvents, elementSize, unbindEvents } from '../util';\nimport RootNode from './root-node';\nimport ShapesQuadTree from '../search/shapes-quad-tree';\nimport SurfaceCursor from './surface-cursor';\n\nimport ArcNode from './arc-node';\nimport CircleNode from './circle-node';\nimport GroupNode from './group-node';\nimport ImageNode from './image-node';\nimport MultiPathNode from './multi-path-node';\nimport PathNode from './path-node';\nimport RectNode from './rect-node';\nimport TextNode from './text-node';\nimport NODE_MAP from './node-map';\n\nNODE_MAP.Arc = ArcNode;\nNODE_MAP.Circle = CircleNode;\nNODE_MAP.Group = GroupNode;\nNODE_MAP.Image = ImageNode;\nNODE_MAP.MultiPath = MultiPathNode;\nNODE_MAP.Path = PathNode;\nNODE_MAP.Rect = RectNode;\nNODE_MAP.Text = TextNode;\n\n\nvar Surface = (function (BaseSurface) {\n    function Surface(element, options) {\n        BaseSurface.call(this, element, options);\n\n        this.element.innerHTML = this._template(this);\n\n        var canvas = this.element.firstElementChild;\n        canvas.style.width = '100%';\n        canvas.style.height = '100%';\n\n        var size = elementSize(element);\n\n        canvas.width = size.width;\n        canvas.height = size.height;\n\n        this._rootElement = canvas;\n\n        this._root = new RootNode(canvas, size);\n\n        this._mouseTrackHandler = this._trackMouse.bind(this);\n\n        bindEvents(this.element, {\n            click: this._mouseTrackHandler,\n            mousemove: this._mouseTrackHandler\n        });\n    }\n\n    if ( BaseSurface ) Surface.__proto__ = BaseSurface;\n    Surface.prototype = Object.create( BaseSurface && BaseSurface.prototype );\n    Surface.prototype.constructor = Surface;\n\n    var prototypeAccessors = { type: { configurable: true } };\n\n    prototypeAccessors.type.get = function () {\n        return \"canvas\";\n    };\n\n    Surface.prototype.destroy = function destroy () {\n        BaseSurface.prototype.destroy.call(this);\n\n        if (this._root) {\n            this._root.destroy();\n            this._root = null;\n        }\n\n        if (this._searchTree) {\n            this._searchTree.clear();\n            delete this._searchTree;\n        }\n\n        if (this._cursor) {\n            this._cursor.destroy();\n            delete this._cursor;\n        }\n\n        unbindEvents(this.element, {\n            click: this._mouseTrackHandler,\n            mousemove: this._mouseTrackHandler\n        });\n    };\n\n    Surface.prototype.draw = function draw (element) {\n        BaseSurface.prototype.draw.call(this, element);\n        this._root.load([ element ], undefined, this.options.cors);\n\n        if (this._searchTree) {\n            this._searchTree.add([ element ]);\n        }\n    };\n\n    Surface.prototype.clear = function clear () {\n        BaseSurface.prototype.clear.call(this);\n        this._root.clear();\n\n        if (this._searchTree) {\n            this._searchTree.clear();\n        }\n\n        if (this._cursor) {\n            this._cursor.clear();\n        }\n    };\n\n    Surface.prototype.eventTarget = function eventTarget (e) {\n        if (this._searchTree) {\n            var point = this._surfacePoint(e);\n            var shape = this._searchTree.pointShape(point);\n            return shape;\n        }\n    };\n\n    Surface.prototype.image = function image () {\n        var ref = this;\n        var root = ref._root;\n        var rootElement = ref._rootElement;\n        var loadingStates = [];\n\n        root.traverse(function (childNode) {\n            if (childNode.loading) {\n                loadingStates.push(childNode.loading);\n            }\n        });\n\n        var promise = createPromise();\n        var resolveDataURL = function () {\n            root._invalidate({ fixedScale: true });\n\n            try {\n                var data = rootElement.toDataURL();\n                promise.resolve(data);\n            } catch (e) {\n                promise.reject(e);\n            }\n        };\n\n        promiseAll(loadingStates).then(resolveDataURL, resolveDataURL);\n\n        return promise;\n    };\n\n    Surface.prototype.suspendTracking = function suspendTracking () {\n        BaseSurface.prototype.suspendTracking.call(this);\n        if (this._searchTree) {\n            this._searchTree.clear();\n            delete this._searchTree;\n        }\n    };\n\n    Surface.prototype.resumeTracking = function resumeTracking () {\n        BaseSurface.prototype.resumeTracking.call(this);\n        if (!this._searchTree) {\n            this._searchTree = new ShapesQuadTree();\n\n            var childNodes = this._root.childNodes;\n            var rootElements = [];\n            for (var idx = 0; idx < childNodes.length; idx++) {\n                rootElements.push(childNodes[idx].srcElement);\n            }\n            this._searchTree.add(rootElements);\n        }\n    };\n\n    Surface.prototype._resize = function _resize () {\n        this._rootElement.width = this._size.width;\n        this._rootElement.height = this._size.height;\n\n        this._root.size = this._size;\n        this._root.invalidate();\n    };\n\n    Surface.prototype._template = function _template () {\n        return \"<canvas></canvas>\";\n    };\n\n    Surface.prototype._enableTracking = function _enableTracking () {\n        this._searchTree = new ShapesQuadTree();\n        this._cursor = new SurfaceCursor(this);\n\n        BaseSurface.prototype._enableTracking.call(this);\n    };\n\n    Surface.prototype._trackMouse = function _trackMouse (e) {\n        if (this._suspendedTracking) {\n            return;\n        }\n\n        var shape = this.eventTarget(e);\n\n        if (e.type !== \"click\") {\n            var currentShape = this._currentShape;\n            if (currentShape && currentShape !== shape) {\n                this.trigger(\"mouseleave\", {\n                    element: currentShape,\n                    originalEvent: e,\n                    type: \"mouseleave\"\n                });\n            }\n\n            if (shape && currentShape !== shape) {\n                this.trigger(\"mouseenter\", {\n                    element: shape,\n                    originalEvent: e,\n                    type: \"mouseenter\"\n                });\n            }\n\n            this.trigger(\"mousemove\", {\n                element: shape,\n                originalEvent: e,\n                type: \"mousemove\"\n            });\n\n            this._currentShape = shape;\n        } else if (shape) {\n            this.trigger(\"click\", {\n                element: shape,\n                originalEvent: e,\n                type: \"click\"\n            });\n        }\n    };\n\n    Object.defineProperties( Surface.prototype, prototypeAccessors );\n\n    return Surface;\n}(BaseSurface));\n\nexport default Surface;\n","import { Class, logToConsole } from './common';\nimport SVGSurface from './svg/surface';\nimport CanvasSurface from './canvas/surface';\n\nvar instance;\nvar support;\n\nvar hasDocument = function () { return typeof document !== \"undefined\"; };\n\nvar supportsCanvas = function () { return hasDocument() &&\n    document.createElement(\"canvas\").getContext; };\n\nvar supportsSVG = function () { return hasDocument() &&\n    document.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#BasicStructure\", \"1.1\"); };\n\nvar SurfaceFactory = (function (Class) {\n    function SurfaceFactory() {\n        Class.call(this);\n\n        this._items = [ {\n            name: \"svg\",\n            type: SVGSurface\n        }, {\n            name: \"canvas\",\n            type: CanvasSurface\n        } ];\n    }\n\n    if ( Class ) SurfaceFactory.__proto__ = Class;\n    SurfaceFactory.prototype = Object.create( Class && Class.prototype );\n    SurfaceFactory.prototype.constructor = SurfaceFactory;\n\n    var staticAccessors = { support: { configurable: true },current: { configurable: true } };\n\n    staticAccessors.support.get = function () {\n        if (!support) {\n            support = {\n                canvas: supportsCanvas(),\n                svg: supportsSVG()\n            };\n        }\n\n        return support;\n    };\n\n    staticAccessors.current.get = function () {\n        if (!instance) {\n            instance = new SurfaceFactory();\n        }\n\n        return instance;\n    };\n\n    SurfaceFactory.prototype.create = function create (element, options) {\n        var items = this._items;\n        var match = items[0];\n\n        if (options && options.type) {\n            var preferred = options.type.toLowerCase();\n            for (var i = 0; i < items.length; i++) {\n                if (items[i].name === preferred) {\n                    match = items[i];\n                    break;\n                }\n            }\n        }\n\n        if (match) {\n            return new match.type(element, options);\n        }\n\n        logToConsole(\n            \"Warning: Unable to create Kendo UI Drawing Surface. Possible causes:\\n\" +\n            \"- The browser does not support SVG and Canvas. User agent: \" + (navigator.userAgent));\n    };\n\n    Object.defineProperties( SurfaceFactory, staticAccessors );\n\n    return SurfaceFactory;\n}(Class));\n\nexport default SurfaceFactory;\n\n","import BaseSurface from './core/surface';\nimport SurfaceFactory from './surface-factory';\n\nvar Surface = (function (BaseSurface) {\n    function Surface () {\n        BaseSurface.apply(this, arguments);\n    }\n\n    if ( BaseSurface ) Surface.__proto__ = BaseSurface;\n    Surface.prototype = Object.create( BaseSurface && BaseSurface.prototype );\n    Surface.prototype.constructor = Surface;\n\n    var staticAccessors = { support: { configurable: true } };\n\n    staticAccessors.support.get = function () {\n        return SurfaceFactory.support;\n    };\n\n    Surface.create = function create (element, options) {\n        return SurfaceFactory.current.create(element, options);\n    };\n\n    Object.defineProperties( Surface, staticAccessors );\n\n    return Surface;\n}(BaseSurface));\n\nexport default Surface;\n\n","import { Class } from '../common';\n\nvar Highlight = (function (Class) {\n    function Highlight() {\n        Class.call(this);\n\n        this._points = [];\n    }\n\n    if ( Class ) Highlight.__proto__ = Class;\n    Highlight.prototype = Object.create( Class && Class.prototype );\n    Highlight.prototype.constructor = Highlight;\n\n    Highlight.prototype.destroy = function destroy () {\n        this._points = [];\n    };\n\n    Highlight.prototype.show = function show (points, opacity) {\n        var this$1 = this;\n\n        var arrayPoints = [].concat(points);\n        this.hide();\n\n        for (var i = 0; i < arrayPoints.length; i++) {\n            var point = arrayPoints[i];\n            if (point && point.toggleHighlight && point.hasHighlight()) {\n                this$1.togglePointHighlight(point, true, opacity);\n                this$1._points.push(point);\n            }\n        }\n    };\n\n    Highlight.prototype.togglePointHighlight = function togglePointHighlight (point, show, opacity) {\n        var toggleHandler = (point.options.highlight || {}).toggle;\n        if (toggleHandler) {\n            var eventArgs = {\n                category: point.category,\n                series: point.series,\n                dataItem: point.dataItem,\n                value: point.value,\n                stackValue: point.stackValue,\n                preventDefault: preventDefault,\n                visual: point.highlightVisual(),\n                show: show\n            };\n            toggleHandler(eventArgs);\n            if (!eventArgs._defaultPrevented) {\n                point.toggleHighlight(show, opacity);\n            }\n        } else {\n            point.toggleHighlight(show, opacity);\n        }\n    };\n\n    Highlight.prototype.hide = function hide () {\n        var this$1 = this;\n\n        var points = this._points;\n        while (points.length) {\n            this$1.togglePointHighlight(points.pop(), false);\n        }\n    };\n\n    Highlight.prototype.isHighlighted = function isHighlighted (element) {\n        var points = this._points;\n\n        for (var i = 0; i < points.length; i++) {\n            var point = points[i];\n            if (element === point) {\n                return true;\n            }\n        }\n\n        return false;\n    };\n\n    return Highlight;\n}(Class));\n\nfunction preventDefault() {\n    this._defaultPrevented = true;\n}\n\nexport default Highlight;\n","export default function acceptKey(e, mouseKey) {\n    var key = (mouseKey || \"\").toLowerCase();\n    var event = e.event;\n    var accept = (key === \"none\" && !(event.ctrlKey || event.shiftKey || event.altKey)) || event[key + \"Key\"];\n\n    return accept;\n}","export default function toChartAxisRanges(axisRanges) {\n    var ranges = {};\n    for (var idx = 0; idx < axisRanges.length; idx++) {\n        var axisRange = axisRanges[idx];\n        if (axisRange.axis.options.name) {\n            ranges[axisRange.axis.options.name] = {\n                min: axisRange.range.min,\n                max: axisRange.range.max\n            };\n        }\n    }\n    return ranges;\n}","import acceptKey from './accept-key';\nimport toChartAxisRanges from './to-chart-axis-ranges';\n\nimport { X, Y } from '../../common/constants';\nimport { Class, deepExtend } from '../../common';\n\nvar Pannable = (function (Class) {\n    function Pannable(plotArea, options) {\n        Class.call(this);\n\n        this.plotArea = plotArea;\n        this.options = deepExtend({}, this.options, options);\n    }\n\n    if ( Class ) Pannable.__proto__ = Class;\n    Pannable.prototype = Object.create( Class && Class.prototype );\n    Pannable.prototype.constructor = Pannable;\n\n    Pannable.prototype.start = function start (e) {\n        this._active = acceptKey(e, this.options.key);\n        return this._active;\n    };\n\n    Pannable.prototype.move = function move (e) {\n        if (this._active) {\n            var axisRanges = this.axisRanges = this._panAxes(e, X).concat(this._panAxes(e, Y));\n            if (axisRanges.length) {\n                this.axisRanges = axisRanges;\n                return toChartAxisRanges(axisRanges);\n            }\n        }\n    };\n\n    Pannable.prototype.end = function end () {\n        var active = this._active;\n        this._active = false;\n\n        return active;\n    };\n\n    Pannable.prototype.pan = function pan () {\n        var ref = this;\n        var plotArea = ref.plotArea;\n        var axisRanges = ref.axisRanges;\n        if (axisRanges.length) {\n            for (var idx = 0; idx < axisRanges.length; idx++) {\n                var range = axisRanges[idx];\n                plotArea.updateAxisOptions(range.axis, range.range);\n            }\n            plotArea.redraw(plotArea.panes);\n        }\n    };\n\n    Pannable.prototype.destroy = function destroy () {\n        delete this.plotArea;\n    };\n\n    Pannable.prototype._panAxes = function _panAxes (e, position) {\n        var plotArea = this.plotArea;\n        var delta = -e[position].delta;\n        var lock = (this.options.lock || \"\").toLowerCase();\n        var updatedAxes = [];\n\n        if (delta !== 0 && (lock || \"\").toLowerCase() !== position) {\n            var axes = plotArea.axes;\n            for (var idx = 0; idx < axes.length; idx++) {\n                var axis = axes[idx];\n\n                if (position === X && !axis.options.vertical || position === Y && axis.options.vertical) {\n                    var range = axis.pan(delta);\n\n                    if (range) {\n                        range.limitRange = true;\n                        updatedAxes.push({\n                            axis: axis,\n                            range: range\n                        });\n                    }\n                }\n            }\n        }\n\n        return updatedAxes;\n    };\n\n    return Pannable;\n}(Class));\n\nPannable.prototype.options = {\n    key: \"none\",\n    lock: \"none\"\n};\n\nexport default Pannable;","import acceptKey from './accept-key';\nimport toChartAxisRanges from './to-chart-axis-ranges';\n\nimport { X, Y } from '../../common/constants';\nimport { Class, deepExtend, elementStyles, elementOffset, defined } from '../../common';\n\nvar ZoomSelection = (function (Class) {\n    function ZoomSelection(chart, options) {\n        Class.call(this);\n\n        this.chart = chart;\n        this.options = deepExtend({}, this.options, options);\n        this.createElement();\n    }\n\n    if ( Class ) ZoomSelection.__proto__ = Class;\n    ZoomSelection.prototype = Object.create( Class && Class.prototype );\n    ZoomSelection.prototype.constructor = ZoomSelection;\n\n    ZoomSelection.prototype.createElement = function createElement () {\n        var marquee = this._marquee = document.createElement(\"div\");\n        marquee.className = \"k-marquee\";\n        var marqueeColor = document.createElement(\"div\");\n        marqueeColor.className = \"k-marquee-color\";\n        marquee.appendChild(marqueeColor);\n    };\n\n    ZoomSelection.prototype.removeElement = function removeElement () {\n        if (this._marquee.parentNode) {\n            this._marquee.parentNode.removeChild(this._marquee);\n        }\n    };\n\n    ZoomSelection.prototype.setStyles = function setStyles (styles) {\n        elementStyles(this._marquee, styles);\n    };\n\n    ZoomSelection.prototype.start = function start (e) {\n        if (acceptKey(e, this.options.key)) {\n            var chart = this.chart;\n            var point = chart._eventCoordinates(e);\n            var zoomPane = this._zoomPane = chart._plotArea.paneByPoint(point);\n            var clipBox = zoomPane ? zoomPane.chartsBox().clone() : null;\n\n            if (zoomPane && clipBox) {\n                var offset = this._elementOffset();\n\n                clipBox.translate(offset.left, offset.top);\n                this._zoomPaneClipBox = clipBox;\n\n                document.body.appendChild(this._marquee);\n                this.setStyles({\n                    left: e.pageX + 1,\n                    top: e.pageY + 1,\n                    width: 0,\n                    height: 0\n                });\n\n                return true;\n            }\n        }\n        return false;\n    };\n\n    ZoomSelection.prototype._elementOffset = function _elementOffset () {\n        var chartElement = this.chart.element;\n        var ref = elementStyles(chartElement, [ \"paddingLeft\", \"paddingTop\" ]);\n        var paddingLeft = ref.paddingLeft;\n        var paddingTop = ref.paddingTop;\n        var offset = elementOffset(chartElement);\n\n        return {\n            left: paddingLeft + offset.left,\n            top: paddingTop + offset.top\n        };\n    };\n\n    ZoomSelection.prototype.move = function move (e) {\n        var zoomPane = this._zoomPane;\n        if (zoomPane) {\n            this.setStyles(this._selectionPosition(e));\n        }\n    };\n\n    ZoomSelection.prototype.end = function end (e) {\n        var zoomPane = this._zoomPane;\n        if (zoomPane) {\n            var elementOffset = this._elementOffset();\n            var selectionPosition = this._selectionPosition(e);\n            selectionPosition.left -= elementOffset.left;\n            selectionPosition.top -= elementOffset.top;\n\n            var start = { x: selectionPosition.left, y: selectionPosition.top };\n            var end = { x: selectionPosition.left + selectionPosition.width, y: selectionPosition.top + selectionPosition.height };\n            this._updateAxisRanges(start, end);\n\n            this.removeElement();\n            delete this._zoomPane;\n\n            return toChartAxisRanges(this.axisRanges);\n        }\n    };\n\n    ZoomSelection.prototype.zoom = function zoom () {\n        var axisRanges = this.axisRanges;\n        if (axisRanges && axisRanges.length) {\n            var plotArea = this.chart._plotArea;\n            for (var idx = 0; idx < axisRanges.length; idx++) {\n                var axisRange = axisRanges[idx];\n                plotArea.updateAxisOptions(axisRange.axis, axisRange.range);\n            }\n            plotArea.redraw(plotArea.panes);\n        }\n    };\n\n    ZoomSelection.prototype.destroy = function destroy () {\n        this.removeElement();\n        delete this._marquee;\n        delete this.chart;\n    };\n\n    ZoomSelection.prototype._updateAxisRanges = function _updateAxisRanges (start, end) {\n        var lock = (this.options.lock || \"\").toLowerCase();\n        var axisRanges = [];\n\n        var axes = this._zoomPane.axes;\n        for (var idx = 0; idx < axes.length; idx++) {\n            var axis = axes[idx];\n            var vertical = axis.options.vertical;\n            if (!(lock === X && !vertical) && !(lock === Y && vertical) && defined(axis.axisIndex)) {\n                var range = axis.pointsRange(start, end);\n                if (range) {\n                    axisRanges.push({\n                        axis: axis,\n                        range: range\n                    });\n                }\n            }\n        }\n\n        this.axisRanges = axisRanges;\n    };\n\n    ZoomSelection.prototype._selectionPosition = function _selectionPosition (e) {\n        var clipBox = this._zoomPaneClipBox;\n        var startLocation = {\n            x: e.x.startLocation,\n            y: e.y.startLocation\n        };\n        var pageX = e.x.location;\n        var pageY = e.y.location;\n        var lock = (this.options.lock || \"\").toLowerCase();\n        var left = Math.min(startLocation.x, pageX);\n        var top = Math.min(startLocation.y, pageY);\n        var width = Math.abs(startLocation.x - pageX);\n        var height = Math.abs(startLocation.y - pageY);\n\n        if (lock === X) {\n            left = clipBox.x1;\n            width = clipBox.width();\n        }\n        if (lock === Y) {\n            top = clipBox.y1;\n            height = clipBox.height();\n        }\n\n        if (pageX > clipBox.x2) {\n            width = clipBox.x2 - startLocation.x;\n        }\n\n        if (pageX < clipBox.x1) {\n            width = startLocation.x - clipBox.x1;\n        }\n\n        if (pageY > clipBox.y2) {\n            height = clipBox.y2 - startLocation.y;\n        }\n\n        if (pageY < clipBox.y1) {\n            height = startLocation.y - clipBox.y1;\n        }\n\n        return {\n            left: Math.max(left, clipBox.x1),\n            top: Math.max(top, clipBox.y1),\n            width: width,\n            height: height\n        };\n    };\n\n    return ZoomSelection;\n}(Class));\n\nZoomSelection.prototype.options = {\n    key: \"shift\",\n    lock: \"none\"\n};\n\nexport default ZoomSelection;","\nimport toChartAxisRanges from './to-chart-axis-ranges';\n\nimport { X, Y } from '../../common/constants';\nimport { Class, deepExtend } from '../../common';\nimport { limitValue } from '../../drawing-utils';\n\n// Limit the zoom rate between 1% and 90% per mousewheel event.\n// At zoom rates close to 100% the axis range quickly becomes 0.\nvar MIN_RATE = 0.01;\nvar MAX_RATE = 0.9;\nvar DEFAULT_RATE = 0.3;\n\nvar MousewheelZoom = (function (Class) {\n    function MousewheelZoom(chart, options) {\n        Class.call(this);\n\n        this.chart = chart;\n        this.options = deepExtend({\n            rate: DEFAULT_RATE\n        }, this.options, options);\n    }\n\n    if ( Class ) MousewheelZoom.__proto__ = Class;\n    MousewheelZoom.prototype = Object.create( Class && Class.prototype );\n    MousewheelZoom.prototype.constructor = MousewheelZoom;\n\n    MousewheelZoom.prototype.updateRanges = function updateRanges (delta, coords) {\n        var this$1 = this;\n\n        var lock = (this.options.lock || \"\").toLowerCase();\n        var axisRanges = [];\n        var axes = this.chart._plotArea.axes;\n\n        for (var idx = 0; idx < axes.length; idx++) {\n            var axis = axes[idx];\n            var vertical = axis.options.vertical;\n\n            if (!(lock === X && !vertical) && !(lock === Y && vertical) && axis.zoomRange) {\n                var rate = limitValue(this$1.options.rate, MIN_RATE, MAX_RATE);\n                var range = axis.zoomRange(-delta * rate, coords);\n\n                if (range) {\n                    axisRanges.push({\n                        axis: axis,\n                        range: range\n                    });\n                }\n            }\n        }\n\n        this.axisRanges = axisRanges;\n        return toChartAxisRanges(axisRanges);\n    };\n\n    MousewheelZoom.prototype.zoom = function zoom () {\n        var axisRanges = this.axisRanges;\n        var plotArea = this.chart._plotArea;\n\n        if (axisRanges && axisRanges.length && plotArea.updateAxisOptions) {\n            for (var idx = 0; idx < axisRanges.length; idx++) {\n                var axisRange = axisRanges[idx];\n                plotArea.updateAxisOptions(axisRange.axis, axisRange.range);\n            }\n            plotArea.redraw(plotArea.panes);\n        }\n    };\n\n    MousewheelZoom.prototype.destroy = function destroy () {\n        delete this.chart;\n    };\n\n    return MousewheelZoom;\n}(Class));\n\nexport default MousewheelZoom;\n","\nexport default function alignStart(size, rect, align, axis, sizeField) {\n    var start;\n    if (align === \"start\") {\n        start = rect.origin[axis];\n    } else if (align === \"end\") {\n        start = rect.origin[axis] + rect.size[sizeField] - size;\n    } else {\n        start = rect.origin[axis] + (rect.size[sizeField] - size) / 2;\n    }\n\n    return start;\n}","\nexport default function alignStartReverse(size, rect, align, axis, sizeField) {\n    var start;\n    if (align === \"start\") {\n        start = rect.origin[axis] + rect.size[sizeField] - size;\n    } else if (align === \"end\") {\n        start = rect.origin[axis];\n    } else {\n        start = rect.origin[axis] + (rect.size[sizeField] - size) / 2;\n    }\n\n    return start;\n}","import Group from './group';\nimport Size from '../geometry/size';\nimport Rect from '../geometry/rect';\nimport Point from '../geometry/point';\nimport createTransform from '../geometry/transform';\nimport translateToPoint from '../alignment/translate-to-point';\nimport alignStart from '../alignment/align-start';\nimport alignStartReverse from '../alignment/align-start-reverse';\n\nvar DEFAULT_OPTIONS = {\n    alignContent: \"start\",\n    justifyContent: \"start\",\n    alignItems: \"start\",\n    spacing: 0,\n    orientation: \"horizontal\",\n    lineSpacing: 0,\n    wrap: true,\n    revers: false\n};\n\nvar forEach = function (elements, callback) {\n    elements.forEach(callback);\n};\n\nvar forEachReverse = function (elements, callback) {\n    var length = elements.length;\n\n    for (var idx = length - 1; idx >= 0; idx--) {\n        callback(elements[idx], idx);\n    }\n};\n\nvar Layout = (function (Group) {\n    function Layout(rect, options) {\n        Group.call(this, Object.assign({}, DEFAULT_OPTIONS, options));\n        this._rect = rect;\n        this._fieldMap = {};\n    }\n\n    if ( Group ) Layout.__proto__ = Group;\n    Layout.prototype = Object.create( Group && Group.prototype );\n    Layout.prototype.constructor = Layout;\n\n    Layout.prototype.rect = function rect (value) {\n        if (value) {\n            this._rect = value;\n            return this;\n        }\n\n        return this._rect;\n    };\n\n    Layout.prototype._initMap = function _initMap () {\n        var options = this.options;\n        var fieldMap = this._fieldMap;\n        if (options.orientation === \"horizontal\") {\n            fieldMap.sizeField = \"width\";\n            fieldMap.groupsSizeField = \"height\";\n            fieldMap.groupAxis = \"x\";\n            fieldMap.groupsAxis = \"y\";\n        } else {\n            fieldMap.sizeField = \"height\";\n            fieldMap.groupsSizeField = \"width\";\n            fieldMap.groupAxis = \"y\";\n            fieldMap.groupsAxis = \"x\";\n        }\n\n        if (options.reverse) {\n            this.forEach = forEachReverse;\n            this.justifyAlign = alignStartReverse;\n        } else {\n            this.forEach = forEach;\n            this.justifyAlign = alignStart;\n        }\n    };\n\n    Layout.prototype.reflow = function reflow () {\n        var this$1 = this;\n\n        if (!this._rect || this.children.length === 0) {\n            return;\n        }\n        this._initMap();\n\n        if (this.options.transform) {\n            this.transform(null);\n        }\n\n        var options = this.options;\n        var rect = this._rect;\n        var ref = this._initGroups();\n        var groups = ref.groups;\n        var groupsSize = ref.groupsSize;\n        var ref$1 = this._fieldMap;\n        var sizeField = ref$1.sizeField;\n        var groupsSizeField = ref$1.groupsSizeField;\n        var groupAxis = ref$1.groupAxis;\n        var groupsAxis = ref$1.groupsAxis;\n        var groupOrigin = new Point();\n        var elementOrigin = new Point();\n        var size = new Size();\n        var groupStart = alignStart(groupsSize, rect, options.alignContent, groupsAxis, groupsSizeField);\n        var elementStart, group, groupBox;\n\n        var arrangeElements = function (bbox, idx) {\n            var element = group.elements[idx];\n\n            elementOrigin[groupAxis] = elementStart;\n            elementOrigin[groupsAxis] = alignStart(bbox.size[groupsSizeField], groupBox, options.alignItems, groupsAxis, groupsSizeField);\n            translateToPoint(elementOrigin, bbox, element);\n            elementStart += bbox.size[sizeField] + options.spacing;\n        };\n\n        for (var groupIdx = 0; groupIdx < groups.length; groupIdx++) {\n            group = groups[groupIdx];\n            groupOrigin[groupAxis] = elementStart = this$1.justifyAlign(group.size, rect, options.justifyContent, groupAxis, sizeField);\n            groupOrigin[groupsAxis] = groupStart;\n            size[sizeField] = group.size;\n            size[groupsSizeField] = group.lineSize;\n            groupBox = new Rect(groupOrigin, size);\n            this$1.forEach(group.bboxes, arrangeElements);\n\n            groupStart += group.lineSize + options.lineSpacing;\n        }\n\n        if (!options.wrap && group.size > rect.size[sizeField]) {\n            var scale = rect.size[sizeField] / groupBox.size[sizeField];\n            var scaledStart = groupBox.topLeft().scale(scale, scale);\n            var scaledSize = groupBox.size[groupsSizeField] * scale;\n            var newStart = alignStart(scaledSize, rect, options.alignContent, groupsAxis, groupsSizeField);\n            var transform = createTransform();\n            if (groupAxis === \"x\") {\n                transform.translate(rect.origin.x - scaledStart.x, newStart - scaledStart.y);\n            } else {\n                transform.translate(newStart - scaledStart.x, rect.origin.y - scaledStart.y);\n            }\n            transform.scale(scale, scale);\n\n            this.transform(transform);\n        }\n    };\n\n    Layout.prototype._initGroups = function _initGroups () {\n        var this$1 = this;\n\n        var ref = this;\n        var options = ref.options;\n        var children = ref.children;\n        var lineSpacing = options.lineSpacing;\n        var wrap = options.wrap;\n        var spacing = options.spacing;\n        var sizeField = this._fieldMap.sizeField;\n        var group = this._newGroup();\n        var groups = [];\n        var addGroup = function() {\n            groups.push(group);\n            groupsSize += group.lineSize + lineSpacing;\n        };\n        var groupsSize = -lineSpacing;\n\n        for (var idx = 0; idx < children.length; idx++) {\n            var element = children[idx];\n            var bbox = children[idx].clippedBBox();\n            if (element.visible() && bbox) {\n                if (wrap && group.size + bbox.size[sizeField] + spacing > this$1._rect.size[sizeField]) {\n                    if (group.bboxes.length === 0) {\n                        this$1._addToGroup(group, bbox, element);\n                        addGroup();\n                        group = this$1._newGroup();\n                    } else {\n                        addGroup();\n                        group = this$1._newGroup();\n                        this$1._addToGroup(group, bbox, element);\n                    }\n                } else {\n                    this$1._addToGroup(group, bbox, element);\n                }\n            }\n        }\n\n        if (group.bboxes.length) {\n            addGroup();\n        }\n\n        return {\n            groups: groups,\n            groupsSize: groupsSize\n        };\n    };\n\n    Layout.prototype._addToGroup = function _addToGroup (group, bbox, element) {\n        group.size += bbox.size[this._fieldMap.sizeField] + this.options.spacing;\n        group.lineSize = Math.max(bbox.size[this._fieldMap.groupsSizeField], group.lineSize);\n        group.bboxes.push(bbox);\n        group.elements.push(element);\n    };\n\n    Layout.prototype._newGroup = function _newGroup () {\n        return {\n            lineSize: 0,\n            size: -this.options.spacing,\n            bboxes: [],\n            elements: []\n        };\n    };\n\n    return Layout;\n}(Group));\n\nexport default Layout;","import createTransform from '../geometry/transform';\n\nexport default function translateToPoint(point, bbox, element) {\n    var transofrm = element.transform() || createTransform();\n    var matrix = transofrm.matrix();\n    matrix.e += point.x - bbox.origin.x;\n    matrix.f += point.y - bbox.origin.y;\n\n    transofrm.matrix(matrix);\n    element.transform(transofrm);\n}","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Box, rectToBox } from '../../core';\n\nvar LegendLayout = (function (ChartElement) {\n    function LegendLayout(options, chartService) {\n        ChartElement.call(this, options);\n\n        this.chartService = chartService;\n    }\n\n    if ( ChartElement ) LegendLayout.__proto__ = ChartElement;\n    LegendLayout.prototype = Object.create( ChartElement && ChartElement.prototype );\n    LegendLayout.prototype.constructor = LegendLayout;\n\n    LegendLayout.prototype.render = function render () {\n        var ref = this;\n        var children = ref.children;\n        var options = ref.options;\n        var vertical = options.vertical;\n\n        this.visual = new draw.Layout(null, {\n            spacing: vertical ? 0 : options.spacing,\n            lineSpacing: vertical ? options.spacing : 0,\n            orientation: vertical ? \"vertical\" : \"horizontal\",\n            reverse: options.rtl,\n            alignItems: vertical ? \"start\" : \"center\"\n        });\n\n        for (var idx = 0; idx < children.length; idx++) {\n            var legendItem = children[idx];\n            legendItem.reflow(new Box());\n            legendItem.renderVisual();\n        }\n    };\n\n    LegendLayout.prototype.reflow = function reflow (box) {\n        this.visual.rect(box.toRect());\n        this.visual.reflow();\n        var bbox = this.visual.clippedBBox();\n\n        if (bbox) {\n            this.box = rectToBox(bbox);\n        } else {\n            this.box = new Box();\n        }\n    };\n\n    LegendLayout.prototype.renderVisual = function renderVisual () {\n        this.addVisual();\n    };\n\n    LegendLayout.prototype.createVisual = function createVisual () {};\n\n    return LegendLayout;\n}(ChartElement));\n\nexport default LegendLayout;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { BoxElement, FloatElement, ShapeElement, TextBox } from '../../core';\nimport { LEGEND_ITEM_CLICK, LEGEND_ITEM_HOVER, LEGEND_ITEM_LEAVE } from '../constants';\nimport { CENTER, WHITE } from '../../common/constants';\nimport { deepExtend, eventElement } from '../../common';\n\nvar LegendItem = (function (BoxElement) {\n    function LegendItem(options) {\n        BoxElement.call(this, options);\n\n        this.createContainer();\n        if (!options.rtl) {\n            this.createMarker();\n            this.createLabel();\n        } else {\n            this.createLabel();\n            this.createMarker();\n        }\n    }\n\n    if ( BoxElement ) LegendItem.__proto__ = BoxElement;\n    LegendItem.prototype = Object.create( BoxElement && BoxElement.prototype );\n    LegendItem.prototype.constructor = LegendItem;\n\n    LegendItem.prototype.createContainer = function createContainer () {\n        this.container = new FloatElement({ vertical: false, wrap: false, align: CENTER, spacing: this.options.spacing });\n        this.append(this.container);\n    };\n\n    LegendItem.prototype.createMarker = function createMarker () {\n        this.container.append(new ShapeElement(this.markerOptions()));\n    };\n\n    LegendItem.prototype.markerOptions = function markerOptions () {\n        var options = this.options;\n        var markerColor = options.markerColor;\n        return deepExtend({}, options.markers, {\n            background: markerColor,\n            border: {\n                color: markerColor\n            }\n        });\n    };\n\n    LegendItem.prototype.createLabel = function createLabel () {\n        var options = this.options;\n        var labelOptions = deepExtend({}, options.labels);\n\n        this.container.append(new TextBox(options.text, labelOptions));\n    };\n\n    LegendItem.prototype.renderComplete = function renderComplete () {\n        BoxElement.prototype.renderComplete.call(this);\n\n        var cursor = this.options.cursor || {};\n        var eventSink = this._itemOverlay = draw.Path.fromRect(this.container.box.toRect(), {\n            fill: {\n                color: WHITE,\n                opacity: 0\n            },\n            stroke: null,\n            cursor: cursor.style || cursor\n        });\n\n        this.appendVisual(eventSink);\n    };\n\n    LegendItem.prototype.click = function click (widget, e) {\n        var args = this.eventArgs(e);\n\n        if (!widget.trigger(LEGEND_ITEM_CLICK, args) && e && e.type === 'contextmenu') {\n            e.preventDefault();\n        }\n    };\n\n    LegendItem.prototype.over = function over (widget, e) {\n        var args = this.eventArgs(e);\n\n        if (!widget.trigger(LEGEND_ITEM_HOVER, args)) {\n            widget._legendItemHover(args.seriesIndex, args.pointIndex);\n        }\n\n        // Don't trigger point hover for legend items\n        return true;\n    };\n\n    LegendItem.prototype.out = function out (widget, e) {\n        widget._unsetActivePoint();\n\n        widget.trigger(LEGEND_ITEM_LEAVE, this.eventArgs(e));\n    };\n\n    LegendItem.prototype.eventArgs = function eventArgs (e) {\n        var options = this.options;\n\n        return {\n            element: eventElement(e),\n            text: options.text,\n            series: options.series,\n            seriesIndex: options.series.index,\n            pointIndex: options.pointIndex\n        };\n    };\n\n    LegendItem.prototype.renderVisual = function renderVisual () {\n        var this$1 = this;\n\n        var options = this.options;\n        var customVisual = options.visual;\n\n        if (customVisual) {\n            this.visual = customVisual({\n                active: options.active,\n                series: options.series,\n                sender: this.getSender(),\n                pointIndex: options.pointIndex,\n                options: {\n                    markers: this.markerOptions(),\n                    labels: options.labels\n                },\n                createVisual: function () {\n                    this$1.createVisual();\n                    this$1.renderChildren();\n                    this$1.renderComplete();\n\n                    var defaultVisual = this$1.visual;\n\n                    delete this$1.visual;\n\n                    return defaultVisual;\n                }\n            });\n            this.addVisual();\n        } else {\n            BoxElement.prototype.renderVisual.call(this);\n        }\n    };\n\n    return LegendItem;\n}(BoxElement));\n\nexport default LegendItem;\n","\nimport { ChartElement, BoxElement, Box, TextBox, FloatElement } from '../../core';\nimport LegendLayout from './legend-layout';\nimport LegendItem from './legend-item';\n\nimport { TOP, RIGHT, BOTTOM, LEFT, CENTER, X, Y, BLACK } from '../../common/constants';\nimport { deepExtend, defined, getTemplate, getSpacing, inArray, setDefaultOptions } from '../../common';\n\nvar HORIZONTAL = \"horizontal\";\nvar POINTER = \"pointer\";\nvar CUSTOM = \"custom\";\n\nvar Legend = (function (ChartElement) {\n    function Legend(options, chartService) {\n        if ( chartService === void 0 ) chartService = {};\n\n        ChartElement.call(this, options);\n\n        this.chartService = chartService;\n\n        if (!inArray(this.options.position, [ TOP, RIGHT, BOTTOM, LEFT, CUSTOM ])) {\n            this.options.position = RIGHT;\n        }\n\n        this.createContainers();\n\n        this.createLegendTitle(options.title);\n\n        this.createItems();\n    }\n\n    if ( ChartElement ) Legend.__proto__ = ChartElement;\n    Legend.prototype = Object.create( ChartElement && ChartElement.prototype );\n    Legend.prototype.constructor = Legend;\n\n    Legend.prototype.createContainers = function createContainers () {\n        var options = this.options;\n        var position = options.position;\n        var userAlign = options.align;\n        var align = position;\n        var vAlign = CENTER;\n\n        if (position === CUSTOM) {\n            align = LEFT;\n        } else if (inArray(position, [ TOP, BOTTOM ])) {\n            if (userAlign === \"start\") {\n                align = LEFT;\n            } else if (userAlign === \"end\") {\n                align = RIGHT;\n            } else {\n                align = CENTER;\n            }\n            vAlign = position;\n        } else if (userAlign) {\n            if (userAlign === \"start\") {\n                vAlign = TOP;\n            } else if (userAlign === \"end\") {\n                vAlign = BOTTOM;\n            }\n        }\n\n        this.container = new BoxElement({\n            margin: options.margin,\n            padding: options.padding,\n            background: options.background,\n            border: options.border,\n            vAlign: vAlign,\n            align: align,\n            zIndex: options.zIndex,\n            shrinkToFit: true\n        });\n\n        if (this.hasTitle()) {\n            this.itemsContainer = new BoxElement({\n                vAlign: vAlign,\n                align: align,\n                zIndex: options.zIndex,\n                shrinkToFit: true\n            });\n        } else {\n            this.itemsContainer = this.container;\n        }\n\n        this.append(this.container);\n    };\n\n    Legend.prototype.createItems = function createItems () {\n        var chartService = this.getService();\n        var options = this.options;\n        var vertical = this.isVertical();\n        var innerElement = new LegendLayout({\n            vertical: vertical,\n            spacing: options.spacing,\n            rtl: chartService.rtl\n        }, chartService);\n        var items = options.items;\n\n        if (options.reverse) {\n            items = items.slice(0).reverse();\n        }\n\n        var count = items.length;\n\n        for (var i = 0; i < count; i++) {\n            var item = items[i];\n\n            innerElement.append(new LegendItem(deepExtend({}, {\n                markers: options.markers,\n                labels: options.labels,\n                rtl: chartService.rtl\n            }, options.item, item)));\n        }\n\n        innerElement.render();\n        this.itemsContainer.append(innerElement);\n    };\n\n    Legend.prototype.isVertical = function isVertical () {\n        var ref = this.options;\n        var orientation = ref.orientation;\n        var position = ref.position;\n        var vertical = (position === CUSTOM && orientation !== HORIZONTAL) ||\n               (defined(orientation) ? orientation !== HORIZONTAL : inArray(position, [ LEFT, RIGHT ]));\n\n        return vertical;\n    };\n\n    Legend.prototype.hasItems = function hasItems () {\n        return this.container.children[0].children.length > 0;\n    };\n\n    Legend.prototype.reflow = function reflow (targetBox) {\n        var options = this.options;\n        var legendBox = targetBox.clone();\n\n        if (!this.hasItems()) {\n            this.box = legendBox;\n            return;\n        }\n\n        if (options.position === CUSTOM) {\n            this.containerCustomReflow(legendBox);\n            this.box = legendBox;\n        } else {\n            this.containerReflow(legendBox);\n        }\n\n        if (this.hasTitle()) {\n            this.title.reflow(new Box(this.container.box.x1, this.title.box.y1, this.container.box.x2, this.title.box.y2));\n        }\n    };\n\n    Legend.prototype.containerReflow = function containerReflow (targetBox) {\n        var ref = this;\n        var options = ref.options;\n        var container = ref.container;\n        var position = options.position;\n        var width = options.width;\n        var height = options.height;\n        var pos = position === TOP || position === BOTTOM ? X : Y;\n        var vertical = this.isVertical();\n        var alignTarget = targetBox.clone();\n        var containerBox = targetBox.clone();\n\n        if (position === LEFT || position === RIGHT) {\n            containerBox.y1 = alignTarget.y1 = 0;\n        }\n\n        if (vertical && height) {\n            containerBox.y2 = containerBox.y1 + height;\n            containerBox.align(alignTarget, Y, container.options.vAlign);\n        } else if (!vertical && width) {\n            containerBox.x2 = containerBox.x1 + width;\n            containerBox.align(alignTarget, X, container.options.align);\n        }\n\n        container.reflow(containerBox);\n        containerBox = container.box;\n\n        var box = containerBox.clone();\n\n        if (options.offsetX || options.offsetY) {\n            containerBox.translate(options.offsetX, options.offsetY);\n            container.reflow(containerBox);\n        }\n\n        box[pos + 1] = targetBox[pos + 1];\n        box[pos + 2] = targetBox[pos + 2];\n\n        this.box = box;\n    };\n\n    Legend.prototype.containerCustomReflow = function containerCustomReflow (targetBox) {\n        var ref = this;\n        var options = ref.options;\n        var container = ref.container;\n        var offsetX = options.offsetX;\n        var offsetY = options.offsetY;\n        var width = options.width;\n        var height = options.height;\n        var vertical = this.isVertical();\n        var containerBox = targetBox.clone();\n\n        if (vertical && height) {\n            containerBox.y2 = containerBox.y1 + height;\n        } else if (!vertical && width) {\n            containerBox.x2 = containerBox.x1 + width;\n        }\n        container.reflow(containerBox);\n        containerBox = container.box;\n\n        container.reflow(new Box(\n            offsetX, offsetY,\n            offsetX + containerBox.width(), offsetY + containerBox.height()\n        ));\n    };\n\n    Legend.prototype.renderVisual = function renderVisual () {\n        if (this.hasItems()) {\n            ChartElement.prototype.renderVisual.call(this);\n        }\n    };\n\n    Legend.prototype.createLegendTitle = function createLegendTitle (title) {\n        var titleOptions = deepExtend({}, {\n            color: BLACK,\n            position: TOP,\n            align: CENTER\n        }, title);\n        var text = titleOptions.text;\n\n        if (!title || title.visible === false) {\n            return;\n        }\n\n        if (defined(titleOptions) && titleOptions.visible) {\n            var labelTemplate = getTemplate(titleOptions);\n            if (labelTemplate) {\n                text = labelTemplate({ text: text });\n            } else if (titleOptions.format) {\n                text = this.chartService.format.auto(titleOptions.format, text);\n            }\n        }\n\n        this.title = new TextBox(text, titleOptions);\n\n        this.createTitleLayout();\n\n        this.appendTitleLayoutContent();\n    };\n\n    Legend.prototype.createTitleLayout = function createTitleLayout () {\n        this.layout = new FloatElement({\n            vertical: true,\n            wrap: false\n        });\n\n        this.container.append(this.layout);\n    };\n\n    Legend.prototype.hasTitle = function hasTitle () {\n        return Boolean(this.options.title && this.options.title.visible !== false);\n    };\n\n    Legend.prototype.appendTitleLayoutContent = function appendTitleLayoutContent () {\n        var options = this.options;\n\n        if (options.title.position === BOTTOM) {\n            this.layout.append(this.itemsContainer);\n            this.layout.append(this.title);\n        } else {\n            this.layout.append(this.title);\n            this.layout.append(this.itemsContainer);\n        }\n    };\n\n    return Legend;\n}(ChartElement));\n\nsetDefaultOptions(Legend, {\n    position: RIGHT,\n    items: [],\n    offsetX: 0,\n    offsetY: 0,\n    margin: getSpacing(5),\n    padding: getSpacing(5),\n    border: {\n        color: BLACK,\n        width: 0\n    },\n    item: {\n        cursor: POINTER,\n        spacing: 6\n    },\n    spacing: 6,\n    background: \"\",\n    zIndex: 1,\n    markers: {\n        border: {\n            width: 0\n        },\n        width: 15,\n        height: 3,\n        type: \"rect\",\n        align: LEFT,\n        vAlign: CENTER\n    }\n});\n\nexport default Legend;\n","import filterSeriesByType from '../utils/filter-series-by-type';\nimport { Class } from '../../common';\nimport { TRENDLINE_SERIES } from '../constants';\n\nvar PlotAreaFactory = (function (Class) {\n    function PlotAreaFactory() {\n        Class.call(this);\n\n        this._registry = [];\n    }\n\n    if ( Class ) PlotAreaFactory.__proto__ = Class;\n    PlotAreaFactory.prototype = Object.create( Class && Class.prototype );\n    PlotAreaFactory.prototype.constructor = PlotAreaFactory;\n\n    PlotAreaFactory.prototype.register = function register (type, seriesTypes) {\n        this._registry.push({\n            type: type,\n            seriesTypes: seriesTypes\n        });\n    };\n\n    PlotAreaFactory.prototype.create = function create (srcSeries, options, chartService) {\n        var registry = this._registry;\n        var match = registry[0];\n        var series;\n\n        for (var idx = 0; idx < registry.length; idx++) {\n            var entry = registry[idx];\n            series = filterSeriesByType(srcSeries, entry.seriesTypes);\n            var trendlines = filterSeriesByType(srcSeries, TRENDLINE_SERIES);\n\n            if ((series.length - trendlines.length) > 0) {\n                match = entry;\n                break;\n            }\n        }\n\n        return new match.type(series, options, chartService);\n    };\n\n    return PlotAreaFactory;\n}(Class));\n\nPlotAreaFactory.current = new PlotAreaFactory();\n\nexport default PlotAreaFactory;\n","import { DomEventsBuilder } from '../services';\n\nimport { DateCategoryAxis, Point } from '../core';\n\nimport { MOUSEWHEEL_DELAY, MOUSEWHEEL, SELECT_START, SELECT, SELECT_END } from './constants';\n\nimport { LEFT, RIGHT, MIN_VALUE, MAX_VALUE, X } from '../common/constants';\nimport { addClass, Class, removeClass, eventCoordinates, deepExtend, elementStyles, eventElement, setDefaultOptions, limitValue, round, bindEvents, unbindEvents, mousewheelDelta, hasClasses } from '../common';\nimport { parseDate } from '../date-utils';\n\nvar ZOOM_ACCELERATION = 3;\nvar SELECTOR_HEIGHT_ADJUST = 0.1;\n\nfunction createDiv(classNames) {\n    var element = document.createElement(\"div\");\n    if (classNames) {\n        element.className = classNames;\n    }\n\n    return element;\n}\n\nfunction closestHandle(element) {\n    var current = element;\n    while (current && !hasClasses(current, \"k-handle\")) {\n        current = current.parentNode;\n    }\n\n    return current;\n}\n\nvar Selection = (function (Class) {\n    function Selection(chart, categoryAxis, options, observer) {\n        Class.call(this);\n\n        var chartElement = chart.element;\n\n        this.options = deepExtend({}, this.options, options);\n        this.chart = chart;\n        this.observer = observer;\n        this.chartElement = chartElement;\n        this.categoryAxis = categoryAxis;\n        this._dateAxis = this.categoryAxis instanceof DateCategoryAxis;\n\n        this.initOptions();\n\n        this.visible = this.options.visible && chartElement.offsetHeight;\n\n        if (this.visible) {\n            this.createElements();\n\n            this.set(this._index(this.options.from), this._index(this.options.to));\n\n            this.bindEvents();\n        }\n    }\n\n    if ( Class ) Selection.__proto__ = Class;\n    Selection.prototype = Object.create( Class && Class.prototype );\n    Selection.prototype.constructor = Selection;\n\n    Selection.prototype.onPane = function onPane (pane) {\n        return this.categoryAxis.pane === pane;\n    };\n\n    Selection.prototype.createElements = function createElements () {\n        var options = this.options;\n        var wrapper = this.wrapper = createDiv(\"k-selector k-pointer-events-none\");\n        elementStyles(wrapper, {\n            top: options.offset.top,\n            left: options.offset.left,\n            width: options.width,\n            height: options.height,\n            direction: 'ltr'\n        });\n\n        var selection = this.selection = createDiv(\"k-selection k-pointer-events-none\");\n\n        this.leftMask = createDiv(\"k-mask k-pointer-events-none\");\n        this.rightMask = createDiv(\"k-mask k-pointer-events-none\");\n\n        wrapper.appendChild(this.leftMask);\n        wrapper.appendChild(this.rightMask);\n        wrapper.appendChild(selection);\n\n        var body = this.body = createDiv(\"k-selection-bg k-pointer-events-none\");\n        selection.appendChild(body);\n\n        var leftHandle = this.leftHandle = createDiv(\"k-handle k-left-handle k-pointer-events-auto\");\n        var rightHandle = this.rightHandle = createDiv(\"k-handle k-right-handle k-pointer-events-auto\");\n        leftHandle.appendChild(createDiv());\n        rightHandle.appendChild(createDiv());\n\n        selection.appendChild(leftHandle);\n        selection.appendChild(rightHandle);\n\n        this.chartElement.appendChild(wrapper);\n        var selectionStyles = elementStyles(selection, [ \"borderLeftWidth\", \"borderRightWidth\", \"height\" ]);\n        var leftHandleHeight = elementStyles(leftHandle, \"height\").height;\n        var rightHandleHeight = elementStyles(rightHandle, \"height\").height;\n\n        options.selection = {\n            border: {\n                left: selectionStyles.borderLeftWidth,\n                right: selectionStyles.borderRightWidth\n            }\n        };\n\n        elementStyles(leftHandle, {\n            top: (selectionStyles.height - leftHandleHeight) / 2\n        });\n\n        elementStyles(rightHandle, {\n            top: (selectionStyles.height - rightHandleHeight) / 2\n        });\n\n        /* eslint no-self-assign: \"off\" */\n        wrapper.style.cssText = wrapper.style.cssText;\n    };\n\n    Selection.prototype.bindEvents = function bindEvents$1 () {\n        var obj;\n\n        if (this.options.mousewheel !== false) {\n            this._mousewheelHandler = this._mousewheel.bind(this);\n            bindEvents(this.chartElement, ( obj = {}, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj ));\n        }\n\n        this._domEvents = DomEventsBuilder.create(this.chartElement, {\n            stopPropagation: true, // applicable for the jQuery UserEvents\n            start: this._start.bind(this),\n            move: this._move.bind(this),\n            end: this._end.bind(this),\n            tap: this._tap.bind(this),\n            press: this._press.bind(this),\n            gesturestart: this._gesturestart.bind(this),\n            gesturechange: this._gesturechange.bind(this),\n            gestureend: this._gestureend.bind(this)\n        });\n    };\n\n    Selection.prototype.initOptions = function initOptions () {\n        var ref = this;\n        var options = ref.options;\n        var categoryAxis = ref.categoryAxis;\n        var box = categoryAxis.pane.chartsBox();\n        var intlService = this.chart.chartService.intl;\n\n        if (this._dateAxis) {\n            deepExtend(options, {\n                min: parseDate(intlService, options.min),\n                max: parseDate(intlService, options.max),\n                from: parseDate(intlService, options.from),\n                to: parseDate(intlService, options.to)\n            });\n        }\n\n        var ref$1 = elementStyles(this.chartElement, [ \"paddingLeft\", \"paddingTop\" ]);\n        var paddingLeft = ref$1.paddingLeft;\n        var paddingTop = ref$1.paddingTop;\n\n        this.options = deepExtend({}, {\n            width: box.width(),\n            height: box.height() + SELECTOR_HEIGHT_ADJUST, //workaround for sub-pixel hover on the paths in chrome\n            padding: {\n                left: paddingLeft,\n                top: paddingTop\n            },\n            offset: {\n                left: box.x1 + paddingLeft,\n                top: box.y1 + paddingTop\n            },\n            from: options.min,\n            to: options.max\n        }, options);\n    };\n\n    Selection.prototype.destroy = function destroy () {\n        var obj;\n\n        if (this._domEvents) {\n            this._domEvents.destroy();\n            delete this._domEvents;\n        }\n\n        clearTimeout(this._mwTimeout);\n        this._state = null;\n\n        if (this.wrapper) {\n            if (this._mousewheelHandler) {\n                unbindEvents(this.chartElement, ( obj = {}, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj ));\n                this._mousewheelHandler = null;\n            }\n\n            this.chartElement.removeChild(this.wrapper);\n            this.wrapper = null;\n        }\n    };\n\n    Selection.prototype._rangeEventArgs = function _rangeEventArgs (range) {\n\n        return {\n            axis: this.categoryAxis.options,\n            from: this._value(range.from),\n            to: this._value(range.to)\n        };\n    };\n\n    Selection.prototype._pointInPane = function _pointInPane (x, y) {\n        var paneBox = this.categoryAxis.pane.box;\n        var modelCoords = this.chart._toModelCoordinates(x, y);\n        return paneBox.containsPoint(modelCoords);\n    };\n\n    Selection.prototype._start = function _start (e) {\n        var options = this.options;\n        var target = eventElement(e);\n        if (this._state || !target) {\n            return;\n        }\n\n        var coords = eventCoordinates(e);\n        var inPane = this._pointInPane(coords.x, coords.y);\n        if (!inPane) {\n            return;\n        }\n\n        var handle = closestHandle(target);\n        var bodyRect = this.body.getBoundingClientRect();\n        var inBody = !handle && coords.x >= bodyRect.x && coords.x <= bodyRect.x + bodyRect.width &&\n                       coords.y >= bodyRect.y && coords.y <= bodyRect.y + bodyRect.height;\n\n        this.chart._unsetActivePoint();\n        this._state = {\n            moveTarget: handle,\n            startLocation: e.x ? e.x.location : 0,\n            inBody: inBody,\n            range: {\n                from: this._index(options.from),\n                to: this._index(options.to)\n            }\n        };\n\n        var args = this._rangeEventArgs({\n            from: this._index(options.from),\n            to: this._index(options.to)\n        });\n\n        if (this.trigger(SELECT_START, args)) {\n            this._state = null;\n        }\n    };\n\n    Selection.prototype._press = function _press (e) {\n        var handle;\n        if (this._state) {\n            handle = this._state.moveTarget;\n        } else {\n            handle = closestHandle(eventElement(e));\n        }\n        if (handle) {\n            addClass(handle, \"k-handle-active\");\n        }\n    };\n\n    Selection.prototype._move = function _move (e) {\n        if (!this._state) {\n            return;\n        }\n\n        var ref = this;\n        var state = ref._state;\n        var options = ref.options;\n        var categoryAxis = ref.categoryAxis;\n        var range = state.range;\n        var target = state.moveTarget;\n        var reverse = categoryAxis.options.reverse;\n        var from = this._index(options.from);\n        var to = this._index(options.to);\n        var min = this._index(options.min);\n        var max = this._index(options.max);\n        var delta = state.startLocation - e.x.location;\n        var oldRange = { from: range.from, to: range.to };\n        var span = range.to - range.from;\n        var scale = elementStyles(this.wrapper, \"width\").width / (categoryAxis.categoriesCount() - 1);\n        var offset = Math.round(delta / scale) * (reverse ? -1 : 1);\n\n        if (!target && !state.inBody) {\n            return;\n        }\n\n        var leftHandle = target && hasClasses(target, \"k-left-handle\");\n        var rightHandle = target && hasClasses(target, \"k-right-handle\");\n\n        if (state.inBody) {\n            range.from = Math.min(\n                Math.max(min, from - offset),\n                max - span\n            );\n            range.to = Math.min(\n                range.from + span,\n                max\n            );\n        } else if ((leftHandle && !reverse) || (rightHandle && reverse)) {\n            range.from = Math.min(\n                Math.max(min, from - offset),\n                max - 1\n            );\n            range.to = Math.max(range.from + 1, range.to);\n        } else if ((leftHandle && reverse) || (rightHandle && !reverse)) {\n            range.to = Math.min(\n                Math.max(min + 1, to - offset),\n                max\n            );\n            range.from = Math.min(range.to - 1, range.from);\n        }\n\n        if (range.from !== oldRange.from || range.to !== oldRange.to) {\n            this.move(range.from, range.to);\n            this.trigger(SELECT, this._rangeEventArgs(range));\n        }\n    };\n\n    Selection.prototype._end = function _end () {\n        if (this._state) {\n            var moveTarget = this._state.moveTarget;\n            if (moveTarget) {\n                removeClass(moveTarget, \"k-handle-active\");\n            }\n\n            var range = this._state.range;\n            this.set(range.from, range.to);\n            this.trigger(SELECT_END, this._rangeEventArgs(range));\n\n            delete this._state;\n        }\n    };\n\n    Selection.prototype._tap = function _tap (e) {\n        var ref = this;\n        var options = ref.options;\n        var categoryAxis = ref.categoryAxis;\n        var coords = this.chart._eventCoordinates(e);\n        var categoryIx = categoryAxis.pointCategoryIndex(new Point(coords.x, categoryAxis.box.y1));\n        var from = this._index(options.from);\n        var to = this._index(options.to);\n        var min = this._index(options.min);\n        var max = this._index(options.max);\n        var span = to - from;\n        var mid = from + span / 2;\n        var range = {};\n        var rightClick = e.event.which === 3;\n        var offset = Math.round(mid - categoryIx);\n\n        if (this._state || rightClick) {\n            return;\n        }\n\n\n        this.chart._unsetActivePoint();\n\n        if (!categoryAxis.options.justified) {\n            offset--;\n        }\n\n        range.from = Math.min(\n            Math.max(min, from - offset),\n            max - span\n        );\n\n        range.to = Math.min(range.from + span, max);\n\n        this._start(e);\n\n        if (this._state) {\n            this._state.range = range;\n            this.trigger(SELECT, this._rangeEventArgs(range));\n            this._end();\n        }\n    };\n\n    Selection.prototype._mousewheel = function _mousewheel (e) {\n        var this$1 = this;\n\n        var delta = mousewheelDelta(e);\n\n        this._start(e);\n\n        if (this._state) {\n            var range = this._state.range;\n\n            e.preventDefault();\n            e.stopPropagation();\n\n            if (Math.abs(delta) > 1) {\n                delta *= ZOOM_ACCELERATION;\n            }\n\n            if (this.options.mousewheel.reverse) {\n                delta *= -1;\n            }\n\n            if (this.expand(delta)) {\n                this.trigger(SELECT, {\n                    axis: this.categoryAxis.options,\n                    delta: delta,\n                    originalEvent: e,\n                    from: this._value(range.from),\n                    to: this._value(range.to)\n                });\n            }\n\n            if (this._mwTimeout) {\n                clearTimeout(this._mwTimeout);\n            }\n\n            this._mwTimeout = setTimeout(function () {\n                this$1._end();\n            }, MOUSEWHEEL_DELAY);\n        }\n    };\n\n    Selection.prototype._gesturestart = function _gesturestart (e) {\n        var options = this.options;\n        var touch = e.touches[0];\n        var inPane = this._pointInPane(touch.pageX, touch.pageY);\n\n        if (!inPane) {\n            return;\n        }\n\n        this._state = {\n            range: {\n                from: this._index(options.from),\n                to: this._index(options.to)\n            }\n        };\n        var args = this._rangeEventArgs(this._state.range);\n\n        if (this.trigger(SELECT_START, args)) {\n            this._state = null;\n        } else {\n            e.preventDefault();\n        }\n    };\n\n    Selection.prototype._gestureend = function _gestureend () {\n        if (this._state) {\n            this.trigger(SELECT_END, this._rangeEventArgs(this._state.range));\n            delete this._state;\n        }\n    };\n\n    Selection.prototype._gesturechange = function _gesturechange (e) {\n        if (!this._state) {\n            return;\n        }\n\n        var ref = this;\n        var chart = ref.chart;\n        var state = ref._state;\n        var options = ref.options;\n        var categoryAxis = ref.categoryAxis;\n        var range = state.range;\n        var p0 = chart._toModelCoordinates(e.touches[0].x.location).x;\n        var p1 = chart._toModelCoordinates(e.touches[1].x.location).x;\n        var left = Math.min(p0, p1);\n        var right = Math.max(p0, p1);\n\n        e.preventDefault();\n\n        range.from = categoryAxis.pointCategoryIndex(new Point(left)) || options.min;\n\n        range.to = categoryAxis.pointCategoryIndex(new Point(right)) || options.max;\n\n        this.move(range.from, range.to);\n\n        this.trigger(SELECT, this._rangeEventArgs(range));\n    };\n\n    Selection.prototype._index = function _index (value) {\n        var index = value;\n\n        if (value instanceof Date) {\n            index = this.categoryAxis.categoryIndex(value);\n        }\n\n        return index;\n    };\n\n    Selection.prototype._value = function _value (index) {\n        var value = index;\n        if (this._dateAxis) {\n            value = this.categoryAxis.categoryAt(index);\n            if (value > this.options.max) {\n                value = this.options.max;\n            }\n        }\n\n        return value;\n    };\n\n    Selection.prototype._slot = function _slot (value) {\n        var categoryAxis = this.categoryAxis;\n        var index = this._index(value);\n\n        return categoryAxis.getSlot(index, index, true);\n    };\n\n    Selection.prototype.move = function move (from, to) {\n        var options = this.options;\n        var reverse = this.categoryAxis.options.reverse;\n        var offset = options.offset;\n        var padding = options.padding;\n        var border = options.selection.border;\n        var left = reverse ? to : from;\n        var right = reverse ? from : to;\n        var edge = 'x' + (reverse ? 2 : 1);\n\n        var box = this._slot(left);\n        var leftMaskWidth = round(box[edge] - offset.left + padding.left);\n\n        elementStyles(this.leftMask, {\n            width: leftMaskWidth\n        });\n        elementStyles(this.selection, {\n            left: leftMaskWidth\n        });\n\n        box = this._slot(right);\n\n        var rightMaskWidth = round(options.width - (box[edge] - offset.left + padding.left));\n        elementStyles(this.rightMask, {\n            width: rightMaskWidth\n        });\n\n        var distance = options.width - rightMaskWidth;\n        if (distance !== options.width) {\n            distance += border.right;\n        }\n\n        elementStyles(this.rightMask, {\n            left: distance\n        });\n        elementStyles(this.selection, {\n            width: Math.max(options.width - (leftMaskWidth + rightMaskWidth) - border.right, 0)\n        });\n    };\n\n    Selection.prototype.set = function set (from, to) {\n        var options = this.options;\n        var min = this._index(options.min);\n        var max = this._index(options.max);\n        var fromValue = limitValue(this._index(from), min, max);\n        var toValue = limitValue(this._index(to), fromValue + 1, max);\n\n        if (options.visible) {\n            this.move(fromValue, toValue);\n        }\n\n        options.from = this._value(fromValue);\n        options.to = this._value(toValue);\n    };\n\n    Selection.prototype.expand = function expand (delta) {\n        var options = this.options;\n        var min = this._index(options.min);\n        var max = this._index(options.max);\n        var zDir = options.mousewheel.zoom;\n        var from = this._index(options.from);\n        var to = this._index(options.to);\n        var range = { from: from, to: to };\n        var oldRange = deepExtend({}, range);\n\n        if (this._state) {\n            range = this._state.range;\n        }\n\n        if (zDir !== RIGHT) {\n            range.from = limitValue(\n                limitValue(from - delta, 0, to - 1),\n                min, max\n            );\n        }\n\n        if (zDir !== LEFT) {\n            range.to = limitValue(\n                limitValue(to + delta, range.from + 1, max),\n                min,\n                max\n            );\n        }\n\n        if (range.from !== oldRange.from || range.to !== oldRange.to) {\n            this.set(range.from, range.to);\n            return true;\n        }\n    };\n\n    Selection.prototype.zoom = function zoom (delta, coords) {\n        var options = this.options;\n        var min = this._index(options.min);\n        var max = this._index(options.max);\n        var from = this._index(options.from);\n        var to = this._index(options.to);\n        var range = { from: from, to: to };\n        var oldRange = deepExtend({}, range);\n\n        var ref = this.categoryAxis.options;\n        var reverse = ref.reverse;\n        var origin = X + (reverse ? '2' : '1');\n        var lineBox = this.categoryAxis.lineBox();\n        var relative = Math.abs(lineBox[origin] - coords[X]);\n        var size = lineBox.width();\n        var position = round(relative / size, 2);\n        var minDelta = round(position * delta);\n        var maxDelta = round((1 - position) * delta);\n\n        if (this._state) {\n            range = this._state.range;\n        }\n\n        range.from = limitValue(\n            limitValue(from - minDelta, 0, to - 1),\n            min, max\n        );\n\n        range.to = limitValue(\n            limitValue(to + maxDelta, range.from + 1, max),\n            min,\n            max\n        );\n\n        if (range.from !== oldRange.from || range.to !== oldRange.to) {\n            this.set(range.from, range.to);\n            return true;\n        }\n    };\n\n    Selection.prototype.trigger = function trigger (name, args) {\n        return (this.observer || this.chart).trigger(name, args);\n    };\n\n    return Selection;\n}(Class));\n\nsetDefaultOptions(Selection, {\n    visible: true,\n    mousewheel: {\n        zoom: \"both\"\n    },\n    min: MIN_VALUE,\n    max: MAX_VALUE\n});\n\nexport default Selection;\n","import BaseTooltip from './base-tooltip';\n\nimport { deepExtend } from '../../common';\n\nvar Tooltip = (function (BaseTooltip) {\n    function Tooltip () {\n        BaseTooltip.apply(this, arguments);\n    }\n\n    if ( BaseTooltip ) Tooltip.__proto__ = BaseTooltip;\n    Tooltip.prototype = Object.create( BaseTooltip && BaseTooltip.prototype );\n    Tooltip.prototype.constructor = Tooltip;\n\n    Tooltip.prototype.show = function show (point) {\n        if (!point || !point.tooltipAnchor || (this._current && this._current === point)) {\n            return;\n        }\n\n        var options = deepExtend({}, this.options, point.options.tooltip);\n        var anchor = point.tooltipAnchor();\n\n        if (anchor) {\n            this._current = point;\n            BaseTooltip.prototype.show.call(this, {\n                point: point,\n                anchor: anchor\n            }, options, point);\n        } else {\n            this.hide();\n        }\n    };\n\n    Tooltip.prototype.hide = function hide () {\n        delete this._current;\n        BaseTooltip.prototype.hide.call(this);\n    };\n\n    return Tooltip;\n}(BaseTooltip));\n\nexport default Tooltip;","import BaseTooltip from './base-tooltip';\nimport { Point } from '../../core';\n\nimport { grep, setDefaultOptions } from '../../common';\n\nvar SharedTooltip = (function (BaseTooltip) {\n    function SharedTooltip(plotArea, options) {\n        BaseTooltip.call(this, plotArea.chartService, options);\n\n        this.plotArea = plotArea;\n        this.formatService = plotArea.chartService.format;\n    }\n\n    if ( BaseTooltip ) SharedTooltip.__proto__ = BaseTooltip;\n    SharedTooltip.prototype = Object.create( BaseTooltip && BaseTooltip.prototype );\n    SharedTooltip.prototype.constructor = SharedTooltip;\n\n    SharedTooltip.prototype.showAt = function showAt (points, coords) {\n        var tooltipPoints = grep(points, function(point) {\n            var tooltip = point.series.tooltip;\n            var excluded = tooltip && tooltip.visible === false;\n\n            return !excluded;\n        });\n\n        if (tooltipPoints.length > 0) {\n            var point = tooltipPoints[0];\n            var slot = this.plotArea.categoryAxis.getSlot(point.categoryIx);\n\n            var anchor = coords ? this._slotAnchor(coords, slot) : this._defaultAnchor(point, slot);\n\n            this.show({\n                anchor: anchor,\n                shared: true,\n                points: points,\n                category: point.category,\n                categoryText: this.formatService.auto(this.options.categoryFormat, point.category),\n                series: this.plotArea.series\n            }, this.options);\n        }\n    };\n\n    SharedTooltip.prototype._slotAnchor = function _slotAnchor (point, slot) {\n        var axis = this.plotArea.categoryAxis;\n        var align = {\n            horizontal: \"left\",\n            vertical: \"center\"\n        };\n\n        if (!axis.options.vertical) {\n            point.x = slot.center().x;\n        }\n\n        return {\n            point: point,\n            align: align\n        };\n    };\n\n    SharedTooltip.prototype._defaultAnchor = function _defaultAnchor (point, slot) {\n        var box = point.owner.pane.chartsBox();\n        var vertical = this.plotArea.categoryAxis.options.vertical;\n        var center = box.center();\n        var slotCenter = slot.center();\n        var align = {\n            horizontal: \"center\",\n            vertical: \"center\"\n        };\n\n        var centerPoint;\n        if (vertical) {\n            centerPoint = new Point(center.x, slotCenter.y);\n        } else {\n            centerPoint = new Point(slotCenter.x, center.y);\n        }\n\n        return {\n            point: centerPoint,\n            align: align\n        };\n    };\n\n    return SharedTooltip;\n}(BaseTooltip));\n\nsetDefaultOptions(SharedTooltip, {\n    categoryFormat: '{0:d}'\n});\n\nexport default SharedTooltip;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { INITIAL_ANIMATION_DURATION, BAR, START_SCALE } from '../constants';\n\nimport { X, Y } from '../../common/constants';\nimport { interpolateValue, setDefaultOptions } from '../../common';\n\nvar BarChartAnimation = (function (superclass) {\n    function BarChartAnimation () {\n        superclass.apply(this, arguments);\n    }\n\n    if ( superclass ) BarChartAnimation.__proto__ = superclass;\n    BarChartAnimation.prototype = Object.create( superclass && superclass.prototype );\n    BarChartAnimation.prototype.constructor = BarChartAnimation;\n\n    BarChartAnimation.prototype.setup = function setup () {\n        var ref = this;\n        var element = ref.element;\n        var options = ref.options;\n        var bbox = element.bbox();\n\n        if (bbox) {\n            this.origin = options.origin;\n            var axis = options.vertical ? Y : X;\n\n            var fromScale = this.fromScale = new geom.Point(1, 1);\n            fromScale[axis] = START_SCALE;\n\n            element.transform(geom.transform()\n                .scale(fromScale.x, fromScale.y)\n            );\n        } else {\n            this.abort();\n        }\n    };\n\n    BarChartAnimation.prototype.step = function step (pos) {\n        var scaleX = interpolateValue(this.fromScale.x, 1, pos);\n        var scaleY = interpolateValue(this.fromScale.y, 1, pos);\n\n        this.element.transform(geom.transform()\n            .scale(scaleX, scaleY, this.origin)\n        );\n    };\n\n    BarChartAnimation.prototype.abort = function abort () {\n        superclass.prototype.abort.call(this);\n        this.element.transform(null);\n    };\n\n    return BarChartAnimation;\n}(draw.Animation));\n\nsetDefaultOptions(BarChartAnimation, {\n    duration: INITIAL_ANIMATION_DURATION\n});\n\ndraw.AnimationFactory.current.register(BAR, BarChartAnimation);\n\nexport default BarChartAnimation;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { START_SCALE, BUBBLE } from '../constants';\n\nimport { setDefaultOptions } from '../../common';\n\nvar BubbleAnimation = (function (superclass) {\n    function BubbleAnimation () {\n        superclass.apply(this, arguments);\n    }\n\n    if ( superclass ) BubbleAnimation.__proto__ = superclass;\n    BubbleAnimation.prototype = Object.create( superclass && superclass.prototype );\n    BubbleAnimation.prototype.constructor = BubbleAnimation;\n\n    BubbleAnimation.prototype.setup = function setup () {\n        var center = this.center = this.element.bbox().center();\n        this.element.transform(geom.transform()\n            .scale(START_SCALE, START_SCALE, center)\n        );\n    };\n\n    BubbleAnimation.prototype.step = function step (pos) {\n        this.element.transform(geom.transform()\n            .scale(pos, pos, this.center)\n        );\n    };\n\n    return BubbleAnimation;\n}(draw.Animation));\n\nsetDefaultOptions(BubbleAnimation, {\n    easing: \"easeOutElastic\"\n});\n\ndraw.AnimationFactory.current.register(BUBBLE, BubbleAnimation);\n\nexport default BubbleAnimation;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { FADEIN } from '../constants';\n\nimport { setDefaultOptions } from '../../common';\n\nvar FadeInAnimation = (function (superclass) {\n    function FadeInAnimation () {\n        superclass.apply(this, arguments);\n    }\n\n    if ( superclass ) FadeInAnimation.__proto__ = superclass;\n    FadeInAnimation.prototype = Object.create( superclass && superclass.prototype );\n    FadeInAnimation.prototype.constructor = FadeInAnimation;\n\n    FadeInAnimation.prototype.setup = function setup () {\n        this.fadeTo = this.element.opacity();\n        this.element.opacity(0);\n    };\n\n    FadeInAnimation.prototype.step = function step (pos) {\n        this.element.opacity(pos * this.fadeTo);\n    };\n\n    return FadeInAnimation;\n}(draw.Animation));\n\nsetDefaultOptions(FadeInAnimation, {\n    duration: 200,\n    easing: \"linear\"\n});\n\ndraw.AnimationFactory.current.register(FADEIN, FadeInAnimation);\n\nexport default FadeInAnimation;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { START_SCALE, INITIAL_ANIMATION_DURATION, PIE } from '../constants';\n\nimport { setDefaultOptions } from '../../common';\n\nvar PieAnimation = (function (superclass) {\n    function PieAnimation () {\n        superclass.apply(this, arguments);\n    }\n\n    if ( superclass ) PieAnimation.__proto__ = superclass;\n    PieAnimation.prototype = Object.create( superclass && superclass.prototype );\n    PieAnimation.prototype.constructor = PieAnimation;\n\n    PieAnimation.prototype.setup = function setup () {\n        this.element.transform(geom.transform()\n            .scale(START_SCALE, START_SCALE, this.options.center)\n        );\n    };\n\n    PieAnimation.prototype.step = function step (pos) {\n        this.element.transform(geom.transform()\n            .scale(pos, pos, this.options.center)\n        );\n    };\n\n    return PieAnimation;\n}(draw.Animation));\n\nsetDefaultOptions(PieAnimation, {\n    easing: \"easeOutElastic\",\n    duration: INITIAL_ANIMATION_DURATION\n});\n\ndraw.AnimationFactory.current.register(PIE, PieAnimation);\n\nexport default PieAnimation;","import ScatterChart from './scatter-chart';\nimport LineChartMixin from '../mixins/line-chart-mixin';\nimport LineSegment from '../line-chart/line-segment';\nimport SplineSegment from '../line-chart/spline-segment';\n\nimport { SMOOTH, ZERO } from '../constants';\n\nimport hasValue from '../utils/has-value';\n\nimport { deepExtend } from '../../common';\n\nvar ScatterLineChart = (function (ScatterChart) {\n    function ScatterLineChart () {\n        ScatterChart.apply(this, arguments);\n    }\n\n    if ( ScatterChart ) ScatterLineChart.__proto__ = ScatterChart;\n    ScatterLineChart.prototype = Object.create( ScatterChart && ScatterChart.prototype );\n    ScatterLineChart.prototype.constructor = ScatterLineChart;\n\n    ScatterLineChart.prototype.render = function render () {\n        ScatterChart.prototype.render.call(this);\n\n        this.renderSegments();\n    };\n\n    ScatterLineChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx) {\n        var style = currentSeries.style;\n        var pointType;\n\n        if (style === SMOOTH) {\n            pointType = SplineSegment;\n        } else {\n            pointType = LineSegment;\n        }\n\n        return new pointType(linePoints, currentSeries, seriesIx);\n    };\n\n    ScatterLineChart.prototype.animationPoints = function animationPoints () {\n        var points = ScatterChart.prototype.animationPoints.call(this);\n        return points.concat(this._segments);\n    };\n\n    ScatterLineChart.prototype.createMissingValue = function createMissingValue (value, missingValues) {\n        if (missingValues === ZERO) {\n            var missingValue = {\n                x: value.x,\n                y: value.y\n            };\n            if (!hasValue(missingValue.x)) {\n                missingValue.x = 0;\n            }\n            if (!hasValue(missingValue.y)) {\n                missingValue.y = 0;\n            }\n            return missingValue;\n        }\n    };\n\n    return ScatterLineChart;\n}(ScatterChart));\n\ndeepExtend(ScatterLineChart.prototype, LineChartMixin);\n\nexport default ScatterLineChart;","var scatterValueGetter = function (fieldName) { return function (ref) {\n        var valueFields = ref.valueFields;\n\n        return ({ xValue: valueFields.x, yValue: valueFields[fieldName] });\n; }    };\n\nexport default scatterValueGetter;\n","import autoMajorUnit from '../../core/utils/auto-major-unit';\nimport { valueOrDefault } from '../../common';\nimport calculateSlope from './calculate-slope';\nimport scatterValueGetter from './scatter-value-getter';\n\nfunction scatterLinearTrendLine(context) {\n    var options = context.options;\n    var seriesValues = context.seriesValues;\n\n    var data = getData({ seriesValues: seriesValues, options: options });\n    if (data) {\n        return Object.assign({}, options,\n\n            {type: 'scatterLine',\n            data: data});\n    }\n\n    return null;\n}\n\nfunction getData(ref) {\n    var seriesValues = ref.seriesValues;\n    var options = ref.options;\n\n    var ref$1 = calculateSlope(seriesValues(), scatterValueGetter(options.field));\n    var slope = ref$1.slope;\n    var intercept = ref$1.intercept;\n    var count = ref$1.count;\n    var xMin = ref$1.xMin;\n    var xMax = ref$1.xMax;\n\n    if (count > 0) {\n        var data = [];\n        var forecast = (options.trendline || {}).forecast;\n        if (forecast) {\n            if (forecast.before > 0) {\n                xMin -= forecast.before;\n            }\n\n            if (forecast.after > 0) {\n                xMax += forecast.after;\n            }\n        }\n\n        var samplingInterval = (options.trendline || {}).samplingInterval;\n        var delta = valueOrDefault(samplingInterval,  autoMajorUnit(xMin, xMax) / 10);\n        if (samplingInterval <= 0) {\n            delta = xMax - xMin;\n        }\n\n        for (var x = xMin; x <= xMax; x += delta) {\n            data.push([ x,\n                slope * x + intercept\n            ]);\n        }\n\n        return data;\n    }\n\n    return null;\n}\n\nexport default scatterLinearTrendLine;\n","import calculateMovingAverage from './calculate-moving-average';\nimport { MIN_MOVING_AVERAGE_PERIOD } from '../constants';\nimport scatterValueGetter from './scatter-value-getter';\n\nfunction scatterMovingAverageTrendline(context) {\n    var options = context.options;\n\n    var data = getData(context);\n    if (data) {\n        return Object.assign({}, options,\n\n            {type: 'scatterLine',\n            data: data});\n    }\n\n    return null;\n}\n\nfunction getData(ref) {\n    var options = ref.options;\n    var seriesValues = ref.seriesValues;\n\n    var period = (options.trendline || {}).period || MIN_MOVING_AVERAGE_PERIOD;\n    var range = { before: period, after: period };\n    var data = calculateMovingAverage(seriesValues(range), scatterValueGetter(options.field), period);\n\n    if (data.length > 0) {\n        return data;\n    }\n\n    return null;\n}\n\nexport default scatterMovingAverageTrendline;\n","import scatterLinearTrendLine from './scatter-linear-trendline';\nimport scatterMovingAverageTrendline from './scatter-moving-average';\nimport { TRENDLINE_LINEAR, TRENDLINE_MOVING_AVERAGE } from '../constants';\n\nvar scatterRegistry = {};\nscatterRegistry[TRENDLINE_LINEAR] = scatterLinearTrendLine;\nscatterRegistry[TRENDLINE_MOVING_AVERAGE] = scatterMovingAverageTrendline;\n\nexport default scatterRegistry;\n","import PlotAreaBase from './plotarea-base';\nimport AxisGroupRangeTracker from '../axis-group-range-tracker';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\nimport ScatterChart from '../scatter-charts/scatter-chart';\nimport ScatterLineChart from '../scatter-charts/scatter-line-chart';\nimport BubbleChart from '../bubble-chart/bubble-chart';\nimport SeriesBinder from '../series-binder';\nimport trendlineFactory from '../trendlines/trendline-factory';\nimport scatterTrendlineRegistry from '../trendlines/scatter-trendline-registry';\n\nimport { NumericAxis, LogarithmicAxis, DateValueAxis, Point } from '../../core';\n\nimport { filterSeriesByType, equalsIgnoreCase, singleItemOrArray } from '../utils';\n\nimport { SCATTER, SCATTER_LINE, BUBBLE, LOGARITHMIC } from '../constants';\n\nimport { DATE } from '../../common/constants';\nimport { deepExtend, eventElement, grep, inArray, setDefaultOptions } from '../../common';\n\nvar XYPlotArea = (function (PlotAreaBase) {\n    function XYPlotArea () {\n        PlotAreaBase.apply(this, arguments);\n    }\n\n    if ( PlotAreaBase ) XYPlotArea.__proto__ = PlotAreaBase;\n    XYPlotArea.prototype = Object.create( PlotAreaBase && PlotAreaBase.prototype );\n    XYPlotArea.prototype.constructor = XYPlotArea;\n\n    XYPlotArea.prototype.initFields = function initFields () {\n        this.namedXAxes = {};\n        this.namedYAxes = {};\n\n        this.xAxisRangeTracker = new AxisGroupRangeTracker();\n        this.yAxisRangeTracker = new AxisGroupRangeTracker();\n    };\n\n    XYPlotArea.prototype.render = function render (panes) {\n        var this$1 = this;\n        if ( panes === void 0 ) panes = this.panes;\n\n        this.series = [].concat( this.originalSeries );\n        this.createTrendlineSeries();\n\n        var seriesByPane = this.groupSeriesByPane();\n        for (var i = 0; i < panes.length; i++) {\n            var pane = panes[i];\n            var paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n            this$1.addToLegend(paneSeries);\n            var filteredSeries = this$1.filterVisibleSeries(paneSeries);\n\n            if (!filteredSeries) {\n                continue;\n            }\n\n            this$1.createScatterChart(\n                filterSeriesByType(filteredSeries, SCATTER),\n                pane\n            );\n\n            this$1.createScatterLineChart(\n                filterSeriesByType(filteredSeries, SCATTER_LINE),\n                pane\n            );\n\n            this$1.createBubbleChart(\n                filterSeriesByType(filteredSeries, BUBBLE),\n                pane\n            );\n        }\n\n        this.createAxes(panes);\n    };\n\n    XYPlotArea.prototype.appendChart = function appendChart (chart, pane) {\n        this.xAxisRangeTracker.update(chart.xAxisRanges);\n        this.yAxisRangeTracker.update(chart.yAxisRanges);\n\n        PlotAreaBase.prototype.appendChart.call(this, chart, pane);\n    };\n\n    XYPlotArea.prototype.removeAxis = function removeAxis (axis) {\n        var axisName = axis.options.name;\n\n        PlotAreaBase.prototype.removeAxis.call(this, axis);\n\n        if (axis.options.vertical) {\n            this.yAxisRangeTracker.reset(axisName);\n            delete this.namedYAxes[axisName];\n        } else {\n            this.xAxisRangeTracker.reset(axisName);\n            delete this.namedXAxes[axisName];\n        }\n\n        if (axis === this.axisX) {\n            delete this.axisX;\n        }\n\n        if (axis === this.axisY) {\n            delete this.axisY;\n        }\n    };\n\n    // TODO: Refactor, optionally use series.pane option\n    XYPlotArea.prototype.seriesPaneName = function seriesPaneName (series) {\n        var options = this.options;\n        var xAxisName = series.xAxis;\n        var xAxisOptions = [].concat(options.xAxis);\n        var xAxis = grep(xAxisOptions, function(a) { return a.name === xAxisName; })[0];\n        var yAxisName = series.yAxis;\n        var yAxisOptions = [].concat(options.yAxis);\n        var yAxis = grep(yAxisOptions, function(a) { return a.name === yAxisName; })[0];\n        var panes = options.panes || [ {} ];\n        var defaultPaneName = panes[0].name || \"default\";\n        var paneName = (xAxis || {}).pane || (yAxis || {}).pane || defaultPaneName;\n\n        return paneName;\n    };\n\n    XYPlotArea.prototype.createScatterChart = function createScatterChart (series, pane) {\n        if (series.length > 0) {\n            this.appendChart(\n                new ScatterChart(this, { series: series, clip: pane.options.clip }),\n                pane\n            );\n        }\n    };\n\n    XYPlotArea.prototype.createScatterLineChart = function createScatterLineChart (series, pane) {\n        if (series.length > 0) {\n            this.appendChart(\n                new ScatterLineChart(this, { series: series, clip: pane.options.clip }),\n                pane\n            );\n        }\n    };\n\n    XYPlotArea.prototype.createBubbleChart = function createBubbleChart (series, pane) {\n        if (series.length > 0) {\n            this.appendChart(\n                new BubbleChart(this, { series: series, clip: pane.options.clip }),\n                pane\n            );\n        }\n    };\n\n    XYPlotArea.prototype.createXYAxis = function createXYAxis (options, vertical, axisIndex) {\n        var axisName = options.name;\n        var namedAxes = vertical ? this.namedYAxes : this.namedXAxes;\n        var tracker = vertical ? this.yAxisRangeTracker : this.xAxisRangeTracker;\n        var axisOptions = deepExtend({ reverse: !vertical && this.chartService.rtl }, options, { vertical: vertical });\n        var isLog = equalsIgnoreCase(axisOptions.type, LOGARITHMIC);\n        var defaultRange = tracker.query();\n        var defaultAxisRange = isLog ? { min: 0.1, max: 1 } : { min: 0, max: 1 };\n        var range = tracker.query(axisName) || defaultRange || defaultAxisRange;\n        var typeSamples = [ axisOptions.min, axisOptions.max ];\n        var series = this.series;\n\n        for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n            var currentSeries = series[seriesIx];\n            var seriesAxisName = currentSeries[vertical ? \"yAxis\" : \"xAxis\"];\n            if ((seriesAxisName === axisOptions.name) || (axisIndex === 0 && !seriesAxisName)) {\n                var firstPointValue = SeriesBinder.current.bindPoint(currentSeries, 0).valueFields;\n                typeSamples.push(firstPointValue[vertical ? \"y\" : \"x\"]);\n\n                break;\n            }\n        }\n\n        if (axisIndex === 0 && defaultRange) {\n            range.min = Math.min(range.min, defaultRange.min);\n            range.max = Math.max(range.max, defaultRange.max);\n        }\n\n        var inferredDate;\n\n        for (var i = 0; i < typeSamples.length; i++) {\n            if (typeSamples[i] instanceof Date) {\n                inferredDate = true;\n                break;\n            }\n        }\n\n        var axisType;\n        if (equalsIgnoreCase(axisOptions.type, DATE) || (!axisOptions.type && inferredDate)) {\n            axisType = DateValueAxis;\n        } else if (isLog) {\n            axisType = LogarithmicAxis;\n        } else {\n            axisType = NumericAxis;\n        }\n\n        var axis = new axisType(range.min, range.max, axisOptions, this.chartService);\n        axis.axisIndex = axisIndex;\n\n        if (axisName) {\n            if (namedAxes[axisName]) {\n                throw new Error(((vertical ? \"Y\" : \"X\") + \" axis with name \" + axisName + \" is already defined\"));\n            }\n            namedAxes[axisName] = axis;\n        }\n\n        this.appendAxis(axis);\n\n        return axis;\n    };\n\n    XYPlotArea.prototype.createAxes = function createAxes (panes) {\n        var this$1 = this;\n\n        var options = this.options;\n        var xAxesOptions = [].concat(options.xAxis);\n        var xAxes = [];\n        var yAxesOptions = [].concat(options.yAxis);\n        var yAxes = [];\n\n        for (var idx = 0; idx < xAxesOptions.length; idx++) {\n            var axisPane = this$1.findPane(xAxesOptions[idx].pane);\n            if (inArray(axisPane, panes)) {\n                xAxes.push(this$1.createXYAxis(xAxesOptions[idx], false, idx));\n            }\n        }\n\n        for (var idx$1 = 0; idx$1 < yAxesOptions.length; idx$1++) {\n            var axisPane$1 = this$1.findPane(yAxesOptions[idx$1].pane);\n            if (inArray(axisPane$1, panes)) {\n                yAxes.push(this$1.createXYAxis(yAxesOptions[idx$1], true, idx$1));\n            }\n        }\n\n        this.axisX = this.axisX || xAxes[0];\n        this.axisY = this.axisY || yAxes[0];\n    };\n\n    XYPlotArea.prototype._dispatchEvent = function _dispatchEvent (chart, e, eventType) {\n        var coords = chart._eventCoordinates(e);\n        var point = new Point(coords.x, coords.y);\n        var allAxes = this.axes;\n        var length = allAxes.length;\n        var xValues = [];\n        var yValues = [];\n\n        for (var i = 0; i < length; i++) {\n            var axis = allAxes[i];\n            var values = axis.options.vertical ? yValues : xValues;\n            var currentValue = axis.getValue(point);\n            if (currentValue !== null) {\n                values.push(currentValue);\n            }\n        }\n\n        if (xValues.length > 0 && yValues.length > 0) {\n            chart.trigger(eventType, {\n                element: eventElement(e),\n                originalEvent: e,\n                x: singleItemOrArray(xValues),\n                y: singleItemOrArray(yValues)\n            });\n        }\n    };\n\n    XYPlotArea.prototype.updateAxisOptions = function updateAxisOptions$1 (axis, options) {\n        var vertical = axis.options.vertical;\n        var axes = this.groupAxes(this.panes);\n        var index = (vertical ? axes.y : axes.x).indexOf(axis);\n\n        updateAxisOptions(this.options, index, vertical, options);\n        updateAxisOptions(this.originalOptions, index, vertical, options);\n    };\n\n    XYPlotArea.prototype.trendlineFactory = function trendlineFactory$1 (options, series) {\n        var seriesValues = this.seriesValues.bind(this, series.index);\n\n        var trendline = trendlineFactory(scatterTrendlineRegistry, options.type, {\n            options: options,\n            seriesValues: seriesValues\n        });\n\n        if (trendline) {\n            // Inherit settings\n            trendline.xAxis = series.xAxis;\n            trendline.yAxis = series.yAxis;\n        }\n\n        return trendline;\n    };\n\n    XYPlotArea.prototype.seriesValues = function seriesValues (seriesIx) {\n        var this$1 = this;\n\n        var result = [];\n        var currentSeries = this.series[seriesIx];\n\n        for (var pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n            var data = this$1.bindPoint(currentSeries, pointIx);\n            result.push({ pointIx: pointIx, valueFields: data.valueFields });\n        }\n\n        return result;\n    };\n\n    return XYPlotArea;\n}(PlotAreaBase));\n\nfunction updateAxisOptions(targetOptions, axisIndex, vertical, options) {\n    var axisOptions = ([].concat(vertical ? targetOptions.yAxis : targetOptions.xAxis))[axisIndex];\n    deepExtend(axisOptions, options);\n}\n\nsetDefaultOptions(XYPlotArea, {\n    xAxis: {},\n    yAxis: {}\n});\n\ndeepExtend(XYPlotArea.prototype, PlotAreaEventsMixin);\n\nexport default XYPlotArea;\n","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { ChartElement, ShapeBuilder, TextBox, Box } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nimport { OUTSIDE_END, INSIDE_END, PIE, FADEIN, TOOLTIP_OFFSET } from '../constants';\nimport hasGradientOverlay from '../utils/has-gradient-overlay';\n\nimport { TOP, BOTTOM, LEFT, RIGHT, DEFAULT_FONT, CIRCLE, WHITE, CENTER, DEFAULT_PRECISION } from '../../common/constants';\nimport { autoTextColor, setDefaultOptions, getSpacing, getTemplate, deepExtend, round, rad } from '../../common';\n\nvar PieSegment = (function (ChartElement) {\n    function PieSegment(value, sector, options) {\n        ChartElement.call(this, options);\n\n        this.value = value;\n        this.sector = sector;\n    }\n\n    if ( ChartElement ) PieSegment.__proto__ = ChartElement;\n    PieSegment.prototype = Object.create( ChartElement && ChartElement.prototype );\n    PieSegment.prototype.constructor = PieSegment;\n\n    PieSegment.prototype.render = function render () {\n        var labels = this.options.labels;\n        var chartService = this.owner.chartService;\n        var labelText = this.value;\n\n        if (this._rendered || this.visible === false) {\n            return;\n        }\n        this._rendered = true;\n\n        var labelTemplate = getTemplate(labels);\n        var pointData = this.pointData();\n\n        if (labelTemplate) {\n            labelText = labelTemplate(pointData);\n        } else if (labels.format) {\n            labelText = chartService.format.auto(labels.format, labelText);\n        }\n\n        if (labels.visible && (labelText || labelText === 0)) {\n            if (labels.position === CENTER || labels.position === INSIDE_END) {\n                if (!labels.color) {\n                    labels.color = autoTextColor(this.options.color);\n                }\n                if (!labels.background) {\n                    labels.background = this.options.color;\n                }\n            } else {\n                var themeLabels = chartService.theme.seriesDefaults.labels;\n                labels.color = labels.color || themeLabels.color;\n                labels.background = labels.background || themeLabels.background;\n            }\n\n\n            this.label = new TextBox(labelText, deepExtend({}, labels, {\n                align: CENTER,\n                vAlign: \"\",\n                animation: {\n                    type: FADEIN,\n                    delay: this.animationDelay\n                }\n            }), pointData);\n\n            this.append(this.label);\n        }\n    };\n\n    PieSegment.prototype.reflow = function reflow (targetBox) {\n        this.render();\n        this.box = targetBox;\n        this.reflowLabel();\n    };\n\n    PieSegment.prototype.reflowLabel = function reflowLabel () {\n        var ref = this;\n        var labelsOptions = ref.options.labels;\n        var label = ref.label;\n        var sector = this.sector.clone();\n        var labelsDistance = labelsOptions.distance;\n        var angle = sector.middle();\n\n        if (label) {\n            var labelHeight = label.box.height();\n            var labelWidth = label.box.width();\n            var lp;\n\n            if (labelsOptions.position === CENTER) {\n                sector.radius = Math.abs((sector.radius - labelHeight) / 2) + labelHeight;\n                lp = sector.point(angle);\n                label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n            } else if (labelsOptions.position === INSIDE_END) {\n                sector.radius = sector.radius - labelHeight / 2;\n                lp = sector.point(angle);\n                label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n            } else {\n                var x1;\n                lp = sector.clone().expand(labelsDistance).point(angle);\n                if (lp.x >= sector.center.x) {\n                    x1 = lp.x + labelWidth;\n                    label.orientation = RIGHT;\n                } else {\n                    x1 = lp.x - labelWidth;\n                    label.orientation = LEFT;\n                }\n                label.reflow(new Box(x1, lp.y - labelHeight, lp.x, lp.y));\n            }\n        }\n    };\n\n    PieSegment.prototype.createVisual = function createVisual () {\n        var this$1 = this;\n\n        var ref = this;\n        var sector = ref.sector;\n        var options = ref.options;\n\n        ChartElement.prototype.createVisual.call(this);\n\n        if (this.value) {\n            if (options.visual) {\n                var startAngle = (sector.startAngle + 180) % 360;\n                var visual = options.visual({\n                    category: this.category,\n                    dataItem: this.dataItem,\n                    value: this.value,\n                    series: this.series,\n                    percentage: this.percentage,\n                    center: new geom.Point(sector.center.x, sector.center.y),\n                    radius: sector.radius,\n                    innerRadius: sector.innerRadius,\n                    startAngle: startAngle,\n                    endAngle: startAngle + sector.angle,\n                    options: options,\n                    sender: this.getSender(),\n                    createVisual: function () {\n                        var group = new draw.Group();\n                        this$1.createSegmentVisual(group);\n\n                        return group;\n                    }\n                });\n\n                if (visual) {\n                    this.visual.append(visual);\n                }\n            } else {\n                this.createSegmentVisual(this.visual);\n            }\n        }\n    };\n\n    PieSegment.prototype.createSegmentVisual = function createSegmentVisual (group) {\n        var ref = this;\n        var sector = ref.sector;\n        var options = ref.options;\n        var borderOptions = options.border || {};\n        var border = borderOptions.width > 0 ? {\n            stroke: {\n                color: borderOptions.color,\n                width: borderOptions.width,\n                opacity: borderOptions.opacity,\n                dashType: borderOptions.dashType\n            }\n        } : {};\n        var color = options.color;\n        var fill = {\n            color: color,\n            opacity: options.opacity\n        };\n        var visual = this.createSegment(sector, deepExtend({\n            fill: fill,\n            stroke: {\n                opacity: options.opacity\n            },\n            zIndex: options.zIndex\n        }, border));\n\n        group.append(visual);\n\n        if (hasGradientOverlay(options)) {\n            group.append(this.createGradientOverlay(visual, {\n                baseColor: color,\n                fallbackFill: fill\n            }, deepExtend({\n                center: [ sector.center.x, sector.center.y ],\n                innerRadius: sector.innerRadius,\n                radius: sector.radius,\n                userSpace: true\n            }, options.overlay)));\n        }\n    };\n\n    PieSegment.prototype.createSegment = function createSegment (sector, options) {\n        if (options.singleSegment) {\n            return new draw.Circle(new geom.Circle(new geom.Point(sector.center.x, sector.center.y), sector.radius), options);\n        }\n\n        return ShapeBuilder.current.createRing(sector, options);\n    };\n\n    PieSegment.prototype.createAnimation = function createAnimation () {\n        var ref = this;\n        var options = ref.options;\n        var center = ref.sector.center;\n\n        deepExtend(options, {\n            animation: {\n                center: [ center.x, center.y ],\n                delay: this.animationDelay\n            }\n        });\n\n        ChartElement.prototype.createAnimation.call(this);\n    };\n\n    PieSegment.prototype.createHighlight = function createHighlight (options) {\n        var highlight = this.options.highlight || {};\n        var border = highlight.border || {};\n\n        return this.createSegment(this.sector, deepExtend({}, options, {\n            fill: {\n                color: highlight.color,\n                opacity: highlight.opacity\n            },\n            stroke: {\n                opacity: border.opacity,\n                width: border.width,\n                color: border.color\n            }\n        }));\n    };\n\n    PieSegment.prototype.highlightVisual = function highlightVisual () {\n        return this.visual.children[0];\n    };\n\n    PieSegment.prototype.highlightVisualArgs = function highlightVisualArgs () {\n        var sector = this.sector;\n\n        return {\n            options: this.options,\n            radius: sector.radius,\n            innerRadius: sector.innerRadius,\n            center: new geom.Point(sector.center.x, sector.center.y),\n            startAngle: sector.startAngle,\n            endAngle: sector.angle + sector.startAngle,\n            visual: this.visual\n        };\n    };\n\n    PieSegment.prototype.tooltipAnchor = function tooltipAnchor () {\n        var sector = this.sector.clone().expand(TOOLTIP_OFFSET);\n        var midAndle = sector.middle();\n        var midPoint = sector.point(midAndle);\n\n        return {\n            point: midPoint,\n            align: tooltipAlignment(midAndle + 180)\n        };\n    };\n\n    PieSegment.prototype.formatValue = function formatValue (format) {\n        return this.owner.formatPointValue(this, format);\n    };\n\n    PieSegment.prototype.pointData = function pointData () {\n        return {\n            dataItem: this.dataItem,\n            category: this.category,\n            value: this.value,\n            series: this.series,\n            percentage: this.percentage\n        };\n    };\n\n    return PieSegment;\n}(ChartElement));\n\nvar RAD_30 = round(rad(30), DEFAULT_PRECISION);\nvar RAD_60 = round(rad(60), DEFAULT_PRECISION);\n\nfunction tooltipAlignment(angle) {\n    var radians = rad(angle);\n    var sine = round(Math.sin(radians), DEFAULT_PRECISION);\n    var cosine = round(Math.cos(radians), DEFAULT_PRECISION);\n\n\n    var horizontal;\n    if (Math.abs(sine) > RAD_60) {\n        horizontal = CENTER;\n    } else if (cosine < 0) {\n        horizontal = RIGHT;\n    } else {\n        horizontal = LEFT;\n    }\n\n    var vertical;\n    if (Math.abs(sine) < RAD_30) {\n        vertical = CENTER;\n    } else if (sine < 0) {\n        vertical = BOTTOM;\n    } else {\n        vertical = TOP;\n    }\n\n    return {\n        horizontal: horizontal,\n        vertical: vertical\n    };\n}\n\nsetDefaultOptions(PieSegment, {\n    color: WHITE,\n    overlay: {\n        gradient: \"roundedBevel\"\n    },\n    border: {\n        width: 0.5\n    },\n    labels: {\n        visible: false,\n        distance: 35,\n        font: DEFAULT_FONT,\n        margin: getSpacing(0.5),\n        align: CIRCLE,\n        zIndex: 1,\n        position: OUTSIDE_END\n    },\n    animation: {\n        type: PIE\n    },\n    highlight: {\n        visible: true,\n        border: {\n            width: 1\n        }\n    },\n    visible: true\n});\n\ndeepExtend(PieSegment.prototype, PointEventsMixin);\n\nexport default PieSegment;\n","import { getTemplate } from '../../common';\nimport { hasValue } from '../utils';\n\nvar PieChartMixin = {\n    createLegendItem: function(value, point, options) {\n        var legendOptions = this.options.legend || {};\n        var labelsOptions = legendOptions.labels || {};\n        var inactiveItems = legendOptions.inactiveItems || {};\n        var inactiveItemsLabels = inactiveItems.labels || {};\n\n        if (options && options.visibleInLegend !== false) {\n            var pointVisible = options.visible !== false;\n            var labelTemplate = pointVisible ? getTemplate(labelsOptions) :\n                getTemplate(inactiveItemsLabels) || getTemplate(labelsOptions);\n            var text = options.category;\n\n            if (labelTemplate) {\n                text = labelTemplate({\n                    text: text,\n                    series: options.series,\n                    dataItem: options.dataItem,\n                    percentage: options.percentage,\n                    value: value\n                });\n            }\n\n            var itemLabelOptions, markerColor;\n            if (pointVisible) {\n                itemLabelOptions = {};\n                markerColor = point.color;\n            } else {\n                itemLabelOptions = {\n                    color: inactiveItemsLabels.color,\n                    font: inactiveItemsLabels.font\n                };\n                markerColor = (inactiveItems.markers || {}).color;\n            }\n\n            if (hasValue(text) && text !== \"\") {\n                this.legendItems.push({\n                    active: pointVisible,\n                    pointIndex: options.index,\n                    text: text,\n                    series: options.series,\n                    markerColor: markerColor,\n                    labels: itemLabelOptions\n                });\n            }\n        }\n    }\n};\n\nexport default PieChartMixin;","import { drawing as draw, geometry } from '@progress/kendo-drawing';\n\nimport PieSegment from './pie-segment';\nimport PieChartMixin from '../mixins/pie-chart-mixin';\nimport { ChartElement, Ring, Box, Point } from '../../core';\n\nimport { OUTSIDE_END, FADEIN, COLUMN } from '../constants';\nimport { bindSegments, evalOptions } from '../utils';\n\nimport { CIRCLE, RIGHT, CENTER } from '../../common/constants';\nimport { deepExtend, defined, find, isFunction, last, round, setDefaultOptions, valueOrDefault } from '../../common';\n\nvar PIE_SECTOR_ANIM_DELAY = 70;\n\nvar PieChart = (function (ChartElement) {\n    function PieChart(plotArea, options) {\n        ChartElement.call(this, options);\n\n        this.plotArea = plotArea;\n        this.chartService = plotArea.chartService;\n        this.points = [];\n        this.legendItems = [];\n        this.render();\n    }\n\n    if ( ChartElement ) PieChart.__proto__ = ChartElement;\n    PieChart.prototype = Object.create( ChartElement && ChartElement.prototype );\n    PieChart.prototype.constructor = PieChart;\n\n    PieChart.prototype.render = function render () {\n        this.traverseDataPoints(this.addValue.bind(this));\n    };\n\n    PieChart.prototype.traverseDataPoints = function traverseDataPoints (callback) {\n        var this$1 = this;\n\n        var ref = this;\n        var options = ref.options;\n        var seriesColors = ref.plotArea.options.seriesColors; if ( seriesColors === void 0 ) seriesColors = [];\n        var colorsCount = seriesColors.length;\n        var series = options.series;\n        var seriesCount = series.length;\n\n        for (var seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n            var currentSeries = series[seriesIx];\n            var data = currentSeries.data;\n            var ref$1 = bindSegments(currentSeries);\n            var total = ref$1.total;\n            var points = ref$1.points;\n            var count = ref$1.count;\n            var anglePerValue = 360 / total;\n            var constantAngle = (void 0);\n            if (!isFinite(anglePerValue)) {\n                constantAngle = 360 / count;\n            }\n            var currentAngle = (void 0);\n\n            if (defined(currentSeries.startAngle)) {\n                currentAngle = currentSeries.startAngle;\n            } else {\n                currentAngle = options.startAngle;\n            }\n\n            if (seriesIx !== seriesCount - 1) {\n                if (currentSeries.labels.position === OUTSIDE_END) {\n                    currentSeries.labels.position = CENTER;\n                }\n            }\n\n            for (var i = 0; i < points.length; i++) {\n                var pointData = points[i];\n                if (!pointData) {\n                    continue;\n                }\n\n                var fields = pointData.fields;\n                var value = pointData.value;\n                var visible = pointData.visible;\n                var angle = value !== 0 ? (constantAngle || (value * anglePerValue)) : 0;\n                var explode = data.length !== 1 && Boolean(fields.explode);\n\n                if (!isFunction(currentSeries.color)) {\n                    currentSeries.color = fields.color || seriesColors[i % colorsCount];\n                }\n\n                callback(value, new Ring(null, 0, 0, currentAngle, angle), {\n                    owner: this$1,\n                    category: defined(fields.category) ? fields.category : \"\",\n                    index: i,\n                    series: currentSeries,\n                    seriesIx: seriesIx,\n                    dataItem: data[i],\n                    percentage: total !== 0 ? value / total : 0,\n                    explode: explode,\n                    visibleInLegend: fields.visibleInLegend,\n                    visible: visible,\n                    zIndex: seriesCount - seriesIx,\n                    animationDelay: this$1.animationDelay(i, seriesIx, seriesCount)\n                });\n\n                if (visible !== false) {\n                    currentAngle += angle;\n                }\n            }\n        }\n    };\n\n    PieChart.prototype.evalSegmentOptions = function evalSegmentOptions (options, value, fields) {\n        var series = fields.series;\n\n        evalOptions(options, {\n            value: value,\n            series: series,\n            dataItem: fields.dataItem,\n            category: fields.category,\n            percentage: fields.percentage\n        }, { defaults: series._defaults, excluded: [ \"data\", \"content\", \"template\", \"visual\", \"toggle\" ] });\n    };\n\n    PieChart.prototype.addValue = function addValue (value, sector, fields) {\n        var segmentOptions = deepExtend({}, fields.series, { index: fields.index });\n        this.evalSegmentOptions(segmentOptions, value, fields);\n\n        this.createLegendItem(value, segmentOptions, fields);\n\n        if (fields.visible === false) {\n            return;\n        }\n\n        var segment = new PieSegment(value, sector, segmentOptions);\n        Object.assign(segment, fields);\n        this.append(segment);\n        this.points.push(segment);\n    };\n\n    PieChart.prototype.reflow = function reflow (targetBox) {\n        var ref = this;\n        var options = ref.options;\n        var points = ref.points;\n        var seriesConfigs = ref.seriesConfigs; if ( seriesConfigs === void 0 ) seriesConfigs = [];\n        var count = points.length;\n        var box = targetBox.clone();\n        var space = 5;\n        var minWidth = Math.min(box.width(), box.height());\n        var halfMinWidth = minWidth / 2;\n        var defaultPadding = minWidth - minWidth * 0.85;\n        var newBox = new Box(box.x1, box.y1, box.x1 + minWidth, box.y1 + minWidth);\n        var newBoxCenter = newBox.center();\n        var boxCenter = box.center();\n        var seriesCount = options.series.length;\n        var leftSideLabels = [];\n        var rightSideLabels = [];\n        var padding = valueOrDefault(options.padding, defaultPadding);\n\n        this.targetBox = targetBox;\n\n        padding = padding > halfMinWidth - space ? halfMinWidth - space : padding;\n        newBox.translate(boxCenter.x - newBoxCenter.x, boxCenter.y - newBoxCenter.y);\n\n        var radius = halfMinWidth - padding;\n        var center = new Point(\n            radius + newBox.x1 + padding,\n            radius + newBox.y1 + padding\n        );\n\n        for (var i = 0; i < count; i++) {\n            var segment = points[i];\n            var sector = segment.sector;\n            var seriesIndex = segment.seriesIx;\n            sector.radius = radius;\n            sector.center = center;\n\n            if (seriesConfigs.length) {\n                var seriesConfig = seriesConfigs[seriesIndex];\n                sector.innerRadius = seriesConfig.innerRadius;\n                sector.radius = seriesConfig.radius;\n            }\n\n            if (seriesIndex === seriesCount - 1 && segment.explode) {\n                sector.center = sector.clone().setRadius(sector.radius * 0.15).point(sector.middle());\n            }\n\n            segment.reflow(newBox);\n\n            var label = segment.label;\n            if (label) {\n                if (label.options.position === OUTSIDE_END) {\n                    if (seriesIndex === seriesCount - 1) {\n                        if (label.orientation === RIGHT) {\n                            rightSideLabels.push(label);\n                        } else {\n                            leftSideLabels.push(label);\n                        }\n                    }\n                }\n            }\n        }\n\n        if (leftSideLabels.length > 0) {\n            leftSideLabels.sort(this.labelComparator(true));\n            this.leftLabelsReflow(leftSideLabels);\n        }\n\n        if (rightSideLabels.length > 0) {\n            rightSideLabels.sort(this.labelComparator(false));\n            this.rightLabelsReflow(rightSideLabels);\n        }\n\n        this.box = newBox;\n    };\n\n    PieChart.prototype.leftLabelsReflow = function leftLabelsReflow (labels) {\n        var distances = this.distanceBetweenLabels(labels);\n\n        this.distributeLabels(distances, labels);\n    };\n\n    PieChart.prototype.rightLabelsReflow = function rightLabelsReflow (labels) {\n        var distances = this.distanceBetweenLabels(labels);\n\n        this.distributeLabels(distances, labels);\n    };\n\n    PieChart.prototype.distanceBetweenLabels = function distanceBetweenLabels (labels) {\n        var segment = last(this.points);\n        var sector = segment.sector;\n        var count = labels.length - 1;\n        var lr = sector.radius + segment.options.labels.distance;\n        var distances = [];\n        var firstBox = labels[0].box;\n        var distance = round(firstBox.y1 - (sector.center.y - lr - firstBox.height() - firstBox.height() / 2));\n\n        distances.push(distance);\n\n        for (var i = 0; i < count; i++) {\n            var secondBox = labels[i + 1].box;\n\n            firstBox = labels[i].box;\n            distance = round(secondBox.y1 - firstBox.y2);\n            distances.push(distance);\n        }\n        distance = round(sector.center.y + lr - labels[count].box.y2 - labels[count].box.height() / 2);\n        distances.push(distance);\n\n        return distances;\n    };\n\n    PieChart.prototype.distributeLabels = function distributeLabels (distances, labels) {\n        var this$1 = this;\n\n        var count = distances.length;\n        var left, right, remaining;\n\n        for (var i = 0; i < count; i++) {\n            remaining = -distances[i];\n            left = right = i;\n\n            while (remaining > 0 && (left >= 0 || right < count)) {\n                remaining = this$1._takeDistance(distances, i, --left, remaining);\n                remaining = this$1._takeDistance(distances, i, ++right, remaining);\n            }\n        }\n\n        this.reflowLabels(distances, labels);\n    };\n\n    PieChart.prototype._takeDistance = function _takeDistance (distances, anchor, position, amount) {\n        var result = amount;\n        if (distances[position] > 0) {\n            var available = Math.min(distances[position], result);\n            result -= available;\n            distances[position] -= available;\n            distances[anchor] += available;\n        }\n\n        return result;\n    };\n\n    PieChart.prototype.reflowLabels = function reflowLabels (distances, labels) {\n        var this$1 = this;\n\n        var segment = last(this.points);\n        var sector = segment.sector;\n        var labelOptions = segment.options.labels;\n        var labelsCount = labels.length;\n        var labelDistance = labelOptions.distance;\n        var boxY = sector.center.y - (sector.radius + labelDistance) - labels[0].box.height();\n        var boxX;\n\n        distances[0] += 2;\n        for (var i = 0; i < labelsCount; i++) {\n            var label = labels[i];\n            var box = label.box;\n\n            boxY += distances[i];\n            boxX = this$1.hAlignLabel(\n                box.x2,\n                sector.clone().expand(labelDistance),\n                boxY,\n                boxY + box.height(),\n                label.orientation === RIGHT);\n\n            if (label.orientation === RIGHT) {\n                if (labelOptions.align !== CIRCLE) {\n                    boxX = sector.radius + sector.center.x + labelDistance;\n                }\n                label.reflow(new Box(boxX + box.width(), boxY, boxX, boxY));\n            } else {\n                if (labelOptions.align !== CIRCLE) {\n                    boxX = sector.center.x - sector.radius - labelDistance;\n                }\n                label.reflow(new Box(boxX - box.width(), boxY, boxX, boxY));\n            }\n\n            boxY += box.height();\n        }\n    };\n\n    PieChart.prototype.createVisual = function createVisual () {\n        var this$1 = this;\n\n        var ref = this;\n        var connectors = ref.options.connectors;\n        var points = ref.points;\n        var count = points.length;\n        var space = 4;\n\n        ChartElement.prototype.createVisual.call(this);\n\n        this._connectorLines = [];\n\n        for (var i = 0; i < count; i++) {\n            var segment = points[i];\n            var sector = segment.sector;\n            var label = segment.label;\n            var angle = sector.middle();\n            var connectorsColor = (segment.options.connectors || {}).color || connectors.color;\n\n            if (label) {\n                var connectorLine = new draw.Path({\n                    stroke: {\n                        color: connectorsColor,\n                        width: connectors.width\n                    },\n                    animation: {\n                        type: FADEIN,\n                        delay: segment.animationDelay\n                    }\n                });\n\n                if (label.options.position === OUTSIDE_END) {\n                    var box = label.box;\n                    var centerPoint = sector.center;\n                    var start = sector.point(angle);\n                    var middle = new Point(box.x1, box.center().y);\n                    var sr = (void 0), end = (void 0), crossing = (void 0);\n\n                    start = sector.clone().expand(connectors.padding).point(angle);\n                    connectorLine.moveTo(start.x, start.y);\n                    // TODO: Extract into a method to remove duplication\n                    if (label.orientation === RIGHT) {\n                        end = new Point(box.x1 - connectors.padding, box.center().y);\n                        crossing = intersection(centerPoint, start, middle, end);\n                        middle = new Point(end.x - space, end.y);\n                        crossing = crossing || middle;\n                        crossing.x = Math.min(crossing.x, middle.x);\n\n                        if (this$1.pointInCircle(crossing, sector.center, sector.radius + space) ||\n                            crossing.x < sector.center.x) {\n                            sr = sector.center.x + sector.radius + space;\n                            if (segment.options.labels.align !== COLUMN) {\n                                if (sr < middle.x) {\n                                    connectorLine.lineTo(sr, start.y);\n                                } else {\n                                    connectorLine.lineTo(start.x + space * 2, start.y);\n                                }\n                            } else {\n                                connectorLine.lineTo(sr, start.y);\n                            }\n                            connectorLine.lineTo(middle.x, end.y);\n                        } else {\n                            crossing.y = end.y;\n                            connectorLine.lineTo(crossing.x, crossing.y);\n                        }\n                    } else {\n                        end = new Point(box.x2 + connectors.padding, box.center().y);\n                        crossing = intersection(centerPoint, start, middle, end);\n                        middle = new Point(end.x + space, end.y);\n                        crossing = crossing || middle;\n                        crossing.x = Math.max(crossing.x, middle.x);\n\n                        if (this$1.pointInCircle(crossing, sector.center, sector.radius + space) ||\n                            crossing.x > sector.center.x) {\n                            sr = sector.center.x - sector.radius - space;\n                            if (segment.options.labels.align !== COLUMN) {\n                                if (sr > middle.x) {\n                                    connectorLine.lineTo(sr, start.y);\n                                } else {\n                                    connectorLine.lineTo(start.x - space * 2, start.y);\n                                }\n                            } else {\n                                connectorLine.lineTo(sr, start.y);\n                            }\n                            connectorLine.lineTo(middle.x, end.y);\n                        } else {\n                            crossing.y = end.y;\n                            connectorLine.lineTo(crossing.x, crossing.y);\n                        }\n                    }\n\n                    connectorLine.lineTo(end.x, end.y);\n\n                    this$1._connectorLines.push(connectorLine);\n                    this$1.visual.append(connectorLine);\n                }\n            }\n        }\n    };\n\n    PieChart.prototype.renderVisual = function renderVisual () {\n        ChartElement.prototype.renderVisual.call(this);\n\n        if (find(this.options.series, function (options) { return options.autoFit; })) {\n            var targetBox = this.targetBox;\n            var pieCenter = this.box.center();\n            var bbox = this.visual.bbox();\n            if (!bbox) {\n                return;\n            }\n\n            var bboxBottom = bbox.bottomRight();\n\n            var scale = Math.min(\n                (pieCenter.y - targetBox.y1) / (pieCenter.y - bbox.origin.y),\n                (targetBox.y2 - pieCenter.y) / (bboxBottom.y - pieCenter.y),\n                (pieCenter.x - targetBox.x1) / (pieCenter.x - bbox.origin.x),\n                (targetBox.x2 - pieCenter.x) / (bboxBottom.x - pieCenter.x)\n            );\n\n            if (scale < 1) {\n                this.visual.transform(geometry.transform().scale(scale, scale, [ pieCenter.x, pieCenter.y ]));\n            }\n        }\n    };\n\n    PieChart.prototype.labelComparator = function labelComparator (reverse) {\n        var reverseValue = reverse ? -1 : 1;\n\n        return function(a, b) {\n            var first = (a.parent.sector.middle() + 270) % 360;\n            var second = (b.parent.sector.middle() + 270) % 360;\n            return (first - second) * reverseValue;\n        };\n    };\n\n    PieChart.prototype.hAlignLabel = function hAlignLabel (originalX, sector, y1, y2, direction) {\n        var radius = sector.radius;\n        var sector_center = sector.center;\n        var cx = sector_center.x;\n        var cy = sector_center.y;\n        var t = Math.min(Math.abs(cy - y1), Math.abs(cy - y2));\n\n        if (t > radius) {\n            return originalX;\n        }\n\n        return cx + Math.sqrt((radius * radius) - (t * t)) * (direction ? 1 : -1);\n    };\n\n    PieChart.prototype.pointInCircle = function pointInCircle (point, center, radius) {\n        return Math.pow(center.x - point.x, 2) + Math.pow(center.y - point.y, 2) < Math.pow(radius, 2);\n    };\n\n    PieChart.prototype.formatPointValue = function formatPointValue (point, format) {\n        return this.chartService.format.auto(format, point.value);\n    };\n\n    PieChart.prototype.animationDelay = function animationDelay (categoryIndex) {\n        return categoryIndex * PIE_SECTOR_ANIM_DELAY;\n    };\n\n    PieChart.prototype.stackRoot = function stackRoot () {\n        return this;\n    };\n\n    return PieChart;\n}(ChartElement));\n\nfunction intersection(a1, a2, b1, b2) {\n    var uat = (b2.x - b1.x) * (a1.y - b1.y) - (b2.y - b1.y) * (a1.x - b1.x);\n    var ub = (b2.y - b1.y) * (a2.x - a1.x) - (b2.x - b1.x) * (a2.y - a1.y);\n\n    var result;\n    if (ub !== 0) {\n        var ua = (uat / ub);\n\n        result = new Point(\n            a1.x + ua * (a2.x - a1.x),\n            a1.y + ua * (a2.y - a1.y)\n        );\n    }\n\n    return result;\n}\n\nsetDefaultOptions(PieChart, {\n    startAngle: 90,\n    connectors: {\n        width: 2,\n        color: \"#939393\",\n        padding: 8\n    },\n    inactiveItems: {\n        markers: {},\n        labels: {}\n    }\n});\n\ndeepExtend(PieChart.prototype, PieChartMixin);\n\nPieChart.prototype.isStackRoot = true;\n\nexport default PieChart;\n","import PlotAreaBase from './plotarea-base';\nimport PieChart from '../pie-chart/pie-chart';\n\nimport { append } from '../../common';\n\nvar PiePlotArea = (function (PlotAreaBase) {\n    function PiePlotArea () {\n        PlotAreaBase.apply(this, arguments);\n    }\n\n    if ( PlotAreaBase ) PiePlotArea.__proto__ = PlotAreaBase;\n    PiePlotArea.prototype = Object.create( PlotAreaBase && PlotAreaBase.prototype );\n    PiePlotArea.prototype.constructor = PiePlotArea;\n\n    PiePlotArea.prototype.render = function render () {\n        this.createPieChart(this.series);\n    };\n\n    PiePlotArea.prototype.createPieChart = function createPieChart (series) {\n        var firstSeries = series[0];\n        var pieChart = new PieChart(this, {\n            series: series,\n            padding: firstSeries.padding,\n            startAngle: firstSeries.startAngle,\n            connectors: firstSeries.connectors,\n            legend: this.options.legend\n        });\n\n        this.appendChart(pieChart);\n    };\n\n    PiePlotArea.prototype.appendChart = function appendChart (chart, pane) {\n        PlotAreaBase.prototype.appendChart.call(this, chart, pane);\n        append(this.options.legend.items, chart.legendItems);\n    };\n\n    return PiePlotArea;\n}(PlotAreaBase));\n\nexport default PiePlotArea;","import PieSegment from '../pie-chart/pie-segment';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nimport { PIE } from '../constants';\n\nimport { ShapeBuilder, Box } from '../../core';\n\nimport { CENTER } from '../../common/constants';\nimport { deepExtend, setDefaultOptions } from '../../common';\n\nvar DonutSegment = (function (PieSegment) {\n    function DonutSegment () {\n        PieSegment.apply(this, arguments);\n    }\n\n    if ( PieSegment ) DonutSegment.__proto__ = PieSegment;\n    DonutSegment.prototype = Object.create( PieSegment && PieSegment.prototype );\n    DonutSegment.prototype.constructor = DonutSegment;\n\n    DonutSegment.prototype.reflowLabel = function reflowLabel () {\n        var ref = this;\n        var labelsOptions = ref.options.labels;\n        var label = ref.label;\n        var sector = this.sector.clone();\n        var angle = sector.middle();\n\n        if (label) {\n            var labelHeight = label.box.height();\n            if (labelsOptions.position === CENTER) {\n                sector.radius -= (sector.radius - sector.innerRadius) / 2;\n\n                var lp = sector.point(angle);\n\n                label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n            } else {\n                PieSegment.prototype.reflowLabel.call(this);\n            }\n        }\n    };\n\n    DonutSegment.prototype.createSegment = function createSegment (sector, options) {\n        return ShapeBuilder.current.createRing(sector, options);\n    };\n\n    return DonutSegment;\n}(PieSegment));\n\nsetDefaultOptions(DonutSegment, {\n    overlay: {\n        gradient: \"roundedGlass\"\n    },\n    labels: {\n        position: CENTER\n    },\n    animation: {\n        type: PIE\n    }\n});\n\ndeepExtend(DonutSegment.prototype, PointEventsMixin);\n\n\nexport default DonutSegment;\n","import PieChart from '../pie-chart/pie-chart';\nimport DonutSegment from './donut-segment';\n\nimport { INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { deepExtend, defined, setDefaultOptions, valueOrDefault } from '../../common';\n\nvar DONUT_SECTOR_ANIM_DELAY = 50;\n\nvar DonutChart = (function (PieChart) {\n    function DonutChart () {\n        PieChart.apply(this, arguments);\n    }\n\n    if ( PieChart ) DonutChart.__proto__ = PieChart;\n    DonutChart.prototype = Object.create( PieChart && PieChart.prototype );\n    DonutChart.prototype.constructor = DonutChart;\n\n    DonutChart.prototype.addValue = function addValue (value, sector, fields) {\n        var segmentOptions = deepExtend({}, fields.series, { index: fields.index });\n        this.evalSegmentOptions(segmentOptions, value, fields);\n\n        this.createLegendItem(value, segmentOptions, fields);\n\n        if (fields.visible === false) {\n            return;\n        }\n\n        var segment = new DonutSegment(value, sector, segmentOptions);\n\n        Object.assign(segment, fields);\n        this.append(segment);\n        this.points.push(segment);\n    };\n\n    DonutChart.prototype.reflow = function reflow (targetBox) {\n        var this$1 = this;\n\n        var options = this.options;\n        var box = targetBox.clone();\n        var space = 5;\n        var minWidth = Math.min(box.width(), box.height());\n        var halfMinWidth = minWidth / 2;\n        var defaultPadding = minWidth - minWidth * 0.85;\n        var series = options.series;\n        var seriesCount = series.length;\n\n        var padding = valueOrDefault(options.padding, defaultPadding);\n        padding = padding > halfMinWidth - space ? halfMinWidth - space : padding;\n\n        var totalSize = halfMinWidth - padding;\n        var seriesWithoutSize = 0;\n        var holeSize;\n\n        for (var i = 0; i < seriesCount; i++) {\n            var currentSeries = series[i];\n            if (i === 0) {\n                if (defined(currentSeries.holeSize)) {\n                    holeSize = currentSeries.holeSize;\n                    totalSize -= currentSeries.holeSize;\n                }\n            }\n\n            if (defined(currentSeries.size)) {\n                totalSize -= currentSeries.size;\n            } else {\n                seriesWithoutSize++;\n            }\n\n            if (defined(currentSeries.margin) && i !== seriesCount - 1) {\n                totalSize -= currentSeries.margin;\n            }\n        }\n\n        if (!defined(holeSize)) {\n            var currentSize = (halfMinWidth - padding) / (seriesCount + 0.75);\n            holeSize = currentSize * 0.75;\n            totalSize -= holeSize;\n        }\n\n        var innerRadius = holeSize;\n        var margin = 0;\n        var size, radius;\n\n        this.seriesConfigs = [];\n\n        for (var i$1 = 0; i$1 < seriesCount; i$1++) {\n            var currentSeries$1 = series[i$1];\n            size = valueOrDefault(currentSeries$1.size, totalSize / seriesWithoutSize);\n            innerRadius += margin;\n            radius = innerRadius + size;\n            this$1.seriesConfigs.push({ innerRadius: innerRadius, radius: radius });\n            margin = currentSeries$1.margin || 0;\n            innerRadius = radius;\n        }\n\n        PieChart.prototype.reflow.call(this, targetBox);\n    };\n\n    DonutChart.prototype.animationDelay = function animationDelay (categoryIndex, seriesIndex, seriesCount) {\n        return categoryIndex * DONUT_SECTOR_ANIM_DELAY +\n            (INITIAL_ANIMATION_DURATION * (seriesIndex + 1) / (seriesCount + 1));\n    };\n\n    return DonutChart;\n}(PieChart));\n\n\nsetDefaultOptions(DonutChart, {\n    startAngle: 90,\n    connectors: {\n        width: 2,\n        color: \"#939393\",\n        padding: 8\n    }\n});\n\nexport default DonutChart;\n","import PiePlotArea from './pie-plotarea';\nimport DonutChart from '../donut-chart/donut-chart';\n\nvar DonutPlotArea = (function (PiePlotArea) {\n    function DonutPlotArea () {\n        PiePlotArea.apply(this, arguments);\n    }\n\n    if ( PiePlotArea ) DonutPlotArea.__proto__ = PiePlotArea;\n    DonutPlotArea.prototype = Object.create( PiePlotArea && PiePlotArea.prototype );\n    DonutPlotArea.prototype.constructor = DonutPlotArea;\n\n    DonutPlotArea.prototype.render = function render () {\n        this.createDonutChart(this.series);\n    };\n\n    DonutPlotArea.prototype.createDonutChart = function createDonutChart (series) {\n        var firstSeries = series[0];\n        var donutChart = new DonutChart(this, {\n            series: series,\n            padding: firstSeries.padding,\n            connectors: firstSeries.connectors,\n            legend: this.options.legend\n        });\n\n        this.appendChart(donutChart);\n    };\n\n    return DonutPlotArea;\n}(PiePlotArea));\n\nexport default DonutPlotArea;","import PlotAreaBase from './plotarea-base';\nimport AxisGroupRangeTracker from '../axis-group-range-tracker';\nimport { RadarLogarithmicAxis, RadarNumericAxis } from '../../core';\n\nimport { LOGARITHMIC } from '../constants';\n\nimport { getSpacing } from '../../common';\nimport { Y, CENTER } from '../../common/constants';\n\nvar DEFAULT_PADDING = 0.15;\n\nvar PolarPlotAreaBase = (function (PlotAreaBase) {\n    function PolarPlotAreaBase () {\n        PlotAreaBase.apply(this, arguments);\n    }\n\n    if ( PlotAreaBase ) PolarPlotAreaBase.__proto__ = PlotAreaBase;\n    PolarPlotAreaBase.prototype = Object.create( PlotAreaBase && PlotAreaBase.prototype );\n    PolarPlotAreaBase.prototype.constructor = PolarPlotAreaBase;\n\n    PolarPlotAreaBase.prototype.initFields = function initFields () {\n        this.valueAxisRangeTracker = new AxisGroupRangeTracker();\n    };\n\n    PolarPlotAreaBase.prototype.render = function render () {\n        this.addToLegend(this.series);\n        this.createPolarAxis();\n        this.createCharts();\n        this.createValueAxis();\n    };\n\n    PolarPlotAreaBase.prototype.alignAxes = function alignAxes () {\n        var axis = this.valueAxis;\n        var range = axis.range();\n        var crossingValue = axis.options.reverse ? range.max : range.min;\n        var slot = axis.getSlot(crossingValue);\n        var center = this.polarAxis.getSlot(0).center;\n        var axisBox = axis.box.translate(\n            center.x - slot.x1,\n            center.y - slot.y1\n        );\n\n        axis.reflow(axisBox);\n    };\n\n    PolarPlotAreaBase.prototype.createValueAxis = function createValueAxis () {\n        var tracker = this.valueAxisRangeTracker;\n        var defaultRange = tracker.query();\n        var axisOptions = this.valueAxisOptions({\n            roundToMajorUnit: false,\n            zIndex: -1\n        });\n        var axisType, axisDefaultRange;\n\n        if (axisOptions.type === LOGARITHMIC) {\n            axisType = RadarLogarithmicAxis;\n            axisDefaultRange = { min: 0.1, max: 1 };\n        } else {\n            axisType = RadarNumericAxis;\n            axisDefaultRange = { min: 0, max: 1 };\n        }\n\n        var range = tracker.query(name) || defaultRange || axisDefaultRange;\n\n        if (range && defaultRange) {\n            range.min = Math.min(range.min, defaultRange.min);\n            range.max = Math.max(range.max, defaultRange.max);\n        }\n\n        var valueAxis = new axisType(\n            range.min, range.max,\n            axisOptions,\n            this.chartService\n        );\n\n        this.valueAxis = valueAxis;\n        this.appendAxis(valueAxis);\n    };\n\n    PolarPlotAreaBase.prototype.reflowAxes = function reflowAxes () {\n        var ref = this;\n        var options = ref.options.plotArea;\n        var valueAxis = ref.valueAxis;\n        var polarAxis = ref.polarAxis;\n        var box = ref.box;\n        var defaultPadding = Math.min(box.width(), box.height()) * DEFAULT_PADDING;\n        var padding = getSpacing(options.padding || {}, defaultPadding);\n        var paddingBox = box.clone().unpad(padding);\n        var axisBox = paddingBox.clone();\n\n        axisBox.y2 = axisBox.y1 + Math.min(axisBox.width(), axisBox.height());\n        axisBox.align(paddingBox, Y, CENTER);\n\n        var valueAxisBox = axisBox.clone().shrink(0, axisBox.height() / 2);\n\n        polarAxis.reflow(axisBox);\n        valueAxis.reflow(valueAxisBox);\n        var heightDiff = valueAxis.lineBox().height() - valueAxis.box.height();\n        valueAxis.reflow(valueAxis.box.unpad({ top: heightDiff }));\n\n        this.axisBox = axisBox;\n        this.alignAxes(axisBox);\n    };\n\n    PolarPlotAreaBase.prototype.backgroundBox = function backgroundBox () {\n        return this.box;\n    };\n\n    PolarPlotAreaBase.prototype.detachLabels = function detachLabels () {};\n\n    return PolarPlotAreaBase;\n}(PlotAreaBase));\n\nexport default PolarPlotAreaBase;\n","import ScatterChart from '../scatter-charts/scatter-chart';\n\nimport { Point, Box } from '../../core';\n\nimport { setDefaultOptions } from '../../common';\n\nvar PolarScatterChart = (function (ScatterChart) {\n    function PolarScatterChart () {\n        ScatterChart.apply(this, arguments);\n    }\n\n    if ( ScatterChart ) PolarScatterChart.__proto__ = ScatterChart;\n    PolarScatterChart.prototype = Object.create( ScatterChart && ScatterChart.prototype );\n    PolarScatterChart.prototype.constructor = PolarScatterChart;\n\n    PolarScatterChart.prototype.pointSlot = function pointSlot (slotX, slotY) {\n        var valueRadius = slotX.center.y - slotY.y1;\n        var slot = Point.onCircle(slotX.center, slotX.startAngle, valueRadius);\n\n        return new Box(slot.x, slot.y, slot.x, slot.y);\n    };\n\n    return PolarScatterChart;\n}(ScatterChart));\n\nsetDefaultOptions(PolarScatterChart, {\n    clip: false\n});\n\nexport default PolarScatterChart;","import ScatterLineChart from '../scatter-charts/scatter-line-chart';\nimport PolarScatterChart from '../polar-scatter-chart/polar-scatter-chart';\n\nimport { setDefaultOptions } from '../../common';\n\nvar PolarLineChart = (function (ScatterLineChart) {\n    function PolarLineChart () {\n        ScatterLineChart.apply(this, arguments);\n    }if ( ScatterLineChart ) PolarLineChart.__proto__ = ScatterLineChart;\n    PolarLineChart.prototype = Object.create( ScatterLineChart && ScatterLineChart.prototype );\n    PolarLineChart.prototype.constructor = PolarLineChart;\n\n    \n\n    return PolarLineChart;\n}(ScatterLineChart));\n\nPolarLineChart.prototype.pointSlot = PolarScatterChart.prototype.pointSlot;\n\nsetDefaultOptions(PolarLineChart, {\n    clip: false\n});\n\nexport default PolarLineChart;","import SplineAreaSegment from '../area-chart/spline-area-segment';\nimport { CurveProcessor } from '../../core';\n\nvar SplinePolarAreaSegment = (function (SplineAreaSegment) {\n    function SplinePolarAreaSegment () {\n        SplineAreaSegment.apply(this, arguments);\n    }\n\n    if ( SplineAreaSegment ) SplinePolarAreaSegment.__proto__ = SplineAreaSegment;\n    SplinePolarAreaSegment.prototype = Object.create( SplineAreaSegment && SplineAreaSegment.prototype );\n    SplinePolarAreaSegment.prototype.constructor = SplinePolarAreaSegment;\n\n    SplinePolarAreaSegment.prototype.fillToAxes = function fillToAxes (fillPath) {\n        var center = this._polarAxisCenter();\n        fillPath.lineTo(center.x, center.y);\n    };\n\n    SplinePolarAreaSegment.prototype._polarAxisCenter = function _polarAxisCenter () {\n        var polarAxis = this.parent.plotArea.polarAxis;\n        var center = polarAxis.box.center();\n        return center;\n    };\n\n    SplinePolarAreaSegment.prototype.strokeSegments = function strokeSegments () {\n        var segments = this._strokeSegments;\n\n        if (!segments) {\n            var center = this._polarAxisCenter();\n            var curveProcessor = new CurveProcessor(false);\n            var linePoints = this.points();\n\n            linePoints.push(center);\n            segments = this._strokeSegments = curveProcessor.process(linePoints);\n            segments.pop();\n        }\n\n        return segments;\n    };\n\n    return SplinePolarAreaSegment;\n}(SplineAreaSegment));\n\nexport default SplinePolarAreaSegment;","import { geometry as geom } from '@progress/kendo-drawing';\nimport AreaSegment from '../area-chart/area-segment';\n\nvar PolarAreaSegment = (function (AreaSegment) {\n    function PolarAreaSegment () {\n        AreaSegment.apply(this, arguments);\n    }\n\n    if ( AreaSegment ) PolarAreaSegment.__proto__ = AreaSegment;\n    PolarAreaSegment.prototype = Object.create( AreaSegment && AreaSegment.prototype );\n    PolarAreaSegment.prototype.constructor = PolarAreaSegment;\n\n    PolarAreaSegment.prototype.fillToAxes = function fillToAxes (fillPath) {\n        var polarAxis = this.parent.plotArea.polarAxis;\n        var center = polarAxis.box.center();\n        var centerSegment = new geom.Segment([ center.x, center.y ]);\n\n        fillPath.segments.unshift(centerSegment);\n        fillPath.segments.push(centerSegment);\n    };\n\n    return PolarAreaSegment;\n}(AreaSegment));\n\nexport default PolarAreaSegment;","import PolarLineChart from '../polar-line-chart/polar-line-chart';\nimport SplinePolarAreaSegment from './spline-polar-area-segment';\nimport PolarAreaSegment from './polar-area-segment';\n\nimport { SMOOTH, INTERPOLATE, ZERO, GAP } from '../constants';\n\nimport hasValue from '../utils/has-value';\n\nvar PolarAreaChart = (function (PolarLineChart) {\n    function PolarAreaChart () {\n        PolarLineChart.apply(this, arguments);\n    }\n\n    if ( PolarLineChart ) PolarAreaChart.__proto__ = PolarLineChart;\n    PolarAreaChart.prototype = Object.create( PolarLineChart && PolarLineChart.prototype );\n    PolarAreaChart.prototype.constructor = PolarAreaChart;\n\n    PolarAreaChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx) {\n        var style = (currentSeries.line || {}).style;\n        var segment;\n\n        if (style === SMOOTH) {\n            segment = new SplinePolarAreaSegment(linePoints, currentSeries, seriesIx);\n        } else {\n            segment = new PolarAreaSegment(linePoints, currentSeries, seriesIx);\n        }\n        return segment;\n    };\n\n    PolarAreaChart.prototype.createMissingValue = function createMissingValue (value, missingValues) {\n        var missingValue;\n\n        if (hasValue(value.x) && missingValues !== INTERPOLATE) {\n            missingValue = {\n                x: value.x,\n                y: value.y\n            };\n            if (missingValues === ZERO) {\n                missingValue.y = 0;\n            }\n        }\n\n        return missingValue;\n    };\n\n    PolarAreaChart.prototype.seriesMissingValues = function seriesMissingValues (series) {\n        return series.missingValues || ZERO;\n    };\n\n    PolarAreaChart.prototype._hasMissingValuesGap = function _hasMissingValuesGap () {\n        var this$1 = this;\n\n        var series = this.options.series;\n\n        for (var idx = 0; idx < series.length; idx++) {\n            if (this$1.seriesMissingValues(series[idx]) === GAP) {\n                return true;\n            }\n        }\n    };\n\n    PolarAreaChart.prototype.sortPoints = function sortPoints (points) {\n        var this$1 = this;\n\n        points.sort(xComparer);\n\n        if (this._hasMissingValuesGap()) {\n            for (var idx = 0; idx < points.length; idx++) {\n                var point = points[idx];\n                if (point) {\n                    var value = point.value;\n                    if (!hasValue(value.y) && this$1.seriesMissingValues(point.series) === GAP) {\n                        delete points[idx];\n                    }\n                }\n            }\n        }\n\n        return points;\n    };\n\n    return PolarAreaChart;\n}(PolarLineChart));\n\nfunction xComparer(a, b) {\n    return a.value.x - b.value.x;\n}\n\nexport default PolarAreaChart;","import PolarPlotAreaBase from './polar-plotarea-base';\nimport PlotAreaBase from './plotarea-base';\nimport PolarLineChart from '../polar-line-chart/polar-line-chart';\nimport PolarScatterChart from '../polar-scatter-chart/polar-scatter-chart';\nimport PolarAreaChart from '../polar-area-chart/polar-area-chart';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\n\nimport { PolarAxis, Point } from '../../core';\n\nimport { POLAR_AREA, POLAR_LINE, POLAR_SCATTER } from '../constants';\n\nimport filterSeriesByType from '../utils/filter-series-by-type';\n\nimport { ARC } from '../../common/constants';\nimport { deepExtend, eventElement, setDefaultOptions } from '../../common';\nimport XYPlotArea from './xy-plotarea';\n\nvar PolarPlotArea = (function (PolarPlotAreaBase) {\n    function PolarPlotArea () {\n        PolarPlotAreaBase.apply(this, arguments);\n    }\n\n    if ( PolarPlotAreaBase ) PolarPlotArea.__proto__ = PolarPlotAreaBase;\n    PolarPlotArea.prototype = Object.create( PolarPlotAreaBase && PolarPlotAreaBase.prototype );\n    PolarPlotArea.prototype.constructor = PolarPlotArea;\n\n    PolarPlotArea.prototype.createPolarAxis = function createPolarAxis () {\n        var polarAxis = new PolarAxis(this.options.xAxis, this.chartService);\n\n        this.polarAxis = polarAxis;\n        this.axisX = polarAxis;\n        this.appendAxis(polarAxis);\n    };\n\n    PolarPlotArea.prototype.render = function render () {\n        this.series = [].concat( this.originalSeries );\n        this.createTrendlineSeries();\n\n        PolarPlotAreaBase.prototype.render.call(this);\n    };\n\n    PolarPlotArea.prototype.valueAxisOptions = function valueAxisOptions (defaults) {\n        return deepExtend(defaults, {\n            majorGridLines: { type: ARC },\n            minorGridLines: { type: ARC }\n        }, this.options.yAxis);\n    };\n\n    PolarPlotArea.prototype.createValueAxis = function createValueAxis () {\n        PolarPlotAreaBase.prototype.createValueAxis.call(this);\n        this.axisY = this.valueAxis;\n    };\n\n    PolarPlotArea.prototype.trendlineFactory = function trendlineFactory (options, series) {\n        var trendline = XYPlotArea.prototype.trendlineFactory.call(this, options, series);\n        if (trendline) {\n            trendline.type = POLAR_LINE;\n        }\n\n        return trendline;\n    };\n\n    PolarPlotArea.prototype.appendChart = function appendChart (chart, pane) {\n        this.valueAxisRangeTracker.update(chart.yAxisRanges);\n\n        PlotAreaBase.prototype.appendChart.call(this, chart, pane);\n    };\n\n    PolarPlotArea.prototype.createCharts = function createCharts () {\n        var series = this.filterVisibleSeries(this.series);\n        var pane = this.panes[0];\n\n        this.createLineChart(\n            filterSeriesByType(series, [ POLAR_LINE ]),\n            pane\n        );\n\n        this.createScatterChart(\n            filterSeriesByType(series, [ POLAR_SCATTER ]),\n            pane\n        );\n\n        this.createAreaChart(\n            filterSeriesByType(series, [ POLAR_AREA ]),\n            pane\n        );\n    };\n\n    PolarPlotArea.prototype.createLineChart = function createLineChart (series, pane) {\n        if (series.length === 0) {\n            return;\n        }\n\n        var lineChart = new PolarLineChart(this, { series: series });\n\n        this.appendChart(lineChart, pane);\n    };\n\n    PolarPlotArea.prototype.createScatterChart = function createScatterChart (series, pane) {\n        if (series.length === 0) {\n            return;\n        }\n\n        var scatterChart = new PolarScatterChart(this, { series: series });\n\n        this.appendChart(scatterChart, pane);\n    };\n\n    PolarPlotArea.prototype.createAreaChart = function createAreaChart (series, pane) {\n        if (series.length === 0) {\n            return;\n        }\n\n        var areaChart = new PolarAreaChart(this, { series: series });\n\n        this.appendChart(areaChart, pane);\n    };\n\n    PolarPlotArea.prototype._dispatchEvent = function _dispatchEvent (chart, e, eventType) {\n        var coords = chart._eventCoordinates(e);\n        var point = new Point(coords.x, coords.y);\n        var xValue = this.axisX.getValue(point);\n        var yValue = this.axisY.getValue(point);\n\n        if (xValue !== null && yValue !== null) {\n            chart.trigger(eventType, {\n                element: eventElement(e),\n                x: xValue,\n                y: yValue\n            });\n        }\n    };\n\n    PolarPlotArea.prototype.createCrosshairs = function createCrosshairs () {};\n\n    return PolarPlotArea;\n}(PolarPlotAreaBase));\n\nsetDefaultOptions(PolarPlotArea, {\n    xAxis: {},\n    yAxis: {}\n});\n\ndeepExtend(PolarPlotArea.prototype, PlotAreaEventsMixin, {\n    seriesValues: XYPlotArea.prototype.seriesValues\n});\n\nexport default PolarPlotArea;\n","import LineChart from '../line-chart/line-chart';\nimport SplineSegment from '../line-chart/spline-segment';\nimport LineSegment from '../line-chart/line-segment';\n\nimport { Point, Box } from '../../core';\n\nimport { SMOOTH, INTERPOLATE } from '../constants';\n\nimport { setDefaultOptions, last } from '../../common';\n\nfunction groupBySeriesIx(segments) {\n    var seriesSegments = [];\n    for (var idx = 0; idx < segments.length; idx++) {\n        var segment = segments[idx];\n        seriesSegments[segment.seriesIx] = seriesSegments[segment.seriesIx] || [];\n        seriesSegments[segment.seriesIx].push(segment);\n    }\n\n    return seriesSegments;\n}\n\nvar RadarLineChart = (function (LineChart) {\n    function RadarLineChart () {\n        LineChart.apply(this, arguments);\n    }\n\n    if ( LineChart ) RadarLineChart.__proto__ = LineChart;\n    RadarLineChart.prototype = Object.create( LineChart && LineChart.prototype );\n    RadarLineChart.prototype.constructor = RadarLineChart;\n\n    RadarLineChart.prototype.pointSlot = function pointSlot (categorySlot, valueSlot) {\n        var valueRadius = categorySlot.center.y - valueSlot.y1;\n        var slot = Point.onCircle(categorySlot.center, categorySlot.middle(), valueRadius);\n\n        return new Box(slot.x, slot.y, slot.x, slot.y);\n    };\n\n    RadarLineChart.prototype.renderSegments = function renderSegments () {\n        LineChart.prototype.renderSegments.call(this);\n\n        if (this._segments && this._segments.length > 1) {\n            var seriesSegments = groupBySeriesIx(this._segments);\n\n            for (var idx = 0; idx < seriesSegments.length; idx++) {\n                var segments = seriesSegments[idx];\n                if (segments && segments.length > 1) {\n                    var firstPoint = segments[0].linePoints[0];\n                    var lastSegment = last(segments);\n                    var lastPoint = last(lastSegment.linePoints);\n                    var isFirstDataPoint = firstPoint.categoryIx === 0;\n                    var isLastDataPoint = lastPoint.categoryIx === lastPoint.categoriesCount - 1;\n                    if (isFirstDataPoint && isLastDataPoint) {\n                        last(segments).linePoints.push(firstPoint);\n                    }\n                }\n            }\n        }\n    };\n\n    RadarLineChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx) {\n        var style = currentSeries.style;\n        var pointType;\n\n        if (style === SMOOTH) {\n            pointType = SplineSegment;\n        } else {\n            pointType = LineSegment;\n        }\n\n        var segment = new pointType(linePoints, currentSeries, seriesIx);\n        var missingValues = this.seriesMissingValues(currentSeries);\n\n        if (linePoints.length === currentSeries.data.length || missingValues === INTERPOLATE) {\n            segment.options.closed = true;\n        }\n\n        return segment;\n    };\n\n    return RadarLineChart;\n}(LineChart));\n\nsetDefaultOptions(RadarLineChart, {\n    clip: false,\n    limitPoints: false\n});\n\nexport default RadarLineChart;\n","import SplineAreaSegment from '../area-chart/spline-area-segment';\n\nvar SplineRadarAreaSegment = (function (SplineAreaSegment) {\n    function SplineRadarAreaSegment () {\n        SplineAreaSegment.apply(this, arguments);\n    }\n\n    if ( SplineAreaSegment ) SplineRadarAreaSegment.__proto__ = SplineAreaSegment;\n    SplineRadarAreaSegment.prototype = Object.create( SplineAreaSegment && SplineAreaSegment.prototype );\n    SplineRadarAreaSegment.prototype.constructor = SplineRadarAreaSegment;\n\n    SplineRadarAreaSegment.prototype.fillToAxes = function fillToAxes () {};\n\n    return SplineRadarAreaSegment;\n}(SplineAreaSegment));\n\nexport default SplineRadarAreaSegment;","import AreaSegment from '../area-chart/area-segment';\n\nvar RadarAreaSegment = (function (AreaSegment) {\n    function RadarAreaSegment () {\n        AreaSegment.apply(this, arguments);\n    }\n\n    if ( AreaSegment ) RadarAreaSegment.__proto__ = AreaSegment;\n    RadarAreaSegment.prototype = Object.create( AreaSegment && AreaSegment.prototype );\n    RadarAreaSegment.prototype.constructor = RadarAreaSegment;\n\n    RadarAreaSegment.prototype.fillToAxes = function fillToAxes () {};\n\n    return RadarAreaSegment;\n}(AreaSegment));\n\nexport default RadarAreaSegment;","import RadarLineChart from '../radar-line-chart/radar-line-chart';\nimport SplineRadarAreaSegment from './spline-radar-area-segment';\nimport RadarAreaSegment from './radar-area-segment';\n\nimport { SMOOTH, ZERO } from '../constants';\n\nvar RadarAreaChart = (function (RadarLineChart) {\n    function RadarAreaChart () {\n        RadarLineChart.apply(this, arguments);\n    }\n\n    if ( RadarLineChart ) RadarAreaChart.__proto__ = RadarLineChart;\n    RadarAreaChart.prototype = Object.create( RadarLineChart && RadarLineChart.prototype );\n    RadarAreaChart.prototype.constructor = RadarAreaChart;\n\n    RadarAreaChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx, prevSegment) {\n        var isStacked = this.options.isStacked;\n        var style = (currentSeries.line || {}).style;\n        var previousSegment;\n        var stackPoints;\n        var segment;\n\n        if (isStacked && seriesIx > 0 && prevSegment) {\n            stackPoints = prevSegment.linePoints.slice(0);\n            previousSegment = prevSegment;\n        }\n\n        if (style === SMOOTH) {\n            segment = new SplineRadarAreaSegment(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n            segment.options.closed = true;\n        } else {\n            linePoints.push(linePoints[0]);\n            segment = new RadarAreaSegment(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n        }\n\n        return segment;\n    };\n\n    RadarAreaChart.prototype.seriesMissingValues = function seriesMissingValues (series) {\n        return series.missingValues || ZERO;\n    };\n\n    return RadarAreaChart;\n}(RadarLineChart));\n\nexport default RadarAreaChart;","import DonutSegment from '../donut-chart/donut-segment';\n\nimport { setDefaultOptions } from '../../common';\n\nvar RadarSegment = (function (DonutSegment) {\n    function RadarSegment(value, options) {\n        DonutSegment.call(this, value, null, options);\n    }\n\n    if ( DonutSegment ) RadarSegment.__proto__ = DonutSegment;\n    RadarSegment.prototype = Object.create( DonutSegment && DonutSegment.prototype );\n    RadarSegment.prototype.constructor = RadarSegment;\n\n    return RadarSegment;\n}(DonutSegment));\n\nsetDefaultOptions(RadarSegment, {\n    overlay: {\n        gradient: \"none\"\n    },\n    labels: {\n        distance: 10\n    }\n});\n\nexport default RadarSegment;","import { ChartElement } from '../../core';\n\nimport { setDefaultOptions } from '../../common';\n\nimport { forEach, forEachReverse } from './utils';\n\nvar RadarClusterLayout = (function (ChartElement) {\n    function RadarClusterLayout(options) {\n        ChartElement.call(this, options);\n\n        this.forEach = options.rtl ? forEachReverse : forEach;\n    }\n\n    if ( ChartElement ) RadarClusterLayout.__proto__ = ChartElement;\n    RadarClusterLayout.prototype = Object.create( ChartElement && ChartElement.prototype );\n    RadarClusterLayout.prototype.constructor = RadarClusterLayout;\n\n    RadarClusterLayout.prototype.reflow = function reflow (sector) {\n        var ref = this;\n        var options = ref.options;\n        var children = ref.children;\n        var gap = options.gap;\n        var spacing = options.spacing;\n        var count = children.length;\n        var slots = count + gap + (spacing * (count - 1));\n        var slotAngle = sector.angle / slots;\n        var angle = sector.startAngle + slotAngle * (gap / 2);\n\n        this.forEach(children, function (child) {\n            var slotSector = sector.clone();\n            slotSector.startAngle = angle;\n            slotSector.angle = slotAngle;\n\n            if (child.sector) {\n                slotSector.radius = child.sector.radius;\n            }\n\n            child.reflow(slotSector);\n            child.sector = slotSector;\n\n            angle += slotAngle + (slotAngle * spacing);\n        });\n    };\n\n    return RadarClusterLayout;\n}(ChartElement));\n\nsetDefaultOptions(RadarClusterLayout, {\n    gap: 1,\n    spacing: 0\n});\n\nexport default RadarClusterLayout;","import { ChartElement, Box } from '../../core';\n\nvar RadarStackLayout = (function (ChartElement) {\n    function RadarStackLayout () {\n        ChartElement.apply(this, arguments);\n    }\n\n    if ( ChartElement ) RadarStackLayout.__proto__ = ChartElement;\n    RadarStackLayout.prototype = Object.create( ChartElement && ChartElement.prototype );\n    RadarStackLayout.prototype.constructor = RadarStackLayout;\n\n    RadarStackLayout.prototype.reflow = function reflow (sector) {\n        var ref = this;\n        var reverse = ref.options.reverse;\n        var children = ref.children;\n        var childrenCount = children.length;\n        var first = reverse ? childrenCount - 1 : 0;\n        var step = reverse ? -1 : 1;\n\n        this.box = new Box();\n\n        for (var i = first; i >= 0 && i < childrenCount; i += step) {\n            var childSector = children[i].sector;\n            childSector.startAngle = sector.startAngle;\n            childSector.angle = sector.angle;\n        }\n    };\n\n    return RadarStackLayout;\n}(ChartElement));\n\nexport default RadarStackLayout;","import BarChart from '../bar-chart/bar-chart';\nimport RadarSegment from './radar-segment';\nimport RadarClusterLayout from '../layout/radar-cluster-layout';\nimport RadarStackLayout from '../layout/radar-stack-layout';\nimport CategoricalChart from '../categorical-chart';\n\nimport { setDefaultOptions } from '../../common';\n\nvar RadarBarChart = (function (BarChart) {\n    function RadarBarChart () {\n        BarChart.apply(this, arguments);\n    }\n\n    if ( BarChart ) RadarBarChart.__proto__ = BarChart;\n    RadarBarChart.prototype = Object.create( BarChart && BarChart.prototype );\n    RadarBarChart.prototype.constructor = RadarBarChart;\n\n    RadarBarChart.prototype.pointType = function pointType () {\n        return RadarSegment;\n    };\n\n    RadarBarChart.prototype.clusterType = function clusterType () {\n        return RadarClusterLayout;\n    };\n\n    RadarBarChart.prototype.stackType = function stackType () {\n        return RadarStackLayout;\n    };\n\n    RadarBarChart.prototype.categorySlot = function categorySlot (categoryAxis, categoryIx) {\n        return categoryAxis.getSlot(categoryIx);\n    };\n\n    RadarBarChart.prototype.pointSlot = function pointSlot (categorySlot, valueSlot) {\n        var slot = categorySlot.clone();\n        var y = categorySlot.center.y;\n\n        slot.radius = y - valueSlot.y1;\n        slot.innerRadius = y - valueSlot.y2;\n\n        return slot;\n    };\n\n    RadarBarChart.prototype.reflowPoint = function reflowPoint (point, pointSlot) {\n        point.sector = pointSlot;\n        point.reflow();\n    };\n\n    RadarBarChart.prototype.createAnimation = function createAnimation () {\n        this.options.animation.center = this.box.toRect().center();\n        BarChart.prototype.createAnimation.call(this);\n    };\n\n    return RadarBarChart;\n}(BarChart));\n\nRadarBarChart.prototype.reflow = CategoricalChart.prototype.reflow;\n\nsetDefaultOptions(RadarBarChart, {\n    clip: false,\n    limitPoints: false,\n    animation: {\n        type: \"pie\"\n    }\n});\n\nexport default RadarBarChart;","import PolarPlotAreaBase from './polar-plotarea-base';\nimport CategoricalPlotArea from './categorical-plotarea';\nimport RadarAreaChart from '../radar-area-chart/radar-area-chart';\nimport RadarLineChart from '../radar-line-chart/radar-line-chart';\nimport RadarBarChart from '../radar-bar-chart/radar-bar-chart';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\n\nimport { RadarCategoryAxis, Point } from '../../core';\n\nimport { RADAR_AREA, RADAR_LINE, RADAR_COLUMN } from '../constants';\n\nimport filterSeriesByType from '../utils/filter-series-by-type';\n\nimport { ARC } from '../../common/constants';\nimport { eventElement, deepExtend, setDefaultOptions } from '../../common';\n\nvar RadarPlotArea = (function (PolarPlotAreaBase) {\n    function RadarPlotArea () {\n        PolarPlotAreaBase.apply(this, arguments);\n    }\n\n    if ( PolarPlotAreaBase ) RadarPlotArea.__proto__ = PolarPlotAreaBase;\n    RadarPlotArea.prototype = Object.create( PolarPlotAreaBase && PolarPlotAreaBase.prototype );\n    RadarPlotArea.prototype.constructor = RadarPlotArea;\n\n    RadarPlotArea.prototype.createPolarAxis = function createPolarAxis () {\n        var categoryAxis = new RadarCategoryAxis(this.options.categoryAxis, this.chartService);\n\n        this.polarAxis = categoryAxis;\n        this.categoryAxis = categoryAxis;\n        this.appendAxis(categoryAxis);\n        this.aggregateCategories();\n        this.createTrendlineSeries();\n        this.createCategoryAxesLabels();\n    };\n\n    RadarPlotArea.prototype.valueAxisOptions = function valueAxisOptions (defaults) {\n        if (this._hasBarCharts) {\n            deepExtend(defaults, {\n                majorGridLines: { type: ARC },\n                minorGridLines: { type: ARC }\n            });\n        }\n\n        if (this._isStacked100) {\n            deepExtend(defaults, {\n                roundToMajorUnit: false,\n                labels: { format: \"P0\" }\n            });\n        }\n\n        return deepExtend(defaults, this.options.valueAxis);\n    };\n\n    RadarPlotArea.prototype.aggregateCategories = function aggregateCategories () {\n        // No separate panes in radar charts\n        CategoricalPlotArea.prototype.aggregateCategories.call(this, this.panes);\n    };\n\n    RadarPlotArea.prototype.createCategoryAxesLabels = function createCategoryAxesLabels () {\n        CategoricalPlotArea.prototype.createCategoryAxesLabels.call(this, this.panes);\n    };\n\n    RadarPlotArea.prototype.filterSeries = function filterSeries (currentSeries) {\n        // Not supported for radar charts\n        return currentSeries;\n    };\n\n    RadarPlotArea.prototype.trendlineFactory = function trendlineFactory (options, series) {\n        var trendline = CategoricalPlotArea.prototype.trendlineFactory.call(this, options, series);\n        if (trendline) {\n            trendline.type = RADAR_LINE;\n        }\n\n        return trendline;\n    };\n\n    RadarPlotArea.prototype.createCharts = function createCharts () {\n        var series = this.filterVisibleSeries(this.series);\n        var pane = this.panes[0];\n\n        this.createAreaChart(\n            filterSeriesByType(series, [ RADAR_AREA ]),\n            pane\n        );\n\n        this.createLineChart(\n            filterSeriesByType(series, [ RADAR_LINE ]),\n            pane\n        );\n\n        this.createBarChart(\n            filterSeriesByType(series, [ RADAR_COLUMN ]),\n            pane\n        );\n    };\n\n    RadarPlotArea.prototype.chartOptions = function chartOptions (series) {\n        var options = { series: series };\n        var firstSeries = series[0];\n        if (firstSeries) {\n            var filteredSeries = this.filterVisibleSeries(series);\n            var stack = firstSeries.stack;\n            options.isStacked = stack && filteredSeries.length > 1;\n            options.isStacked100 = stack && stack.type === \"100%\" && filteredSeries.length > 1;\n\n            if (options.isStacked100) {\n                this._isStacked100 = true;\n            }\n        }\n\n        return options;\n    };\n\n    RadarPlotArea.prototype.createAreaChart = function createAreaChart (series, pane) {\n        if (series.length === 0) {\n            return;\n        }\n\n        var areaChart = new RadarAreaChart(this, this.chartOptions(series));\n        this.appendChart(areaChart, pane);\n    };\n\n    RadarPlotArea.prototype.createLineChart = function createLineChart (series, pane) {\n        if (series.length === 0) {\n            return;\n        }\n\n        var lineChart = new RadarLineChart(this, this.chartOptions(series));\n        this.appendChart(lineChart, pane);\n    };\n\n    RadarPlotArea.prototype.createBarChart = function createBarChart (series, pane) {\n        if (series.length === 0) {\n            return;\n        }\n\n        var firstSeries = series[0];\n        var options = this.chartOptions(series);\n        options.gap = firstSeries.gap;\n        options.spacing = firstSeries.spacing;\n\n        var barChart = new RadarBarChart(this, options);\n        this.appendChart(barChart, pane);\n\n        this._hasBarCharts = true;\n    };\n\n    RadarPlotArea.prototype.seriesCategoryAxis = function seriesCategoryAxis () {\n        return this.categoryAxis;\n    };\n\n    RadarPlotArea.prototype._dispatchEvent = function _dispatchEvent (chart, e, eventType) {\n        var coords = chart._eventCoordinates(e);\n        var point = new Point(coords.x, coords.y);\n        var category = this.categoryAxis.getCategory(point);\n        var value = this.valueAxis.getValue(point);\n\n        if (category !== null && value !== null) {\n            chart.trigger(eventType, {\n                element: eventElement(e),\n                category: category,\n                value: value\n            });\n        }\n    };\n\n    RadarPlotArea.prototype.createCrosshairs = function createCrosshairs () {};\n\n    return RadarPlotArea;\n}(PolarPlotAreaBase));\n\ndeepExtend(RadarPlotArea.prototype, PlotAreaEventsMixin, {\n    appendChart: CategoricalPlotArea.prototype.appendChart,\n    aggregateSeries: CategoricalPlotArea.prototype.aggregateSeries,\n    seriesSourcePoints: CategoricalPlotArea.prototype.seriesSourcePoints,\n    seriesValues: CategoricalPlotArea.prototype.seriesValues\n});\n\nsetDefaultOptions(RadarPlotArea, {\n    categoryAxis: {\n        categories: []\n    },\n    valueAxis: {}\n});\n\nexport default RadarPlotArea;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Box, Point } from '../../core';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nimport { WHITE } from '../../common/constants';\nimport { deepExtend, setDefaultOptions } from '../../common';\n\nvar FunnelSegment = (function (ChartElement) {\n    function FunnelSegment(value, options, segmentOptions) {\n        ChartElement.call(this, options);\n\n        this.value = value;\n        this.options.index = segmentOptions.index;\n    }\n\n    if ( ChartElement ) FunnelSegment.__proto__ = ChartElement;\n    FunnelSegment.prototype = Object.create( ChartElement && ChartElement.prototype );\n    FunnelSegment.prototype.constructor = FunnelSegment;\n\n    FunnelSegment.prototype.reflow = function reflow (chartBox) {\n        var points = this.points;\n        var label = this.children[0];\n\n        this.box = new Box(points[0].x, points[0].y, points[1].x, points[2].y);\n\n        if (label) {\n            label.reflow(new Box(chartBox.x1, points[0].y, chartBox.x2, points[2].y));\n        }\n    };\n\n    FunnelSegment.prototype.createVisual = function createVisual () {\n        var this$1 = this;\n\n        var options = this.options;\n        var visual;\n\n        ChartElement.prototype.createVisual.call(this);\n\n        if (options.visual) {\n            visual = options.visual({\n                category: this.category,\n                dataItem: this.dataItem,\n                value: this.value,\n                series: this.series,\n                percentage: this.percentage,\n                points: this.points,\n                options: options,\n                sender: this.getSender(),\n                createVisual: function () { return this$1.createPath(); }\n            });\n        } else {\n            visual = this.createPath();\n        }\n\n        if (visual) {\n            this.visual.append(visual);\n        }\n    };\n\n    FunnelSegment.prototype.createPath = function createPath () {\n        var options = this.options;\n        var border = options.border;\n        var path = draw.Path.fromPoints(this.points, {\n            fill: {\n                color: options.color,\n                opacity: options.opacity\n            },\n            stroke: {\n                color: border.color,\n                opacity: border.opacity,\n                width: border.width\n            }\n        }).close();\n\n        return path;\n    };\n\n    FunnelSegment.prototype.createHighlight = function createHighlight (style) {\n        return draw.Path.fromPoints(this.points, style);\n    };\n\n    FunnelSegment.prototype.highlightVisual = function highlightVisual () {\n        return this.visual.children[0];\n    };\n\n    FunnelSegment.prototype.highlightVisualArgs = function highlightVisualArgs () {\n        var path = draw.Path.fromPoints(this.points).close();\n\n        return {\n            options: this.options,\n            path: path\n        };\n    };\n\n    FunnelSegment.prototype.tooltipAnchor = function tooltipAnchor () {\n        var box = this.box;\n        return {\n            point: new Point(box.center().x, box.y1),\n            align: {\n                horizontal: \"center\",\n                vertical: \"top\"\n            }\n        };\n    };\n\n    FunnelSegment.prototype.formatValue = function formatValue (format) {\n        var point = this;\n        return point.owner.formatPointValue(point, format);\n    };\n\n    return FunnelSegment;\n}(ChartElement));\n\nsetDefaultOptions(FunnelSegment, {\n    color: WHITE,\n    border: {\n        width: 1\n    }\n});\n\ndeepExtend(FunnelSegment.prototype, PointEventsMixin);\n\nexport default FunnelSegment;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport { ChartElement, TextBox } from '../../core';\nimport PieChartMixin from '../mixins/pie-chart-mixin';\nimport FunnelSegment from './funnel-segment';\n\nimport { bindSegments, evalOptions } from '../utils';\n\nimport { CENTER, LEFT } from '../../common/constants';\nimport { autoTextColor, deepExtend, isFunction, getTemplate, limitValue, setDefaultOptions } from '../../common';\n\nvar FunnelChart = (function (ChartElement) {\n    function FunnelChart(plotArea, options) {\n        ChartElement.call(this, options);\n\n        this.plotArea = plotArea;\n        this.chartService = plotArea.chartService;\n        this.points = [];\n        this.labels = [];\n        this.legendItems = [];\n        this.render();\n    }\n\n    if ( ChartElement ) FunnelChart.__proto__ = ChartElement;\n    FunnelChart.prototype = Object.create( ChartElement && ChartElement.prototype );\n    FunnelChart.prototype.constructor = FunnelChart;\n\n    FunnelChart.prototype.formatPointValue = function formatPointValue (point, format) {\n        return this.chartService.format.auto(format,point.value);\n    };\n\n    FunnelChart.prototype.render = function render () {\n        var this$1 = this;\n\n        var ref = this;\n        var options = ref.options;\n        var seriesColors = ref.plotArea.options.seriesColors; if ( seriesColors === void 0 ) seriesColors = [];\n        var series = options.series[0];\n        var data = series.data;\n\n        if (!data) {\n            return;\n        }\n\n        var ref$1 = bindSegments(series);\n        var total = ref$1.total;\n        var points = ref$1.points;\n\n        for (var i = 0; i < points.length; i++) {\n            var pointData = points[i];\n\n            if (!pointData) {\n                continue;\n            }\n\n            var fields = pointData.fields;\n\n            if (!isFunction(series.color)) {\n                series.color = fields.color || seriesColors[i % seriesColors.length];\n            }\n\n            fields = deepExtend({\n                index: i,\n                owner: this$1,\n                series: series,\n                dataItem: data[i],\n                percentage: pointData.value / total\n            }, fields, { visible: pointData.visible });\n\n            var value = pointData.valueFields.value;\n            var segment = this$1.createSegment(value, fields);\n            var label = this$1.createLabel(value, fields);\n\n            if (segment && label) {\n                segment.append(label);\n            }\n        }\n    };\n\n    FunnelChart.prototype.evalSegmentOptions = function evalSegmentOptions (options, value, fields) {\n        var series = fields.series;\n\n        evalOptions(options, {\n            value: value,\n            series: series,\n            dataItem: fields.dataItem,\n            index: fields.index\n        }, { defaults: series._defaults, excluded: [ \"data\", \"content\", \"template\", \"toggle\", \"visual\" ] });\n    };\n\n    FunnelChart.prototype.createSegment = function createSegment (value, fields) {\n        var seriesOptions = deepExtend({}, fields.series);\n        this.evalSegmentOptions(seriesOptions, value, fields);\n\n        this.createLegendItem(value, seriesOptions, fields);\n\n        if (fields.visible !== false) {\n\n            var segment = new FunnelSegment(value, seriesOptions, fields);\n            Object.assign(segment, fields);\n\n            this.append(segment);\n            this.points.push(segment);\n\n            return segment;\n        }\n    };\n\n    FunnelChart.prototype.createLabel = function createLabel (value, fields) {\n        var series = fields.series;\n        var dataItem = fields.dataItem;\n        var labels = deepExtend({}, this.options.labels, series.labels);\n        var text = value;\n\n        if (labels.visible) {\n            var labelTemplate = getTemplate(labels);\n            var data = {\n                dataItem: dataItem,\n                value: value,\n                percentage: fields.percentage,\n                category: fields.category,\n                series: series\n            };\n            if (labelTemplate) {\n                text = labelTemplate(data);\n            } else if (labels.format) {\n                text = this.chartService.format.auto(labels.format, text);\n            }\n\n            if (!labels.color) {\n                labels.color = autoTextColor(series.color);\n                if (!labels.background) {\n                    labels.background = series.color;\n                }\n            }\n\n            this.evalSegmentOptions(labels, value, fields);\n            var textBox = new TextBox(text, deepExtend({\n                vAlign: labels.position\n            }, labels), data);\n\n            this.labels.push(textBox);\n\n            return textBox;\n        }\n    };\n\n    FunnelChart.prototype.labelPadding = function labelPadding () {\n        var labels = this.labels;\n        var padding = { left: 0, right: 0 };\n\n        for (var i = 0; i < labels.length; i++) {\n            var label = labels[i];\n            var align = label.options.align;\n            if (align !== CENTER) {\n                var width = labels[i].box.width();\n\n                if (align === LEFT) {\n                    padding.left = Math.max(padding.left, width);\n                } else {\n                    padding.right = Math.max(padding.right, width);\n                }\n            }\n        }\n\n        return padding;\n    };\n\n    FunnelChart.prototype.dynamicSlopeReflow = function dynamicSlopeReflow (box, width, totalHeight) {\n        var ref = this;\n        var options = ref.options;\n        var segments = ref.points;\n        var count = segments.length;\n        var firstSegment = segments[0];\n        var maxSegment = firstSegment;\n\n        for (var idx = 0; idx < segments.length; idx++) {\n            if (segments[idx].percentage > maxSegment.percentage) {\n                maxSegment = segments[idx];\n            }\n        }\n\n        var lastUpperSide = (firstSegment.percentage / maxSegment.percentage) * width;\n        var previousOffset = (width - lastUpperSide) / 2;\n        var previousHeight = 0;\n\n        for (var idx$1 = 0; idx$1 < count; idx$1++) {\n            var percentage = segments[idx$1].percentage;\n            var nextSegment = segments[idx$1 + 1];\n            var nextPercentage = (nextSegment ? nextSegment.percentage : percentage);\n            var points = segments[idx$1].points = [];\n            var height = (options.dynamicHeight) ? (totalHeight * percentage) : (totalHeight / count);\n            var offset = (void 0);\n\n            if (!percentage) {\n                offset = nextPercentage ? 0 : width / 2;\n            } else {\n                offset = (width - lastUpperSide * (nextPercentage / percentage)) / 2;\n            }\n\n            offset = limitValue(offset, 0, width);\n\n            points.push(new geom.Point(box.x1 + previousOffset, box.y1 + previousHeight));\n            points.push(new geom.Point(box.x1 + width - previousOffset, box.y1 + previousHeight));\n            points.push(new geom.Point(box.x1 + width - offset, box.y1 + height + previousHeight));\n            points.push(new geom.Point(box.x1 + offset, box.y1 + height + previousHeight));\n\n            previousOffset = offset;\n            previousHeight += height + options.segmentSpacing;\n            lastUpperSide = limitValue(width - 2 * offset, 0, width);\n        }\n    };\n\n    FunnelChart.prototype.constantSlopeReflow = function constantSlopeReflow (box, width, totalHeight) {\n        var ref = this;\n        var options = ref.options;\n        var segments = ref.points;\n        var count = segments.length;\n        var decreasingWidth = options.neckRatio <= 1;\n        var neckRatio = decreasingWidth ? options.neckRatio * width : width;\n        var previousOffset = decreasingWidth ? 0 : (width - width / options.neckRatio) / 2;\n        var topMostWidth = decreasingWidth ? width : width - previousOffset * 2;\n        var finalNarrow = (topMostWidth - neckRatio) / 2;\n        var previousHeight = 0;\n\n        for (var idx = 0; idx < count; idx++) {\n            var points = segments[idx].points = [];\n            var percentage = segments[idx].percentage;\n            var offset = (options.dynamicHeight) ? (finalNarrow * percentage) : (finalNarrow / count);\n            var height = (options.dynamicHeight) ? (totalHeight * percentage) : (totalHeight / count);\n\n            points.push(new geom.Point(box.x1 + previousOffset, box.y1 + previousHeight));\n            points.push(new geom.Point(box.x1 + width - previousOffset, box.y1 + previousHeight));\n            points.push(new geom.Point(box.x1 + width - previousOffset - offset, box.y1 + height + previousHeight));\n            points.push(new geom.Point(box.x1 + previousOffset + offset,box.y1 + height + previousHeight));\n            previousOffset += offset;\n            previousHeight += height + options.segmentSpacing;\n        }\n    };\n\n    FunnelChart.prototype.reflow = function reflow (chartBox) {\n        var points = this.points;\n        var count = points.length;\n\n        if (!count) {\n            return;\n        }\n\n        var options = this.options;\n        var box = chartBox.clone().unpad(this.labelPadding());\n        var totalHeight = box.height() - options.segmentSpacing * (count - 1);\n        var width = box.width();\n\n        if (options.dynamicSlope) {\n            this.dynamicSlopeReflow(box, width, totalHeight);\n        } else {\n            this.constantSlopeReflow(box, width, totalHeight);\n        }\n\n        for (var idx = 0; idx < count; idx++) {\n            points[idx].reflow(chartBox);\n        }\n    };\n\n    return FunnelChart;\n}(ChartElement));\n\nsetDefaultOptions(FunnelChart, {\n    neckRatio: 0.3,\n    width: 300,\n    dynamicSlope: false,\n    dynamicHeight: true,\n    segmentSpacing: 0,\n    labels: {\n        visible: false,\n        align: CENTER,\n        position: CENTER,\n        zIndex: 1\n    }\n});\n\ndeepExtend(FunnelChart.prototype, PieChartMixin);\n\nexport default FunnelChart;\n","import FunnelChart from './funnel-chart';\n\nvar MAX_NECK_RATIO = 1e6;\n\nvar PyramidChart = (function (FunnelChart) {\n    function PyramidChart(plotArea, options) {\n        options.dynamicSlope = false;\n        options.neckRatio = MAX_NECK_RATIO;\n\n        FunnelChart.call(this, plotArea, options);\n    }\n\n    if ( FunnelChart ) PyramidChart.__proto__ = FunnelChart;\n    PyramidChart.prototype = Object.create( FunnelChart && FunnelChart.prototype );\n    PyramidChart.prototype.constructor = PyramidChart;\n\n    return PyramidChart;\n}(FunnelChart));\n\nexport default PyramidChart;\n","import PlotAreaBase from './plotarea-base';\nimport FunnelChart from '../funnel-chart/funnel-chart';\nimport PyramidChart from '../funnel-chart/pyramid-chart';\n\nimport { append } from '../../common';\nimport { filterSeriesByType } from '../utils';\n\nimport { FUNNEL, PYRAMID } from '../constants';\n\nvar FunnelPlotArea = (function (PlotAreaBase) {\n    function FunnelPlotArea () {\n        PlotAreaBase.apply(this, arguments);\n    }\n\n    if ( PlotAreaBase ) FunnelPlotArea.__proto__ = PlotAreaBase;\n    FunnelPlotArea.prototype = Object.create( PlotAreaBase && PlotAreaBase.prototype );\n    FunnelPlotArea.prototype.constructor = FunnelPlotArea;\n\n    FunnelPlotArea.prototype.render = function render () {\n        this.createChart(FunnelChart, filterSeriesByType(this.series, [ FUNNEL ]));\n        this.createChart(PyramidChart, filterSeriesByType(this.series, [ PYRAMID ]));\n    };\n\n    FunnelPlotArea.prototype.createChart = function createChart (chartType, series) {\n        var firstSeries = series[0];\n        if (!firstSeries) {\n            return;\n        }\n\n        var chart = new chartType(this, {\n            series: series,\n            legend: this.options.legend,\n            neckRatio: firstSeries.neckRatio,\n            dynamicHeight: firstSeries.dynamicHeight,\n            dynamicSlope: firstSeries.dynamicSlope,\n            segmentSpacing: firstSeries.segmentSpacing,\n            highlight: firstSeries.highlight\n        });\n\n        this.appendChart(chart);\n    };\n\n    FunnelPlotArea.prototype.appendChart = function appendChart (chart, pane) {\n        PlotAreaBase.prototype.appendChart.call(this, chart, pane);\n        append(this.options.legend.items, chart.legendItems);\n    };\n\n    return FunnelPlotArea;\n}(PlotAreaBase));\n\nexport default FunnelPlotArea;\n","import { parseColor } from '@progress/kendo-drawing';\n\n// Linear color scale from the given color to white minus minimum lightness offset.\nvar colorScale = function (color, minLightnessOffset) {\n    if ( minLightnessOffset === void 0 ) minLightnessOffset = 0.05;\n\n    var baseColor = parseColor(color);\n    var offset = 1 - minLightnessOffset;\n\n    return function (value) {\n        var hsl = baseColor.toHSL();\n        var range = 100 - hsl.l;\n        var point = offset - value;\n        hsl.l += Math.min(point * range, range);\n\n        return hsl.toCss();\n    };\n};\n\nexport default colorScale;\n","import { autoTextColor, deepExtend, getTemplate, valueOrDefault } from '../../common';\nimport { CENTER, ROUNDED_RECT, BOTTOM, WHITE } from '../../common/constants';\nimport { ChartElement, Point, rectToBox, ShapeElement, TextBox } from '../../core';\nimport { TOOLTIP_OFFSET } from '../constants';\nimport NoteMixin from '../mixins/note-mixin';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nvar HeatmapPoint = (function (ChartElement) {\n    function HeatmapPoint(value, options) {\n        ChartElement.call(this);\n\n        this.options = options;\n        this.color = options.color || WHITE;\n        this.value = value;\n    }\n\n    if ( ChartElement ) HeatmapPoint.__proto__ = ChartElement;\n    HeatmapPoint.prototype = Object.create( ChartElement && ChartElement.prototype );\n    HeatmapPoint.prototype.constructor = HeatmapPoint;\n\n    HeatmapPoint.prototype.render = function render () {\n        if (this._rendered) {\n            return;\n        }\n\n        this._rendered = true;\n\n        this.createMarker();\n        this.createLabel();\n        this.createNote();\n    };\n\n    HeatmapPoint.prototype.createLabel = function createLabel () {\n        var options = this.options;\n        var labels = options.labels;\n\n        if (labels.visible) {\n            var pointData = this.pointData();\n            var labelTemplate = getTemplate(labels);\n            var labelText;\n            var labelColor = labels.color;\n\n            if (labelTemplate) {\n                labelText = labelTemplate(pointData);\n            } else {\n                labelText = this.formatValue(labels.format);\n            }\n\n            if (!labelColor) {\n                labelColor = autoTextColor(this.color);\n            }\n\n            this.label = new TextBox(labelText,\n                deepExtend({\n                    align: CENTER,\n                    vAlign: CENTER,\n                    margin: {\n                        left: 5,\n                        right: 5\n                    },\n                    zIndex: valueOrDefault(labels.zIndex, this.series.zIndex)\n                },\n                labels, {\n                    color: labelColor\n                }),\n                pointData\n            );\n            this.append(this.label);\n        }\n    };\n\n    HeatmapPoint.prototype.formatValue = function formatValue (format) {\n        return this.owner.formatPointValue(this, format);\n    };\n\n    HeatmapPoint.prototype.reflow = function reflow (targetBox) {\n        this.render();\n\n        var label = this.label;\n\n        this.box = targetBox;\n\n        if (label) {\n            label.reflow(this.markerBox());\n        }\n\n        if (this.note) {\n            this.note.reflow(targetBox);\n        }\n\n        this.marker.reflow(this.markerBox());\n    };\n\n    HeatmapPoint.prototype.markerBox = function markerBox () {\n        var options = this.options;\n        var markers = options.markers;\n        var border = markers.border;\n        var rect = this.box.toRect();\n        var type = valueOrDefault(markers.type, 'rect');\n        var isRoundRect = type === ROUNDED_RECT;\n        var borderWidth = valueOrDefault(border.width, isRoundRect ? 1 : 0);\n        var halfBorderWidth = Math.round(borderWidth / 2);\n\n        if (markers.size) {\n            var center = rect.center();\n            rect.size.width = rect.size.height = markers.size;\n            rect.origin.x = Math.round(center.x - rect.size.width / 2);\n            rect.origin.y = Math.round(center.y - rect.size.height / 2);\n        }\n\n        rect.size.width -= borderWidth;\n        rect.size.height -= borderWidth;\n        rect.origin.y += halfBorderWidth + 0.5;\n        rect.origin.x += halfBorderWidth + 0.5;\n\n        return rectToBox(rect);\n    };\n\n    HeatmapPoint.prototype.markerBorder = function markerBorder () {\n        var options = this.options;\n        var markers = options.markers;\n        var border = markers.border;\n        var opacity = valueOrDefault(border.opacity, options.opacity);\n\n        return {\n            color: border.color || this.color,\n            width: border.width,\n            opacity: opacity,\n            dashType: border.dashType\n        };\n    };\n\n    HeatmapPoint.prototype.createMarker = function createMarker () {\n        var options = this.options;\n        var markerOptions = options.markers;\n        var marker = new ShapeElement({\n            type: valueOrDefault(markerOptions.type, 'rect'),\n            width: markerOptions.size,\n            height: markerOptions.size,\n            rotation: markerOptions.rotation,\n            background: this.color,\n            border: this.markerBorder(),\n            borderRadius: markerOptions.borderRadius,\n            opacity: this.series.opacity || options.opacity,\n            zIndex: valueOrDefault(options.zIndex, this.series.zIndex),\n            animation: options.animation,\n            visual: options.visual\n        }, {\n            dataItem: this.dataItem,\n            value: this.value,\n            series: this.series,\n            category: this.category\n        });\n\n        this.marker = marker;\n        this.append(marker);\n    };\n\n    HeatmapPoint.prototype.createHighlight = function createHighlight (style) {\n        var options = this.options;\n        var markerOptions = this.options.highlight.markers || this.options.markers;\n\n        var highlight = new ShapeElement({\n            type: valueOrDefault(markerOptions.type, 'rect'),\n            width: markerOptions.size,\n            height: markerOptions.size,\n            rotation: markerOptions.rotation,\n            background: markerOptions.color || this.color,\n            border: this.markerBorder(),\n            borderRadius: markerOptions.borderRadius,\n            opacity: this.series.opacity || options.opacity,\n            zIndex: valueOrDefault(options.zIndex, this.series.zIndex)\n        });\n\n        highlight.reflow(this.markerBox());\n        var visual = highlight.getElement();\n\n        visual.options.fill = style.fill;\n        visual.options.stroke = style.stroke;\n\n        return visual;\n    };\n\n    HeatmapPoint.prototype.highlightVisual = function highlightVisual () {\n        return this.rectVisual;\n    };\n\n    HeatmapPoint.prototype.highlightVisualArgs = function highlightVisualArgs () {\n        return {\n            options: this.options,\n            rect: this.box.toRect(),\n            visual: this.rectVisual\n        };\n    };\n\n    HeatmapPoint.prototype.tooltipAnchor = function tooltipAnchor () {\n        var left = this.box.center().x;\n        var top = this.box.y1 - TOOLTIP_OFFSET;\n\n        return {\n            point: new Point(left, top),\n            align: {\n                horizontal: CENTER,\n                vertical: BOTTOM\n            }\n        };\n    };\n\n    HeatmapPoint.prototype.overlapsBox = function overlapsBox (box) {\n        return this.box.overlaps(box);\n    };\n\n    HeatmapPoint.prototype.unclipElements = function unclipElements () {\n        /* noop, clip labels */\n    };\n\n    HeatmapPoint.prototype.pointData = function pointData () {\n        return {\n            x: this.value.x,\n            y: this.value.y,\n            value: this.value.value,\n            dataItem: this.dataItem,\n            series: this.series\n        };\n    };\n\n    return HeatmapPoint;\n}(ChartElement));\n\ndeepExtend(HeatmapPoint.prototype, PointEventsMixin);\ndeepExtend(HeatmapPoint.prototype, NoteMixin);\n\nHeatmapPoint.prototype.defaults = {\n    markers: {\n        type: 'rect',\n        borderRadius: 4,\n        border: {\n            color: 'transparent'\n        }\n    },\n    padding: { top: 1 },\n    labels: {\n        visible: false,\n        padding: 3\n    },\n    opacity: 1,\n    notes: {\n        label: {}\n    }\n};\n\nexport default HeatmapPoint;\n","import { deepExtend, defined, isFunction, setDefaultOptions } from '../../common';\nimport { MAX_VALUE, MIN_VALUE } from '../../common/constants';\nimport { Box, ChartElement } from '../../core';\nimport evalOptions from '../utils/eval-options';\nimport colorScale from './color-scale';\nimport HeatmapPoint from './heatmap-point';\n\nvar HeatmapChart = (function (ChartElement) {\n    function HeatmapChart(plotArea, options) {\n        ChartElement.call(this, options);\n\n        this.plotArea = plotArea;\n        this.chartService = plotArea.chartService;\n        this._initFields();\n\n        this.render();\n    }\n\n    if ( ChartElement ) HeatmapChart.__proto__ = ChartElement;\n    HeatmapChart.prototype = Object.create( ChartElement && ChartElement.prototype );\n    HeatmapChart.prototype.constructor = HeatmapChart;\n\n    HeatmapChart.prototype._initFields = function _initFields () {\n        this.points = [];\n        this.seriesOptions = [];\n        this.valueRange = { min: MAX_VALUE, max: MIN_VALUE };\n        this._evalSeries = [];\n    };\n\n    HeatmapChart.prototype.render = function render () {\n        this.setRange();\n        this.traverseDataPoints(this.addValue.bind(this));\n    };\n\n    HeatmapChart.prototype.setRange = function setRange () {\n        var this$1 = this;\n\n        var ref = this;\n        var series = ref.options.series;\n\n        for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n            var currentSeries = series[seriesIx];\n\n            for (var pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n                var ref$1 = this$1.plotArea.bindPoint(currentSeries, pointIx);\n                var valueFields = ref$1.valueFields;\n                if (defined(valueFields.value) && valueFields.value !== null) {\n                    this$1.valueRange.min = Math.min(this$1.valueRange.min, valueFields.value);\n                    this$1.valueRange.max = Math.max(this$1.valueRange.max, valueFields.value);\n                }\n            }\n        }\n    };\n\n    HeatmapChart.prototype.addValue = function addValue (value, fields) {\n        var point;\n        if (value && defined(value.value) && value.value !== null) {\n            point = this.createPoint(value, fields);\n            if (point) {\n                Object.assign(point, fields);\n            }\n        }\n\n        this.points.push(point);\n    };\n\n    HeatmapChart.prototype.evalPointOptions = function evalPointOptions (options, value, fields) {\n        var series = fields.series;\n        var seriesIx = fields.seriesIx;\n        var state = {\n            defaults: series._defaults,\n            excluded: [\n                \"data\", \"tooltip\", \"content\", \"template\",\n                \"visual\", \"toggle\", \"drilldownSeriesFactory\"\n            ]\n        };\n\n        var doEval = this._evalSeries[seriesIx];\n        if (!defined(doEval)) {\n            this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n        }\n\n        var pointOptions = options;\n        if (doEval) {\n            pointOptions = deepExtend({}, options);\n            evalOptions(pointOptions, {\n                value: value,\n                series: series,\n                dataItem: fields.dataItem,\n                min: this.valueRange.min,\n                max: this.valueRange.max\n            }, state);\n        }\n\n        return pointOptions;\n    };\n\n    HeatmapChart.prototype.pointType = function pointType () {\n        return HeatmapPoint;\n    };\n\n    HeatmapChart.prototype.pointOptions = function pointOptions (series, seriesIx) {\n        var options = this.seriesOptions[seriesIx];\n        if (!options) {\n            var defaults = this.pointType().prototype.defaults;\n            this.seriesOptions[seriesIx] = options = deepExtend({}, defaults, {\n                markers: {\n                    opacity: series.opacity\n                },\n                tooltip: {\n                    format: this.options.tooltip.format\n                },\n                labels: {\n                    format: this.options.labels.format\n                }\n            }, series);\n        }\n\n        return options;\n    };\n\n    HeatmapChart.prototype.createPoint = function createPoint (value, fields) {\n        var series = fields.series;\n        var pointOptions = this.pointOptions(series, fields.seriesIx);\n        var color = fields.color || series.color;\n\n        pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n        if (isFunction(series.color)) {\n            color = pointOptions.color;\n        } else if (this.valueRange.max !== 0) {\n            var scale = colorScale(color);\n            color = scale(value.value / this.valueRange.max);\n        }\n\n        var point = new HeatmapPoint(value, pointOptions);\n        point.color = color;\n\n        this.append(point);\n\n        return point;\n    };\n\n    HeatmapChart.prototype.seriesAxes = function seriesAxes (series) {\n        var xAxisName = series.xAxis;\n        var yAxisName = series.yAxis;\n        var plotArea = this.plotArea;\n        var xAxis = xAxisName ? plotArea.namedXAxes[xAxisName] : plotArea.axisX;\n        var yAxis = yAxisName ? plotArea.namedYAxes[yAxisName] : plotArea.axisY;\n\n        if (!xAxis) {\n            throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n        }\n\n        if (!yAxis) {\n            throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n        }\n\n        return { xAxis: xAxis, yAxis: yAxis };\n    };\n\n    HeatmapChart.prototype.reflow = function reflow (targetBox) {\n        var this$1 = this;\n\n        var chartPoints = this.points;\n        var limit = !this.options.clip;\n        var pointIx = 0;\n\n\n        this.traverseDataPoints(function (value, fields) {\n            var point = chartPoints[pointIx++];\n            var ref = this$1.seriesAxes(fields.series);\n            var xAxis = ref.xAxis;\n            var yAxis = ref.yAxis;\n            var indexX = xAxis.categoryIndex(value.x);\n            var indexY = yAxis.categoryIndex(value.y);\n            var slotX = xAxis.getSlot(indexX, indexX, limit);\n            var slotY = yAxis.getSlot(indexY, indexY, limit);\n\n            if (point) {\n                if (slotX && slotY) {\n                    var pointSlot = this$1.pointSlot(slotX, slotY);\n                    point.reflow(pointSlot);\n                } else {\n                    point.visible = false;\n                }\n            }\n        });\n\n        this.box = targetBox;\n    };\n\n    HeatmapChart.prototype.pointSlot = function pointSlot (slotX, slotY) {\n        return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n    };\n\n    HeatmapChart.prototype.traverseDataPoints = function traverseDataPoints (callback) {\n        var this$1 = this;\n\n        var ref = this;\n        var series = ref.options.series;\n\n        for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n            var currentSeries = series[seriesIx];\n            var ref$1 = this$1.seriesAxes(currentSeries);\n            var xAxis = ref$1.xAxis;\n            var yAxis = ref$1.yAxis;\n            var xRange = xAxis.currentRangeIndices();\n            var yRange = yAxis.currentRangeIndices();\n\n            for (var pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n                var ref$2 = this$1.plotArea.bindPoint(currentSeries, pointIx);\n                var value = ref$2.valueFields;\n                var fields = ref$2.fields;\n                var xIndex = xAxis.totalIndex(value.x);\n                var yIndex = yAxis.totalIndex(value.y);\n                var xIn = xRange.min <= xIndex && xIndex <= xRange.max;\n                var yIn = yRange.min <= yIndex && yIndex <= yRange.max;\n\n                if (xIn && yIn) {\n                    callback(value, deepExtend({\n                        pointIx: pointIx,\n                        series: currentSeries,\n                        seriesIx: seriesIx,\n                        dataItem: currentSeries.data[pointIx],\n                        owner: this$1\n                    }, fields));\n                }\n            }\n        }\n    };\n\n    HeatmapChart.prototype.formatPointValue = function formatPointValue (point, format) {\n        var value = point.value;\n        return this.chartService.format.auto(format, value.x, value.y, value.value);\n    };\n\n    HeatmapChart.prototype.animationPoints = function animationPoints () {\n        var points = this.points;\n        var result = [];\n        for (var idx = 0; idx < points.length; idx++) {\n            result.push((points[idx] || {}).marker);\n        }\n        return result;\n    };\n\n    return HeatmapChart;\n}(ChartElement));\nsetDefaultOptions(HeatmapChart, {\n    series: [],\n    tooltip: {\n        format: \"{0}, {1}: {2}\"\n    },\n    labels: {\n        format: \"{2}\"\n    },\n    clip: true\n});\n\nexport default HeatmapChart;\n","import { deepExtend, eventElement, grep, inArray, setDefaultOptions, createHashSet } from '../../common';\nimport { DATE } from '../../common/constants';\nimport { CategoryAxis, DateCategoryAxis, Point } from '../../core';\nimport { HEATMAP } from '../constants';\nimport HeatmapChart from '../heatmap-chart/heatmap-chart';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\nimport SeriesBinder from '../series-binder';\nimport { appendIfNotNull, equalsIgnoreCase, filterSeriesByType, singleItemOrArray } from '../utils';\nimport PlotAreaBase from './plotarea-base';\n\n\nvar HeatmapPlotArea = (function (PlotAreaBase) {\n    function HeatmapPlotArea () {\n        PlotAreaBase.apply(this, arguments);\n    }\n\n    if ( PlotAreaBase ) HeatmapPlotArea.__proto__ = PlotAreaBase;\n    HeatmapPlotArea.prototype = Object.create( PlotAreaBase && PlotAreaBase.prototype );\n    HeatmapPlotArea.prototype.constructor = HeatmapPlotArea;\n\n    HeatmapPlotArea.prototype.initFields = function initFields () {\n        this.namedXAxes = {};\n        this.namedYAxes = {};\n    };\n\n    HeatmapPlotArea.prototype.render = function render (panes) {\n        if ( panes === void 0 ) panes = this.panes;\n\n        this.bindCategories();\n        this.createAxes(panes);\n        this.createCharts(panes);\n        this.createAxisLabels();\n    };\n\n    HeatmapPlotArea.prototype.bindCategories = function bindCategories () {\n        var this$1 = this;\n\n        var series = this.srcSeries || this.series;\n\n        for (var i = 0; i < series.length; i++) {\n            var currentSeries = series[i];\n            var data = currentSeries.data || [];\n            var ref = this$1.seriesAxes(currentSeries);\n            var xAxis = ref.xAxis;\n            var yAxis = ref.yAxis;\n\n            var xCategories = createHashSet(xAxis.categories || []);\n            var yCategories = createHashSet(yAxis.categories || []);\n\n            for (var pointIndex = 0; pointIndex < data.length; pointIndex++) {\n                var ref$1 = SeriesBinder.current.bindPoint(currentSeries, pointIndex).valueFields;\n                var x = ref$1.x;\n                var y = ref$1.y;\n\n                if (!xCategories.has(x)) {\n                    xCategories.add(x);\n                }\n\n                if (!yCategories.has(y)) {\n                    yCategories.add(y);\n                }\n            }\n\n            xAxis.categories = xCategories.values();\n            yAxis.categories = yCategories.values();\n        }\n    };\n\n    HeatmapPlotArea.prototype.createCharts = function createCharts (panes) {\n        var this$1 = this;\n\n        var seriesByPane = this.groupSeriesByPane();\n\n        for (var i = 0; i < panes.length; i++) {\n            var pane = panes[i];\n            var paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n            this$1.addToLegend(paneSeries);\n            var filteredSeries = this$1.filterVisibleSeries(paneSeries);\n\n            if (!filteredSeries) {\n                continue;\n            }\n\n            this$1.createHeatmapChart(\n                filterSeriesByType(filteredSeries, [ HEATMAP ]),\n                pane\n            );\n        }\n    };\n\n    HeatmapPlotArea.prototype.createHeatmapChart = function createHeatmapChart (series, pane) {\n        var chart = new HeatmapChart(this, {\n            series: series\n        });\n\n        this.appendChart(chart, pane);\n    };\n\n    HeatmapPlotArea.prototype.seriesPaneName = function seriesPaneName (series) {\n        var options = this.options;\n        var xAxisName = series.xAxis;\n        var xAxisOptions = [].concat(options.xAxis);\n        var xAxis = grep(xAxisOptions, function(a) { return a.name === xAxisName; })[0];\n        var yAxisName = series.yAxis;\n        var yAxisOptions = [].concat(options.yAxis);\n        var yAxis = grep(yAxisOptions, function(a) { return a.name === yAxisName; })[0];\n        var panes = options.panes || [ {} ];\n        var defaultPaneName = panes[0].name || \"default\";\n        var paneName = (xAxis || {}).pane || (yAxis || {}).pane || defaultPaneName;\n\n        return paneName;\n    };\n\n    HeatmapPlotArea.prototype.seriesAxes = function seriesAxes (series) {\n        var xAxis;\n        var yAxis;\n\n        var options = this.options;\n\n        var xAxisOptions = [].concat(options.xAxis);\n        var xAxisName = series.xAxis;\n        if (xAxisName) {\n            xAxis = xAxisOptions.find(function (axis) { return axis.name === xAxisName; });\n        } else {\n            xAxis = xAxisOptions[0];\n        }\n\n        var yAxisOptions = [].concat(options.yAxis);\n        var yAxisName = series.yAxis;\n        if (yAxisName) {\n            yAxis = yAxisOptions.find(function (axis) { return axis.name === yAxisName; });\n        } else {\n            yAxis = yAxisOptions[0];\n        }\n\n        if (!xAxis) {\n            throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n        }\n\n        if (!yAxis) {\n            throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n        }\n\n        return { xAxis: xAxis, yAxis: yAxis };\n    };\n\n    HeatmapPlotArea.prototype.createAxisLabels = function createAxisLabels () {\n        var axes = this.axes;\n        for (var i = 0; i < axes.length; i++) {\n            axes[i].createLabels();\n        }\n    };\n\n    HeatmapPlotArea.prototype.createXYAxis = function createXYAxis (options, vertical, axisIndex) {\n        var axisName = options.name;\n        var namedAxes = vertical ? this.namedYAxes : this.namedXAxes;\n        var axisOptions = Object.assign({\n            axisCrossingValue: 0\n        }, options, {\n            vertical: vertical,\n            reverse: (vertical || this.chartService.rtl) ? !options.reverse : options.reverse,\n            justified: false\n        });\n        var firstCategory = axisOptions.categories ? axisOptions.categories[0] : null;\n        var typeSamples = [ axisOptions.min, axisOptions.max, firstCategory ];\n        var series = this.series;\n\n        for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n            var currentSeries = series[seriesIx];\n            var seriesAxisName = currentSeries[vertical ? \"yAxis\" : \"xAxis\"];\n            if ((seriesAxisName === axisOptions.name) || (axisIndex === 0 && !seriesAxisName)) {\n                var firstPointValue = SeriesBinder.current.bindPoint(currentSeries, 0).valueFields;\n                typeSamples.push(firstPointValue[vertical ? \"y\" : \"x\"]);\n\n                break;\n            }\n        }\n\n        var inferredDate;\n\n        for (var i = 0; i < typeSamples.length; i++) {\n            if (typeSamples[i] instanceof Date) {\n                inferredDate = true;\n                break;\n            }\n        }\n\n        var axisType;\n        if (equalsIgnoreCase(axisOptions.type, DATE) || (!axisOptions.type && inferredDate)) {\n            axisType = DateCategoryAxis;\n        } else {\n            axisType = CategoryAxis;\n        }\n\n        var axis = new axisType(axisOptions, this.chartService);\n        axis.axisIndex = axisIndex;\n\n        if (axisName) {\n            if (namedAxes[axisName]) {\n                throw new Error(((vertical ? \"Y\" : \"X\") + \" axis with name \" + axisName + \" is already defined\"));\n            }\n            namedAxes[axisName] = axis;\n        }\n\n        this.appendAxis(axis);\n        axis.mapCategories();\n\n        return axis;\n    };\n\n    HeatmapPlotArea.prototype.createAxes = function createAxes (panes) {\n        var this$1 = this;\n\n        var options = this.options;\n        var xAxesOptions = [].concat(options.xAxis);\n        var xAxes = [];\n        var yAxesOptions = [].concat(options.yAxis);\n        var yAxes = [];\n\n        for (var idx = 0; idx < xAxesOptions.length; idx++) {\n            var axisPane = this$1.findPane(xAxesOptions[idx].pane);\n            if (inArray(axisPane, panes)) {\n                xAxes.push(this$1.createXYAxis(xAxesOptions[idx], false, idx));\n            }\n        }\n\n        for (var idx$1 = 0; idx$1 < yAxesOptions.length; idx$1++) {\n            var axisPane$1 = this$1.findPane(yAxesOptions[idx$1].pane);\n            if (inArray(axisPane$1, panes)) {\n                yAxes.push(this$1.createXYAxis(yAxesOptions[idx$1], true, idx$1));\n            }\n        }\n\n        this.axisX = this.axisX || xAxes[0];\n        this.axisY = this.axisY || yAxes[0];\n    };\n\n    HeatmapPlotArea.prototype.removeAxis = function removeAxis (axis) {\n        var axisName = axis.options.name;\n\n        PlotAreaBase.prototype.removeAxis.call(this, axis);\n\n        if (axis.options.vertical) {\n            delete this.namedYAxes[axisName];\n        } else {\n            delete this.namedXAxes[axisName];\n        }\n\n        if (axis === this.axisX) {\n            delete this.axisX;\n        }\n\n        if (axis === this.axisY) {\n            delete this.axisY;\n        }\n    };\n\n    HeatmapPlotArea.prototype._dispatchEvent = function _dispatchEvent (chart, e, eventType) {\n        var coords = chart._eventCoordinates(e);\n        var point = new Point(coords.x, coords.y);\n        var allAxes = this.axes;\n        var length = allAxes.length;\n        var xValues = [];\n        var yValues = [];\n\n        for (var i = 0; i < length; i++) {\n            var axis = allAxes[i];\n            var values = axis.options.vertical ? yValues : xValues;\n            appendIfNotNull(values, axis.getCategory(point));\n        }\n\n        if (xValues.length > 0 && yValues.length > 0) {\n            chart.trigger(eventType, {\n                element: eventElement(e),\n                originalEvent: e,\n                x: singleItemOrArray(xValues),\n                y: singleItemOrArray(yValues)\n            });\n        }\n    };\n\n    HeatmapPlotArea.prototype.updateAxisOptions = function updateAxisOptions$1 (axis, options) {\n        var vertical = axis.options.vertical;\n        var axes = this.groupAxes(this.panes);\n        var index = (vertical ? axes.y : axes.x).indexOf(axis);\n\n        updateAxisOptions(this.options, index, vertical, options);\n        updateAxisOptions(this.originalOptions, index, vertical, options);\n    };\n\n    HeatmapPlotArea.prototype.crosshairOptions = function crosshairOptions (axis) {\n        // Stack the crosshair above the series points.\n        return Object.assign({}, axis.options.crosshair, { zIndex: 0 });\n    };\n\n    return HeatmapPlotArea;\n}(PlotAreaBase));\n\nfunction updateAxisOptions(targetOptions, axisIndex, vertical, options) {\n    var axisOptions = ([].concat(vertical ? targetOptions.yAxis : targetOptions.xAxis))[axisIndex];\n    deepExtend(axisOptions, options);\n}\n\nsetDefaultOptions(HeatmapPlotArea, {\n    xAxis: {},\n    yAxis: {}\n});\n\ndeepExtend(HeatmapPlotArea.prototype, PlotAreaEventsMixin);\n\nexport default HeatmapPlotArea;\n","import PlotAreaFactory from './plotarea/plotarea-factory';\nimport SeriesBinder from './series-binder';\nimport DefaultAggregates from './aggregates/default-aggregates';\nimport CategoricalPlotArea from './plotarea/categorical-plotarea';\nimport XYPlotArea from './plotarea/xy-plotarea';\nimport PiePlotArea from './plotarea/pie-plotarea';\nimport DonutPlotArea from './plotarea/donut-plotarea';\nimport PolarPlotArea from './plotarea/polar-plotarea';\nimport RadarPlotArea from './plotarea/radar-plotarea';\nimport FunnelPlotArea from './plotarea/funnel-plotarea';\nimport HeatmapPlotArea from './plotarea/heatmap-plotarea';\n\nimport { COLUMN, DONUT, PIE, FUNNEL, PYRAMID, BAR, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA,\n    CANDLESTICK, OHLC, BULLET, VERTICAL_BULLET, BOX_PLOT, VERTICAL_BOX_PLOT, RANGE_COLUMN,\n    RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL, SCATTER, SCATTER_LINE, BUBBLE,\n    POLAR_AREA, POLAR_LINE, POLAR_SCATTER, RADAR_AREA, RADAR_COLUMN, RADAR_LINE, CATEGORY,\n    RANGE_AREA, VERTICAL_RANGE_AREA, X_ERROR_LOW_FIELD, X_ERROR_HIGH_FIELD, Y_ERROR_LOW_FIELD, Y_ERROR_HIGH_FIELD,\n    ERROR_LOW_FIELD, ERROR_HIGH_FIELD, HEATMAP, DRILLDOWN_FIELD, TRENDLINE_SERIES } from './constants';\nimport { X, Y, VALUE } from '../common/constants';\n\nvar COLOR = \"color\";\nvar FIRST = \"first\";\nvar FROM = \"from\";\nvar MAX = \"max\";\nvar MIN = \"min\";\nvar NOTE_TEXT = \"noteText\";\nvar SUMMARY_FIELD = \"summary\";\nvar TO = \"to\";\n\nPlotAreaFactory.current.register(CategoricalPlotArea, [\n    BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA,\n    CANDLESTICK, OHLC, BULLET, VERTICAL_BULLET, BOX_PLOT, VERTICAL_BOX_PLOT,\n    RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL, RANGE_AREA, VERTICAL_RANGE_AREA ].concat( TRENDLINE_SERIES\n));\n\nPlotAreaFactory.current.register(XYPlotArea, [\n    SCATTER, SCATTER_LINE, BUBBLE ].concat( TRENDLINE_SERIES\n));\n\nPlotAreaFactory.current.register(PiePlotArea, [ PIE ]);\nPlotAreaFactory.current.register(DonutPlotArea, [ DONUT ]);\nPlotAreaFactory.current.register(FunnelPlotArea, [ FUNNEL, PYRAMID ]);\n\nPlotAreaFactory.current.register(PolarPlotArea, [\n    POLAR_AREA, POLAR_LINE, POLAR_SCATTER ].concat( TRENDLINE_SERIES\n));\n\nPlotAreaFactory.current.register(RadarPlotArea, [\n    RADAR_AREA, RADAR_COLUMN, RADAR_LINE ].concat( TRENDLINE_SERIES\n));\n\nPlotAreaFactory.current.register(HeatmapPlotArea, [ HEATMAP ]);\n\nSeriesBinder.current.register(\n    [ BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA ],\n    [ VALUE ], [ CATEGORY, COLOR, NOTE_TEXT, ERROR_LOW_FIELD, ERROR_HIGH_FIELD, DRILLDOWN_FIELD ]\n);\n\nSeriesBinder.current.register(\n    [ RANGE_COLUMN, RANGE_BAR, RANGE_AREA, VERTICAL_RANGE_AREA ],\n    [ FROM, TO ], [ CATEGORY, COLOR, NOTE_TEXT, DRILLDOWN_FIELD ]\n);\n\nSeriesBinder.current.register(\n    [ WATERFALL, HORIZONTAL_WATERFALL ],\n    [ VALUE ], [ CATEGORY, COLOR, NOTE_TEXT, SUMMARY_FIELD, DRILLDOWN_FIELD ]\n);\n\nSeriesBinder.current.register([ POLAR_AREA, POLAR_LINE, POLAR_SCATTER ], [ X, Y ], [ COLOR, DRILLDOWN_FIELD ]);\nSeriesBinder.current.register([ RADAR_AREA, RADAR_COLUMN, RADAR_LINE ], [ VALUE ], [ COLOR, DRILLDOWN_FIELD ]);\n\nSeriesBinder.current.register(\n    [ FUNNEL, PYRAMID ],\n    [ VALUE ], [ CATEGORY, COLOR, \"visibleInLegend\", \"visible\", DRILLDOWN_FIELD ]\n);\n\nDefaultAggregates.current.register(\n    [ BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA, WATERFALL, HORIZONTAL_WATERFALL ],\n    { value: MAX, color: FIRST, noteText: FIRST, errorLow: MIN, errorHigh: MAX }\n);\n\nDefaultAggregates.current.register(\n    [ RANGE_COLUMN, RANGE_BAR, RANGE_AREA, VERTICAL_RANGE_AREA ],\n    { from: MIN, to: MAX, color: FIRST, noteText: FIRST }\n);\n\nDefaultAggregates.current.register(\n    [ RADAR_AREA, RADAR_COLUMN, RADAR_LINE ],\n    { value: MAX, color: FIRST }\n);\n\nSeriesBinder.current.register(\n    [ SCATTER, SCATTER_LINE, BUBBLE ],\n    [ X, Y ], [ COLOR, NOTE_TEXT, X_ERROR_LOW_FIELD, X_ERROR_HIGH_FIELD, Y_ERROR_LOW_FIELD, Y_ERROR_HIGH_FIELD ]\n);\n\nSeriesBinder.current.register(\n    [ BUBBLE ], [ X, Y, \"size\" ], [ COLOR, CATEGORY, NOTE_TEXT ]\n);\n\nSeriesBinder.current.register(\n    [ HEATMAP ],\n    [ X, Y, VALUE ], [ COLOR, NOTE_TEXT ]\n);\n\nSeriesBinder.current.register(\n    [ CANDLESTICK, OHLC ],\n    [ \"open\", \"high\", \"low\", \"close\" ], [ CATEGORY, COLOR, \"downColor\", NOTE_TEXT ]\n);\n\nDefaultAggregates.current.register(\n    [ CANDLESTICK, OHLC ],\n    { open: MAX, high: MAX, low: MIN, close: MAX,\n      color: FIRST, downColor: FIRST, noteText: FIRST }\n);\n\nSeriesBinder.current.register(\n    [ BOX_PLOT, VERTICAL_BOX_PLOT ],\n    [ \"lower\", \"q1\", \"median\", \"q3\", \"upper\", \"mean\", \"outliers\" ], [ CATEGORY, COLOR, NOTE_TEXT, DRILLDOWN_FIELD ]\n);\n\nDefaultAggregates.current.register(\n    [ BOX_PLOT, VERTICAL_BOX_PLOT ],\n    { lower: MAX, q1: MAX, median: MAX, q3: MAX, upper: MAX, mean: MAX, outliers: FIRST,\n      color: FIRST, noteText: FIRST }\n);\n\nSeriesBinder.current.register(\n    [ BULLET, VERTICAL_BULLET ],\n    [ \"current\", \"target\" ], [ CATEGORY, COLOR, \"visibleInLegend\", NOTE_TEXT, DRILLDOWN_FIELD ]\n);\n\nDefaultAggregates.current.register(\n    [ BULLET, VERTICAL_BULLET ],\n    { current: MAX, target: MAX, color: FIRST, noteText: FIRST }\n);\n\nSeriesBinder.current.register(\n    [ PIE, DONUT ],\n    [ VALUE ], [ CATEGORY, COLOR, \"explode\", \"visibleInLegend\", \"visible\", DRILLDOWN_FIELD ]\n);\n","import { drawing as draw, throttle, geometry } from '@progress/kendo-drawing';\n\nimport { RootElement, Title, CategoryAxis, Point } from '../core';\n\nimport Highlight from './highlight';\nimport Pannable from './pan-and-zoom/pannable';\nimport ZoomSelection from './pan-and-zoom/zoom-selection';\nimport MousewheelZoom from './pan-and-zoom/mousewheel-zoom';\nimport Legend from './legend/legend';\nimport PlotAreaFactory from './plotarea/plotarea-factory';\nimport Selection from './selection';\nimport SeriesBinder from './series-binder';\nimport Tooltip from './tooltip/tooltip';\nimport SharedTooltip from './tooltip/shared-tooltip';\nimport CategoricalPlotArea from './plotarea/categorical-plotarea';\nimport PlotAreaBase from './plotarea/plotarea-base';\nimport { ChartService, DomEventsBuilder } from '../services';\nimport getField from './utils/get-field';\nimport isDateAxis from './utils/is-date-axis';\nimport getDateField from './utils/get-date-field';\nimport { ChartPane, ChartPlotArea, findAxisByName } from './api-elements';\n\nimport { X, Y, VALUE, DEFAULT_WIDTH, DEFAULT_HEIGHT, DEFAULT_SERIES_OPACITY } from '../common/constants';\nimport { addClass, Class, setDefaultOptions, deepExtend, defined, find, isObject, isFunction, elementSize, elementOffset,\n         elementScale, elementStyles, eventCoordinates, bindEvents, unbindEvents, mousewheelDelta, FontLoader, inArray, last, round,\n         HashMap, valueOrDefault, isString } from '../common';\n\nimport { dateComparer } from '../date-utils';\n\nimport { DRAG_START, DRAG, DRAG_END, ZOOM_START, ZOOM, ZOOM_END, SELECT_START, SELECT, SELECT_END, PLOT_AREA_HOVER, PLOT_AREA_LEAVE,\n         RENDER, CATEGORY, PIE, DONUT, FUNNEL, PYRAMID, COLUMN, MOUSEWHEEL, MOUSEWHEEL_DELAY, MOUSEWHEEL_ZOOM_RATE, SHOW_TOOLTIP, SERIES_HOVER,\n         SERIES_OVER, SERIES_LEAVE, SERIES_CLICK, DRILLDOWN } from './constants';\n\nimport './animations';\nimport './register-charts';\n\nvar AXIS_NAMES = [ CATEGORY, VALUE, X, Y ];\n\nvar MOUSEMOVE = \"mousemove\";\nvar CONTEXTMENU = \"contextmenu\";\nvar MOUSELEAVE = \"mouseleave\";\nvar MOUSEMOVE_DELAY = 20;\n\nvar Chart = (function (Class) {\n    function Chart(element, userOptions, themeOptions, context) {\n        var this$1 = this;\n        if ( context === void 0 ) context = {};\n\n        Class.call(this);\n\n        this.observers = [];\n        this.addObserver(context.observer);\n        this.chartService = new ChartService(this, context);\n        this.chartService.theme = themeOptions;\n\n        this._initElement(element);\n\n        var options = deepExtend({}, this.options, userOptions);\n        this._originalOptions = deepExtend({}, options);\n        this._theme = themeOptions;\n        this._initTheme(options, themeOptions);\n\n        this._initHandlers();\n        this._initSurface();\n\n        this.bindCategories();\n        FontLoader.preloadFonts(userOptions, function () {\n            this$1.fontLoaded = true;\n            if (!this$1._destroyed) {\n                this$1.trigger('init');\n                this$1._redraw();\n                this$1._attachEvents();\n            }\n        });\n    }\n\n    if ( Class ) Chart.__proto__ = Class;\n    Chart.prototype = Object.create( Class && Class.prototype );\n    Chart.prototype.constructor = Chart;\n\n    Chart.prototype._initElement = function _initElement (element) {\n        this._setElementClass(element);\n        element.style.position = \"relative\";\n        while (element.firstChild) {\n            element.removeChild(element.firstChild);\n        }\n        this.element = element;\n    };\n\n    Chart.prototype._setElementClass = function _setElementClass (element) {\n        addClass(element, \"k-chart\");\n    };\n\n    Chart.prototype._initTheme = function _initTheme (options, themeOptions) {\n        var seriesCopies = [];\n        var series = options.series || [];\n\n        for (var i = 0; i < series.length; i++) {\n            seriesCopies.push(Object.assign({}, series[i]));\n        }\n        options.series = seriesCopies;\n\n        resolveAxisAliases(options);\n        this.applyDefaults(options, themeOptions);\n\n        // Clean up default if not overriden by data attributes\n        if (options.seriesColors === null) {\n            delete options.seriesColors;\n        }\n\n        if (isString(options.title)) {\n            options.title = { text: options.title };\n        }\n\n        this.options = deepExtend({}, themeOptions, options);\n        this.applySeriesColors();\n    };\n\n    Chart.prototype.getSize = function getSize () {\n        var chartArea = this.options.chartArea || {};\n        var width = chartArea.width ? parseInt(chartArea.width, 10) : Math.floor(this.element.offsetWidth);\n        var height = chartArea.height ? parseInt(chartArea.height, 10) : Math.floor(this.element.offsetHeight);\n\n        return {\n            width: width,\n            height: height\n        };\n    };\n\n    Chart.prototype.resize = function resize (force) {\n        var size = this.getSize();\n        var currentSize = this._size;\n        var hasSize = size.width > 0 || size.height > 0;\n\n        if (force || hasSize && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n            this._size = size;\n            this._resize(size, force);\n            this.trigger(\"resize\", size);\n        } else if (hasSize && this._selections && find(this._selections, function (s) { return !s.visible; })) {\n            this._destroySelections();\n            this._setupSelection();\n        }\n    };\n\n    Chart.prototype._resize = function _resize () {\n        this._noTransitionsRedraw();\n    };\n\n    Chart.prototype.redraw = function redraw (paneName) {\n        this.applyDefaults(this.options);\n        this.applySeriesColors();\n\n        if (paneName) {\n            var plotArea = this._model._plotArea;\n            var pane = plotArea.findPane(paneName);\n            plotArea.redraw(pane);\n        } else {\n            this._redraw();\n        }\n    };\n\n    Chart.prototype.getAxis = function getAxis (name) {\n        return findAxisByName(name, this._plotArea.axes);\n    };\n\n    Chart.prototype.findAxisByName = function findAxisByName (name) {\n        return this.getAxis(name);\n    };\n\n    Chart.prototype.findPaneByName = function findPaneByName (name) {\n        var panes = this._plotArea.panes;\n\n        for (var idx = 0; idx < panes.length; idx++) {\n            if (panes[idx].options.name === name) {\n                return new ChartPane(panes[idx]);\n            }\n        }\n    };\n\n    Chart.prototype.findPaneByIndex = function findPaneByIndex (idx) {\n        var panes = this._plotArea.panes;\n        if (panes[idx]) {\n            return new ChartPane(panes[idx]);\n        }\n    };\n\n    Chart.prototype.plotArea = function plotArea () {\n        return new ChartPlotArea(this._plotArea);\n    };\n\n    Chart.prototype.toggleHighlight = function toggleHighlight (show, filter) {\n        var plotArea = this._plotArea;\n        var firstSeries = (plotArea.srcSeries || plotArea.series || [])[0];\n        var points;\n\n        if (isFunction(filter)) {\n            points = plotArea.filterPoints(filter);\n        } else {\n            var seriesName, categoryName;\n            if (isObject(filter)) {\n                seriesName = filter.series;\n                categoryName = filter.category;\n            } else {\n                seriesName = categoryName = filter;\n            }\n\n            if (firstSeries.type === DONUT) {\n                points = pointByCategoryName(plotArea.pointsBySeriesName(seriesName), categoryName);\n            } else if (inArray(firstSeries.type, [ PIE, FUNNEL, PYRAMID ])) {\n                points = pointByCategoryName((plotArea.charts[0] || {}).points, categoryName);\n            } else {\n                points = plotArea.pointsBySeriesName(seriesName);\n            }\n        }\n\n        if (points) {\n            this.togglePointsHighlight(show, points);\n        }\n    };\n\n    Chart.prototype.togglePointsHighlight = function togglePointsHighlight (show, points) {\n        var highlight = this._highlight;\n        for (var idx = 0; idx < points.length; idx++) {\n            highlight.togglePointHighlight(points[idx], show);\n        }\n    };\n\n    Chart.prototype.showTooltip = function showTooltip (filter) {\n        var shared = this._sharedTooltip();\n        var ref = this;\n        var tooltip = ref._tooltip;\n        var plotArea = ref._plotArea;\n        var point, categoryIndex;\n\n        if (isFunction(filter)) {\n            point = plotArea.findPoint(filter);\n            if (point && shared) {\n                categoryIndex = point.categoryIx;\n            }\n        } else if (shared && defined(filter)) {\n            categoryIndex = plotArea.categoryAxis.categoryIndex(filter);\n        }\n\n        if (shared) {\n            if (categoryIndex >= 0) {\n                var points = this._plotArea.pointsByCategoryIndex(categoryIndex);\n                tooltip.showAt(points);\n            }\n        } else if (point) {\n            tooltip.show(point);\n        }\n    };\n\n    Chart.prototype.hideTooltip = function hideTooltip () {\n        this._tooltip.hide();\n    };\n\n    Chart.prototype._initSurface = function _initSurface () {\n        var surface = this.surface;\n        var wrap = this._surfaceWrap();\n\n        var chartArea = this.options.chartArea || {};\n        if (chartArea.width) {\n            elementSize(wrap, { width: chartArea.width });\n        }\n        if (chartArea.height) {\n            elementSize(wrap, { height: chartArea.height });\n        }\n\n        if (!surface || surface.options.type !== this.options.renderAs) {\n            this._destroySurface();\n\n            this.surface = draw.Surface.create(wrap, {\n                type: this.options.renderAs\n            });\n\n            this.surface.bind(\"mouseenter\", this._surfaceMouseenterHandler);\n            this.surface.bind(\"mouseleave\", this._surfaceMouseleaveHandler);\n\n        } else {\n            this.surface.clear();\n            this.surface.resize();\n        }\n    };\n\n    Chart.prototype._surfaceWrap = function _surfaceWrap () {\n        return this.element;\n    };\n\n    Chart.prototype._redraw = function _redraw () {\n        var model = this._getModel();\n        this._size = {\n            width: model.options.width,\n            height: model.options.height\n        };\n\n        this._destroyView();\n\n        this._model = model;\n        this._plotArea = model._plotArea;\n\n        model.renderVisual();\n\n        if (this.options.transitions !== false) {\n            model.traverse(function(element) {\n                if (element.animation) {\n                    element.animation.setup();\n                }\n            });\n        }\n\n        this._initSurface();\n        this.surface.draw(model.visual);\n\n        if (this.options.transitions !== false) {\n            model.traverse(function(element) {\n                if (element.animation) {\n                    element.animation.play();\n                }\n            });\n        }\n\n        this._tooltip = this._createTooltip();\n        this._highlight = new Highlight();\n        this._setupSelection();\n        this._createPannable();\n        this._createZoomSelection();\n        this._createMousewheelZoom();\n\n        this.trigger(RENDER);\n        triggerPaneRender(this._plotArea.panes);\n\n        if (!this._navState) {\n            this._cancelDomEvents();\n        }\n    };\n\n    Chart.prototype.exportVisual = function exportVisual (exportOptions) {\n        var visual;\n        if (exportOptions && (exportOptions.width || exportOptions.height || exportOptions.options)) {\n            var currentOptions = this.options;\n            var options = deepExtend({}, exportOptions.options, {\n                chartArea: {\n                    width: exportOptions.width,\n                    height: exportOptions.height\n                }\n            });\n\n            clearMissingValues(this._originalOptions, options);\n            this.options = deepExtend({}, this._originalOptions, options);\n            this._initTheme(this.options, this._theme);\n            this.bindCategories();\n\n            var model = this._getModel();\n\n            model.renderVisual();\n            triggerPaneRender(model._plotArea.panes);\n\n            visual = model.visual;\n\n            this.options = currentOptions;\n        } else {\n            visual = this.surface.exportVisual();\n        }\n\n        return visual;\n    };\n\n    Chart.prototype._sharedTooltip = function _sharedTooltip () {\n        return this._plotArea instanceof CategoricalPlotArea && this.options.tooltip && this.options.tooltip.shared;\n    };\n\n    Chart.prototype._createPannable = function _createPannable () {\n        var options = this.options;\n        if (options.pannable !== false) {\n            this._pannable = new Pannable(this._plotArea, options.pannable);\n        }\n    };\n\n    Chart.prototype._createZoomSelection = function _createZoomSelection () {\n        var zoomable = this.options.zoomable;\n        var selection = (zoomable || {}).selection;\n        if (zoomable !== false && selection !== false) {\n            this._zoomSelection = new ZoomSelection(this, selection);\n        }\n    };\n\n    Chart.prototype._createMousewheelZoom = function _createMousewheelZoom () {\n        var zoomable = this.options.zoomable;\n        var mousewheel = (zoomable || {}).mousewheel;\n        if (zoomable !== false && mousewheel !== false) {\n            this._mousewheelZoom = new MousewheelZoom(this, mousewheel);\n        }\n    };\n\n    Chart.prototype._toggleDragZoomEvents = function _toggleDragZoomEvents () {\n        var pannable = this.options.pannable;\n        var zoomable = this.options.zoomable;\n        var selection = (zoomable || {}).selection;\n        var mousewheel = (zoomable || {}).mousewheel;\n        var allowDrag = !pannable && (zoomable === false || selection === false) && !this.requiresHandlers([ DRAG_START, DRAG, DRAG_END ]);\n        var allowZoom = (zoomable === false || mousewheel === false) && !this.requiresHandlers([ ZOOM_START, ZOOM, ZOOM_END ]);\n        var element = this.element;\n\n        if (this._dragZoomEnabled && allowDrag && allowZoom) {\n            element.style.touchAction = this._touchAction || '';\n            this._dragZoomEnabled = false;\n        } else if (!this._dragZoomEnabled && !(allowDrag && allowZoom)) {\n            element.style.touchAction = \"none\";\n\n            this._dragZoomEnabled = true;\n        }\n\n        this._toggleDomEvents(!allowDrag, !allowZoom);\n    };\n\n    Chart.prototype._toggleDomEvents = function _toggleDomEvents (drag, zoom) {\n        var domEvents = this.domEvents;\n        if (!domEvents) {\n            return;\n        }\n\n        if (domEvents.toggleDrag) {\n            domEvents.toggleDrag(drag);\n        }\n\n        if (domEvents.toggleZoom) {\n            domEvents.toggleZoom(zoom);\n        }\n    };\n\n    Chart.prototype._createTooltip = function _createTooltip () {\n        var ref = this;\n        var tooltipOptions = ref.options.tooltip;\n        var tooltip;\n\n        if (this._sharedTooltip()) {\n            tooltip = this._createSharedTooltip(tooltipOptions);\n        } else {\n            tooltip = new Tooltip(this.chartService, tooltipOptions);\n        }\n\n        return tooltip;\n    };\n\n    Chart.prototype._createSharedTooltip = function _createSharedTooltip (options) {\n        return new SharedTooltip(this._plotArea, options);\n    };\n\n    Chart.prototype.applyDefaults = function applyDefaults (options, themeOptions) {\n        applyAxisDefaults(options, themeOptions);\n        applySeriesDefaults(options, themeOptions);\n    };\n\n    Chart.prototype.applySeriesColors = function applySeriesColors () {\n        var options = this.options;\n        var series = options.series;\n        var colors = options.seriesColors || [];\n\n        for (var i = 0; i < series.length; i++) {\n            var currentSeries = series[i];\n            var seriesColor = colors[i % colors.length];\n            var defaults = currentSeries._defaults;\n\n            currentSeries.color = currentSeries.color || seriesColor;\n            if (defaults) {\n                defaults.color = defaults.color || seriesColor;\n            }\n        }\n    };\n\n    Chart.prototype._getModel = function _getModel () {\n        var options = this.options;\n        var plotArea = this._createPlotArea();\n        var model = new RootElement(this._modelOptions());\n        model.chart = this;\n        model._plotArea = plotArea;\n\n        var title = Title.buildTitle(options.title);\n        var subtitle = Title.buildTitle(options.subtitle, {\n            align: options.title.align,\n            position: options.title.position\n        });\n        model.append.apply(model, Title.orderTitles([title, subtitle]));\n\n        if (options.legend && options.legend.visible) {\n            model.append(new Legend(plotArea.options.legend, this.chartService));\n        }\n        model.append(plotArea);\n        model.reflow();\n\n        return model;\n    };\n\n    Chart.prototype._modelOptions = function _modelOptions () {\n        var options = this.options;\n        var size = this.getSize();\n\n        return deepExtend({\n            transitions: options.transitions,\n            width: size.width || DEFAULT_WIDTH,\n            height: size.height || DEFAULT_HEIGHT\n        }, options.chartArea);\n    };\n\n    Chart.prototype._createPlotArea = function _createPlotArea (skipSeries) {\n        var options = this.options;\n\n        var plotArea = PlotAreaFactory.current.create(skipSeries ? [] : options.series, options, this.chartService);\n\n        return plotArea;\n    };\n\n    Chart.prototype._setupSelection = function _setupSelection () {\n        var this$1 = this;\n\n        var ref = this;\n        var axes = ref._plotArea.axes;\n        var selections = this._selections = [];\n\n        for (var i = 0; i < axes.length; i++) {\n            var axis = axes[i];\n            var options = axis.options;\n            if (axis instanceof CategoryAxis && options.select && !options.vertical) {\n                var range = axis.range();\n\n                var selection = new Selection(this$1, axis,\n                    deepExtend({ min: range.min, max: range.max }, options.select)\n                );\n\n                selections.push(selection);\n            }\n        }\n    };\n\n    Chart.prototype._selectStart = function _selectStart (e) {\n        return this.trigger(SELECT_START, e);\n    };\n\n    Chart.prototype._select = function _select (e) {\n        return this.trigger(SELECT, e);\n    };\n\n    Chart.prototype._selectEnd = function _selectEnd (e) {\n        return this.trigger(SELECT_END, e);\n    };\n\n    Chart.prototype._initHandlers = function _initHandlers () {\n        this._clickHandler = this._click.bind(this);\n        this._mousewheelHandler = this._mousewheel.bind(this);\n        this._mouseleaveHandler = this._mouseleave.bind(this);\n        this._surfaceMouseenterHandler = this._mouseover.bind(this);\n        this._surfaceMouseleaveHandler = this._mouseout.bind(this);\n\n        this._mousemove = throttle(\n            this._mousemove.bind(this),\n            MOUSEMOVE_DELAY\n        );\n    };\n\n    Chart.prototype.addObserver = function addObserver (observer) {\n        if (observer) {\n            this.observers.push(observer);\n        }\n    };\n\n    Chart.prototype.removeObserver = function removeObserver (observer) {\n        var index = this.observers.indexOf(observer);\n        if (index >= 0) {\n            this.observers.splice(index, 1);\n        }\n    };\n\n    Chart.prototype.requiresHandlers = function requiresHandlers (eventNames) {\n        var observers = this.observers;\n        for (var idx = 0; idx < observers.length; idx++) {\n            if (observers[idx].requiresHandlers(eventNames)) {\n                return true;\n            }\n        }\n    };\n\n    Chart.prototype.trigger = function trigger (name, args) {\n        if ( args === void 0 ) args = {};\n\n        args.sender = this;\n\n        if (name === SHOW_TOOLTIP) {\n            args.anchor.point = this._toDocumentCoordinates(args.anchor.point);\n        } else if (name === SERIES_OVER) {\n            this._updateDrilldownPoint(args.point);\n        } else if (name === SERIES_LEAVE) {\n            this._resetDrilldownPoint();\n        } else if (name === SERIES_CLICK) {\n            this._startDrilldown(args.point);\n        }\n\n        var observers = this.observers;\n        var isDefaultPrevented = false;\n        for (var idx = 0; idx < observers.length; idx++) {\n            if (observers[idx].trigger(name, args)) {\n                isDefaultPrevented = true;\n            }\n        }\n\n        return isDefaultPrevented;\n    };\n\n    Chart.prototype._attachEvents = function _attachEvents () {\n        var obj, obj$1;\n\n        var element = this.element;\n\n        this._touchAction = element.style.touchAction;\n\n        bindEvents(element, ( obj = {}, obj[ CONTEXTMENU ] = this._clickHandler, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj[ MOUSELEAVE ] = this._mouseleaveHandler, obj ));\n\n        if (this._shouldAttachMouseMove()) {\n            bindEvents(element, ( obj$1 = {}, obj$1[ MOUSEMOVE ] = this._mousemove, obj$1 ));\n        }\n\n        this.domEvents = DomEventsBuilder.create(this.element, {\n            start: this._start.bind(this),\n            move: this._move.bind(this),\n            end: this._end.bind(this),\n            tap: this._tap.bind(this),\n            gesturestart: this._gesturestart.bind(this),\n            gesturechange: this._gesturechange.bind(this),\n            gestureend: this._gestureend.bind(this)\n        });\n\n        this._toggleDragZoomEvents();\n    };\n\n    Chart.prototype._mouseleave = function _mouseleave (e) {\n        if (this._hoveredPoint) {\n            this._hoveredPoint.out(this, e);\n            this._hoveredPoint = null;\n        }\n\n        if (this._plotAreaHovered) {\n            this._plotAreaHovered = false;\n            this.trigger(PLOT_AREA_LEAVE);\n        }\n\n        if (this._hasInactiveOpacity() && this._activeChartInstance) {\n            this._applySeriesOpacity(this._activeChartInstance.children, null, true);\n            this._updateSeriesOpacity(null, true);\n        }\n    };\n\n    Chart.prototype._cancelDomEvents = function _cancelDomEvents () {\n        if (this.domEvents && this.domEvents.cancel) {\n            this.domEvents.cancel();\n        }\n    };\n\n    Chart.prototype._gesturestart = function _gesturestart (e) {\n        if (this._mousewheelZoom && !this._stopChartHandlers(e)) {\n            this._gestureDistance = e.distance;\n            this._unsetActivePoint();\n            this.surface.suspendTracking();\n        }\n    };\n\n    Chart.prototype._gestureend = function _gestureend (e) {\n        if (this._zooming && !this._stopChartHandlers(e)) {\n            if (this.surface) {\n                this.surface.resumeTracking();\n            }\n            this._zooming = false;\n            this.trigger(ZOOM_END, {});\n        }\n    };\n\n    Chart.prototype._gesturechange = function _gesturechange (e) {\n        var mousewheelZoom = this._mousewheelZoom;\n\n        if (mousewheelZoom && !this._stopChartHandlers(e)) {\n            e.preventDefault();\n            var previousGestureDistance = this._gestureDistance;\n            var scaleDelta = -e.distance / previousGestureDistance + 1;\n\n            if (Math.abs(scaleDelta) >= 0.1) {\n                scaleDelta = Math.round(scaleDelta * 10);\n\n                this._gestureDistance = e.distance;\n                var args = { delta: scaleDelta, axisRanges: axisRanges(this._plotArea.axes), originalEvent: e };\n                if (this._zooming || !this.trigger(ZOOM_START, args)) {\n                    var coords = this._eventCoordinates(e);\n\n                    if (!this._zooming) {\n                        this._zooming = true;\n                    }\n\n                    var ranges = args.axisRanges = mousewheelZoom.updateRanges(scaleDelta, coords);\n                    if (ranges && !this.trigger(ZOOM, args)) {\n                        mousewheelZoom.zoom();\n                    }\n                }\n            }\n        }\n    };\n\n    Chart.prototype._mouseout = function _mouseout (e) {\n        if (e.element) {\n            var element = this._drawingChartElement(e.element, e);\n\n            if (element && element.leave) {\n                element.leave(this, e.originalEvent);\n            }\n        }\n    };\n\n    Chart.prototype._start = function _start (e) {\n        var coords = this._eventCoordinates(e);\n\n        if (this._stopChartHandlers(e) || !this._plotArea.backgroundContainsPoint(coords)) {\n            return;\n        }\n\n\n        if (this.requiresHandlers([ DRAG_START, DRAG, DRAG_END ])) {\n            this._startNavigation(e, coords, DRAG_START);\n        }\n\n        if (this._pannable && this._pannable.start(e)) {\n            this.surface.suspendTracking();\n            this._unsetActivePoint();\n            this._suppressHover = true;\n            this.chartService.panning = true;\n        }\n\n        if (this._zoomSelection) {\n            if (this._zoomSelection.start(e)) {\n                this.trigger(ZOOM_START, { axisRanges: axisRanges(this._plotArea.axes), originalEvent: e });\n            }\n        }\n    };\n\n    Chart.prototype._move = function _move (e) {\n        var ref = this;\n        var state = ref._navState;\n        var pannable = ref._pannable;\n\n        if (this._stopChartHandlers(e)) {\n            return;\n        }\n\n        if (pannable) {\n            var ranges = pannable.move(e);\n\n            if (ranges && !this.trigger(DRAG, { axisRanges: ranges, originalEvent: e })) {\n                pannable.pan();\n            }\n        } else if (state) {\n            var ranges$1 = {};\n            var axes = state.axes;\n\n            for (var i = 0; i < axes.length; i++) {\n                var currentAxis = axes[i];\n                var axisName = currentAxis.options.name;\n                if (axisName) {\n                    var axis = currentAxis.options.vertical ? e.y : e.x;\n                    var delta = axis.startLocation - axis.location;\n\n                    if (delta !== 0) {\n                        ranges$1[currentAxis.options.name] = currentAxis.translateRange(delta);\n                    }\n                }\n            }\n\n            state.axisRanges = ranges$1;\n            this.trigger(DRAG, {\n                axisRanges: ranges$1,\n                originalEvent: e\n            });\n        }\n\n        if (this._zoomSelection) {\n            this._zoomSelection.move(e);\n        }\n    };\n\n    Chart.prototype._end = function _end (e) {\n        if (this._stopChartHandlers(e)) {\n            return;\n        }\n\n        var pannable = this._pannable;\n        if (pannable && pannable.end(e)) {\n            this.surface.resumeTracking();\n            this.trigger(DRAG_END, {\n                axisRanges: axisRanges(this._plotArea.axes),\n                originalEvent: e\n            });\n            this._suppressHover = false;\n            this.chartService.panning = false;\n        } else {\n            this._endNavigation(e, DRAG_END);\n        }\n\n        if (this._zoomSelection) {\n            var ranges = this._zoomSelection.end(e);\n            if (ranges && !this.trigger(ZOOM, { axisRanges: ranges, originalEvent: e })) {\n                this._zoomSelection.zoom();\n                this.trigger(ZOOM_END, { axisRanges: ranges, originalEvent: e });\n            }\n        }\n    };\n\n    Chart.prototype._stopChartHandlers = function _stopChartHandlers (e) {\n        var selections = this._selections || [];\n        if (!selections.length) {\n            return false;\n        }\n\n        var coords = this._eventCoordinates(e);\n        var pane = this._plotArea.paneByPoint(coords);\n        if (pane) {\n            for (var idx = 0; idx < selections.length; idx++) {\n                if (selections[idx].onPane(pane)) {\n                    return true;\n                }\n            }\n        }\n    };\n\n    Chart.prototype._mousewheelZoomRate = function _mousewheelZoomRate () {\n        var zoomable = this.options.zoomable;\n        var mousewheel = (zoomable || {}).mousewheel || {};\n        return valueOrDefault(mousewheel.rate, MOUSEWHEEL_ZOOM_RATE);\n    };\n\n    Chart.prototype._mousewheel = function _mousewheel (e) {\n        var this$1 = this;\n\n        var delta = mousewheelDelta(e);\n        var mousewheelZoom = this._mousewheelZoom;\n        var coords = this._eventCoordinates(e);\n\n        if (this._stopChartHandlers(e) || !this._plotArea.backgroundContainsPoint(coords)) {\n            return;\n        }\n\n        if (mousewheelZoom) {\n            var args = { delta: delta, axisRanges: axisRanges(this._plotArea.axes), originalEvent: e };\n            if (this._zooming || !this.trigger(ZOOM_START, args)) {\n                e.preventDefault();\n\n                if (!this._zooming) {\n                    this._unsetActivePoint();\n                    this.surface.suspendTracking();\n                    this._zooming = true;\n                }\n\n                if (this._mwTimeout) {\n                    clearTimeout(this._mwTimeout);\n                }\n\n                args.axisRanges = mousewheelZoom.updateRanges(delta, coords);\n                if (args.axisRanges && !this.trigger(ZOOM, args)) {\n                    mousewheelZoom.zoom();\n                }\n\n                this._mwTimeout = setTimeout(function () {\n                    this$1.trigger(ZOOM_END, args);\n                    this$1._zooming = false;\n                    if (this$1.surface) {\n                        this$1.surface.resumeTracking();\n                    }\n                }, MOUSEWHEEL_DELAY);\n            }\n        } else {\n            var state = this._navState;\n            if (!state) {\n                var prevented = this._startNavigation(e, coords, ZOOM_START);\n                if (!prevented) {\n                    state = this._navState;\n                }\n            }\n\n            if (state) {\n                var totalDelta = state.totalDelta || delta;\n                state.totalDelta = totalDelta + delta;\n\n                var axes = this._navState.axes;\n                var ranges = {};\n\n                for (var i = 0; i < axes.length; i++) {\n                    var currentAxis = axes[i];\n                    var axisName = currentAxis.options.name;\n                    if (axisName) {\n                        ranges[axisName] = currentAxis.scaleRange(-totalDelta * this$1._mousewheelZoomRate(), coords);\n                    }\n                }\n\n                this.trigger(ZOOM, {\n                    delta: delta,\n                    axisRanges: ranges,\n                    originalEvent: e\n                });\n\n                if (this._mwTimeout) {\n                    clearTimeout(this._mwTimeout);\n                }\n\n                this._mwTimeout = setTimeout(function () {\n                    this$1._endNavigation(e, ZOOM_END);\n                }, MOUSEWHEEL_DELAY);\n            }\n        }\n    };\n\n    Chart.prototype._startNavigation = function _startNavigation (e, coords, chartEvent) {\n        var plotArea = this._model._plotArea;\n        var pane = plotArea.findPointPane(coords);\n        var axes = plotArea.axes.slice(0);\n\n        if (!pane) {\n            return;\n        }\n\n        var ranges = axisRanges(axes);\n\n        var prevented = this.trigger(chartEvent, {\n            axisRanges: ranges,\n            originalEvent: e\n        });\n\n        if (prevented) {\n            this._cancelDomEvents();\n        } else {\n            this._suppressHover = true;\n            this._unsetActivePoint();\n            this._navState = {\n                axisRanges: ranges,\n                pane: pane,\n                axes: axes\n            };\n        }\n    };\n\n    Chart.prototype._endNavigation = function _endNavigation (e, chartEvent) {\n        if (this._navState) {\n            this.trigger(chartEvent, {\n                axisRanges: this._navState.axisRanges,\n                originalEvent: e\n            });\n            this._suppressHover = false;\n            this._navState = null;\n        }\n    };\n\n    Chart.prototype._getChartElement = function _getChartElement (e, match) {\n        var element = this.surface.eventTarget(e);\n        if (element) {\n            return this._drawingChartElement(element, e, match);\n        }\n    };\n\n    Chart.prototype._drawingChartElement = function _drawingChartElement (element, e, match) {\n        var current = element;\n        var chartElement;\n        while (current && !chartElement) {\n            chartElement = current.chartElement;\n            current = current.parent;\n        }\n\n        if (chartElement) {\n            if (chartElement.aliasFor) {\n                chartElement = chartElement.aliasFor(e, this._eventCoordinates(e));\n            }\n\n            if (match) {\n                chartElement = chartElement.closest(match);\n                if (chartElement && chartElement.aliasFor) {\n                    chartElement = chartElement.aliasFor();\n                }\n            }\n\n            return chartElement;\n        }\n    };\n\n    Chart.prototype._eventCoordinates = function _eventCoordinates (e) {\n        var coordinates = eventCoordinates(e);\n        return this._toModelCoordinates(coordinates.x, coordinates.y);\n    };\n\n    Chart.prototype._elementPadding = function _elementPadding () {\n        if (!this._padding) {\n            var ref = elementStyles(this.element, [ \"paddingLeft\", \"paddingTop\" ]);\n            var paddingLeft = ref.paddingLeft;\n            var paddingTop = ref.paddingTop;\n            this._padding = {\n                top: paddingTop,\n                left: paddingLeft\n            };\n        }\n\n        return this._padding;\n    };\n\n    Chart.prototype._toDocumentCoordinates = function _toDocumentCoordinates (point) {\n        var padding = this._elementPadding();\n        var offset = elementOffset(this.element);\n\n        return {\n            left: round(point.x + padding.left + offset.left),\n            top: round(point.y + padding.top + offset.top)\n        };\n    };\n\n    // TODO: Breaking change due to peer version change\n    // Reuse by exposing _surfacePoint on Surface\n    Chart.prototype._toModelCoordinates = function _toModelCoordinates (clientX, clientY) {\n        var element = this.element;\n        var offset = elementOffset(element);\n        var padding = this._elementPadding();\n        var inverseTransform = elementScale(element).invert();\n        var point = new geometry.Point(\n            clientX - offset.left - padding.left,\n            clientY - offset.top - padding.top\n        ).transform(inverseTransform);\n\n        return new Point(point.x, point.y);\n    };\n\n    Chart.prototype._tap = function _tap (e) {\n        var this$1 = this;\n\n        var drawingElement = this.surface.eventTarget(e);\n        var element = this._drawingChartElement(drawingElement, e);\n        var sharedTooltip = this._sharedTooltip();\n\n        if (!this._startHover(drawingElement, e) && !sharedTooltip) {\n            this._unsetActivePoint();\n        }\n\n        if (sharedTooltip) {\n            this._trackSharedTooltip(this._eventCoordinates(e), e, true);\n        }\n\n        this._propagateClick(element, e);\n\n        //part of fix for hover issue on windows touch\n        this.handlingTap = true;\n        setTimeout(function () {\n            this$1.handlingTap = false;\n        }, 0);\n    };\n\n    Chart.prototype._click = function _click (e) {\n        var element = this._getChartElement(e);\n        this._propagateClick(element, e);\n    };\n\n    Chart.prototype._propagateClick = function _propagateClick (element, e) {\n        var this$1 = this;\n\n        var current = element;\n        while (current) {\n            if (current.click) {\n                current.click(this$1, e);\n            }\n\n            current = current.parent;\n        }\n    };\n\n    Chart.prototype._startHover = function _startHover (element, e) {\n        if (this._suppressHover) {\n            return false;\n        }\n\n        var point = this._drawingChartElement(element, e, function(element) {\n            return (element.hover || element.over) && !(element instanceof PlotAreaBase);\n        });\n\n        this._showInactiveOpacity(point, e);\n\n        return point;\n    };\n\n    Chart.prototype._displayTooltip = function _displayTooltip (point) {\n        var tooltipOptions = deepExtend({}, this.options.tooltip, point.options.tooltip);\n        if (tooltipOptions.visible) {\n            this._tooltip.show(point);\n        }\n    };\n\n    Chart.prototype._displayInactiveOpacity = function _displayInactiveOpacity (activePoint, multipleSeries, highlightPoints) {\n        var chartInstance = this._activeChartInstance = this._chartInstanceFromPoint(activePoint);\n        if (!chartInstance) {\n            return;\n        }\n\n        if (multipleSeries) {\n            this._updateSeriesOpacity(activePoint);\n            this._applySeriesOpacity(chartInstance.children, null, true);\n            this._applySeriesOpacity(chartInstance.children, activePoint.series);\n            this._highlight.show(highlightPoints || activePoint);\n        } else {\n            var inactivePoints;\n\n            if (!chartInstance.supportsPointInactiveOpacity()) {\n                this._highlight.show(activePoint);\n                return;\n            }\n\n            inactivePoints = this._getInactivePoints(activePoint, chartInstance);\n\n            if (inactivePoints && inactivePoints.length) {\n                this._highlight.show(inactivePoints, 1 - this._getInactiveOpacityForSeries(activePoint.series));\n            }\n        }\n    };\n\n    Chart.prototype._getInactivePoints = function _getInactivePoints (activePoint, chartInstance) {\n        var allPoints = this._getAllPointsOfType(chartInstance, activePoint.constructor);\n\n        return allPoints.filter(function (point) { return point !== activePoint; });\n    };\n\n    Chart.prototype._getAllPointsOfType = function _getAllPointsOfType (container, type) {\n        var this$1 = this;\n\n        var points = [];\n\n        for (var i = 0; i < container.children.length; i++) {\n            var element = container.children[i];\n\n            if (element.constructor === type) {\n                points.push(element);\n            } else if (element.children && element.children.length) {\n                points = points.concat(this$1._getAllPointsOfType(element, type));\n            }\n        }\n\n        return points;\n    };\n\n    Chart.prototype._updateHoveredPoint = function _updateHoveredPoint (point, e) {\n        var hoveredPoint = this._hoveredPoint;\n\n        if (hoveredPoint && hoveredPoint !== point) {\n            hoveredPoint.out(this, e);\n            this._hoveredPoint = null;\n        }\n\n        if (point && hoveredPoint !== point && point.over) {\n            this._hoveredPoint = point;\n            point.over(this, e);\n        }\n    };\n\n    Chart.prototype._updateDrilldownPoint = function _updateDrilldownPoint (point) {\n        if (!point || !point.series) {\n            return;\n        }\n\n        var ref = SeriesBinder.current.bindPoint(point.series, null, point.dataItem);\n        var fields = ref.fields;\n        if (fields.drilldown) {\n            this._drilldownState = { cursor: this.element.style.cursor };\n            this.element.style.cursor = 'pointer';\n        }\n    };\n\n    Chart.prototype._resetDrilldownPoint = function _resetDrilldownPoint () {\n        if (this._drilldownState) {\n            this.element.style.cursor = this._drilldownState.cursor;\n            this._drilldownState = null;\n        }\n    };\n\n    Chart.prototype._startDrilldown = function _startDrilldown (point) {\n        if (!point || !point.series) {\n            return;\n        }\n\n        var series = point.series;\n        var ref = SeriesBinder.current.bindPoint(series, null, point.dataItem);\n        var fields = ref.fields;\n        var value = fields.drilldown;\n        if (value) {\n            var args = { series: series, point: point, value: value, sender: this };\n            this.trigger(DRILLDOWN, args);\n        }\n    };\n\n    Chart.prototype._updateSeriesOpacity = function _updateSeriesOpacity (point, resetOpacity) {\n        var this$1 = this;\n\n        var plotArea = this._plotArea;\n        var length = plotArea.series.length;\n\n        for (var i = 0; i < length; i++) {\n            var currSeries = plotArea.series[i];\n            var defaultOpacity = this$1._getDefaultOpacityForSeries(currSeries);\n            var inactiveOpacity = this$1._getInactiveOpacityForSeries(currSeries);\n\n            if (!resetOpacity && currSeries !== point.series) {\n                currSeries.defaultOpacity = defaultOpacity;\n                currSeries.opacity = inactiveOpacity;\n\n                if (currSeries.line) {\n                    currSeries.line.opacity = inactiveOpacity;\n                }\n            } else {\n                currSeries.opacity = defaultOpacity;\n\n                if (currSeries.line) {\n                    currSeries.line.opacity = defaultOpacity;\n                }\n            }\n        }\n    };\n\n    Chart.prototype._applySeriesOpacity = function _applySeriesOpacity (elements, activeSeries, reset, series) {\n        var this$1 = this;\n\n        for (var i = 0; i < elements.length; i++) {\n            var element = elements[i];\n            var currSeries = element.series || series;\n            var shouldHighlight = currSeries && (currSeries.highlight || {}).visible;\n\n            if (shouldHighlight && element.visual) {\n                var opacity = series ? series.opacity : element.series.opacity;\n                if (currSeries !== activeSeries || reset) {\n                    element.visual.opacity(reset ? 1 : opacity);\n                }\n            }\n\n            if (element.children && element.children.length) {\n                this$1._applySeriesOpacity(element.children, activeSeries, reset, element.series);\n            }\n        }\n    };\n\n    Chart.prototype._chartInstanceFromPoint = function _chartInstanceFromPoint (point) {\n        var chartInstance = point.parent;\n\n        while (chartInstance && !chartInstance.plotArea) {\n            chartInstance = chartInstance.parent;\n        }\n\n        return chartInstance;\n    };\n\n    Chart.prototype._showInactiveOpacity = function _showInactiveOpacity (point, e) {\n        var activePoint = this._activePoint;\n        var multipleSeries = this._plotArea.series.length > 1;\n        var hasInactiveOpacity = this._hasInactiveOpacity();\n\n        this._updateHoveredPoint(point, e);\n\n        if (point && activePoint !== point && point.hover) {\n            this._activePoint = point;\n\n            if (!this._sharedTooltip() && !point.hover(this, e)) {\n                this._displayTooltip(point);\n\n                if (hasInactiveOpacity) {\n                    this._displayInactiveOpacity(point, multipleSeries);\n                } else {\n                    this._highlight.show(point);\n                }\n            }\n        }\n\n        return point;\n    };\n\n    Chart.prototype._hideInactiveOpacity = function _hideInactiveOpacity (point) {\n        var multipleSeries = this._plotArea.series.length > 1;\n        var hasInactiveOpacity = this._hasInactiveOpacity();\n        if (hasInactiveOpacity) {\n            if (multipleSeries && this._activeChartInstance) {\n                this._updateSeriesOpacity(point, true);\n                this._applySeriesOpacity(this._activeChartInstance.children, null, true);\n                this._activeChartInstance = null;\n            }\n            this._highlight && this._highlight.hide();\n            this._activePoint = null;\n        }\n    };\n\n    Chart.prototype._hasInactiveOpacity = function _hasInactiveOpacity () {\n        var hasDefaultInactiveOpacity = this.options.seriesDefaults.highlight.inactiveOpacity !== undefined;\n        var hasInactiveOpacity = this.options.series.filter(function (s) { return s.highlight.inactiveOpacity !== undefined; } ).length > 0;\n        return hasDefaultInactiveOpacity || hasInactiveOpacity;\n    };\n\n    Chart.prototype._getInactiveOpacityForSeries = function _getInactiveOpacityForSeries (series) {\n        var defaultInactiveOpacity = this.options.seriesDefaults.highlight.inactiveOpacity;\n        var seriesInactiveOpacity = series.highlight.inactiveOpacity;\n        return seriesInactiveOpacity || defaultInactiveOpacity || series.opacity || DEFAULT_SERIES_OPACITY;\n    };\n\n    Chart.prototype._getDefaultOpacityForSeries = function _getDefaultOpacityForSeries (series) {\n        return series.defaultOpacity || series.opacity || DEFAULT_SERIES_OPACITY;\n    };\n\n    Chart.prototype._mouseover = function _mouseover (e) {\n        var obj;\n\n        var point = this._startHover(e.element, e.originalEvent);\n\n        if (point && point.tooltipTracking && !this._mouseMoveTrackHandler && !this._sharedTooltip()) {\n            this._mouseMoveTrackHandler = this._mouseMoveTracking.bind(this);\n            bindEvents(document, ( obj = {}, obj[ MOUSEMOVE ] = this._mouseMoveTrackHandler, obj ));\n        }\n    };\n\n    Chart.prototype._mouseMoveTracking = function _mouseMoveTracking (e) {\n        var obj;\n\n        var ref = this;\n        var options = ref.options;\n        var tooltip = ref._tooltip;\n        var highlight = ref._highlight;\n        var point = ref._activePoint;\n        var coords = this._eventCoordinates(e);\n\n        if (this._plotArea.box.containsPoint(coords)) {\n            if (point && point.tooltipTracking && point.series && point.parent.getNearestPoint) {\n                var seriesPoint = point.parent.getNearestPoint(coords.x, coords.y, point.seriesIx);\n                if (seriesPoint && seriesPoint !== point) {\n                    this._activePoint = seriesPoint;\n\n                    if (!seriesPoint.hover(this, e)) {\n                        var tooltipOptions = deepExtend({}, options.tooltip, seriesPoint.options.tooltip);\n                        if (tooltipOptions.visible) {\n                            tooltip.show(seriesPoint);\n                        }\n\n                        highlight.show(seriesPoint);\n                    }\n                }\n            }\n        } else {\n            unbindEvents(document, ( obj = {}, obj[ MOUSEMOVE ] = this._mouseMoveTrackHandler, obj ));\n            this._unsetActivePoint();\n            this._mouseMoveTrackHandler = null;\n\n            this._hideInactiveOpacity(point);\n        }\n    };\n\n    Chart.prototype._mousemove = function _mousemove (e) {\n        var coords = this._eventCoordinates(e);\n        var plotArea = this._plotArea;\n\n        this._trackCrosshairs(coords);\n\n        if (plotArea.hover) {\n            var overPlotArea = plotArea.backgroundContainsPoint(coords);\n            if (overPlotArea) {\n                this._plotAreaHovered = true;\n                this._plotArea.hover(this, e);\n            } else if (this._plotAreaHovered && !overPlotArea) {\n                this._plotAreaHovered = false;\n                this.trigger(PLOT_AREA_LEAVE);\n            }\n        }\n\n        if (this._sharedTooltip()) {\n            this._trackSharedTooltip(coords, e);\n        }\n    };\n\n    Chart.prototype._trackCrosshairs = function _trackCrosshairs (coords) {\n        var crosshairs = this._plotArea.crosshairs;\n\n        for (var i = 0; i < crosshairs.length; i++) {\n            var current = crosshairs[i];\n\n            if (current.box.containsPoint(coords)) {\n                current.showAt(coords);\n            } else {\n                current.hide();\n            }\n        }\n    };\n\n    Chart.prototype._trackSharedTooltip = function _trackSharedTooltip (coords, e, toggle) {\n        if (this._suppressHover) {\n            return;\n        }\n\n        var ref = this;\n        var tooltipOptions = ref.options.tooltip;\n        var plotArea = ref._plotArea;\n        var categoryAxis = ref._plotArea.categoryAxis;\n        var tooltip = ref._tooltip;\n        var highlight = ref._highlight;\n\n        if (plotArea.backgroundContainsPoint(coords)) {\n            var index = categoryAxis.pointCategoryIndex(coords);\n            if (index !== this._tooltipCategoryIx || (!this._sharedHighlight && toggle)) {\n                var points = plotArea.pointsByCategoryIndex(index);\n                var pointArgs = points.map(function(point) {\n                    return point.eventArgs(e);\n                });\n                var hoverArgs = pointArgs[0] || {};\n                hoverArgs.categoryPoints = pointArgs;\n\n                if (points.length > 0 && !this.trigger(SERIES_HOVER, hoverArgs)) {\n                    if (tooltipOptions.visible) {\n                        tooltip.showAt(points, coords);\n                    }\n\n                    highlight.show(points);\n\n                    this._sharedHighlight = true;\n                } else {\n                    tooltip.hide();\n                }\n\n                this._tooltipCategoryIx = index;\n            } else if (toggle && this._sharedHighlight) {\n                highlight.hide();\n                tooltip.hide();\n                this._sharedHighlight = false;\n            }\n        } else if (this._sharedHighlight) {\n            highlight.hide();\n            tooltip.hide();\n            this._tooltipCategoryIx = null;\n            this._sharedHighlight = false;\n        }\n    };\n\n    Chart.prototype.hideElements = function hideElements (options) {\n        var plotArea = this._plotArea;\n        this._mousemove.cancel();\n\n        plotArea.hideCrosshairs();\n\n        this._unsetActivePoint(options);\n    };\n\n    Chart.prototype._unsetActivePoint = function _unsetActivePoint (options) {\n        var ref = this;\n        var tooltip = ref._tooltip;\n        var highlight = ref._highlight;\n\n        this._activePoint = null;\n        this._hoveredPoint = null;\n\n        if (tooltip && !(options && options.keepTooltipOpen)) {\n            tooltip.hide();\n        }\n\n        this._tooltipCategoryIx = null;\n        this._sharedHighlight = false;\n\n        if (highlight) {\n            highlight.hide();\n        }\n    };\n\n    Chart.prototype._deferRedraw = function _deferRedraw () {\n        this._redraw();\n    };\n\n    Chart.prototype._clearRedrawTimeout = function _clearRedrawTimeout () {\n        if (this._redrawTimeout) {\n            clearInterval(this._redrawTimeout);\n            this._redrawTimeout = null;\n        }\n    };\n\n    Chart.prototype.bindCategories = function bindCategories () {\n        var this$1 = this;\n\n        var options = this.options;\n        var definitions = [].concat(options.categoryAxis);\n\n        for (var axisIx = 0; axisIx < definitions.length; axisIx++) {\n            var axis = definitions[axisIx];\n            if (axis.autoBind !== false) {\n                this$1.bindCategoryAxisFromSeries(axis, axisIx);\n            }\n        }\n    };\n\n    Chart.prototype.bindCategoryAxisFromSeries = function bindCategoryAxisFromSeries (axis, axisIx) {\n        var this$1 = this;\n\n        var series = this.options.series;\n        var seriesLength = series.length;\n        var uniqueCategories = new HashMap();//perf improvement in case type category with dates\n        var items = [];\n        var bindable = false;\n        var dateAxis;\n\n        for (var seriesIx = 0; seriesIx < seriesLength; seriesIx++) {\n            var s = series[seriesIx];\n            var onAxis = s.categoryAxis === axis.name || (!s.categoryAxis && axisIx === 0);\n            var data = s.data;\n            var dataLength = data.length;\n            var bind = s.categoryField && onAxis;\n            bindable = bind || bindable;\n\n            if (bind && dataLength > 0) {\n                dateAxis = isDateAxis(axis, getField(s.categoryField, data[0]));\n\n                var getFn = dateAxis ? getDateField : getField;\n\n                for (var dataIx = 0; dataIx < dataLength; dataIx++) {\n                    var dataRow = data[dataIx];\n                    var category = getFn(s.categoryField, dataRow, this$1.chartService.intl);\n\n                    if (dateAxis || !uniqueCategories.get(category)) {\n                        items.push([ category, dataRow ]);\n\n                        if (!dateAxis) {\n                            uniqueCategories.set(category, true);\n                        }\n                    }\n                }\n            }\n        }\n\n        if (items.length > 0) {\n            if (dateAxis) {\n                items = uniqueDates(items, function(a, b) {\n                    return dateComparer(a[0], b[0]);\n                });\n            }\n\n            var result = transpose(items);\n            axis.categories = result[0];\n        } else if (bindable) {\n            axis.categories = [];\n        }\n    };\n\n    Chart.prototype._isBindable = function _isBindable (series) {\n        var valueFields = SeriesBinder.current.valueFields(series);\n        var result = true;\n\n        for (var i = 0; i < valueFields.length; i++) {\n            var field = valueFields[i];\n            if (field === VALUE) {\n                field = \"field\";\n            } else {\n                field = field + \"Field\";\n            }\n\n            if (!defined(series[field])) {\n                result = false;\n                break;\n            }\n        }\n\n        return result;\n    };\n\n    Chart.prototype._noTransitionsRedraw = function _noTransitionsRedraw () {\n        var options = this.options;\n        var transitionsState;\n\n        if (options.transitions !== false) {\n            options.transitions = false;\n            transitionsState = true;\n        }\n\n        this._redraw();\n\n        if (transitionsState) {\n            options.transitions = true;\n        }\n    };\n\n    Chart.prototype._legendItemHover = function _legendItemHover (seriesIndex, pointIndex) {\n        var ref = this;\n        var plotArea = ref._plotArea;\n        var highlight = ref._highlight;\n        var currentSeries = (plotArea.srcSeries || plotArea.series)[seriesIndex];\n        var items;\n\n        if (inArray(currentSeries.type, [ PIE, DONUT, FUNNEL, PYRAMID ])) {\n            items = plotArea.findPoint(function(point) {\n                return point.series.index === seriesIndex && point.index === pointIndex;\n            });\n        } else {\n            items = plotArea.pointsBySeriesIndex(seriesIndex);\n        }\n\n        if (this._hasInactiveOpacity() && currentSeries.visible && items) {\n            var multipleSeries = plotArea.series.length > 1;\n            var point = items.length ? items[0] : items;\n\n            this._displayInactiveOpacity(point, multipleSeries, items);\n        } else {\n            highlight.show(items);\n        }\n    };\n\n    Chart.prototype._shouldAttachMouseMove = function _shouldAttachMouseMove () {\n        return this._plotArea.crosshairs.length || (this._tooltip && this._sharedTooltip()) || this.requiresHandlers([ PLOT_AREA_HOVER, PLOT_AREA_LEAVE ]);\n    };\n\n    Chart.prototype.updateMouseMoveHandler = function updateMouseMoveHandler () {\n        var obj, obj$1;\n\n        unbindEvents(this.element, ( obj = {}, obj[ MOUSEMOVE ] = this._mousemove, obj ));\n\n        if (this._shouldAttachMouseMove()) {\n            bindEvents(this.element, ( obj$1 = {}, obj$1[ MOUSEMOVE ] = this._mousemove, obj$1 ));\n        }\n    };\n\n    Chart.prototype.applyOptions = function applyOptions (options, theme) {\n        clearMissingValues(this._originalOptions, options);\n        this._originalOptions = deepExtend(this._originalOptions, options);\n        this.options = deepExtend({}, this._originalOptions);\n\n        if (theme) {\n            this._theme = theme;\n            this.chartService.theme = theme;\n        }\n        this._initTheme(this.options, this._theme);\n\n        this._toggleDragZoomEvents();\n    };\n\n    Chart.prototype.setOptions = function setOptions (options, theme) {\n        this.applyOptions(options, theme);\n        this.bindCategories();\n        this.redraw();\n        this.updateMouseMoveHandler();\n    };\n\n    Chart.prototype.setDirection = function setDirection (rtl) {\n        this.chartService.rtl = Boolean(rtl);\n        if (this.surface && this.surface.type === 'svg') {\n            this._destroySurface();\n        }\n    };\n\n    Chart.prototype.setIntlService = function setIntlService (intl) {\n        this.chartService.intl = intl;\n    };\n\n    Chart.prototype.noTransitionsRedraw = function noTransitionsRedraw () {\n        this._noTransitionsRedraw();\n    };\n\n    Chart.prototype.destroy = function destroy () {\n        var obj, obj$1;\n\n        this._destroyed = true;\n\n        unbindEvents(this.element, ( obj = {}, obj[ CONTEXTMENU ] = this._clickHandler, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj[ MOUSEMOVE ] = this._mousemove, obj[ MOUSELEAVE ] = this._mouseleaveHandler, obj ));\n\n        if (this.domEvents) {\n            this.domEvents.destroy();\n            delete this.domEvents;\n        }\n\n        if (this._mouseMoveTrackHandler) {\n            unbindEvents(document, ( obj$1 = {}, obj$1[ MOUSEMOVE ] = this._mouseMoveTrackHandler, obj$1 ));\n        }\n\n        this._destroyView();\n\n        this._destroySurface();\n\n        this._clearRedrawTimeout();\n    };\n\n    Chart.prototype._destroySurface = function _destroySurface () {\n        var surface = this.surface;\n        if (surface) {\n            surface.unbind(\"mouseenter\", this._surfaceMouseenterHandler);\n            surface.unbind(\"mouseleave\", this._surfaceMouseleaveHandler);\n            surface.destroy();\n\n            this.surface = null;\n        }\n    };\n\n    Chart.prototype._destroySelections = function _destroySelections () {\n        var selections = this._selections;\n\n        if (selections) {\n            while (selections.length > 0) {\n                selections.shift().destroy();\n            }\n        }\n    };\n\n    Chart.prototype._destroyView = function _destroyView () {\n        var model = this._model;\n\n        if (model) {\n            model.destroy();\n            this._model = null;\n        }\n\n        this._unsetActivePoint();\n        this._resetDrilldownPoint();\n        this._destroySelections();\n\n        if (this._tooltip) {\n            this._tooltip.destroy();\n        }\n\n        if (this._highlight) {\n            this._highlight.destroy();\n        }\n\n        if (this._zoomSelection) {\n            this._zoomSelection.destroy();\n            delete this._zoomSelection;\n        }\n\n        if (this._pannable) {\n            this._pannable.destroy();\n            delete this._pannable;\n        }\n\n        if (this._mousewheelZoom) {\n            this._mousewheelZoom.destroy();\n            delete this._mousewheelZoom;\n        }\n    };\n\n    return Chart;\n}(Class));\n\nfunction resolveAxisAliases(options) {\n    var aliases = AXIS_NAMES;\n\n    for (var idx = 0; idx < aliases.length; idx++) {\n        var alias = aliases[idx] + \"Axes\";\n        if (options[alias]) {\n            options[aliases[idx] + \"Axis\"] = options[alias];\n            delete options[alias];\n        }\n    }\n}\n\nfunction pointByCategoryName(points, name) {\n    if (points) {\n        for (var idx = 0; idx < points.length; idx++) {\n            if (points[idx].category === name) {\n                return [ points[idx] ];\n            }\n        }\n    }\n}\n\nfunction applyAxisDefaults(options, themeOptions) {\n    var themeAxisDefaults = ((themeOptions || {}).axisDefaults) || {};\n    var axisName, axisDefaults, axes;\n\n    function mapAxisOptions(axisOptions) {\n        var axisColor = (axisOptions || {}).color || axisDefaults.color;\n        var result = deepExtend({},\n            themeAxisDefaults,\n            themeAxisDefaults[axisName],\n            axisDefaults,\n            axisDefaults[axisName], {\n                line: { color: axisColor },\n                labels: { color: axisColor },\n                title: { color: axisColor }\n            },\n            axisOptions\n        );\n\n        delete result[axisName];\n\n        return result;\n    }\n\n    for (var idx = 0; idx < AXIS_NAMES.length; idx++) {\n        axisName = AXIS_NAMES[idx] + \"Axis\";\n        axisDefaults = options.axisDefaults || {};\n        axes = [].concat(options[axisName]);\n\n        axes = axes.map(mapAxisOptions);\n\n        options[axisName] = axes.length > 1 ? axes : axes[0];\n    }\n}\n\nfunction applySeriesDefaults(options, themeOptions) {\n    var series = options.series;\n    var seriesLength = series.length;\n    var seriesDefaults = options.seriesDefaults;\n    var commonDefaults = deepExtend({}, options.seriesDefaults);\n    var themeSeriesDefaults = themeOptions ? deepExtend({}, themeOptions.seriesDefaults) : {};\n    var commonThemeDefaults = deepExtend({}, themeSeriesDefaults);\n\n    cleanupNestedSeriesDefaults(commonDefaults);\n    cleanupNestedSeriesDefaults(commonThemeDefaults);\n\n    for (var i = 0; i < seriesLength; i++) {\n        var seriesType = series[i].type || options.seriesDefaults.type;\n\n        var baseOptions = deepExtend(\n            { data: [] },\n            commonThemeDefaults,\n            themeSeriesDefaults[seriesType],\n            { tooltip: options.tooltip },\n            commonDefaults,\n            seriesDefaults[seriesType]\n        );\n\n        series[i]._defaults = baseOptions;\n        series[i] = deepExtend({}, baseOptions, series[i]);\n        series[i].data = series[i].data || [];\n    }\n}\n\nfunction cleanupNestedSeriesDefaults(seriesDefaults) {\n    delete seriesDefaults.bar;\n    delete seriesDefaults.column;\n    delete seriesDefaults.rangeColumn;\n    delete seriesDefaults.line;\n    delete seriesDefaults.verticalLine;\n    delete seriesDefaults.pie;\n    delete seriesDefaults.donut;\n    delete seriesDefaults.area;\n    delete seriesDefaults.verticalArea;\n    delete seriesDefaults.scatter;\n    delete seriesDefaults.scatterLine;\n    delete seriesDefaults.bubble;\n    delete seriesDefaults.candlestick;\n    delete seriesDefaults.ohlc;\n    delete seriesDefaults.boxPlot;\n    delete seriesDefaults.bullet;\n    delete seriesDefaults.verticalBullet;\n    delete seriesDefaults.polarArea;\n    delete seriesDefaults.polarLine;\n    delete seriesDefaults.radarArea;\n    delete seriesDefaults.radarLine;\n    delete seriesDefaults.waterfall;\n}\n\n\nfunction axisRanges(axes) {\n    var ranges = {};\n\n    for (var i = 0; i < axes.length; i++) {\n        var axis = axes[i];\n        var axisName = axis.options.name;\n        if (axisName) {\n            ranges[axisName] = axis.range();\n        }\n    }\n\n    return ranges;\n}\n\nfunction sortDates(dates, comparer) {\n    if ( comparer === void 0 ) comparer = dateComparer;\n\n    for (var i = 1, length = dates.length; i < length; i++) {\n        if (comparer(dates[i], dates[i - 1]) < 0) {\n            dates.sort(comparer);\n            break;\n        }\n    }\n\n    return dates;\n}\n\nfunction uniqueDates(srcDates, comparer) {\n    if ( comparer === void 0 ) comparer = dateComparer;\n\n    var dates = sortDates(srcDates, comparer);\n    var length = dates.length;\n    var result = length > 0 ? [ dates[0] ] : [];\n\n    for (var i = 1; i < length; i++) {\n        if (comparer(dates[i], last(result)) !== 0) {\n            result.push(dates[i]);\n        }\n    }\n\n    return result;\n}\n\nfunction transpose(rows) {\n    var rowCount = rows.length;\n    var result = [];\n\n    for (var rowIx = 0; rowIx < rowCount; rowIx++) {\n        var row = rows[rowIx];\n        var colCount = row.length;\n\n        for (var colIx = 0; colIx < colCount; colIx++) {\n            result[colIx] = result[colIx] || [];\n            result[colIx].push(row[colIx]);\n        }\n    }\n\n    return result;\n}\n\nvar DATA_FIELDS = [ 'data', 'categories' ];\n\nfunction clearMissingValues(originalOptions, options) {\n    for (var field in options) {\n        if (!inArray(field, DATA_FIELDS) && options.hasOwnProperty(field)) {\n            var fieldValue = options[field];\n            var originalValue = originalOptions[field];\n            if (defined(originalValue)) {\n                var nullValue = fieldValue === null;\n                if ((nullValue || !defined(fieldValue))) {\n                    delete originalOptions[field];\n                    if (nullValue) {\n                        delete options[field];\n                    }\n                } else if (originalValue && isObject(fieldValue)) {\n                    if (isObject(originalValue)) {\n                        clearMissingValues(originalValue, fieldValue);\n                    }\n                }\n            }\n        }\n    }\n}\n\nfunction triggerPaneRender(panes) {\n    for (var idx = 0; idx < panes.length; idx++) {\n        panes[idx].notifyRender();\n    }\n}\n\nsetDefaultOptions(Chart, {\n    renderAs: \"\",\n    chartArea: {},\n    legend: {\n        visible: true,\n        labels: {}\n    },\n    categoryAxis: {},\n    seriesDefaults: {\n        type: COLUMN,\n        data: [],\n        highlight: {\n            visible: true\n        },\n        labels: {},\n        negativeValues: {\n            visible: false\n        }\n    },\n    series: [],\n    seriesColors: null,\n    tooltip: {\n        visible: false\n    },\n    transitions: true,\n    valueAxis: {},\n    plotArea: {},\n    title: {},\n    xAxis: {},\n    yAxis: {},\n    panes: [ {} ],\n    pannable: false,\n    zoomable: false\n});\n\nexport default Chart;\n","import { SharedTooltip as ChartSharedTooltip } from '../chart';\nimport { Point } from '../core';\nvar TOP_OFFSET = -2;\n\nvar SharedTooltip = (function (ChartSharedTooltip) {\n    function SharedTooltip () {\n        ChartSharedTooltip.apply(this, arguments);\n    }\n\n    if ( ChartSharedTooltip ) SharedTooltip.__proto__ = ChartSharedTooltip;\n    SharedTooltip.prototype = Object.create( ChartSharedTooltip && ChartSharedTooltip.prototype );\n    SharedTooltip.prototype.constructor = SharedTooltip;\n\n    SharedTooltip.prototype._slotAnchor = function _slotAnchor (coords, slot) {\n        var axis = this.plotArea.categoryAxis;\n        var vertical = axis.options.vertical;\n        var align = vertical ? {\n            horizontal: \"left\",\n            vertical: \"center\"\n        } : {\n            horizontal: \"center\",\n            vertical: \"bottom\"\n        };\n\n        var point;\n\n        if (vertical) {\n            point = new Point(this.plotArea.box.x2, slot.center().y);\n        } else {\n            point = new Point(slot.center().x, TOP_OFFSET);\n        }\n\n        return {\n            point: point,\n            align: align\n        };\n    };\n\n    SharedTooltip.prototype._defaultAnchor = function _defaultAnchor (point, slot) {\n        return this._slotAnchor({}, slot);\n    };\n\n    return SharedTooltip;\n}(ChartSharedTooltip));\n\nexport default SharedTooltip;","import { Chart } from '../chart';\nimport { BAR, BULLET, PIE, COLUMN, VERTICAL_BULLET } from '../chart/constants';\nimport { addClass, deepExtend, elementSize, getSpacing, inArray, isArray, isNumber, setDefaultOptions } from '../common';\nimport SharedTooltip from './shared-tooltip';\n\nvar DEAULT_BAR_WIDTH = 150;\nvar DEAULT_BULLET_WIDTH = 150;\nvar NO_CROSSHAIR = [ BAR, BULLET ];\n\nfunction hide(children) {\n    var state = [];\n    for (var idx = 0; idx < children.length; idx++) {\n        var child = children[idx];\n        state[idx] = child.style.display;\n        child.style.display = \"none\";\n    }\n\n    return state;\n}\n\nfunction show(children, state) {\n    for (var idx = 0; idx < children.length; idx++) {\n        children[idx].style.display = state[idx];\n    }\n}\n\nfunction wrapNumber(value) {\n    return isNumber(value) ? [ value ] : value;\n}\n\nvar Sparkline = (function (Chart) {\n    function Sparkline () {\n        Chart.apply(this, arguments);\n    }\n\n    if ( Chart ) Sparkline.__proto__ = Chart;\n    Sparkline.prototype = Object.create( Chart && Chart.prototype );\n    Sparkline.prototype.constructor = Sparkline;\n\n    Sparkline.prototype._setElementClass = function _setElementClass (element) {\n        addClass(element, 'k-sparkline');\n    };\n\n    Sparkline.prototype._initElement = function _initElement (element) {\n        Chart.prototype._initElement.call(this, element);\n\n        this._initialWidth = Math.floor(elementSize(element).width);\n    };\n\n    Sparkline.prototype._resize = function _resize () {\n        var element = this.element;\n        var state = hide(element.childNodes);\n\n        this._initialWidth = Math.floor(elementSize(element).width);\n\n        show(element.childNodes, state);\n\n        Chart.prototype._resize.call(this);\n    };\n\n    Sparkline.prototype._modelOptions = function _modelOptions () {\n        var chartOptions = this.options;\n        var stage = this._surfaceWrap();\n        var displayState = hide(stage.childNodes);\n\n        var space = document.createElement('span');\n        space.innerHTML = '&nbsp;';\n\n        stage.appendChild(space);\n\n        var options = deepExtend({\n            width: this._autoWidth,\n            height: elementSize(stage).height,\n            transitions: chartOptions.transitions\n        }, chartOptions.chartArea, {\n            inline: true,\n            align: false\n        });\n\n        elementSize(stage, {\n            width: options.width,\n            height: options.height\n        });\n\n        stage.removeChild(space);\n\n        show(stage.childNodes, displayState);\n\n        if (this.surface) {\n            this.surface.resize();\n        }\n\n        return options;\n    };\n\n    Sparkline.prototype._surfaceWrap = function _surfaceWrap () {\n        if (!this.stage) {\n            var stage = this.stage = document.createElement('span');\n            this.element.appendChild(stage);\n        }\n        return this.stage;\n    };\n\n    Sparkline.prototype._createPlotArea = function _createPlotArea (skipSeries) {\n        var plotArea = Chart.prototype._createPlotArea.call(this, skipSeries);\n        this._autoWidth = this._initialWidth || this._calculateWidth(plotArea);\n\n        return plotArea;\n    };\n\n    Sparkline.prototype._calculateWidth = function _calculateWidth (plotArea) {\n        var options = this.options;\n        var margin = getSpacing(options.chartArea.margin);\n        var charts = plotArea.charts;\n        var stage = this._surfaceWrap();\n        var total = 0;\n\n\n        for (var i = 0; i < charts.length; i++) {\n            var currentChart = charts[i];\n            var firstSeries = (currentChart.options.series || [])[0];\n            if (!firstSeries) {\n                continue;\n            }\n\n            if (firstSeries.type === BAR) {\n                return DEAULT_BAR_WIDTH;\n            }\n\n            if (firstSeries.type === BULLET) {\n                return DEAULT_BULLET_WIDTH;\n            }\n\n            if (firstSeries.type === PIE) {\n                return elementSize(stage).height;\n            }\n\n            var categoryAxis = currentChart.categoryAxis;\n            if (categoryAxis) {\n                var pointsCount = categoryAxis.categoriesCount() *\n                    (!currentChart.options.isStacked && inArray(firstSeries.type, [ COLUMN, VERTICAL_BULLET ]) ? currentChart.seriesOptions.length : 1);\n\n                total = Math.max(total, pointsCount);\n            }\n        }\n\n        var size = total * options.pointWidth;\n        if (size > 0) {\n            size += margin.left + margin.right;\n        }\n\n        return size;\n    };\n\n    Sparkline.prototype._createSharedTooltip = function _createSharedTooltip (options) {\n        return new SharedTooltip(this._plotArea, options);\n    };\n\n    Sparkline.normalizeOptions = function normalizeOptions (userOptions) {\n        var options = wrapNumber(userOptions);\n\n        if (isArray(options)) {\n            options = { seriesDefaults: { data: options } };\n        } else {\n            options = deepExtend({}, options);\n        }\n\n        if (!options.series) {\n            options.series = [ { data: wrapNumber(options.data) } ];\n        }\n\n        deepExtend(options, {\n            seriesDefaults: {\n                type: options.type\n            }\n        });\n\n        if (inArray(options.series[0].type, NO_CROSSHAIR) ||\n            inArray(options.seriesDefaults.type, NO_CROSSHAIR)) {\n            options = deepExtend({}, {\n                categoryAxis: {\n                    crosshair: {\n                        visible: false\n                    }\n                }\n            }, options);\n        }\n\n        return options;\n    };\n\n    return Sparkline;\n}(Chart));\n\nsetDefaultOptions(Sparkline, {\n    chartArea: {\n        margin: 2\n    },\n    axisDefaults: {\n        visible: false,\n        majorGridLines: {\n            visible: false\n        },\n        valueAxis: {\n            narrowRange: true\n        }\n    },\n    seriesDefaults: {\n        type: \"line\",\n        area: {\n            line: {\n                width: 0.5\n            }\n        },\n        bar: {\n            stack: true\n        },\n        padding: 2,\n        width: 0.5,\n        overlay: {\n            gradient: null\n        },\n        highlight: {\n            visible: false\n        },\n        border: {\n            width: 0\n        },\n        markers: {\n            size: 2,\n            visible: false\n        }\n    },\n    tooltip: {\n        visible: true,\n        shared: true\n    },\n    categoryAxis: {\n        crosshair: {\n            visible: true,\n            tooltip: {\n                visible: false\n            }\n        }\n    },\n    legend: {\n        visible: false\n    },\n    transitions: false,\n\n    pointWidth: 5,\n\n    panes: [ { clip: false } ]\n});\n\nexport default Sparkline;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { interpolateValue, elementStyles } from '../common';\n\nvar FadeOutAnimation = (function (superclass) {\n    function FadeOutAnimation () {\n        superclass.apply(this, arguments);\n    }\n\n    if ( superclass ) FadeOutAnimation.__proto__ = superclass;\n    FadeOutAnimation.prototype = Object.create( superclass && superclass.prototype );\n    FadeOutAnimation.prototype.constructor = FadeOutAnimation;\n\n    FadeOutAnimation.prototype.setup = function setup () {\n        this._initialOpacity = parseFloat(elementStyles(this.element, 'opacity').opacity);\n    };\n\n    FadeOutAnimation.prototype.step = function step (pos) {\n        elementStyles(this.element, {\n            opacity: String(interpolateValue(this._initialOpacity, 0, pos))\n        });\n    };\n\n    FadeOutAnimation.prototype.abort = function abort () {\n        superclass.prototype.abort.call(this);\n        elementStyles(this.element, {\n            display: 'none',\n            opacity: String(this._initialOpacity)\n        });\n    };\n\n    FadeOutAnimation.prototype.cancel = function cancel () {\n        superclass.prototype.abort.call(this);\n        elementStyles(this.element, {\n            opacity: String(this._initialOpacity)\n        });\n    };\n\n    return FadeOutAnimation;\n}(draw.Animation));\n\nexport default FadeOutAnimation;","import { Class, deepExtend, elementStyles, getTemplate, setDefaultOptions } from '../common';\nimport { toDate, toTime } from '../date-utils';\nimport FadeOutAnimation from './fade-out-animation';\n\nfunction createDiv(className, style) {\n    var div = document.createElement(\"div\");\n    div.className = className;\n    if (style) {\n        div.style.cssText = style;\n    }\n\n    return div;\n}\n\nvar NavigatorHint = (function (Class) {\n    function NavigatorHint(container, chartService, options) {\n        Class.call(this);\n\n        this.options = deepExtend({}, this.options, options);\n        this.container = container;\n        this.chartService = chartService;\n\n        var padding = elementStyles(container, [ \"paddingLeft\", \"paddingTop\" ]);\n        this.chartPadding = {\n            top: padding.paddingTop,\n            left: padding.paddingLeft\n        };\n\n        this.createElements();\n        container.appendChild(this.element);\n    }\n\n    if ( Class ) NavigatorHint.__proto__ = Class;\n    NavigatorHint.prototype = Object.create( Class && Class.prototype );\n    NavigatorHint.prototype.constructor = NavigatorHint;\n\n    NavigatorHint.prototype.createElements = function createElements () {\n        var element = this.element = createDiv('k-navigator-hint', 'display: none; position: absolute; top: 1px; left: 1px;');\n        var tooltip = this.tooltip = createDiv('k-tooltip k-chart-tooltip');\n        var scroll = this.scroll = createDiv('k-scroll');\n\n        tooltip.innerHTML = '&nbsp;';\n\n        element.appendChild(tooltip);\n        element.appendChild(scroll);\n    };\n\n    NavigatorHint.prototype.show = function show (from, to, bbox) {\n        var ref = this;\n        var element = ref.element;\n        var options = ref.options;\n        var scroll = ref.scroll;\n        var tooltip = ref.tooltip;\n        var middle = toDate(toTime(from) + toTime(to - from) / 2);\n        var scrollWidth = bbox.width() * 0.4;\n        var minPos = bbox.center().x - scrollWidth;\n        var maxPos = bbox.center().x;\n        var posRange = maxPos - minPos;\n        var range = options.max - options.min;\n        var scale = posRange / range;\n        var offset = middle - options.min;\n        var text = this.chartService.intl.format(options.format, from, to);\n        var template = getTemplate(options);\n\n        this.clearHideTimeout();\n\n        if (!this._visible) {\n            elementStyles(element, {\n                visibility: 'hidden',\n                display: 'block'\n            });\n            this._visible = true;\n        }\n\n        if (template) {\n            text = template({\n                from: from,\n                to: to\n            });\n        }\n\n        tooltip.innerHTML = text;\n        elementStyles(tooltip, {\n            left: bbox.center().x - tooltip.offsetWidth / 2,\n            top: bbox.y1\n        });\n\n        var tooltipStyle = elementStyles(tooltip, [ 'marginTop', 'borderTopWidth', 'height' ]);\n\n        elementStyles(scroll, {\n            width: scrollWidth,\n            left: minPos + offset * scale,\n            top: bbox.y1 + tooltipStyle.marginTop + tooltipStyle.borderTopWidth + tooltipStyle.height / 2\n        });\n\n        elementStyles(element, {\n            visibility: 'visible'\n        });\n    };\n\n    NavigatorHint.prototype.clearHideTimeout = function clearHideTimeout () {\n        if (this._hideTimeout) {\n            clearTimeout(this._hideTimeout);\n        }\n\n        if (this._hideAnimation) {\n            this._hideAnimation.cancel();\n        }\n    };\n\n    NavigatorHint.prototype.hide = function hide () {\n        var this$1 = this;\n\n        this.clearHideTimeout();\n\n        this._hideTimeout = setTimeout(function () {\n            this$1._visible = false;\n            this$1._hideAnimation = new FadeOutAnimation(this$1.element);\n            this$1._hideAnimation.setup();\n            this$1._hideAnimation.play();\n        }, this.options.hideDelay);\n    };\n\n    NavigatorHint.prototype.destroy = function destroy () {\n        this.clearHideTimeout();\n        if (this.container) {\n            this.container.removeChild(this.element);\n        }\n        delete this.container;\n        delete this.chartService;\n        delete this.element;\n        delete this.tooltip;\n        delete this.scroll;\n    };\n\n    return NavigatorHint;\n}(Class));\n\nsetDefaultOptions(NavigatorHint, {\n    format: \"{0:d} - {1:d}\",\n    hideDelay: 500\n});\n\nexport default NavigatorHint;","var NAVIGATOR_PANE = \"_navigator\";\nvar NAVIGATOR_AXIS = NAVIGATOR_PANE;\nvar DEFAULT_PANE = \"_default\";\n\nexport { NAVIGATOR_AXIS, NAVIGATOR_PANE, DEFAULT_PANE };\n","import NavigatorHint from './navigator-hint';\nimport { Selection, filterSeriesByType } from '../chart';\nimport { DRAG, DRAG_END, EQUALLY_SPACED_SERIES, ZOOM, ZOOM_END } from '../chart/constants';\nimport { DateCategoryAxis } from '../core';\nimport { addDuration, parseDate, toDate, toTime } from '../date-utils';\nimport { Class, deepExtend, defined, getTemplate, InstanceObserver, last, limitValue, valueOrDefault } from '../common';\nimport { NAVIGATOR_AXIS, NAVIGATOR_PANE, DEFAULT_PANE } from './constants';\n\nvar ZOOM_ACCELERATION = 3;\n\nvar Navigator = (function (Class) {\n    function Navigator(chart) {\n        var obj;\n\n        Class.call(this);\n\n        this.chart = chart;\n        var options = this.options = deepExtend({}, this.options, chart.options.navigator);\n        var select = options.select;\n        if (select) {\n            select.from = this.parseDate(select.from);\n            select.to = this.parseDate(select.to);\n        }\n\n        if (!defined(options.hint.visible)) {\n            options.hint.visible = options.visible;\n        }\n\n        this.chartObserver = new InstanceObserver(this, ( obj = {}, obj[DRAG] = '_drag', obj[DRAG_END] = '_dragEnd', obj[ZOOM] = '_zoom', obj[ZOOM_END] = '_zoomEnd', obj ));\n        chart.addObserver(this.chartObserver);\n    }\n\n    if ( Class ) Navigator.__proto__ = Class;\n    Navigator.prototype = Object.create( Class && Class.prototype );\n    Navigator.prototype.constructor = Navigator;\n\n    Navigator.prototype.parseDate = function parseDate$1 (value) {\n        return parseDate(this.chart.chartService.intl, value);\n    };\n\n    Navigator.prototype.clean = function clean () {\n        if (this.selection) {\n            this.selection.destroy();\n            this.selection = null;\n        }\n\n        if (this.hint) {\n            this.hint.destroy();\n            this.hint = null;\n        }\n    };\n\n    Navigator.prototype.destroy = function destroy () {\n        if (this.chart) {\n            this.chart.removeObserver(this.chartObserver);\n            delete this.chart;\n        }\n\n        this.clean();\n    };\n\n    Navigator.prototype.redraw = function redraw () {\n        this._redrawSelf();\n        this.initSelection();\n    };\n\n    Navigator.prototype.initSelection = function initSelection () {\n        var ref = this;\n        var chart = ref.chart;\n        var options = ref.options;\n        var axis = this.mainAxis();\n        var ref$1 = axis.roundedRange();\n        var min = ref$1.min;\n        var max = ref$1.max;\n        var ref$2 = options.select;\n        var from = ref$2.from;\n        var to = ref$2.to;\n        var mousewheel = ref$2.mousewheel;\n        var axisClone = clone(axis);\n\n        if (axis.categoriesCount() === 0) {\n            return;\n        }\n\n        this.clean();\n\n        // \"Freeze\" the selection axis position until the next redraw\n        axisClone.box = axis.box;\n\n        this.selection = new Selection(chart, axisClone, {\n            min: min,\n            max: max,\n            from: from || min,\n            to: to || max,\n            mousewheel: valueOrDefault(mousewheel, { zoom: \"left\" }),\n            visible: options.visible\n        }, new InstanceObserver(this, {\n            selectStart: '_selectStart',\n            select: '_select',\n            selectEnd: '_selectEnd'\n        }));\n\n        if (options.hint.visible) {\n            this.hint = new NavigatorHint(chart.element, chart.chartService, {\n                min: min,\n                max: max,\n                template: getTemplate(options.hint),\n                format: options.hint.format\n            });\n        }\n    };\n\n    Navigator.prototype.setRange = function setRange () {\n        var plotArea = this.chart._createPlotArea(true);\n        var axis = plotArea.namedCategoryAxes[NAVIGATOR_AXIS];\n\n        var ref = axis.roundedRange();\n        var min = ref.min;\n        var max = ref.max;\n\n        var select = this.options.select || {};\n        var from = select.from || min;\n        if (from < min) {\n            from = min;\n        }\n\n        var to = select.to || max;\n        if (to > max) {\n            to = max;\n        }\n\n        this.options.select = deepExtend({}, select, {\n            from: from,\n            to: to\n        });\n\n        this.filterAxes();\n    };\n\n    Navigator.prototype._redrawSelf = function _redrawSelf (silent) {\n        var plotArea = this.chart._plotArea;\n\n        if (plotArea) {\n            plotArea.redraw(last(plotArea.panes), silent);\n        }\n    };\n\n    Navigator.prototype.redrawSlaves = function redrawSlaves () {\n        var chart = this.chart;\n        var plotArea = chart._plotArea;\n        var slavePanes = plotArea.panes.filter(function (pane) { return pane.options.name !== NAVIGATOR_PANE; });\n\n        // Update the original series and categoryAxis before partial refresh.\n        plotArea.srcSeries = chart.options.series;\n        plotArea.options.categoryAxis = chart.options.categoryAxis;\n        plotArea.clearSeriesPointsCache();\n\n        plotArea.redraw(slavePanes);\n    };\n\n    Navigator.prototype._drag = function _drag (e) {\n        var ref = this;\n        var chart = ref.chart;\n        var selection = ref.selection;\n        var coords = chart._eventCoordinates(e.originalEvent);\n        var navigatorAxis = this.mainAxis();\n        var naviRange = navigatorAxis.roundedRange();\n        var inNavigator = navigatorAxis.pane.box.containsPoint(coords);\n        var axis = chart._plotArea.categoryAxis;\n        var range = e.axisRanges[axis.options.name];\n        var select = this.options.select;\n        var duration;\n\n        if (!range || inNavigator || !selection) {\n            return;\n        }\n\n        if (select.from && select.to) {\n            duration = toTime(select.to) - toTime(select.from);\n        } else {\n            duration = toTime(selection.options.to) - toTime(selection.options.from);\n        }\n\n        var from = toDate(limitValue(\n            toTime(range.min),\n            naviRange.min, toTime(naviRange.max) - duration\n        ));\n\n        var to = toDate(limitValue(\n            toTime(from) + duration,\n            toTime(naviRange.min) + duration, naviRange.max\n        ));\n\n        this.options.select = { from: from, to: to };\n\n        if (this.options.liveDrag) {\n            this.filterAxes();\n            this.redrawSlaves();\n        }\n\n        selection.set(from, to);\n\n        this.showHint(from, to);\n    };\n\n    Navigator.prototype._dragEnd = function _dragEnd () {\n        this.filterAxes();\n        this.filter();\n        this.redrawSlaves();\n\n        if (this.hint) {\n            this.hint.hide();\n        }\n    };\n\n    Navigator.prototype.readSelection = function readSelection () {\n        var ref = this;\n        var ref_selection_options = ref.selection.options;\n        var from = ref_selection_options.from;\n        var to = ref_selection_options.to;\n        var select = ref.options.select;\n\n        select.from = from;\n        select.to = to;\n    };\n\n    Navigator.prototype.filterAxes = function filterAxes () {\n        var ref = this;\n        var select = ref.options.select; if ( select === void 0 ) select = { };\n        var chart = ref.chart;\n        var allAxes = chart.options.categoryAxis;\n        var from = select.from;\n        var to = select.to;\n\n        for (var idx = 0; idx < allAxes.length; idx++) {\n            var axis = allAxes[idx];\n            if (axis.pane !== NAVIGATOR_PANE) {\n                axis.min = from;\n                axis.max = to;\n            }\n        }\n    };\n\n    Navigator.prototype.filter = function filter () {\n        var ref = this;\n        var chart = ref.chart;\n        var select = ref.options.select;\n\n        if (!chart.requiresHandlers([ \"navigatorFilter\" ])) {\n            return;\n        }\n\n        var mainAxis = this.mainAxis();\n        var args = {\n            from: select.from,\n            to: select.to\n        };\n\n        if (mainAxis.options.type !== 'category') {\n            var axisOptions = new DateCategoryAxis(deepExtend({\n                baseUnit: \"fit\"\n            }, chart.options.categoryAxis[0], {\n                categories: [ select.from, select.to ]\n            }), chart.chartService).options;\n\n            args.from = addDuration(axisOptions.min, -axisOptions.baseUnitStep, axisOptions.baseUnit);\n            args.to = addDuration(axisOptions.max, axisOptions.baseUnitStep, axisOptions.baseUnit);\n        }\n\n        this.chart.trigger(\"navigatorFilter\", args);\n    };\n\n    Navigator.prototype._zoom = function _zoom (e) {\n        var ref = this;\n        var axis = ref.chart._plotArea.categoryAxis;\n        var selection = ref.selection;\n        var ref_options = ref.options;\n        var select = ref_options.select;\n        var liveDrag = ref_options.liveDrag;\n        var mainAxis = this.mainAxis();\n        var delta = e.delta;\n\n        if (!selection) {\n            return;\n        }\n\n        var fromIx = mainAxis.categoryIndex(selection.options.from);\n        var toIx = mainAxis.categoryIndex(selection.options.to);\n        var coords = this.chart._eventCoordinates(e.originalEvent);\n\n        e.originalEvent.preventDefault();\n\n        if (Math.abs(delta) > 1) {\n            delta *= ZOOM_ACCELERATION;\n        }\n\n        if (toIx - fromIx > 1) {\n            selection.zoom(delta, coords);\n            this.readSelection();\n        } else {\n            axis.options.min = select.from;\n            select.from = axis.scaleRange(-e.delta * this.chart._mousewheelZoomRate(), coords).min;\n        }\n\n        if (liveDrag) {\n            this.filterAxes();\n            this.redrawSlaves();\n        }\n\n        selection.set(select.from, select.to);\n\n        this.showHint(this.options.select.from, this.options.select.to);\n    };\n\n    Navigator.prototype._zoomEnd = function _zoomEnd (e) {\n        this._dragEnd(e);\n    };\n\n    Navigator.prototype.showHint = function showHint (from, to) {\n        var plotArea = this.chart._plotArea;\n\n        if (this.hint) {\n            this.hint.show(from, to, plotArea.backgroundBox());\n        }\n    };\n\n    Navigator.prototype._selectStart = function _selectStart (e) {\n        return this.chart._selectStart(e);\n    };\n\n    Navigator.prototype._select = function _select (e) {\n        this.showHint(e.from, e.to);\n\n        return this.chart._select(e);\n    };\n\n    Navigator.prototype._selectEnd = function _selectEnd (e) {\n        if (this.hint) {\n            this.hint.hide();\n        }\n\n        this.readSelection();\n        this.filterAxes();\n        this.filter();\n        this.redrawSlaves();\n\n        return this.chart._selectEnd(e);\n    };\n\n    Navigator.prototype.mainAxis = function mainAxis () {\n        var plotArea = this.chart._plotArea;\n\n        if (plotArea) {\n            return plotArea.namedCategoryAxes[NAVIGATOR_AXIS];\n        }\n    };\n\n    Navigator.prototype.select = function select (from, to) {\n        var select = this.options.select;\n\n        if (from && to) {\n            select.from = this.parseDate(from);\n            select.to = this.parseDate(to);\n\n            this.filterAxes();\n            this.filter();\n            this.redrawSlaves();\n\n            this.selection.set(from, to);\n        }\n\n        return {\n            from: select.from,\n            to: select.to\n        };\n    };\n\n    Navigator.setup = function setup (options, themeOptions) {\n        if ( options === void 0 ) options = {};\n        if ( themeOptions === void 0 ) themeOptions = {};\n\n        if (options.__navi) {\n            return;\n        }\n        options.__navi = true;\n\n        var naviOptions = deepExtend({}, themeOptions.navigator, options.navigator);\n        var panes = options.panes = [].concat(options.panes);\n        var paneOptions = deepExtend({}, naviOptions.pane, { name: NAVIGATOR_PANE });\n\n        if (!naviOptions.visible) {\n            paneOptions.visible = false;\n            paneOptions.height = 0.1;\n        }\n\n        if (options.navigator.position !== 'top') {\n            panes.push(paneOptions);\n        } else {\n            panes.unshift(paneOptions);\n        }\n\n        panes.forEach(function (pane) { return pane.name = pane.name || DEFAULT_PANE; });\n\n        Navigator.attachAxes(options, naviOptions);\n        Navigator.attachSeries(options, naviOptions, themeOptions);\n    };\n\n    Navigator.attachAxes = function attachAxes (options, naviOptions) {\n        var series = naviOptions.series || [];\n        var categoryAxes = options.categoryAxis = [].concat(options.categoryAxis);\n        var valueAxes = options.valueAxis = [].concat(options.valueAxis);\n        var allAxes = categoryAxes.concat(valueAxes);\n        allAxes.forEach(function (axis) { return axis.pane = axis.pane || DEFAULT_PANE; });\n\n        var equallySpacedSeries = filterSeriesByType(series, EQUALLY_SPACED_SERIES);\n        var justifyAxis = equallySpacedSeries.length === 0;\n\n        var base = deepExtend({\n            type: \"date\",\n            pane: NAVIGATOR_PANE,\n            roundToBaseUnit: !justifyAxis,\n            justified: justifyAxis,\n            _collapse: false,\n            majorTicks: { visible: true },\n            tooltip: { visible: false },\n            labels: { step: 1 },\n            autoBind: naviOptions.autoBindElements,\n            autoBaseUnitSteps: {\n                minutes: [ 1 ],\n                hours: [ 1, 2 ],\n                days: [ 1, 2 ],\n                weeks: [],\n                months: [ 1 ],\n                years: [ 1 ]\n            }\n        });\n        var user = naviOptions.categoryAxis;\n\n        categoryAxes.push(\n            deepExtend({}, base, {\n                maxDateGroups: 200\n            }, user, {\n                name: NAVIGATOR_AXIS,\n                title: null,\n                baseUnit: \"fit\",\n                baseUnitStep: \"auto\",\n                labels: { visible: false },\n                majorTicks: { visible: false }\n            }), deepExtend({}, base, user, {\n                name: NAVIGATOR_AXIS + \"_labels\",\n                maxDateGroups: 20,\n                baseUnitStep: \"auto\",\n                labels: { position: \"\" },\n                plotBands: [],\n                autoBaseUnitSteps: {\n                    minutes: []\n                },\n                _overlap: true\n            }), deepExtend({}, base, user, {\n                name: NAVIGATOR_AXIS + \"_ticks\",\n                maxDateGroups: 200,\n                majorTicks: {\n                    width: 0.5\n                },\n                plotBands: [],\n                title: null,\n                labels: { visible: false, mirror: true },\n                _overlap: true\n            })\n        );\n\n        valueAxes.push(deepExtend({\n            name: NAVIGATOR_AXIS,\n            pane: NAVIGATOR_PANE,\n            majorGridLines: {\n                visible: false\n            },\n            visible: false\n        }, naviOptions.valueAxis));\n    };\n\n    Navigator.attachSeries = function attachSeries (options, naviOptions, themeOptions) {\n        var series = options.series = options.series || [];\n        var navigatorSeries = [].concat(naviOptions.series || []);\n        var seriesColors = themeOptions.seriesColors;\n        var defaults = naviOptions.seriesDefaults;\n\n        for (var idx = 0; idx < navigatorSeries.length; idx++) {\n            series.push(\n                deepExtend({\n                    color: seriesColors[idx % seriesColors.length],\n                    categoryField: naviOptions.dateField,\n                    visibleInLegend: false,\n                    tooltip: {\n                        visible: false\n                    }\n                }, defaults, navigatorSeries[idx], {\n                    axis: NAVIGATOR_AXIS,\n                    categoryAxis: NAVIGATOR_AXIS,\n                    autoBind: naviOptions.autoBindElements\n                })\n            );\n        }\n    };\n\n    return Navigator;\n}(Class));\n\nfunction ClonedObject() { }\nfunction clone(obj) {\n    ClonedObject.prototype = obj;\n    return new ClonedObject();\n}\n\nexport default Navigator;\n","import { Chart } from '../chart';\n\nimport Navigator from './navigator';\nimport { DEFAULT_WIDTH } from '../common/constants';\nimport { addClass, deepExtend, elementSize, grep, setDefaultOptions } from '../common';\nimport { NAVIGATOR_AXIS, NAVIGATOR_PANE } from './constants';\n\nvar AUTO_CATEGORY_WIDTH = 28;\n\nvar StockChart = (function (Chart) {\n    function StockChart () {\n        Chart.apply(this, arguments);\n    }\n\n    if ( Chart ) StockChart.__proto__ = Chart;\n    StockChart.prototype = Object.create( Chart && Chart.prototype );\n    StockChart.prototype.constructor = StockChart;\n\n    StockChart.prototype.applyDefaults = function applyDefaults (options, themeOptions) {\n        var width = elementSize(this.element).width || DEFAULT_WIDTH;\n        var theme = themeOptions;\n\n        var stockDefaults = {\n            seriesDefaults: {\n                categoryField: options.dateField\n            },\n            axisDefaults: {\n                categoryAxis: {\n                    name: \"default\",\n                    majorGridLines: {\n                        visible: false\n                    },\n                    labels: {\n                        step: 2\n                    },\n                    majorTicks: {\n                        visible: false\n                    },\n                    maxDateGroups: Math.floor(width / AUTO_CATEGORY_WIDTH)\n                }\n            }\n        };\n\n        if (theme) {\n            theme = deepExtend({}, theme, stockDefaults);\n        }\n\n        Navigator.setup(options, theme);\n\n        Chart.prototype.applyDefaults.call(this, options, theme);\n    };\n\n    StockChart.prototype._setElementClass = function _setElementClass (element) {\n        addClass(element, 'k-chart k-stockchart');\n    };\n\n    StockChart.prototype.setOptions = function setOptions (options) {\n        this.destroyNavigator();\n        Chart.prototype.setOptions.call(this, options);\n    };\n\n    StockChart.prototype.noTransitionsRedraw = function noTransitionsRedraw () {\n        var transitions = this.options.transitions;\n\n        this.options.transitions = false;\n        this._fullRedraw();\n        this.options.transitions = transitions;\n    };\n\n    StockChart.prototype._resize = function _resize () {\n        this.noTransitionsRedraw();\n    };\n\n    StockChart.prototype._redraw = function _redraw () {\n        var navigator = this.navigator;\n\n        if (!this._dirty() && navigator && navigator.options.partialRedraw) {\n            navigator.redrawSlaves();\n        } else {\n            this._fullRedraw();\n        }\n    };\n\n    StockChart.prototype._dirty = function _dirty () {\n        var options = this.options;\n        var series = [].concat(options.series, options.navigator.series);\n        var seriesCount = grep(series, function(s) { return s && s.visible; }).length;\n        var dirty = this._seriesCount !== seriesCount;\n        this._seriesCount = seriesCount;\n\n        return dirty;\n    };\n\n    StockChart.prototype._fullRedraw = function _fullRedraw () {\n        var navigator = this.navigator;\n\n        if (!navigator) {\n            navigator = this.navigator = new Navigator(this);\n            this.trigger(\"navigatorCreated\", { navigator: navigator });\n        }\n\n        navigator.clean();\n        navigator.setRange();\n\n        Chart.prototype._redraw.call(this);\n\n        navigator.initSelection();\n    };\n\n    StockChart.prototype._trackSharedTooltip = function _trackSharedTooltip (coords) {\n        var plotArea = this._plotArea;\n        var pane = plotArea.paneByPoint(coords);\n\n        if (pane && pane.options.name === NAVIGATOR_PANE) {\n            this._unsetActivePoint();\n        } else {\n            Chart.prototype._trackSharedTooltip.call(this, coords);\n        }\n    };\n\n    StockChart.prototype.bindCategories = function bindCategories () {\n        Chart.prototype.bindCategories.call(this);\n        this.copyNavigatorCategories();\n    };\n\n    StockChart.prototype.copyNavigatorCategories = function copyNavigatorCategories () {\n        var definitions = [].concat(this.options.categoryAxis);\n        var categories;\n\n        for (var axisIx = 0; axisIx < definitions.length; axisIx++) {\n            var axis = definitions[axisIx];\n            if (axis.name === NAVIGATOR_AXIS) {\n                categories = axis.categories;\n            } else if (categories && axis.pane === NAVIGATOR_PANE) {\n                axis.categories = categories;\n            }\n        }\n    };\n\n    StockChart.prototype.destroyNavigator = function destroyNavigator () {\n        if (this.navigator) {\n            this.navigator.destroy();\n            this.navigator = null;\n        }\n    };\n\n    StockChart.prototype.destroy = function destroy () {\n        this.destroyNavigator();\n        Chart.prototype.destroy.call(this);\n    };\n\n    StockChart.prototype._stopChartHandlers = function _stopChartHandlers (e) {\n        var coords = this._eventCoordinates(e);\n        var pane = this._plotArea.paneByPoint(coords);\n\n        return Chart.prototype._stopChartHandlers.call(this, e) || (pane && pane.options.name === NAVIGATOR_PANE);\n    };\n\n    StockChart.prototype._toggleDragZoomEvents = function _toggleDragZoomEvents () {\n        if (!this._dragZoomEnabled) {\n            this.element.style.touchAction = \"none\";\n\n            this._dragZoomEnabled = true;\n        }\n    };\n\n    return StockChart;\n}(Chart));\n\nsetDefaultOptions(StockChart, {\n    dateField: \"date\",\n    axisDefaults: {\n        categoryAxis: {\n            type: \"date\",\n            baseUnit: \"fit\",\n            justified: true\n        },\n        valueAxis: {\n            narrowRange: true,\n            labels: {\n                format: \"C\"\n            }\n        }\n    },\n    navigator: {\n        select: {},\n        seriesDefaults: {\n            markers: {\n                visible: false\n            },\n            tooltip: {\n                visible: false\n            },\n            highlight: {\n                visible: false\n            },\n            line: {\n                width: 2\n            }\n        },\n        hint: {},\n        visible: true\n    },\n    tooltip: {\n        visible: true\n    },\n    legend: {\n        visible: false\n    }\n});\n\nexport default StockChart;\n","var ANGULAR_SPEED = 150;\nvar LINEAR_SPEED = 250;\nvar ARROW = \"arrow\";\nvar ARROW_POINTER = \"arrowPointer\";\nvar BAR_POINTER = \"barPointer\";\nvar DEFAULT_HEIGHT = 200;\nvar DEFAULT_LINE_WIDTH = 0.5;\nvar DEFAULT_WIDTH = 200;\nvar DEGREE = Math.PI / 180;\nvar INSIDE = \"inside\";\nvar LINEAR = \"linear\";\nvar OUTSIDE = \"outside\";\nvar RADIAL_POINTER = \"radialPointer\";\nvar RADIAL_RANGE_POINTER = \"radialRangePointer\";\n\nexport {\n    ANGULAR_SPEED, LINEAR_SPEED, ARROW, ARROW_POINTER, BAR_POINTER,\n    DEFAULT_HEIGHT, DEFAULT_LINE_WIDTH, DEFAULT_WIDTH,\n    DEGREE, INSIDE, LINEAR, OUTSIDE, RADIAL_POINTER, RADIAL_RANGE_POINTER\n};","import { getSpacing } from '../../common';\n\nexport default function pad(bbox, value) {\n    var origin = bbox.getOrigin();\n    var size = bbox.getSize();\n    var spacing = getSpacing(value);\n\n    bbox.setOrigin([ origin.x - spacing.left, origin.y - spacing.top ]);\n    bbox.setSize([ size.width + (spacing.left + spacing.right), size.height + (spacing.top + spacing.bottom) ]);\n\n    return bbox;\n}","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport pad from './pad';\n\nvar Group = drawing.Group;\nvar Path = drawing.Path;\nvar Text = drawing.Text;\n\nexport default function buildLabelElement(label, options) {\n    var labelBox = label.box;\n    var textBox = label.children[0].box;\n    var border = options.border || {};\n    var background = options.background || \"\";\n\n    var wrapper = Path.fromRect(new geo.Rect([ labelBox.x1, labelBox.y1 ], [ labelBox.width(), labelBox.height() ]), {\n        stroke: {}\n    });\n\n    var text = new Text(label.text, new geo.Point(textBox.x1, textBox.y1), {\n        font: options.font,\n        fill: { color: options.color }\n    });\n\n    var styleGeometry = pad(text.bbox().clone(), options.padding);\n\n    var styleBox = Path.fromRect(styleGeometry, {\n        stroke: {\n            color: border.width ? border.color : \"\",\n            width: border.width,\n            opacity: border.opacity,\n            dashType: border.dashType,\n            lineJoin: \"round\",\n            lineCap: \"round\"\n        },\n        fill: {\n            color: background\n        }\n    });\n\n    var elements = new Group();\n    elements.append(wrapper);\n    elements.append(styleBox);\n    elements.append(text);\n\n    return elements;\n}","import { defined } from '../../common';\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\n\nexport default function getRange(range, min, max) {\n    var from = defined(range.from) ? range.from : MIN_VALUE;\n    var to = defined(range.to) ? range.to : MAX_VALUE;\n\n    range.from = Math.max(Math.min(to, from), min);\n    range.to = Math.min(Math.max(to, from), max);\n\n    return range;\n}","import { getSpacing } from '../../common';\nimport pad from './pad';\n\nexport default function unpad(bbox, value) {\n    var spacing = getSpacing(value);\n\n    spacing.left = -spacing.left; spacing.top = -spacing.top;\n    spacing.right = -spacing.right; spacing.bottom = -spacing.bottom;\n\n    return pad(bbox, spacing);\n}","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { Class, elementSize, setDefaultOptions, deepExtend, isArray, isNumber } from '../common';\nimport { DEFAULT_WIDTH, DEFAULT_HEIGHT } from './constants';\nimport { ChartService } from '../services';\nimport { unpad } from './utils';\n\nvar DEFAULT_MARGIN = 5;\nvar Path = drawing.Path;\nvar Surface = drawing.Surface;\n\nvar Gauge = (function (Class) {\n    function Gauge(element, userOptions, theme, context) {\n        if ( context === void 0 ) context = {};\n\n        Class.call(this);\n\n        this.element = element;\n        this.theme = theme;\n        this.contextService = new ChartService(this, context);\n        this._originalOptions = deepExtend({}, this.options, userOptions);\n        this.options = deepExtend({}, this._originalOptions);\n        this._initTheme(theme);\n\n        this.redraw();\n    }\n\n    if ( Class ) Gauge.__proto__ = Class;\n    Gauge.prototype = Object.create( Class && Class.prototype );\n    Gauge.prototype.constructor = Gauge;\n\n    Gauge.prototype.destroy = function destroy () {\n        if (this.surface) {\n            this.surface.destroy();\n            this.surface = null;\n        }\n\n        delete this.element;\n        delete this.surfaceElement;\n    };\n\n    Gauge.prototype.value = function value (pointerValue) {\n        var pointer = this.pointers[0];\n\n        if (arguments.length === 0) {\n            return pointer.value();\n        }\n\n        pointer.value(pointerValue);\n        this._setValueOptions(pointerValue);\n    };\n\n    Gauge.prototype._draw = function _draw () {\n        var surface = this.surface;\n\n        surface.clear();\n        surface.draw(this._visuals);\n    };\n\n    Gauge.prototype.exportVisual = function exportVisual () {\n        return this._visuals;\n    };\n\n    Gauge.prototype.allValues = function allValues (values) {\n        var pointers = this.pointers;\n        var allValues = [];\n\n        if (arguments.length === 0) {\n            for (var i = 0; i < pointers.length; i++) {\n                allValues.push(pointers[i].value());\n            }\n\n            return allValues;\n        }\n\n        if (isArray(values)) {\n            for (var i$1 = 0; i$1 < values.length; i$1++) {\n                if (isNumber(values[i$1])) {\n                    pointers[i$1].value(values[i$1]);\n                }\n            }\n        }\n\n        this._setValueOptions(values);\n    };\n\n    Gauge.prototype._setValueOptions = function _setValueOptions (values) {\n        var pointers = [].concat(this.options.pointer);\n        var arrayValues = [].concat(values);\n\n        for (var i = 0; i < arrayValues.length; i++) {\n            pointers[i].value = arrayValues[i];\n        }\n    };\n\n    Gauge.prototype.resize = function resize () {\n        this.noTransitionsRedraw();\n    };\n\n    Gauge.prototype.noTransitionsRedraw = function noTransitionsRedraw () {\n        var transitions = this.options.transitions;\n\n        this._toggleTransitions(false);\n\n        this.redraw();\n\n        this._toggleTransitions(transitions);\n    };\n\n    Gauge.prototype.redraw = function redraw () {\n        var size = this._surfaceSize();\n        var wrapper = new geo.Rect([ 0, 0 ], [ size.width, size.height ]);\n\n        this._initSurface();\n\n        this.gaugeArea = this._createGaugeArea();\n\n        this._createModel();\n\n        var bbox = unpad(wrapper.bbox(), this._gaugeAreaMargin);\n        this.reflow(bbox);\n    };\n\n    Gauge.prototype.setOptions = function setOptions (options, theme) {\n        this._originalOptions = deepExtend(this._originalOptions, options);\n        this.options = deepExtend({}, this._originalOptions);\n\n        this._initTheme(theme);\n\n        this.redraw();\n    };\n\n    Gauge.prototype.setDirection = function setDirection (rtl) {\n        this.contextService.rtl = Boolean(rtl);\n        if (this.surface && this.surface.type === 'svg') {\n            this.surface.destroy();\n            this.surface = null;\n        }\n    };\n\n    Gauge.prototype.setIntlService = function setIntlService (intl) {\n        this.contextService.intl = intl;\n    };\n\n    Gauge.prototype._initTheme = function _initTheme (theme) {\n        var currentTheme = theme || this.theme || {};\n        this.theme = currentTheme;\n\n        this.options = deepExtend({}, currentTheme, this.options);\n        var options = this.options;\n        var pointer = options.pointer;\n\n        if (isArray(pointer)) {\n            var pointers = [];\n            for (var i = 0; i < pointer.length; i++) {\n                pointers.push(deepExtend({}, currentTheme.pointer, pointer[i]));\n            }\n            options.pointer = pointers;\n        }\n    };\n\n    Gauge.prototype._createGaugeArea = function _createGaugeArea () {\n        var options = this.options.gaugeArea;\n        var size = this.surface.size();\n        var border = options.border || {};\n        var areaGeometry = new geo.Rect([ 0, 0 ], [ size.width, size.height ]);\n\n        this._gaugeAreaMargin = options.margin || DEFAULT_MARGIN;\n\n        if (border.width > 0) {\n            areaGeometry = unpad(areaGeometry, border.width);\n        }\n\n        var gaugeArea = Path.fromRect(areaGeometry, {\n            stroke: {\n                color: border.width ? border.color : \"\",\n                width: border.width,\n                dashType: border.dashType,\n                lineJoin: \"round\",\n                lineCap: \"round\"\n            },\n            fill: {\n                color: options.background\n            }\n        });\n\n        return gaugeArea;\n    };\n\n    Gauge.prototype._initSurface = function _initSurface () {\n        var ref = this;\n        var options = ref.options;\n        var surface = ref.surface;\n        var element = this._surfaceElement();\n        var size = this._surfaceSize();\n\n        elementSize(element, size);\n\n        if (!surface || surface.options.type !== options.renderAs) {\n            if (surface) {\n                surface.destroy();\n            }\n\n            this.surface = Surface.create(element, {\n                type: options.renderAs\n            });\n        } else {\n            this.surface.clear();\n            this.surface.resize();\n        }\n    };\n\n    Gauge.prototype._surfaceSize = function _surfaceSize () {\n        var options = this.options;\n        var size = this._getSize();\n\n        if (options.gaugeArea) {\n            deepExtend(size, options.gaugeArea);\n        }\n\n        return size;\n    };\n\n    Gauge.prototype._surfaceElement = function _surfaceElement () {\n        if (!this.surfaceElement) {\n            this.surfaceElement = document.createElement('div');\n            this.element.appendChild(this.surfaceElement);\n        }\n\n        return this.surfaceElement;\n    };\n\n    Gauge.prototype.getSize = function getSize () {\n        return this._getSize();\n    };\n\n    Gauge.prototype._getSize = function _getSize () {\n        var element = this.element;\n        var defaultSize = this._defaultSize();\n        var width = element.offsetWidth;\n        var height = element.offsetHeight;\n\n        if (!width) {\n            width = defaultSize.width;\n        }\n\n        if (!height) {\n            height = defaultSize.height;\n        }\n\n        return { width: width, height: height };\n    };\n\n    Gauge.prototype._defaultSize = function _defaultSize () {\n        return {\n            width: DEFAULT_WIDTH,\n            height: DEFAULT_HEIGHT\n        };\n    };\n\n    Gauge.prototype._toggleTransitions = function _toggleTransitions (value) {\n        var this$1 = this;\n\n        this.options.transitions = value;\n        for (var i = 0; i < this.pointers.length; i++) {\n            this$1.pointers[i].options.animation.transitions = value;\n        }\n    };\n\n    return Gauge;\n}(Class));\n\nsetDefaultOptions(Gauge, {\n    plotArea: {},\n    theme: \"default\",\n    renderAs: \"\",\n    pointer: {},\n    scale: {},\n    gaugeArea: {}\n});\n\nexport default Gauge;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { setDefaultOptions, deepExtend, defined } from '../../common';\nimport { BLACK } from '../../common/constants';\nimport { NumericAxis } from '../../core';\nimport { DEFAULT_LINE_WIDTH, INSIDE } from '../constants';\nimport { autoMajorUnit } from '../../core';\nimport { buildLabelElement, getRange } from '../utils';\n\nvar Path = drawing.Path;\nvar Group = drawing.Group;\nvar Point = geo.Point;\n\nfunction renderAxisTick(tickRenderOptions, tickOptions) {\n    var position = tickRenderOptions.position;\n    var tickX = tickRenderOptions.tickX;\n    var tickY = tickRenderOptions.tickY;\n    var start, end;\n\n    if (tickRenderOptions.vertical) {\n        start = new Point(tickX, position);\n        end = new Point(tickX + tickOptions.size, position);\n    } else {\n        start = new Point(position, tickY);\n        end = new Point(position, tickY + tickOptions.size);\n    }\n\n    var tickPath = new Path({\n        stroke: {\n            color: tickOptions.color,\n            width: tickOptions.width\n        }\n    }).moveTo(start).lineTo(end);\n\n    return tickPath;\n}\n\nfunction renderTicks(tickGroup, tickPositions, tickRenderOptions, tickOptions) {\n    var count = tickPositions.length;\n\n    if (tickOptions.visible) {\n        var mirror = tickRenderOptions.mirror;\n        var lineBox = tickRenderOptions.lineBox;\n        for (var i = tickOptions.skip; i < count; i += tickOptions.step) {\n            if (i % tickOptions.skipUnit === 0) {\n                continue;\n            }\n\n            tickRenderOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n            tickRenderOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n            tickRenderOptions.position = tickPositions[i];\n\n            tickGroup.append(renderAxisTick(tickRenderOptions, tickOptions));\n        }\n    }\n}\n\nvar LinearScale = (function (NumericAxis) {\n    function LinearScale(options, service) {\n        var scaleOptions = options || {};\n        if (!defined(scaleOptions.reverse) && scaleOptions.vertical === false && (service || {}).rtl) {\n            scaleOptions = Object.assign({}, scaleOptions, {\n                reverse: true\n            });\n        }\n\n        NumericAxis.call(this, 0, 1, scaleOptions, service);\n\n        this.options.minorUnit = this.options.minorUnit || this.options.majorUnit / 10;\n    }\n\n    if ( NumericAxis ) LinearScale.__proto__ = NumericAxis;\n    LinearScale.prototype = Object.create( NumericAxis && NumericAxis.prototype );\n    LinearScale.prototype.constructor = LinearScale;\n\n    LinearScale.prototype.initUserOptions = function initUserOptions (options) {\n        var scaleOptions = deepExtend({}, this.options, options);\n        scaleOptions = deepExtend({}, scaleOptions , { labels: { mirror: scaleOptions.mirror } });\n        scaleOptions.majorUnit = scaleOptions.majorUnit || autoMajorUnit(scaleOptions.min, scaleOptions.max);\n\n        return scaleOptions;\n    };\n\n    LinearScale.prototype.initFields = function initFields () {\n    };\n\n    LinearScale.prototype.render = function render () {\n        var elements = this.elements = new Group();\n        var labels = this.renderLabels();\n        var scaleLine = this.renderLine();\n        var scaleTicks = this.renderTicks();\n        var ranges = this.renderRanges();\n\n        elements.append(scaleLine, labels, scaleTicks, ranges);\n\n        return elements;\n    };\n\n    LinearScale.prototype.renderRanges = function renderRanges () {\n        var this$1 = this;\n\n        var options = this.options;\n        var min = options.min;\n        var max = options.max;\n        var vertical = options.vertical;\n        var mirror = options.labels.mirror;\n        var ranges = options.ranges || [];\n        var elements = new Group();\n        var count = ranges.length;\n        var rangeSize = options.rangeSize || options.minorTicks.size / 2;\n\n        for (var i = 0; i < count; i++) {\n            var range = getRange(ranges[i], min, max);\n            var slot = this$1.getSlot(range.from, range.to);\n            var slotX = vertical ? this$1.lineBox() : slot;\n            var slotY = vertical ? slot : this$1.lineBox();\n            if (vertical) {\n                slotX.x1 -= rangeSize * (mirror ? -1 : 1);\n            } else {\n                slotY.y2 += rangeSize * (mirror ? -1 : 1);\n            }\n\n            elements.append(Path.fromRect(new geo.Rect([ slotX.x1, slotY.y1 ], [ slotX.x2 - slotX.x1, slotY.y2 - slotY.y1 ]), {\n                fill: { color: range.color, opacity: range.opacity },\n                stroke: { }\n            }));\n        }\n\n        return elements;\n    };\n\n    LinearScale.prototype.renderLabels = function renderLabels () {\n        var ref = this;\n        var labels = ref.labels;\n        var options = ref.options;\n        var elements = new Group();\n\n        for (var i = 0; i < labels.length; i++) {\n            elements.append(buildLabelElement(labels[i], options.labels));\n        }\n\n        return elements;\n    };\n\n    LinearScale.prototype.renderLine = function renderLine () {\n        var line = this.options.line;\n        var lineBox = this.lineBox();\n        var elements = new Group();\n\n        if (line.width > 0 && line.visible) {\n            var linePath = new Path({\n                stroke: {\n                    color: line.color,\n                    dashType: line.dashType,\n                    width: line.width\n                }\n            });\n\n            linePath.moveTo(lineBox.x1, lineBox.y1).lineTo(lineBox.x2, lineBox.y2);\n            elements.append(linePath);\n        }\n\n        return elements;\n    };\n\n    LinearScale.prototype.renderTicks = function renderTicks$1 () {\n        var ticks = new Group();\n        var options = this.options;\n        var majorUnit = options.majorTicks.visible ? options.majorUnit : 0;\n        var tickRenderOptions = {\n            vertical: options.vertical,\n            mirror: options.labels.mirror,\n            lineBox: this.lineBox()\n        };\n\n        renderTicks(ticks, this.getMajorTickPositions(), tickRenderOptions, options.majorTicks);\n        renderTicks(ticks, this.getMinorTickPositions(), tickRenderOptions, deepExtend({}, {\n            skipUnit: majorUnit / options.minorUnit\n        }, options.minorTicks));\n\n        return ticks;\n    };\n\n    return LinearScale;\n}(NumericAxis));\n\nsetDefaultOptions(LinearScale, {\n    min: 0,\n    max: 50,\n\n    majorTicks: {\n        size: 15,\n        align: INSIDE,\n        color: BLACK,\n        width: DEFAULT_LINE_WIDTH,\n        visible: true\n    },\n\n    minorTicks: {\n        size: 10,\n        align: INSIDE,\n        color: BLACK,\n        width: DEFAULT_LINE_WIDTH,\n        visible: true\n    },\n\n    line: {\n        width: DEFAULT_LINE_WIDTH\n    },\n\n    labels: {\n        position: INSIDE,\n        padding: 2\n    },\n    mirror: false,\n    _alignLines: false\n});\n\nexport default LinearScale;","import { Class, setDefaultOptions, defined, deepExtend, limitValue } from '../common';\nimport { BLACK } from '../common/constants';\n\nvar Pointer = (function (Class) {\n    function Pointer(scale, userOptions) {\n        Class.call(this);\n\n        var ref = scale.options;\n        var min = ref.min;\n        var max = ref.max;\n        var options = this.options = deepExtend({}, this.options, userOptions);\n\n        options.fill = options.color;\n\n        this.scale = scale;\n\n        if (defined(options.value)) {\n            options.value = limitValue(options.value, min, max);\n        } else {\n            options.value = min;\n        }\n    }\n\n    if ( Class ) Pointer.__proto__ = Class;\n    Pointer.prototype = Object.create( Class && Class.prototype );\n    Pointer.prototype.constructor = Pointer;\n\n    Pointer.prototype.value = function value (newValue) {\n        var options = this.options;\n        var value = options.value;\n\n        if (arguments.length === 0) {\n            return value;\n        }\n\n        var ref = this.scale.options;\n        var min = ref.min;\n        var max = ref.max;\n\n        options._oldValue = defined(options._oldValue) ? options.value : min;\n        options.value = limitValue(newValue, min, max);\n\n        if (this.elements) {\n            this.repaint();\n        }\n    };\n\n    return Pointer;\n}(Class));\n\nsetDefaultOptions(Pointer, {\n    color: BLACK\n});\n\nexport default Pointer;","import { setDefaultOptions, deepExtend, defined, getSpacing } from '../../common';\nimport { Box } from '../../core';\nimport { BLACK } from '../../common/constants';\nimport { BAR_POINTER } from '../constants';\nimport Pointer from '../pointer';\n\nvar LinearPointer = (function (Pointer) {\n    function LinearPointer(scale, options) {\n        Pointer.call(this, scale, options);\n\n        this.options = deepExtend({\n            track: {\n                visible: defined(options.track)\n            }\n        }, this.options);\n    }\n\n    if ( Pointer ) LinearPointer.__proto__ = Pointer;\n    LinearPointer.prototype = Object.create( Pointer && Pointer.prototype );\n    LinearPointer.prototype.constructor = LinearPointer;\n\n    LinearPointer.prototype.reflow = function reflow () {\n        var ref = this;\n        var options = ref.options;\n        var scale = ref.scale;\n        var ref$1 = scale.options;\n        var mirror = ref$1.mirror;\n        var vertical = ref$1.vertical;\n        var scaleLine = scale.lineBox();\n        var trackSize = options.track.size || options.size;\n        var pointerHalfSize = options.size / 2;\n        var margin = getSpacing(options.margin);\n        var space = vertical ?\n                 margin[mirror ? \"left\" : \"right\"] :\n                 margin[mirror ? \"bottom\" : \"top\"];\n        var pointerBox, pointerRangeBox, trackBox;\n\n        space = mirror ? -space : space;\n\n        if (vertical) {\n            trackBox = new Box(\n                scaleLine.x1 + space, scaleLine.y1,\n                scaleLine.x1 + space, scaleLine.y2);\n\n            if (mirror) {\n                trackBox.x1 -= trackSize;\n            } else {\n                trackBox.x2 += trackSize;\n            }\n\n            if (options.shape !== BAR_POINTER) {\n                pointerRangeBox = new Box(\n                    scaleLine.x2 + space, scaleLine.y1 - pointerHalfSize,\n                    scaleLine.x2 + space, scaleLine.y2 + pointerHalfSize\n                );\n                pointerBox = pointerRangeBox;\n            }\n        } else {\n            trackBox = new Box(\n                scaleLine.x1, scaleLine.y1 - space,\n                scaleLine.x2, scaleLine.y1 - space);\n\n            if (mirror) {\n                trackBox.y2 += trackSize;\n            } else {\n                trackBox.y1 -= trackSize;\n            }\n\n            if (options.shape !== BAR_POINTER) {\n                pointerRangeBox = new Box(\n                    scaleLine.x1 - pointerHalfSize, scaleLine.y1 - space,\n                    scaleLine.x2 + pointerHalfSize, scaleLine.y1 - space\n                );\n                pointerBox = pointerRangeBox;\n            }\n        }\n\n        this.trackBox = trackBox;\n        this.pointerRangeBox = pointerRangeBox;\n        this.box = pointerBox || trackBox.clone().pad(options.border.width);\n    };\n\n    LinearPointer.prototype.getElementOptions = function getElementOptions () {\n        var options = this.options;\n\n        return {\n            fill: {\n                color: options.color,\n                opacity: options.opacity\n            },\n            stroke: defined(options.border) ? {\n                color: options.border.width ? options.border.color || options.color : \"\",\n                width: options.border.width,\n                dashType: options.border.dashType,\n                opacity: options.opacity\n            } : null\n        };\n    };\n\n    LinearPointer.prototype._margin = function _margin () {\n        var ref = this;\n        var scale = ref.scale;\n        var options = ref.options;\n        var ref$1 = scale.options;\n        var mirror = ref$1.mirror;\n        var vertical = ref$1.vertical;\n        var margin = getSpacing(options.margin);\n\n        var space = vertical ?\n            margin[mirror ? \"left\" : \"right\"] :\n            margin[mirror ? \"bottom\" : \"top\"];\n\n        return space;\n    };\n\n    return LinearPointer;\n}(Pointer));\n\nsetDefaultOptions(LinearPointer, {\n    shape: BAR_POINTER,\n\n    track: {\n        border: {\n            width: 1\n        }\n    },\n\n    color: BLACK,\n    border: {\n        width: 1\n    },\n    opacity: 1,\n\n    margin: getSpacing(3),\n    animation: {\n        type: BAR_POINTER\n    },\n    visible: true\n});\n\nexport default LinearPointer;","import { geometry, drawing } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions } from '../../common';\nimport { ARROW_POINTER, LINEAR_SPEED, LINEAR } from '../constants';\n\nvar ArrowLinearPointerAnimation = (function (superclass) {\n    function ArrowLinearPointerAnimation () {\n        superclass.apply(this, arguments);\n    }\n\n    if ( superclass ) ArrowLinearPointerAnimation.__proto__ = superclass;\n    ArrowLinearPointerAnimation.prototype = Object.create( superclass && superclass.prototype );\n    ArrowLinearPointerAnimation.prototype.constructor = ArrowLinearPointerAnimation;\n\n    ArrowLinearPointerAnimation.prototype.setup = function setup () {\n        var options = this.options;\n        var margin = options.margin;\n        var from = options.from;\n        var to = options.to;\n        var vertical = options.vertical;\n        var axis = vertical ? \"x1\" : \"y1\";\n\n        if (options.mirror === vertical) {\n            from[axis] -= margin; to[axis] -= margin;\n        } else {\n            from[axis] += margin; to[axis] += margin;\n        }\n\n        var fromScale = this.fromScale = new geometry.Point(from.x1, from.y1);\n        var toScale = this.toScale = new geometry.Point(to.x1, to.y1);\n\n        if (options.duration !== 0) {\n            options.duration = Math.max((fromScale.distanceTo(toScale) / options.duration) * 1000, 1);\n        }\n    };\n\n    ArrowLinearPointerAnimation.prototype.step = function step (pos) {\n        var translateX = interpolateValue(this.fromScale.x, this.toScale.x, pos);\n        var translateY = interpolateValue(this.fromScale.y, this.toScale.y, pos);\n\n        this.element.transform(geometry.transform().translate(translateX, translateY));\n    };\n\n    return ArrowLinearPointerAnimation;\n}(drawing.Animation));\n\nsetDefaultOptions(ArrowLinearPointerAnimation, {\n    easing: LINEAR,\n    duration: LINEAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(ARROW_POINTER, ArrowLinearPointerAnimation);\n\nexport default ArrowLinearPointerAnimation;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { deepExtend, defined } from '../../common';\nimport { ARROW_POINTER } from '../constants';\nimport LinearPointer from './linear-pointer';\nimport ArrowLinearPointerAnimation from './arrow-linear-pointer-animation';\n\nvar Point = geo.Point;\nvar Path = drawing.Path;\n\nvar ArrowLinearPointer = (function (LinearPointer) {\n    function ArrowLinearPointer(scale, options) {\n        LinearPointer.call(this, scale, options);\n\n        if (!defined(this.options.size)) {\n            this.options.size = this.scale.options.majorTicks.size * 0.6;\n        }\n    }\n\n    if ( LinearPointer ) ArrowLinearPointer.__proto__ = LinearPointer;\n    ArrowLinearPointer.prototype = Object.create( LinearPointer && LinearPointer.prototype );\n    ArrowLinearPointer.prototype.constructor = ArrowLinearPointer;\n\n    ArrowLinearPointer.prototype.pointerShape = function pointerShape () {\n        var ref = this;\n        var scale = ref.scale;\n        var size = ref.options.size;\n        var halfSize = size / 2;\n        var sign = (scale.options.mirror ? -1 : 1);\n        var shape;\n\n        if (scale.options.vertical) {\n            shape = [\n                new Point(0, 0 - halfSize), new Point(0 - sign * size, 0), new Point(0, 0 + halfSize)\n            ];\n        } else {\n            shape = [\n                new Point(0 - halfSize, 0), new Point(0, 0 + sign * size), new Point(0 + halfSize, 0)\n            ];\n        }\n\n        return shape;\n    };\n\n    ArrowLinearPointer.prototype.repaint = function repaint () {\n        var ref = this;\n        var scale = ref.scale;\n        var options = ref.options;\n        var animation = new ArrowLinearPointerAnimation(this.elements, deepExtend(options.animation, {\n            vertical: scale.options.vertical,\n            mirror: scale.options.mirror,\n            margin: this._margin(options.margin),\n            from: scale.getSlot(options._oldValue),\n            to: scale.getSlot(options.value)\n        }));\n\n        if (options.animation.transitions === false) {\n            animation.options.duration = 0;\n        }\n\n        animation.setup();\n        animation.play();\n    };\n\n    ArrowLinearPointer.prototype.render = function render () {\n        var ref = this;\n        var scale = ref.scale;\n        var options = ref.options;\n        var elementOptions = this.getElementOptions();\n        var shape = this.pointerShape(options.value);\n\n        options.animation.type = ARROW_POINTER;\n\n        var elements = new Path({\n            stroke: elementOptions.stroke,\n            fill: elementOptions.fill\n        }).moveTo(shape[0]).lineTo(shape[1]).lineTo(shape[2]).close();\n\n        var slot = scale.getSlot(options.value);\n        elements.transform(geo.transform().translate(slot.x1, slot.y1));\n\n        this.elements = elements;\n\n        return elements;\n    };\n\n    return ArrowLinearPointer;\n}(LinearPointer));\n\nexport default ArrowLinearPointer;","import { drawing } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions } from '../../common';\nimport { X, Y } from '../../common/constants';\nimport { BAR_POINTER, LINEAR_SPEED, LINEAR } from '../constants';\n\nvar BarLinearPointerAnimation = (function (superclass) {\n    function BarLinearPointerAnimation () {\n        superclass.apply(this, arguments);\n    }\n\n    if ( superclass ) BarLinearPointerAnimation.__proto__ = superclass;\n    BarLinearPointerAnimation.prototype = Object.create( superclass && superclass.prototype );\n    BarLinearPointerAnimation.prototype.constructor = BarLinearPointerAnimation;\n\n    BarLinearPointerAnimation.prototype.setup = function setup () {\n        var options = this.options;\n        var axis = this.axis = options.vertical ? Y : X;\n        var to = this.to = options.newPoints[0][axis];\n        var from = this.from = options.oldPoints[0][axis];\n\n        if (options.duration !== 0) {\n            options.duration = Math.max((Math.abs(to - from) / options.speed) * 1000, 1);\n        }\n\n        this._set(from);\n    };\n\n    BarLinearPointerAnimation.prototype.step = function step (pos) {\n        var value = interpolateValue(this.from, this.to, pos);\n        this._set(value);\n    };\n\n    BarLinearPointerAnimation.prototype._set = function _set (value) {\n        var setter = \"set\" + this.axis.toUpperCase();\n        var points = this.options.newPoints;\n\n        points[0][setter](value);\n        points[1][setter](value);\n    };\n\n    return BarLinearPointerAnimation;\n}(drawing.Animation));\n\nsetDefaultOptions(BarLinearPointerAnimation, {\n    easing: LINEAR,\n    speed: LINEAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(BAR_POINTER, BarLinearPointerAnimation);\n\nexport default BarLinearPointerAnimation;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { deepExtend, defined } from '../../common';\nimport { X, Y } from '../../common/constants';\nimport LinearPointer from './linear-pointer';\nimport BarLinearPointerAnimation from './bar-linear-pointer-animation';\n\nvar Group = drawing.Group;\nvar Path = drawing.Path;\n\nvar BarLinearPointer = (function (LinearPointer) {\n    function BarLinearPointer(scale, options) {\n        LinearPointer.call(this, scale, options);\n\n        if (!defined(this.options.size)) {\n            this.options.size = this.scale.options.majorTicks.size * 0.3;\n        }\n    }\n\n    if ( LinearPointer ) BarLinearPointer.__proto__ = LinearPointer;\n    BarLinearPointer.prototype = Object.create( LinearPointer && LinearPointer.prototype );\n    BarLinearPointer.prototype.constructor = BarLinearPointer;\n\n    BarLinearPointer.prototype.pointerShape = function pointerShape (value) {\n        var ref = this;\n        var scale = ref.scale;\n        var options = ref.options;\n        var ref$1 = scale.options;\n        var mirror = ref$1.mirror;\n        var vertical = ref$1.vertical;\n        var dir = mirror === vertical ? -1 : 1;\n        var size = options.size * dir;\n        var minSlot = scale.getSlot(scale.options.min);\n        var slot = scale.getSlot(value);\n        var axis = vertical ? Y : X;\n        var sizeAxis = vertical ? X : Y;\n        var margin = this._margin() * dir;\n\n        var p1 = new geo.Point();\n        p1[axis] = minSlot[axis + \"1\"];\n        p1[sizeAxis] = minSlot[sizeAxis + \"1\"];\n\n        var p2 = new geo.Point();\n        p2[axis] = slot[axis + \"1\"];\n        p2[sizeAxis] = slot[sizeAxis + \"1\"];\n\n        if (vertical) {\n            p1.translate(margin, 0);\n            p2.translate(margin, 0);\n        } else {\n            p1.translate(0, margin);\n            p2.translate(0, margin);\n        }\n\n        var p3 = p2.clone();\n        var p4 = p1.clone();\n\n        if (vertical) {\n            p3.translate(size, 0);\n            p4.translate(size, 0);\n        } else {\n            p3.translate(0, size);\n            p4.translate(0, size);\n        }\n\n        return [ p1, p2, p3, p4 ];\n    };\n\n    BarLinearPointer.prototype.repaint = function repaint () {\n        var ref = this;\n        var scale = ref.scale;\n        var options = ref.options;\n        var shape = this.pointerShape(options.value);\n        var pointerPath = this.pointerPath;\n        var oldShape = this.pointerShape(options._oldValue);\n\n        pointerPath.moveTo(shape[0]).lineTo(shape[1]).lineTo(shape[2]).lineTo(shape[3]).close();\n\n        var animation = new BarLinearPointerAnimation(pointerPath, deepExtend(options.animation, {\n            reverse: scale.options.reverse,\n            vertical: scale.options.vertical,\n            oldPoints: [ oldShape[1], oldShape[2] ],\n            newPoints: [ shape[1], shape[2] ]\n        }));\n\n        if (options.animation.transitions === false) {\n            animation.options.duration = 0;\n        }\n\n        animation.setup();\n        animation.play();\n    };\n\n    BarLinearPointer.prototype.render = function render () {\n        var group = new Group();\n        var elementOptions = this.getElementOptions();\n\n        if (this.options.track.visible) {\n            group.append(this.renderTrack());\n        }\n\n        var pointer = this.pointerPath = new Path({\n            stroke: elementOptions.stroke,\n            fill: elementOptions.fill\n        });\n\n        group.append(pointer);\n\n        this.elements = group;\n\n        return group;\n    };\n\n    BarLinearPointer.prototype.renderTrack = function renderTrack () {\n        var trackOptions = this.options.track;\n        var border = trackOptions.border || {};\n        var trackBox = this.trackBox.clone().pad(border.width || 0);\n\n        return new Path.fromRect(trackBox.toRect(), {\n            fill: {\n                color: trackOptions.color,\n                opacity: trackOptions.opacity\n            },\n            stroke: {\n                color: border.width ? border.color || trackOptions.color : \"\",\n                width: border.width,\n                dashType: border.dashType\n            }\n        });\n    };\n\n    return BarLinearPointer;\n}(LinearPointer));\n\nexport default BarLinearPointer;","import { drawing } from '@progress/kendo-drawing';\nimport { Box } from '../../core';\nimport { setDefaultOptions, deepExtend, isArray } from '../../common';\nimport { ARROW, DEFAULT_WIDTH, DEFAULT_HEIGHT } from '../constants';\nimport Gauge from '../gauge';\nimport LinearScale from './linear-scale';\nimport ArrowLinearPointer from './arrow-linear-pointer';\nimport BarLinearPointer from './bar-linear-pointer';\n\nvar DEFAULT_MIN_WIDTH = 60;\nvar DEFAULT_MIN_HEIGHT = 60;\n\nvar Group = drawing.Group;\n\nvar LinearGauge = (function (Gauge) {\n    function LinearGauge () {\n        Gauge.apply(this, arguments);\n    }\n\n    if ( Gauge ) LinearGauge.__proto__ = Gauge;\n    LinearGauge.prototype = Object.create( Gauge && Gauge.prototype );\n    LinearGauge.prototype.constructor = LinearGauge;\n\n    LinearGauge.prototype.reflow = function reflow (bbox) {\n        var pointers = this.pointers;\n        var bboxX = bbox.origin.x;\n        var bboxY = bbox.origin.y;\n\n        var box = new Box(bboxX, bboxY, bboxX + bbox.width(), bboxY + bbox.height());\n\n        this.scale.reflow(box);\n        this._shrinkScaleWidth(box);\n\n        for (var i = 0; i < pointers.length; i++) {\n            pointers[i].reflow();\n        }\n\n        this.bbox = this._getBox(box);\n        this._alignElements();\n        this._shrinkElements();\n        this._buildVisual();\n        this._draw();\n    };\n\n    LinearGauge.prototype._buildVisual = function _buildVisual () {\n        var visuals = new Group();\n        var scaleElements = this.scale.render();\n        var pointers = this.pointers;\n\n        visuals.append(this.gaugeArea);\n        visuals.append(scaleElements);\n\n        for (var i = 0; i < pointers.length; i++) {\n            var current = pointers[i];\n            visuals.append(current.render());\n            current.value(current.options.value);\n        }\n\n        this._visuals = visuals;\n    };\n\n    LinearGauge.prototype._createModel = function _createModel () {\n        var this$1 = this;\n\n        var options = this.options;\n        var scale = this.scale = new LinearScale(options.scale, this.contextService);\n\n        this.pointers = [];\n\n        var pointers = options.pointer;\n        pointers = isArray(pointers) ? pointers : [ pointers ];\n\n        for (var i = 0; i < pointers.length; i++) {\n            var currentOptions = deepExtend({}, pointers[i], {\n                animation: {\n                    transitions: options.transitions\n                }\n            });\n            var pointerType = currentOptions.shape === ARROW ? ArrowLinearPointer : BarLinearPointer;\n\n            this$1.pointers.push(new pointerType(scale, currentOptions));\n        }\n    };\n\n    LinearGauge.prototype._defaultSize = function _defaultSize () {\n        var vertical = this.options.scale.vertical;\n\n        return {\n            width: vertical ? DEFAULT_MIN_WIDTH : DEFAULT_WIDTH,\n            height: vertical ? DEFAULT_HEIGHT : DEFAULT_MIN_HEIGHT\n        };\n    };\n\n    LinearGauge.prototype._getBox = function _getBox (box) {\n        var ref = this;\n        var scale = ref.scale;\n        var pointers = ref.pointers;\n        var boxCenter = box.center();\n        var plotAreaBox = pointers[0].box.clone().wrap(scale.box);\n\n        for (var i = 0; i < pointers.length; i++) {\n            plotAreaBox.wrap(pointers[i].box.clone());\n        }\n\n        var size;\n        if (scale.options.vertical) {\n            size = plotAreaBox.width() / 2;\n            plotAreaBox = new Box(\n                boxCenter.x - size, box.y1,\n                boxCenter.x + size, box.y2\n            );\n        } else {\n            size = plotAreaBox.height() / 2;\n            plotAreaBox = new Box(\n                box.x1, boxCenter.y - size,\n                box.x2, boxCenter.y + size\n            );\n        }\n\n        return plotAreaBox;\n    };\n\n    LinearGauge.prototype._alignElements = function _alignElements () {\n        var this$1 = this;\n\n        var ref = this;\n        var scale = ref.scale;\n        var pointers = ref.pointers;\n        var scaleBox = scale.box;\n        var box = pointers[0].box.clone().wrap(scale.box);\n        var plotAreaBox = this.bbox;\n\n        for (var i = 0; i < pointers.length; i++) {\n            box.wrap(pointers[i].box.clone());\n        }\n\n        var diff;\n        if (scale.options.vertical) {\n            diff = plotAreaBox.center().x - box.center().x;\n            scale.reflow(new Box(\n                scaleBox.x1 + diff, plotAreaBox.y1,\n                scaleBox.x2 + diff, plotAreaBox.y2\n            ));\n        } else {\n            diff = plotAreaBox.center().y - box.center().y;\n            scale.reflow(new Box(\n                scaleBox.x1, scaleBox.y1 + diff,\n                scaleBox.x2, scaleBox.y2 + diff\n            ));\n        }\n\n        for (var i$1 = 0; i$1 < pointers.length; i$1++) {\n            pointers[i$1].reflow(this$1.bbox);\n        }\n    };\n\n    LinearGauge.prototype._shrinkScaleWidth = function _shrinkScaleWidth (bbox) {\n        var ref = this;\n        var scale = ref.scale;\n        if (!scale.options.vertical) {\n            var overflow = scale.contentBox().width() - bbox.width();\n            if (overflow > 0) {\n                scale.box.shrink(overflow, 0);\n                scale.box.alignTo(bbox, 'center');\n                scale.reflow(scale.box);\n            }\n        }\n    };\n\n    LinearGauge.prototype._shrinkElements = function _shrinkElements () {\n        var this$1 = this;\n\n        var ref = this;\n        var scale = ref.scale;\n        var pointers = ref.pointers;\n        var scaleBox = scale.box.clone();\n        var pos = scale.options.vertical ? \"y\" : \"x\";\n        var pointerBox = pointers[0].box;\n\n        for (var i = 0; i < pointers.length; i++) {\n            pointerBox.wrap(pointers[i].box.clone());\n        }\n\n        scaleBox[pos + 1] += Math.max(scaleBox[pos + 1] - pointerBox[pos + 1], 0);\n        scaleBox[pos + 2] -= Math.max(pointerBox[pos + 2] - scaleBox[pos + 2], 0);\n\n        scale.reflow(scaleBox);\n\n        for (var i$1 = 0; i$1 < pointers.length; i$1++) {\n            pointers[i$1].reflow(this$1.bbox);\n        }\n    };\n\n    return LinearGauge;\n}(Gauge));\n\nsetDefaultOptions(LinearGauge, {\n    transitions: true,\n    gaugeArea: {\n        background: \"\"\n    },\n    scale: {\n        vertical: true\n    }\n});\n\nexport default LinearGauge;","import GeometryArc from '../geometry/arc';\nimport Element from './element';\nimport { Path } from './path';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport withGeometry from '../mixins/with-geometry';\nimport { defined } from '../util';\n\n\nvar DEFAULT_STROKE = \"#000\";\n\nvar Arc = (function (superclass) {\n    function Arc(geometry, options) {\n        if ( geometry === void 0 ) geometry = new GeometryArc();\n        if ( options === void 0 ) options = {};\n\n        superclass.call(this, options);\n\n        this.geometry(geometry);\n\n        if (!defined(this.options.stroke)) {\n            this.stroke(DEFAULT_STROKE);\n        }\n    }\n\n    if ( superclass ) Arc.__proto__ = superclass;\n    Arc.prototype = Object.create( superclass && superclass.prototype );\n    Arc.prototype.constructor = Arc;\n\n    var prototypeAccessors = { nodeType: { configurable: true } };\n\n    prototypeAccessors.nodeType.get = function () {\n        return \"Arc\";\n    };\n\n    Arc.prototype._bbox = function _bbox (matrix) {\n        return this._geometry.bbox(matrix);\n    };\n\n    Arc.prototype.rawBBox = function rawBBox () {\n        return this.geometry().bbox();\n    };\n\n    Arc.prototype.toPath = function toPath () {\n        var path = new Path();\n        var curvePoints = this.geometry().curvePoints();\n\n        if (curvePoints.length > 0) {\n            path.moveTo(curvePoints[0].x, curvePoints[0].y);\n\n            for (var i = 1; i < curvePoints.length; i += 3) {\n                path.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n            }\n        }\n\n        return path;\n    };\n\n    Arc.prototype._containsPoint = function _containsPoint (point) {\n        return this.geometry().containsPoint(point);\n    };\n\n    Arc.prototype._isOnPath = function _isOnPath (point) {\n        return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n    };\n\n    Object.defineProperties( Arc.prototype, prototypeAccessors );\n\n    return Arc;\n}(paintable(measurable(withGeometry(Element)))));\n\nexport default Arc;\n","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { setDefaultOptions, deepExtend, defined, round, getSpacing } from '../../common';\nimport { BLACK, COORD_PRECISION } from '../../common/constants';\nimport { autoMajorUnit, Box, NumericAxis } from '../../core';\nimport { buildLabelElement, getRange } from '../utils';\n\nimport { DEGREE, DEFAULT_LINE_WIDTH, INSIDE, OUTSIDE } from '../constants';\n\nvar GEO_ARC_ADJUST_ANGLE = 180;\n\nvar Arc = drawing.Arc;\nvar Path = drawing.Path;\nvar Group = drawing.Group;\n\nfunction drawTicks(arc, tickAngles, unit, tickOptions) {\n    var ticks = new Group();\n    var center = arc.center;\n    var radius = arc.getRadiusX();\n\n    if (tickOptions.visible) {\n        for (var i = 0; i < tickAngles.length; i++) {\n            var tickStart = arc.pointAt(tickAngles[i]);\n            var tickEnd = new geo.Point(center.x + radius - tickOptions.size, center.y).rotate(tickAngles[i], center);\n\n            ticks.append(new Path({\n                stroke: {\n                    color: tickOptions.color,\n                    width: tickOptions.width\n                }\n            }).moveTo(tickStart).lineTo(tickEnd));\n        }\n    }\n\n    return ticks;\n}\n\nfunction rangeSegment(from, to, color, opacity) {\n    return { from: from, to: to, color: color, opacity: opacity };\n}\n\nvar RadialScale = (function (NumericAxis) {\n    function RadialScale(options, service) {\n        NumericAxis.call(this, 0, 1, options, service);\n    }\n\n    if ( NumericAxis ) RadialScale.__proto__ = NumericAxis;\n    RadialScale.prototype = Object.create( NumericAxis && NumericAxis.prototype );\n    RadialScale.prototype.constructor = RadialScale;\n\n    RadialScale.prototype.initUserOptions = function initUserOptions (options) {\n        var scaleOptions = deepExtend({}, this.options, options);\n        scaleOptions.majorUnit = scaleOptions.majorUnit || autoMajorUnit(scaleOptions.min, scaleOptions.max);\n        scaleOptions.minorUnit = scaleOptions.minorUnit || scaleOptions.majorUnit / 10;\n\n        return scaleOptions;\n    };\n\n    RadialScale.prototype.initFields = function initFields () {\n    };\n\n    RadialScale.prototype.render = function render (center, radius) {\n        var arc = this.renderArc(center, radius);\n\n        this.bbox = arc.bbox();\n        this.labelElements = this.renderLabels();\n        this.ticks = this.renderTicks();\n        this.ranges = this.renderRanges();\n    };\n\n    RadialScale.prototype.reflow = function reflow (bbox) {\n        var center = bbox.center();\n        var radius = Math.min(bbox.height(), bbox.width()) / 2;\n\n        if (defined(this.bbox)) {\n            this.bbox = this.arc.bbox();\n            this.radius(this.arc.getRadiusX());\n            this.repositionRanges();\n            this.renderLabels();\n        } else {\n            return this.render(center, radius);\n        }\n    };\n\n    RadialScale.prototype.slotAngle = function slotAngle (value) {\n        var ref = this.options;\n        var min = ref.min;\n        var max = ref.max;\n        var reverse = ref.reverse;\n        var startAngle = ref.startAngle;\n        var endAngle = ref.endAngle;\n        var angle = endAngle - startAngle;\n        var result;\n\n        if (reverse) {\n            result = endAngle - (value - min) / (max - min) * angle;\n        } else {\n            result = ((value - min) / (max - min) * angle) + startAngle;\n        }\n\n        return result + GEO_ARC_ADJUST_ANGLE;\n    };\n\n    RadialScale.prototype.hasRanges = function hasRanges () {\n        var ranges = this.options.ranges;\n\n        return ranges && ranges.length;\n    };\n\n    RadialScale.prototype.ticksSize = function ticksSize () {\n        var ref = this.options;\n        var majorTicks = ref.majorTicks;\n        var minorTicks = ref.minorTicks;\n        var size = 0;\n        if (majorTicks.visible) {\n            size = majorTicks.size;\n        }\n\n        if (minorTicks.visible) {\n            size = Math.max(minorTicks.size, size);\n        }\n\n        return size;\n    };\n\n    RadialScale.prototype.labelsCount = function labelsCount () {\n        var count = NumericAxis.prototype.labelsCount.call(this);\n        var options = this.options;\n        var angle = options.endAngle - options.startAngle;\n\n        if (angle >= 360 && (options.max % options.majorUnit === 0)) {\n            count -= 1;\n        }\n\n        return count;\n    };\n\n    RadialScale.prototype.renderLabels = function renderLabels () {\n        var this$1 = this;\n\n        var options = this.options;\n        var arc = this.arc.clone();\n        var radius = arc.getRadiusX();\n        var tickAngles = this.tickAngles(arc, options.majorUnit);\n        var rangeSize = options.rangeSize = options.rangeSize || radius * 0.1;\n        var labelsGroup = new Group();\n\n        var rangeDistance = radius * 0.05;\n        if (defined(options.rangeDistance)) {\n            rangeDistance = options.rangeDistance;\n        } else {\n            options.rangeDistance = rangeDistance;\n        }\n\n        var labelsOptions = options.labels;\n        var isInside = labelsOptions.position === INSIDE;\n        var hasLabelElements = defined(this.labelElements);\n\n        if (isInside) {\n            radius -= this.ticksSize();\n\n            if (this.hasRanges() && !hasLabelElements) {\n                radius -= rangeSize + rangeDistance;\n            }\n            arc.setRadiusX(radius).setRadiusY(radius);\n        }\n\n        var labels = this.labels;\n        var count = labels.length;\n        var padding = getSpacing(labelsOptions.padding);\n        var paddingWidth = (padding.left + padding.right) / 2;\n        var paddingHeight = (padding.top + padding.bottom) / 2;\n\n        for (var i = 0; i < count; i++) {\n            var label = labels[i];\n            var halfWidth = label.box.width() / 2;\n            var halfHeight = label.box.height() / 2;\n            var angle = tickAngles[i];\n            var labelAngle = (angle - GEO_ARC_ADJUST_ANGLE) * DEGREE;\n\n            var lp = arc.pointAt(angle);\n            var cx = lp.x + (Math.cos(labelAngle) * (halfWidth + paddingWidth) * (isInside ? 1 : -1));\n            var cy = lp.y + (Math.sin(labelAngle) * (halfHeight + paddingHeight) * (isInside ? 1 : -1));\n\n            label.reflow(new Box(cx - halfWidth, cy - halfHeight, cx + halfWidth, cy + halfHeight));\n            var labelPos = new geo.Point(label.box.x1, label.box.y1);\n\n            var labelElement = (void 0);\n            if (!hasLabelElements) {\n                labelElement = buildLabelElement(label, options.labels);\n                labelsGroup.append(labelElement);\n            } else {\n                labelElement = this$1.labelElements.children[i];\n                var prevLabelPos = labelElement.bbox().origin;\n\n                var labelTransform = labelElement.transform() || geo.transform();\n                labelTransform.translate(labelPos.x - prevLabelPos.x, labelPos.y - prevLabelPos.y);\n                labelElement.transform(labelTransform);\n            }\n\n            this$1.bbox = geo.Rect.union(this$1.bbox, labelElement.bbox());\n        }\n\n        return labelsGroup;\n    };\n\n    RadialScale.prototype.repositionRanges = function repositionRanges () {\n        var ranges = this.ranges.children;\n\n        if (ranges.length > 0) {\n            var ref = this.options;\n            var rangeDistance = ref.rangeDistance;\n            var rangeSize = ref.rangeSize;\n            var rangeRadius = this.getRangeRadius();\n\n            if (this.options.labels.position === INSIDE) {\n                rangeRadius += rangeSize + rangeDistance;\n            }\n\n            var newRadius = rangeRadius + (rangeSize / 2);\n\n            for (var i = 0; i < ranges.length; i++) {\n                ranges[i]._geometry.setRadiusX(newRadius).setRadiusY(newRadius);\n            }\n\n            this.bbox = geo.Rect.union(this.bbox, this.ranges.bbox());\n        }\n    };\n\n    RadialScale.prototype.renderRanges = function renderRanges () {\n        var this$1 = this;\n\n        var segments = this.rangeSegments();\n        var segmentsCount = segments.length;\n        var result = new Group();\n\n        if (segmentsCount) {\n            var ref = this.options;\n            var rangeSize = ref.rangeSize;\n            var reverse = ref.reverse;\n            var rangeDistance = ref.rangeDistance;\n            var rangeRadius = this.getRangeRadius();\n\n            // move the ticks with a range distance and a range size\n            this.radius(this.radius() - rangeSize - rangeDistance);\n\n            for (var i = 0; i < segmentsCount; i++) {\n                var segment = segments[i];\n                var from = this$1.slotAngle(segment[reverse ? \"to\" : \"from\"]);\n                var to = this$1.slotAngle(segment[!reverse ? \"to\" : \"from\"]);\n\n                if (to - from !== 0) {\n                    result.append(this$1.createRange(from, to, rangeRadius, segment));\n                }\n            }\n        }\n\n        return result;\n    };\n\n    RadialScale.prototype.createRange = function createRange (startAngle, endAngle, rangeRadius, options) {\n        var rangeSize = this.options.rangeSize;\n        var rangeGeom = new geo.Arc(this.arc.center, {\n            radiusX: rangeRadius + (rangeSize / 2),\n            radiusY: rangeRadius + (rangeSize / 2),\n            startAngle: startAngle,\n            endAngle: endAngle\n        });\n\n        return new Arc(rangeGeom, {\n            stroke: {\n                width: rangeSize,\n                color: options.color,\n                opacity: options.opacity,\n                lineCap: options.lineCap\n            }\n        });\n    };\n\n    RadialScale.prototype.rangeSegments = function rangeSegments () {\n        var options = this.options;\n        var ranges = options.ranges || [];\n        var count = ranges.length;\n        var segments = [];\n\n        if (count) {\n            var min = options.min;\n            var max = options.max;\n            var defaultColor = options.rangePlaceholderColor;\n            segments.push(rangeSegment(min, max, defaultColor));\n\n            for (var i = 0; i < count; i++) {\n                var range = getRange(ranges[i], min, max);\n                var segmentsCount = segments.length;\n\n                for (var j = 0; j < segmentsCount; j++) {\n                    var segment = segments[j];\n\n                    if (segment.from <= range.from && range.from <= segment.to) {\n                        segments.push(rangeSegment(range.from, range.to, range.color, range.opacity));\n\n                        if (segment.from <= range.to && range.to <= segment.to) {\n                            segments.push(rangeSegment(range.to, segment.to, defaultColor, range.opacity));\n                        }\n\n                        segment.to = range.from;\n\n                        break;\n                    }\n                }\n            }\n        }\n\n        return segments;\n    };\n\n    RadialScale.prototype.getRangeRadius = function getRangeRadius () {\n        var ref = this;\n        var arc = ref.arc;\n        var options = ref.options;\n        var rangeSize = options.rangeSize;\n        var rangeDistance = options.rangeDistance;\n        var majorTickSize = options.majorTicks.size;\n        var radius;\n\n        if (options.labels.position === OUTSIDE) {\n            radius = arc.getRadiusX() - majorTickSize - rangeDistance - rangeSize;\n        } else {\n            radius = arc.getRadiusX() - rangeSize;\n        }\n\n        return radius;\n    };\n\n    RadialScale.prototype.renderArc = function renderArc (center, radius) {\n        var options = this.options;\n\n        var arc = this.arc = new geo.Arc(center, {\n            radiusX: radius,\n            radiusY: radius,\n            startAngle: options.startAngle + GEO_ARC_ADJUST_ANGLE,\n            endAngle: options.endAngle + GEO_ARC_ADJUST_ANGLE\n        });\n\n        return arc;\n    };\n\n    RadialScale.prototype.renderTicks = function renderTicks () {\n        var ref = this;\n        var arc = ref.arc;\n        var options = ref.options;\n        var tickArc = arc.clone();\n\n        this.majorTickAngles = this.tickAngles(arc, options.majorUnit);\n        this.majorTicks = drawTicks(tickArc, this.majorTickAngles, options.majorUnit, options.majorTicks);\n\n        var allTicks = new Group();\n        allTicks.append(this.majorTicks);\n\n        var majorTickSize = options.majorTicks.size;\n        var minorTickSize = options.minorTicks.size;\n\n        this._tickDifference = majorTickSize - minorTickSize;\n\n        if (options.labels.position === OUTSIDE) {\n            var radius = tickArc.getRadiusX();\n            tickArc.setRadiusX(radius - majorTickSize + minorTickSize)\n                   .setRadiusY(radius - majorTickSize + minorTickSize);\n        }\n\n        this.minorTickAngles = this.normalizeTickAngles(this.tickAngles(arc, options.minorUnit));\n        this.minorTicks = drawTicks(tickArc, this.minorTickAngles, options.minorUnit, options.minorTicks);\n        allTicks.append(this.minorTicks);\n\n        return allTicks;\n    };\n\n    RadialScale.prototype.normalizeTickAngles = function normalizeTickAngles (angles) {\n        var options = this.options;\n        var skip = options.majorUnit / options.minorUnit;\n\n        for (var i = angles.length - 1; i >= 0; i--) {\n            if (i % skip === 0) {\n                angles.splice(i, 1);\n            }\n        }\n\n        return angles;\n    };\n\n    RadialScale.prototype.tickAngles = function tickAngles (ring, stepValue) {\n        var options = this.options;\n        var reverse = options.reverse;\n        var range = options.max - options.min;\n        var angle = ring.endAngle - ring.startAngle;\n        var tickCount = range / stepValue;\n        var pos = ring.startAngle;\n        var step = angle / tickCount;\n\n        if (reverse) {\n            pos += angle;\n            step = -step;\n        }\n\n        if (angle >= 360 && (options.max % stepValue === 0)) {\n            tickCount -= 1;\n        }\n\n        var positions = [];\n        for (var i = 0; i < tickCount; i++) {\n            positions.push(round(pos, COORD_PRECISION));\n            pos += step;\n        }\n\n        if (round(pos) <= ring.endAngle) {\n            positions.push(pos);\n        }\n\n        return positions;\n    };\n\n    RadialScale.prototype.radius = function radius (value) {\n        if (value) {\n            this.arc.setRadiusX(value).setRadiusY(value);\n            this.repositionTicks(this.majorTicks.children, this.majorTickAngles);\n            this.repositionTicks(this.minorTicks.children, this.minorTickAngles, true);\n        } else {\n            return this.arc.getRadiusX();\n        }\n    };\n\n    RadialScale.prototype.repositionTicks = function repositionTicks (ticks, tickAngles, minor) {\n        var diff = minor ? (this._tickDifference || 0) : 0;\n        var tickArc = this.arc;\n        var radius = tickArc.getRadiusX();\n\n        if (minor && this.options.labels.position === OUTSIDE && diff !== 0) {\n            tickArc = this.arc.clone();\n            tickArc.setRadiusX(radius - diff).setRadiusY(radius - diff);\n        }\n\n        for (var i = 0; i < ticks.length; i++) {\n            var newPoint = tickArc.pointAt(tickAngles[i]);\n            var segments = ticks[i].segments;\n            var xDiff = newPoint.x - segments[0].anchor().x;\n            var yDiff = newPoint.y - segments[0].anchor().y;\n\n            ticks[i].transform(new geo.transform().translate(xDiff, yDiff));\n        }\n    };\n\n    return RadialScale;\n}(NumericAxis));\n\nsetDefaultOptions(RadialScale, {\n    min: 0,\n    max: 100,\n\n    majorTicks: {\n        size: 15,\n        align: INSIDE,\n        color: BLACK,\n        width: DEFAULT_LINE_WIDTH,\n        visible: true\n    },\n\n    minorTicks: {\n        size: 10,\n        align: INSIDE,\n        color: BLACK,\n        width: DEFAULT_LINE_WIDTH,\n        visible: true\n    },\n\n    startAngle: -30,\n    endAngle: 210,\n\n    labels: {\n        position: INSIDE,\n        padding: 2\n    }\n});\n\nexport default RadialScale;\n","import { geometry, drawing } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions } from '../../common';\nimport { ANGULAR_SPEED, LINEAR, RADIAL_POINTER } from '../constants';\n\nvar RadialPointerAnimation = (function (superclass) {\n    function RadialPointerAnimation(element, options) {\n        superclass.call(this, element, options);\n\n        var animationOptions = this.options;\n\n        animationOptions.duration = Math.max((Math.abs(animationOptions.newAngle - animationOptions.oldAngle) / animationOptions.duration) * 1000, 1);\n    }\n\n    if ( superclass ) RadialPointerAnimation.__proto__ = superclass;\n    RadialPointerAnimation.prototype = Object.create( superclass && superclass.prototype );\n    RadialPointerAnimation.prototype.constructor = RadialPointerAnimation;\n\n    RadialPointerAnimation.prototype.step = function step (pos) {\n        var options = this.options;\n        var angle = interpolateValue(options.oldAngle, options.newAngle, pos);\n\n        this.element.transform(geometry.transform().rotate(angle, options.center));\n    };\n\n    return RadialPointerAnimation;\n}(drawing.Animation));\n\nsetDefaultOptions(RadialPointerAnimation, {\n    easing: LINEAR,\n    duration: ANGULAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(RADIAL_POINTER, RadialPointerAnimation);\n\nexport default RadialPointerAnimation;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\n\nimport { setDefaultOptions, deepExtend, limitValue } from '../../common';\nimport { ANGULAR_SPEED, DEGREE, DEFAULT_LINE_WIDTH, RADIAL_POINTER } from '../constants';\nimport Pointer from '../pointer';\nimport RadialPointerAnimation from './radial-pointer-animation';\n\nvar CAP_SIZE = 0.05;\nvar Circle = drawing.Circle;\nvar Group = drawing.Group;\nvar Path = drawing.Path;\n\nvar RadialPointer = (function (Pointer) {\n    function RadialPointer () {\n        Pointer.apply(this, arguments);\n    }\n\n    if ( Pointer ) RadialPointer.__proto__ = Pointer;\n    RadialPointer.prototype = Object.create( Pointer && Pointer.prototype );\n    RadialPointer.prototype.constructor = RadialPointer;\n\n    RadialPointer.prototype.setAngle = function setAngle (angle) {\n        this.elements.transform(geo.transform().rotate(angle, this.center));\n    };\n\n    RadialPointer.prototype.repaint = function repaint () {\n        var ref = this;\n        var scale = ref.scale;\n        var options = ref.options;\n        var oldAngle = scale.slotAngle(options._oldValue);\n        var newAngle = scale.slotAngle(options.value);\n\n        if (options.animation.transitions === false) {\n            this.setAngle(newAngle);\n        } else {\n            new RadialPointerAnimation(this.elements, deepExtend(options.animation, {\n                oldAngle: oldAngle,\n                newAngle: newAngle\n            })).play();\n        }\n    };\n\n    RadialPointer.prototype.render = function render () {\n        var ref = this;\n        var scale = ref.scale;\n        var options = ref.options;\n        var elements = new Group();\n\n        if (options.animation !== false) {\n            deepExtend(options.animation, {\n                startAngle: 0,\n                center: scale.arc.center,\n                reverse: scale.options.reverse\n            });\n        }\n\n        elements.append(this._renderNeedle(), this._renderCap());\n\n        this.elements = elements;\n        this.setAngle(DEGREE);\n\n        return elements;\n    };\n\n    RadialPointer.prototype.reflow = function reflow (arc) {\n        var center = this.center = arc.center;\n        var length = limitValue(this.options.length || 1, 0.1, 1.5);\n        var radius = this.radius = arc.getRadiusX() * length;\n        var capSize = this.capSize = Math.round(radius * this.options.cap.size);\n\n        this.bbox = geo.Rect.fromPoints(new geo.Point(center.x - capSize, center.y - capSize),\n                                    new geo.Point(center.x + capSize, center.y + capSize));\n    };\n\n    RadialPointer.prototype._renderNeedle = function _renderNeedle () {\n        var minorTickSize = this.scale.options.minorTicks.size;\n        var center = this.center;\n        var needleColor = this.options.color;\n\n        var needlePath = new Path({\n            fill: { color: needleColor },\n            stroke: { color: needleColor, width: DEFAULT_LINE_WIDTH }\n        });\n\n        needlePath.moveTo(center.x + this.radius - minorTickSize, center.y)\n                  .lineTo(center.x, center.y - (this.capSize / 2))\n                  .lineTo(center.x, center.y + (this.capSize / 2))\n                  .close();\n\n        return needlePath;\n    };\n\n    RadialPointer.prototype._renderCap = function _renderCap () {\n        var options = this.options;\n        var capColor = options.cap.color || options.color;\n        var circle = new geo.Circle(this.center, this.capSize);\n\n        var cap = new Circle(circle, {\n            fill: { color: capColor },\n            stroke: { color: capColor }\n        });\n\n        return cap;\n    };\n\n    return RadialPointer;\n}(Pointer));\n\nsetDefaultOptions(RadialPointer, {\n    cap: {\n        size: CAP_SIZE\n    },\n    arrow: {\n        width: 16,\n        height: 14\n    },\n    animation: {\n        type: RADIAL_POINTER,\n        duration: ANGULAR_SPEED\n    }\n});\n\nexport default RadialPointer;\n","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { setDefaultOptions, deepExtend, round, isArray } from '../../common';\nimport { COORD_PRECISION } from '../../common/constants';\nimport Gauge from '../gauge';\nimport RadialScale from './radial-scale';\nimport RadialPointer from './radial-pointer';\n\nvar Group = drawing.Group;\n\nvar RadialGauge = (function (Gauge) {\n    function RadialGauge () {\n        Gauge.apply(this, arguments);\n    }\n\n    if ( Gauge ) RadialGauge.__proto__ = Gauge;\n    RadialGauge.prototype = Object.create( Gauge && Gauge.prototype );\n    RadialGauge.prototype.constructor = RadialGauge;\n\n    RadialGauge.prototype.reflow = function reflow (bbox) {\n        var this$1 = this;\n\n        var pointers = this.pointers;\n        this.scale.reflow(bbox);\n        this._initialPlotArea = this.scale.bbox;\n\n        for (var i = 0; i < pointers.length; i++) {\n            pointers[i].reflow(this$1.scale.arc);\n            this$1._initialPlotArea = geo.Rect.union(this$1._initialPlotArea, pointers[i].bbox);\n        }\n\n        this.fitScale(bbox);\n        this.alignScale(bbox);\n        this._buildVisual(this.gaugeArea, pointers, this.scale);\n        this._draw();\n    };\n\n    RadialGauge.prototype._buildVisual = function _buildVisual (gaugeArea, pointers, scale) {\n        var visuals = this._visuals = new Group();\n\n        visuals.append(gaugeArea);\n        visuals.append(scale.ticks);\n        visuals.append(scale.ranges);\n        this._buildPointers(pointers);\n        visuals.append(scale.labelElements);\n    };\n\n    RadialGauge.prototype._buildPointers = function _buildPointers (pointers) {\n        var this$1 = this;\n\n        for (var i = 0; i < pointers.length; i++) {\n            var current = pointers[i];\n            current.render();\n            this$1._visuals.append(current.elements);\n\n            current.value(current.options.value);\n        }\n    };\n\n    RadialGauge.prototype.fitScale = function fitScale (bbox) {\n        var this$1 = this;\n\n        var arc = this.scale.arc;\n        var plotAreaBox = this._initialPlotArea;\n        var step = Math.abs(this.getDiff(plotAreaBox, bbox));\n        var min = round(step, COORD_PRECISION);\n        var max = round(-step, COORD_PRECISION);\n        var minDiff, midDiff, maxDiff, mid, oldDiff;\n        var staleFlag = 0;\n        var i = 0;\n\n        while (i++ < 100) {\n            staleFlag = (oldDiff === maxDiff) ? (staleFlag + 1) : 0;\n\n            if (staleFlag > 5) {\n                break;\n            }\n\n            if (min !== mid) {\n                minDiff = this$1.getPlotBox(min, bbox, arc);\n                if (0 <= minDiff && minDiff <= 2) {\n                    break;\n                }\n            }\n\n            if (max !== mid) {\n                maxDiff = this$1.getPlotBox(max, bbox, arc);\n                if (0 <= maxDiff && maxDiff <= 2) {\n                    break;\n                }\n            }\n\n            if (minDiff > 0 && maxDiff > 0) {\n                mid = min * 2;\n            } else if (minDiff < 0 && maxDiff < 0) {\n                mid = max * 2;\n            } else {\n                mid = round(((min + max) / 2) || 1, COORD_PRECISION);\n            }\n\n            midDiff = this$1.getPlotBox(mid, bbox, arc);\n            if (0 <= midDiff && midDiff <= 2) {\n                break;\n            }\n\n            oldDiff = maxDiff;\n\n            if (midDiff > 0) {\n                max = mid;\n                maxDiff = midDiff;\n            } else {\n                min = mid;\n                minDiff = midDiff;\n            }\n        }\n    };\n\n    RadialGauge.prototype.getPlotBox = function getPlotBox (step, bbox, arc) {\n        var this$1 = this;\n\n        var scale = this.scale;\n        var pointers = this.pointers;\n        var radius = arc.getRadiusX();\n        var scaleArc = arc.clone();\n\n        scaleArc.setRadiusX(radius + step).setRadiusY(radius + step);\n\n        scale.arc = scaleArc;\n        scale.reflow(bbox);\n        this.plotBbox = scale.bbox;\n\n        for (var i = 0; i < pointers.length; i++) {\n            pointers[i].reflow(scaleArc);\n            this$1.plotBbox = geo.Rect.union(this$1.plotBbox, pointers[i].bbox);\n        }\n\n        return this.getDiff(this.plotBbox, bbox);\n    };\n\n    RadialGauge.prototype.getDiff = function getDiff (plotBox, box) {\n        return Math.min(box.width() - plotBox.width(), box.height() - plotBox.height());\n    };\n\n    RadialGauge.prototype.alignScale = function alignScale (bbox) {\n        var this$1 = this;\n\n        var plotBoxCenter = this.plotBbox.center();\n        var boxCenter = bbox.center();\n        var paddingX = plotBoxCenter.x - boxCenter.x;\n        var paddingY = plotBoxCenter.y - boxCenter.y;\n        var ref = this;\n        var scale = ref.scale;\n        var pointers = ref.pointers;\n\n        scale.arc.center.x -= paddingX;\n        scale.arc.center.y -= paddingY;\n\n        scale.reflow(bbox);\n\n        for (var i = 0; i < pointers.length; i++) {\n            pointers[i].reflow(scale.arc);\n            this$1.plotBbox = geo.Rect.union(scale.bbox, pointers[i].bbox);\n        }\n    };\n\n    RadialGauge.prototype._createModel = function _createModel () {\n        var this$1 = this;\n\n        var options = this.options;\n        var pointers = options.pointer;\n        var scale = this.scale = new RadialScale(options.scale, this.contextService);\n\n        this.pointers = [];\n\n        var pointersArr = isArray(pointers) ? pointers : [ pointers ];\n        for (var i = 0; i < pointersArr.length; i++) {\n            var current = new RadialPointer(scale, deepExtend({}, pointersArr[i], {\n                animation: {\n                    transitions: options.transitions\n                }\n            }));\n\n            this$1.pointers.push(current);\n        }\n    };\n\n    return RadialGauge;\n}(Gauge));\n\nsetDefaultOptions(RadialGauge, {\n    transitions: true,\n    gaugeArea: {\n        background: \"\"\n    }\n});\n\nexport default RadialGauge;","import RadialScale from '../radial/radial-scale';\nimport { setDefaultOptions } from '../../common';\n\nvar ArcScale = (function (RadialScale) {\n    function ArcScale () {\n        RadialScale.apply(this, arguments);\n    }\n\n    if ( RadialScale ) ArcScale.__proto__ = RadialScale;\n    ArcScale.prototype = Object.create( RadialScale && RadialScale.prototype );\n    ArcScale.prototype.constructor = ArcScale;\n\n    ArcScale.prototype.rangeSegments = function rangeSegments () {\n        var ref = this.options;\n        var min = ref.min;\n        var max = ref.max;\n        var rangePlaceholderColor = ref.rangePlaceholderColor;\n        var rangeLineCap = ref.rangeLineCap;\n\n        return [ { from: min, to: max, color: rangePlaceholderColor, lineCap: rangeLineCap } ];\n    };\n\n    ArcScale.prototype.hasRanges = function hasRanges () {\n        return true;\n    };\n\n    ArcScale.prototype.placeholderRangeAngle = function placeholderRangeAngle (angle) {\n        var geometry = this.ranges.children[0].geometry();\n\n        if (this.options.reverse) {\n            geometry.setEndAngle(angle);\n        } else {\n            geometry.setStartAngle(angle);\n        }\n    };\n\n    ArcScale.prototype.addRange = function addRange (from, to, options) {\n        var reverse = this.options.reverse;\n\n        var startAngle = this.slotAngle(reverse ? to : from);\n        var endAngle = this.slotAngle(reverse ? from : to);\n\n        var range = this.createRange(startAngle, endAngle, this.getRangeRadius(), options);\n\n        this.ranges.append(range);\n\n        return range;\n    };\n\n    return ArcScale;\n}(RadialScale));\n\nsetDefaultOptions(ArcScale, {\n    min: 0,\n    max: 100,\n\n    majorTicks: {\n        visible: false\n    },\n\n    minorTicks: {\n        visible: false\n    },\n\n    labels: {\n        visible: false\n    },\n\n    startAngle: 0,\n    endAngle: 180,\n    rangeLineCap: 'round'\n});\n\nexport default ArcScale;","import { drawing, Color } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions, round, limitValue } from '../../common';\nimport { ANGULAR_SPEED, LINEAR, RADIAL_RANGE_POINTER } from '../constants';\n\nvar MAX_DURATION = 800;\n\nvar RangePointerAnimation = (function (superclass) {\n    function RangePointerAnimation(element, options) {\n        superclass.call(this, element, options);\n\n        var animationOptions = this.options;\n        var duration = (Math.abs(animationOptions.newAngle - animationOptions.oldAngle) / animationOptions.duration) * 1000;\n        animationOptions.duration = limitValue(duration, ANGULAR_SPEED, MAX_DURATION);\n\n        var startColor = element.elements.options.get(\"stroke.color\");\n        var color = element.currentColor();\n        if (startColor !== color) {\n            this.startColor = new Color(startColor);\n            this.color = new Color(color);\n        }\n    }\n\n    if ( superclass ) RangePointerAnimation.__proto__ = superclass;\n    RangePointerAnimation.prototype = Object.create( superclass && superclass.prototype );\n    RangePointerAnimation.prototype.constructor = RangePointerAnimation;\n\n    RangePointerAnimation.prototype.step = function step (pos) {\n        var ref = this;\n        var options = ref.options;\n        var startColor = ref.startColor;\n        var color = ref.color;\n        var angle = interpolateValue(options.oldAngle, options.newAngle, pos);\n        this.element.angle(angle);\n\n        if (color) {\n            var r = round(interpolateValue(startColor.r, color.r, pos));\n            var g = round(interpolateValue(startColor.g, color.g, pos));\n            var b = round(interpolateValue(startColor.b, color.b, pos));\n\n            this.element.stroke(new Color(r, g, b).toHex());\n        }\n    };\n\n    return RangePointerAnimation;\n}(drawing.Animation));\n\nsetDefaultOptions(RangePointerAnimation, {\n    easing: LINEAR,\n    duration: ANGULAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(RADIAL_RANGE_POINTER, RangePointerAnimation);\n\nexport default RangePointerAnimation;","import { setDefaultOptions, deepExtend, isNumber } from '../../common';\nimport { ANGULAR_SPEED, RADIAL_RANGE_POINTER } from '../constants';\nimport Pointer from '../pointer';\nimport RangePointerAnimation from './range-pointer-animation';\n\nvar RangePointer = (function (Pointer) {\n    function RangePointer () {\n        Pointer.apply(this, arguments);\n    }\n\n    if ( Pointer ) RangePointer.__proto__ = Pointer;\n    RangePointer.prototype = Object.create( Pointer && Pointer.prototype );\n    RangePointer.prototype.constructor = RangePointer;\n\n    RangePointer.prototype.repaint = function repaint () {\n        var ref = this;\n        var scale = ref.scale;\n        var options = ref.options;\n        var oldAngle = scale.slotAngle(options._oldValue);\n        var newAngle = scale.slotAngle(options.value);\n\n        if (this.animation) {\n            this.animation.abort();\n        }\n\n        if (options.animation.transitions === false) {\n            this.angle(newAngle);\n            this.stroke(this.currentColor());\n        } else {\n            this.animation = new RangePointerAnimation(this, deepExtend(options.animation, {\n                oldAngle: oldAngle,\n                newAngle: newAngle\n            }));\n\n            this.animation.play();\n        }\n    };\n\n    RangePointer.prototype.angle = function angle (value) {\n        var geometry = this.elements.geometry();\n        if (this.scale.options.reverse) {\n            geometry.setStartAngle(value);\n        } else {\n            geometry.setEndAngle(value);\n        }\n        this.scale.placeholderRangeAngle(value);\n    };\n\n    RangePointer.prototype.stroke = function stroke (value) {\n        this.elements.stroke(value);\n    };\n\n    RangePointer.prototype.render = function render () {\n        if (this.elements) {\n            return;\n        }\n\n        var ref = this;\n        var scale = ref.scale;\n        var options = ref.options;\n\n        if (options.animation !== false) {\n            deepExtend(options.animation, {\n                startAngle: 0,\n                center: scale.arc.center,\n                reverse: scale.options.reverse\n            });\n        }\n\n        this.elements = scale.addRange(scale.options.min, this.options.value, {\n            color: this.currentColor(),\n            opacity: options.opacity,\n            lineCap: scale.options.rangeLineCap\n        });\n    };\n\n    RangePointer.prototype.currentColor = function currentColor () {\n        var ref = this.scale.options;\n        var min = ref.min;\n        var max = ref.max;\n        var ref$1 = this.options;\n        var colors = ref$1.colors;\n        var color = ref$1.color;\n        var value = ref$1.value;\n        var currentValue = isNumber(value) ? value : min;\n\n        if (colors) {\n            for (var idx = 0; idx < colors.length; idx++) {\n                var ref$2 = colors[idx];\n                var rangeColor = ref$2.color;\n                var from = ref$2.from; if ( from === void 0 ) from = min;\n                var to = ref$2.to; if ( to === void 0 ) to = max;\n\n                if (from <= currentValue && currentValue <= to) {\n                    return rangeColor;\n                }\n            }\n        }\n\n        return color;\n    };\n\n    RangePointer.prototype.reflow = function reflow () {\n        this.render();\n\n        this.bbox = this.elements.bbox();\n    };\n\n    return RangePointer;\n}(Pointer));\n\nsetDefaultOptions(RangePointer, {\n    animation: {\n        type: RADIAL_RANGE_POINTER,\n        duration: ANGULAR_SPEED\n    }\n});\n\nexport default RangePointer;\n","import RadialGauge from '../radial/radial-gauge';\nimport ArcScale from './arc-scale';\nimport RangePointer from './range-pointer';\n\nimport { deepExtend } from '../../common';\n\n\nvar ArcGauge = (function (RadialGauge) {\n    function ArcGauge () {\n        RadialGauge.apply(this, arguments);\n    }\n\n    if ( RadialGauge ) ArcGauge.__proto__ = RadialGauge;\n    ArcGauge.prototype = Object.create( RadialGauge && RadialGauge.prototype );\n    ArcGauge.prototype.constructor = ArcGauge;\n\n    ArcGauge.prototype._initTheme = function _initTheme (theme) {\n        RadialGauge.prototype._initTheme.call(this, theme);\n\n        this.options.color = this.options.color || (this.theme.pointer || {}).color;\n    };\n\n    ArcGauge.prototype._createModel = function _createModel () {\n        var options = this.options;\n        var scale = this.scale = new ArcScale(options.scale, this.contextService);\n\n        var pointer = new RangePointer(scale, deepExtend({}, {\n            colors: options.colors,\n            color: options.color,\n            value: options.value,\n            opacity: options.opacity,\n            animation: {\n                transitions: options.transitions\n            }\n        }));\n\n        this.pointers = [ pointer ];\n    };\n\n    ArcGauge.prototype._buildPointers = function _buildPointers (pointers) {\n        for (var i = 0; i < pointers.length; i++) {\n            var current = pointers[i];\n            current.render();\n\n            current.value(current.options.value);\n        }\n    };\n\n    ArcGauge.prototype._setValueOptions = function _setValueOptions (value) {\n        this.options.value = value;\n    };\n\n    ArcGauge.prototype.currentColor = function currentColor () {\n        var pointer = this.pointers[0];\n        if (pointer) {\n            return pointer.currentColor();\n        }\n    };\n\n    ArcGauge.prototype.centerLabelPosition = function centerLabelPosition (width, height) {\n        var size = this.getSize();\n        var center = this.scale.arc.center;\n\n        var left = center.x - width / 2;\n        var top = center.y - height / 2;\n\n        if (width < size.width) {\n            var right = left + width;\n\n            left = Math.max(left, 0);\n\n            if (right > size.width) {\n                left -= right - size.width;\n            }\n        }\n\n        if (height < size.height) {\n            var bbox = this.scale.bbox;\n            var yLimit = bbox.bottomRight().y;\n            var bottom = top + height;\n\n            top = Math.max(top, bbox.origin.y);\n\n            if (bottom > yLimit) {\n                top -= bottom - yLimit;\n            }\n        }\n\n        return {\n            left: left,\n            top: top\n        };\n    };\n\n    return ArcGauge;\n}(RadialGauge));\n\nexport default ArcGauge;","import ArcGauge from '../arc/arc-gauge';\n\nvar defaultStartAngle = 90;\n\nvar CircularGauge = (function (ArcGauge) {\n    function CircularGauge () {\n        ArcGauge.apply(this, arguments);\n    }\n\n    if ( ArcGauge ) CircularGauge.__proto__ = ArcGauge;\n    CircularGauge.prototype = Object.create( ArcGauge && ArcGauge.prototype );\n    CircularGauge.prototype.constructor = CircularGauge;\n\n    CircularGauge.prototype._createModel = function _createModel () {\n        var scaleOptions = this.options.scale;\n        if (typeof scaleOptions.startAngle !== 'number') {\n            scaleOptions.startAngle = defaultStartAngle;\n        }\n\n        scaleOptions.endAngle = scaleOptions.startAngle + 360;\n\n        ArcGauge.prototype._createModel.call(this);\n    };\n\n    return CircularGauge;\n}(ArcGauge));\n\nexport default CircularGauge;\n","import {\n    Class,\n    defined,\n    setDefaultOptions\n} from '../../common';\n\nvar DEFAULT_QUIET_ZONE_LENGTH = 10;\n\nexport var Encoding = (function (Class) {\n    function Encoding(options) {\n        Class.call(this);\n        this.setOptions(options);\n        this.initProperties();\n    }\n\n    if ( Class ) Encoding.__proto__ = Class;\n    Encoding.prototype = Object.create( Class && Class.prototype );\n    Encoding.prototype.constructor = Encoding;\n\n    Encoding.prototype.initProperties = function initProperties () { };\n\n    Encoding.prototype.setOptions = function setOptions (options) {\n        this.options = Object.assign({}, this.options, options);\n        this.quietZoneLength = this.options.addQuietZone ? 2 * this.options.quietZoneLength : 0;\n    };\n\n    Encoding.prototype.encode = function encode (value, width, height) {\n        var convertedValue = defined(value) ? String(value) : value;\n\n        this.initValue(convertedValue, width, height);\n\n        if (this.options.addQuietZone) {\n            this.addQuietZone();\n        }\n\n        this.addData();\n\n        if (this.options.addQuietZone) {\n            this.addQuietZone();\n        }\n\n        return {\n            baseUnit: this.baseUnit,\n            pattern: this.pattern\n        };\n    };\n\n    Encoding.prototype.initValue = function initValue () { };\n\n    Encoding.prototype.addQuietZone = function addQuietZone () {\n        this.pattern.push(this.options.quietZoneLength || DEFAULT_QUIET_ZONE_LENGTH);\n    };\n\n    Encoding.prototype.addData = function addData () { };\n\n    Encoding.prototype.invalidCharacterError = function invalidCharacterError (character) {\n        throw new Error((\"Character \\\"\" + character + \"\\\" is not valid for symbology \" + (this.name) + \".\"));\n    };\n\n    return Encoding;\n}(Class));\n\nsetDefaultOptions(Encoding, {\n    quietZoneLength: DEFAULT_QUIET_ZONE_LENGTH,\n    addQuietZone: true,\n    addCheckSum: true\n});\n","import { Encoding } from './encoding';\nimport { setDefaultOptions } from '../../common';\n\nvar extend = Object.assign;\n\nexport var Code11 = (function (Encoding) {\n    function Code11 () {\n        Encoding.apply(this, arguments);\n    }\n\n    if ( Encoding ) Code11.__proto__ = Encoding;\n    Code11.prototype = Object.create( Encoding && Encoding.prototype );\n    Code11.prototype.constructor = Code11;\n\n    Code11.prototype.initProperties = function initProperties () {\n        Encoding.prototype.initProperties.call(this);\n\n        extend(this, {\n            name: \"Code 11\",\n            characterMap: [\"111121\", \"211121\", \"121121\", \"221111\", \"112121\", \"212111\", \"122111\", \"111221\", \"211211\", \"211111\", \"112111\"],\n            cCheckSumTotal: 10,\n            kCheckSumTotal: 9,\n            kCheckSumMinLength: 10,\n            checkSumMod: 11,\n            DASH_VALUE: 10,\n            DASH: \"-\",\n            START: \"112211\",\n            STOP: \"11221\"\n        });\n    };\n\n    Code11.prototype.initValue = function initValue (value, width) {\n        this.pattern = [];\n        this.value = value;\n        this.width = width;\n        this.totalUnits = 0;\n    };\n\n    Code11.prototype.addData = function addData () {\n        var this$1 = this;\n\n        var value = this.value;\n\n        this.addPattern(this.START);\n\n        for (var i = 0; i < value.length; i++) {\n            this$1.addCharacter(value.charAt(i));\n        }\n\n        if (this.options.addCheckSum) {\n            this.addCheckSum();\n        }\n\n        this.addPattern(this.STOP);\n        this.setBaseUnit();\n    };\n\n    Code11.prototype.setBaseUnit = function setBaseUnit () {\n        this.baseUnit = this.width / (this.totalUnits + this.quietZoneLength);\n    };\n\n    Code11.prototype.addCheckSum = function addCheckSum () {\n        var value = this.value;\n        var length = value.length;\n        var cValue = this.getWeightedSum(value, length, this.cCheckSumTotal) % this.checkSumMod;\n\n        this.checksum = String(cValue);\n        this.addPattern(this.characterMap[cValue]);\n\n        length++;\n\n        if (length >= this.kCheckSumMinLength) {\n            var kValue = (cValue + this.getWeightedSum(value, length, this.kCheckSumTotal)) % this.checkSumMod;\n            this.checksum += kValue;\n            this.addPattern(this.characterMap[kValue]);\n        }\n    };\n\n    Code11.prototype.getWeightedSum = function getWeightedSum (value, length, total) {\n        var this$1 = this;\n\n        var weightedSum = 0;\n\n        for (var i = 0; i < value.length; i++) {\n            weightedSum += this$1.weightedValue(this$1.getValue(value.charAt(i)), length, i, total);\n        }\n\n        return weightedSum;\n    };\n\n    Code11.prototype.weightedValue = function weightedValue (value, length, index, total) {\n        var weight = (length - index) % total || total;\n        return weight * value;\n    };\n\n    Code11.prototype.getValue = function getValue (character) {\n        if (!isNaN(character)) {\n            return parseInt(character, 10);\n        } else if (character !== this.DASH) {\n            this.invalidCharacterError(character);\n        }\n\n        return this.DASH_VALUE;\n    };\n\n    Code11.prototype.addCharacter = function addCharacter (character) {\n        var value = this.getValue(character);\n        var pattern = this.characterMap[value];\n\n        this.addPattern(pattern);\n    };\n\n    Code11.prototype.addPattern = function addPattern (pattern) {\n        var this$1 = this;\n\n        var value;\n\n        for (var i = 0; i < pattern.length; i++) {\n            value = parseInt(pattern.charAt(i), 10);\n            this$1.pattern.push(value);\n            this$1.totalUnits += value;\n        }\n    };\n\n    return Code11;\n}(Encoding));\n\nsetDefaultOptions(Code11, {\n    addCheckSum: true\n});\n","import { setDefaultOptions } from '../../common';\nimport { Encoding } from './encoding';\n\nvar extend = Object.assign;\n\nexport var Code39Base = (function (Encoding) {\n    function Code39Base () {\n        Encoding.apply(this, arguments);\n    }\n\n    if ( Encoding ) Code39Base.__proto__ = Encoding;\n    Code39Base.prototype = Object.create( Encoding && Encoding.prototype );\n    Code39Base.prototype.constructor = Code39Base;\n\n    Code39Base.prototype.initProperties = function initProperties () {\n        Encoding.prototype.initProperties.call(this);\n\n        extend(this, {\n            minBaseUnitLength: 0.7\n        });\n    };\n\n    Code39Base.prototype.addData = function addData () {\n        var this$1 = this;\n\n        var value = this.value;\n\n        this.addStart();\n\n        for (var idx = 0; idx < value.length; idx++) {\n            this$1.addCharacter(value.charAt(idx));\n        }\n\n        if (this.options.addCheckSum) {\n            this.pushCheckSum();\n        }\n\n        this.addStop();\n        this.prepareValues();\n    };\n\n    Code39Base.prototype.addCharacter = function addCharacter (character) {\n        var characterData = this.characterMap[character];\n\n        if (!characterData) {\n            this.invalidCharacterError(character);\n        }\n\n        this.addBase(characterData);\n    };\n\n    Code39Base.prototype.addBase = function addBase () { };\n\n    return Code39Base;\n}(Encoding));\n\nexport var Code39 = (function (Code39Base) {\n    function Code39 () {\n        Code39Base.apply(this, arguments);\n    }\n\n    if ( Code39Base ) Code39.__proto__ = Code39Base;\n    Code39.prototype = Object.create( Code39Base && Code39Base.prototype );\n    Code39.prototype.constructor = Code39;\n\n    Code39.prototype.initProperties = function initProperties () {\n        Code39Base.prototype.initProperties.call(this);\n\n        extend(this, {\n            name: \"Code 39\",\n            checkSumMod: 43,\n            minRatio: 2.5,\n            maxRatio: 3,\n            gapWidth: 1,\n            splitCharacter: \"|\",\n            patternMappings: {\n                \"b\": \"1|\",\n                \"w\": \"1|\",\n                \"B\": \"ratio|\",\n                \"W\": \"ratio|\"\n            },\n            characterMap: {\n                \"0\": { \"pattern\": \"bwbWBwBwb\", \"value\": 0 },\n                \"1\": { \"pattern\": \"BwbWbwbwB\", \"value\": 1 },\n                \"2\": { \"pattern\": \"bwBWbwbwB\", \"value\": 2 },\n                \"3\": { \"pattern\": \"BwBWbwbwb\", \"value\": 3 },\n                \"4\": { \"pattern\": \"bwbWBwbwB\", \"value\": 4 },\n                \"5\": { \"pattern\": \"BwbWBwbwb\", \"value\": 5 },\n                \"6\": { \"pattern\": \"bwBWBwbwb\", \"value\": 6 },\n                \"7\": { \"pattern\": \"bwbWbwBwB\", \"value\": 7 },\n                \"8\": { \"pattern\": \"BwbWbwBwb\", \"value\": 8 },\n                \"9\": { \"pattern\": \"bwBWbwBwb\", \"value\": 9 },\n                \"A\": { \"pattern\": \"BwbwbWbwB\", \"value\": 10 },\n                \"B\": { \"pattern\": \"bwBwbWbwB\", \"value\": 11 },\n                \"C\": { \"pattern\": \"BwBwbWbwb\", \"value\": 12 },\n                \"D\": { \"pattern\": \"bwbwBWbwB\", \"value\": 13 },\n                \"E\": { \"pattern\": \"BwbwBWbwb\", \"value\": 14 },\n                \"F\": { \"pattern\": \"bwBwBWbwb\", \"value\": 15 },\n                \"G\": { \"pattern\": \"bwbwbWBwB\", \"value\": 16 },\n                \"H\": { \"pattern\": \"BwbwbWBwb\", \"value\": 17 },\n                \"I\": { \"pattern\": \"bwBwbWBwb\", \"value\": 18 },\n                \"J\": { \"pattern\": \"bwbwBWBwb\", \"value\": 19 },\n                \"K\": { \"pattern\": \"BwbwbwbWB\", \"value\": 20 },\n                \"L\": { \"pattern\": \"bwBwbwbWB\", \"value\": 21 },\n                \"M\": { \"pattern\": \"BwBwbwbWb\", \"value\": 22 },\n                \"N\": { \"pattern\": \"bwbwBwbWB\", \"value\": 23 },\n                \"O\": { \"pattern\": \"BwbwBwbWb\", \"value\": 24 },\n                \"P\": { \"pattern\": \"bwBwBwbWb\", \"value\": 25 },\n                \"Q\": { \"pattern\": \"bwbwbwBWB\", \"value\": 26 },\n                \"R\": { \"pattern\": \"BwbwbwBWb\", \"value\": 27 },\n                \"S\": { \"pattern\": \"bwBwbwBWb\", \"value\": 28 },\n                \"T\": { \"pattern\": \"bwbwBwBWb\", \"value\": 29 },\n                \"U\": { \"pattern\": \"BWbwbwbwB\", \"value\": 30 },\n                \"V\": { \"pattern\": \"bWBwbwbwB\", \"value\": 31 },\n                \"W\": { \"pattern\": \"BWBwbwbwb\", \"value\": 32 },\n                \"X\": { \"pattern\": \"bWbwBwbwB\", \"value\": 33 },\n                \"Y\": { \"pattern\": \"BWbwBwbwb\", \"value\": 34 },\n                \"Z\": { \"pattern\": \"bWBwBwbwb\", \"value\": 35 },\n                \"-\": { \"pattern\": \"bWbwbwBwB\", \"value\": 36 },\n                \".\": { \"pattern\": \"BWbwbwBwb\", \"value\": 37 },\n                \" \": { \"pattern\": \"bWBwbwBwb\", \"value\": 38 },\n                \"$\": { \"pattern\": \"bWbWbWbwb\", \"value\": 39 },\n                \"/\": { \"pattern\": \"bWbWbwbWb\", \"value\": 40 },\n                \"+\": { \"pattern\": \"bWbwbWbWb\", \"value\": 41 },\n                \"%\": { \"pattern\": \"bwbWbWbWb\", \"value\": 42 },\n                START: { pattern: \"bWbwBwBwb\" }\n            }\n        });\n    };\n\n    Code39.prototype.initValue = function initValue (value, width, height) {\n        this.width = width;\n        this.height = height;\n        this.value = value;\n        this.dataLength = value.length;\n        this.pattern = [];\n        this.patternString = \"\";\n    };\n\n    Code39.prototype.prepareValues = function prepareValues () {\n        var this$1 = this;\n\n        var minBaseUnit = this.minBaseUnitLength;\n        var minRatio = this.minRatio;\n        var minHeight = Math.ceil(Math.max(0.15 * this.width, 24));\n        var baseUnit;\n        var ratio = this.maxRatio;\n\n        if (this.height < minHeight) {\n            throw new Error((\"Insufficient height for Code39 encoding: the current height is \" + (this.height) + \"px and the minimum height is \" + minHeight + \"px.\"));\n        }\n\n        baseUnit = this.getBaseUnit(ratio);\n\n        while (baseUnit < minBaseUnit && ratio > minRatio) {\n            ratio = parseFloat((ratio - 0.1).toFixed(1));\n            baseUnit = this$1.getBaseUnit(ratio);\n        }\n\n        if (baseUnit < minBaseUnit) {\n            var minWidth = Math.ceil(this.getBaseWidth(minRatio) * minBaseUnit);\n            throw new Error((\"Insufficient width for Code39 encoding: the current width is \" + (this.width) + \"px and the minimum width for value \\\"\" + (this.value) + \"\\\" is \" + minWidth + \"px.\"));\n        }\n\n        this.ratio = ratio;\n        this.baseUnit = baseUnit;\n        this.patternString = this.patternString.substring(0, this.patternString.length - 1);\n        this.pattern = this.pattern.concat(this.patternString.replace(/ratio/g, ratio).split(this.splitCharacter));\n    };\n\n    Code39.prototype.getBaseUnit = function getBaseUnit (ratio) {\n        return this.width / this.getBaseWidth(ratio);\n    };\n\n    Code39.prototype.getBaseWidth = function getBaseWidth (ratio) {\n        var characterLength = 3 * (ratio + 2);\n        return this.quietZoneLength + characterLength * (this.dataLength + 2) + this.gapWidth * (this.dataLength + 1);\n    };\n\n    Code39.prototype.addStart = function addStart () {\n        this.addPattern(this.characterMap.START.pattern);\n        this.addCharacterGap();\n    };\n\n    Code39.prototype.addBase = function addBase (character) {\n        this.addPattern(character.pattern);\n        this.addCharacterGap();\n    };\n\n    Code39.prototype.addStop = function addStop () {\n        this.addPattern(this.characterMap.START.pattern);\n    };\n\n    Code39.prototype.addPattern = function addPattern (pattern) {\n        var this$1 = this;\n\n        for (var i = 0; i < pattern.length; i++) {\n            this$1.patternString += this$1.patternMappings[pattern.charAt(i)];\n        }\n    };\n\n    Code39.prototype.addCharacterGap = function addCharacterGap () {\n        this.patternString += this.gapWidth + this.splitCharacter;\n    };\n\n    return Code39;\n}(Code39Base));\n\nsetDefaultOptions(Code39, {\n    addCheckSum: false\n});\n","import { Code39 } from './code39';\nimport deepExtend from '../../common/deep-extend';\n\nexport var Code39ExtendedBase = {\n    addCharacter: function addCharacter(character) {\n        if (this.characterMap[character]) {\n            this.addBase(this.characterMap[character]);\n        } else if (character.charCodeAt(0) > 127) {\n            this.invalidCharacterError(character);\n        } else {\n            this.addExtended(character.charCodeAt(0));\n        }\n    },\n\n    addExtended: function addExtended(code) {\n        var this$1 = this;\n\n        var patterns;\n\n        for (var i = 0; i < this.extendedMappings.length; i++) {\n            patterns = this$1.extendedMappings[i].call(this$1, code);\n\n            if (patterns) {\n                for (var patternIndex = 0; patternIndex < patterns.length; patternIndex++) {\n                    var pattern = patterns[patternIndex];\n                    this$1.addBase(pattern);\n                }\n\n                this$1.dataLength += patterns.length - 1;\n                return;\n            }\n        }\n    },\n\n    extendedMappings: [\n        function(code) {\n            if (97 <= code && code <= 122) {\n                return [this.characterMap[this.shiftCharacters[0]], this.characterMap[String.fromCharCode(code - 32)]];\n            }\n        },\n        function(code) {\n            if (33 <= code && code <= 58) {\n                return [this.characterMap[this.shiftCharacters[1]], this.characterMap[String.fromCharCode(code + 32)]];\n            }\n        },\n        function(code) {\n            if (1 <= code && code <= 26) {\n                return [this.characterMap[this.shiftCharacters[2]], this.characterMap[String.fromCharCode(code + 64)]];\n            }\n        },\n        function(code) {\n            var this$1 = this;\n\n            var result;\n            var dataCharacter;\n\n            if (!this.specialAsciiCodes[code]) {\n                dataCharacter = Math.floor(code / 32) * 6 + (code - 27) % 32 + 64;\n                result = [this.characterMap[this.shiftCharacters[3]], this.characterMap[String.fromCharCode(dataCharacter)]];\n            } else {\n                result = [];\n\n                for (var i = 0; i < this.specialAsciiCodes[code].length; i++) {\n                    result.push(this$1.characterMap[this$1.shiftCharacters[3]]);\n                    result.push(this$1.characterMap[this$1.specialAsciiCodes[code][i]]);\n                }\n            }\n\n            return result;\n        }\n    ],\n    specialAsciiCodes: {\n        \"0\": [\"U\"],\n        \"64\": [\"V\"],\n        \"96\": [\"W\"],\n        \"127\": [\"T\", \"X\", \"Y\", \"Z\"]\n    },\n    shiftValuesAsciiCodes: {\n        \"39\": 36,\n        \"40\": 47,\n        \"41\": 43,\n        \"42\": 37\n    },\n    characterMap: {\n        \"+\": false,\n        \"/\": false,\n        \"$\": false,\n        \"%\": false\n    },\n    shiftCharacters: [\"SHIFT0\", \"SHIFT1\", \"SHIFT2\", \"SHIFT3\"]\n};\n\nexport var Code39Extended = (function (Code39) {\n    function Code39Extended () {\n        Code39.apply(this, arguments);\n    }\n\n    if ( Code39 ) Code39Extended.__proto__ = Code39;\n    Code39Extended.prototype = Object.create( Code39 && Code39.prototype );\n    Code39Extended.prototype.constructor = Code39Extended;\n\n    Code39Extended.prototype.initProperties = function initProperties () {\n        Code39.prototype.initProperties.call(this);\n\n        deepExtend(this, Code39ExtendedBase, {\n            name: \"Code 39 extended\",\n            characterMap: {\n                SHIFT0: { \"pattern\": \"bWbwbWbWb\", \"value\": 41 },\n                SHIFT1: { \"pattern\": \"bWbWbwbWb\", \"value\": 40 },\n                SHIFT2: { \"pattern\": \"bWbWbWbwb\", \"value\": 39 },\n                SHIFT3: { \"pattern\": \"bwbWbWbWb\", \"value\": 42 }\n            }\n        });\n    };\n\n    return Code39Extended;\n}(Code39));\n","import { Code39Base } from './code39';\n\nvar extend = Object.assign;\n\nexport var Code93 = (function (Code39Base) {\n    function Code93 () {\n        Code39Base.apply(this, arguments);\n    }\n\n    if ( Code39Base ) Code93.__proto__ = Code39Base;\n    Code93.prototype = Object.create( Code39Base && Code39Base.prototype );\n    Code93.prototype.constructor = Code93;\n\n    Code93.prototype.initProperties = function initProperties () {\n        Code39Base.prototype.initProperties.call(this);\n\n        extend(this, {\n            name: \"Code 93\",\n            cCheckSumTotal: 20,\n            kCheckSumTotal: 15,\n            checkSumMod: 47,\n            characterMap: {\n                \"0\": { \"pattern\": \"131112\", \"value\": 0 },\n                \"1\": { \"pattern\": \"111213\", \"value\": 1 },\n                \"2\": { \"pattern\": \"111312\", \"value\": 2 },\n                \"3\": { \"pattern\": \"111411\", \"value\": 3 },\n                \"4\": { \"pattern\": \"121113\", \"value\": 4 },\n                \"5\": { \"pattern\": \"121212\", \"value\": 5 },\n                \"6\": { \"pattern\": \"121311\", \"value\": 6 },\n                \"7\": { \"pattern\": \"111114\", \"value\": 7 },\n                \"8\": { \"pattern\": \"131211\", \"value\": 8 },\n                \"9\": { \"pattern\": \"141111\", \"value\": 9 },\n                \"A\": { \"pattern\": \"211113\", \"value\": 10 },\n                \"B\": { \"pattern\": \"211212\", \"value\": 11 },\n                \"C\": { \"pattern\": \"211311\", \"value\": 12 },\n                \"D\": { \"pattern\": \"221112\", \"value\": 13 },\n                \"E\": { \"pattern\": \"221211\", \"value\": 14 },\n                \"F\": { \"pattern\": \"231111\", \"value\": 15 },\n                \"G\": { \"pattern\": \"112113\", \"value\": 16 },\n                \"H\": { \"pattern\": \"112212\", \"value\": 17 },\n                \"I\": { \"pattern\": \"112311\", \"value\": 18 },\n                \"J\": { \"pattern\": \"122112\", \"value\": 19 },\n                \"K\": { \"pattern\": \"132111\", \"value\": 20 },\n                \"L\": { \"pattern\": \"111123\", \"value\": 21 },\n                \"M\": { \"pattern\": \"111222\", \"value\": 22 },\n                \"N\": { \"pattern\": \"111321\", \"value\": 23 },\n                \"O\": { \"pattern\": \"121122\", \"value\": 24 },\n                \"P\": { \"pattern\": \"131121\", \"value\": 25 },\n                \"Q\": { \"pattern\": \"212112\", \"value\": 26 },\n                \"R\": { \"pattern\": \"212211\", \"value\": 27 },\n                \"S\": { \"pattern\": \"211122\", \"value\": 28 },\n                \"T\": { \"pattern\": \"211221\", \"value\": 29 },\n                \"U\": { \"pattern\": \"221121\", \"value\": 30 },\n                \"V\": { \"pattern\": \"222111\", \"value\": 31 },\n                \"W\": { \"pattern\": \"112122\", \"value\": 32 },\n                \"X\": { \"pattern\": \"112221\", \"value\": 33 },\n                \"Y\": { \"pattern\": \"122121\", \"value\": 34 },\n                \"Z\": { \"pattern\": \"123111\", \"value\": 35 },\n                \"-\": { \"pattern\": \"121131\", \"value\": 36 },\n                \".\": { \"pattern\": \"311112\", \"value\": 37 },\n                \" \": { \"pattern\": \"311211\", \"value\": 38 },\n                \"$\": { \"pattern\": \"321111\", \"value\": 39 },\n                \"/\": { \"pattern\": \"112131\", \"value\": 40 },\n                \"+\": { \"pattern\": \"113121\", \"value\": 41 },\n                \"%\": { \"pattern\": \"211131\", \"value\": 42 },\n                SHIFT0: { \"pattern\": \"122211\", \"value\": 46 },\n                SHIFT1: { \"pattern\": \"311121\", \"value\": 45 },\n                SHIFT2: { \"pattern\": \"121221\", \"value\": 43 },\n                SHIFT3: { \"pattern\": \"312111\", \"value\": 44 },\n                START: { \"pattern\": \"111141\" },\n                TERMINATION_BAR: \"1\"\n            }\n        });\n    };\n\n    Code93.prototype.initValue = function initValue (value, width, height) {\n        this.value = value;\n        this.width = width;\n        this.height = height;\n        this.pattern = [];\n        this.values = [];\n        this.dataLength = value.length;\n    };\n\n    Code93.prototype.prepareValues = function prepareValues () {\n        var minHeight = Math.ceil(Math.max(0.15 * this.width, 24));\n\n        if (this.height < minHeight) {\n            throw new Error((\"Insufficient height for Code93 encoding: the current height is \" + (this.height) + \"px, the minimum required height is \" + minHeight + \"px.\"));\n        }\n\n        this.setBaseUnit();\n\n        if (this.baseUnit < this.minBaseUnitLength) {\n            var minWidth = Math.ceil(this.minBaseUnitLength * (this.width / this.baseUnit));\n            throw new Error((\"Insufficient width for Code93 encoding: the current width is \" + (this.width) + \"px and the minimum required width for value \\\"\" + (this.value) + \"\\\" is \" + minWidth + \"px.\"));\n        }\n    };\n\n    Code93.prototype.setBaseUnit = function setBaseUnit () {\n        var checkSumLength = 2;\n\n        this.baseUnit = this.width / (9 * (this.dataLength + 2 + checkSumLength) + this.quietZoneLength + 1);\n    };\n\n    Code93.prototype.addStart = function addStart () {\n        var pattern = this.characterMap.START.pattern;\n        this.addPattern(pattern);\n    };\n\n    Code93.prototype.addStop = function addStop () {\n        this.addStart();\n        this.pattern.push(this.characterMap.TERMINATION_BAR);\n    };\n\n    Code93.prototype.addBase = function addBase (charData) {\n        this.addPattern(charData.pattern);\n        this.values.push(charData.value);\n    };\n\n    Code93.prototype.pushCheckSum = function pushCheckSum () {\n        var this$1 = this;\n\n        var checkValues = this._getCheckValues();\n        var charData;\n\n        this.checksum = checkValues.join(\"\");\n\n        for (var i = 0; i < checkValues.length; i++) {\n            charData = this$1.characterMap[this$1._findCharacterByValue(checkValues[i])];\n            this$1.addPattern(charData.pattern);\n        }\n    };\n\n    Code93.prototype._getCheckValues = function _getCheckValues () {\n        var this$1 = this;\n\n        var values = this.values;\n        var length = values.length;\n        var wightedSum = 0;\n        var cValue;\n        var kValue;\n        var idx;\n\n        for (idx = length - 1; idx >= 0; idx--) {\n            wightedSum += this$1.weightedValue(values[idx], length - idx, this$1.cCheckSumTotal);\n        }\n\n        cValue = wightedSum % this.checkSumMod;\n\n        wightedSum = this.weightedValue(cValue, 1, this.kCheckSumTotal);\n\n        for (idx = length - 1; idx >= 0; idx--) {\n            wightedSum += this$1.weightedValue(values[idx], length - idx + 1, this$1.kCheckSumTotal);\n        }\n\n        kValue = wightedSum % this.checkSumMod;\n        return [cValue, kValue];\n    };\n\n    Code93.prototype._findCharacterByValue = function _findCharacterByValue (value) {\n        var this$1 = this;\n\n        for (var character in this$1.characterMap) {\n            if (this$1.characterMap[character].value === value) {\n                return character;\n            }\n        }\n    };\n\n    Code93.prototype.weightedValue = function weightedValue (value, index, total) {\n        return (index % total || total) * value;\n    };\n\n    Code93.prototype.addPattern = function addPattern (pattern) {\n        var this$1 = this;\n\n        var value;\n\n        for (var i = 0; i < pattern.length; i++) {\n            value = parseInt(pattern.charAt(i), 10);\n            this$1.pattern.push(value);\n        }\n    };\n\n    return Code93;\n}(Code39Base));\n","import { Code93 } from './code93';\nimport { Code39ExtendedBase } from './code39-extended';\nimport deepExtend from '../../common/deep-extend';\n\nexport var Code93Extended = (function (Code93) {\n    function Code93Extended () {\n        Code93.apply(this, arguments);\n    }\n\n    if ( Code93 ) Code93Extended.__proto__ = Code93;\n    Code93Extended.prototype = Object.create( Code93 && Code93.prototype );\n    Code93Extended.prototype.constructor = Code93Extended;\n\n    Code93Extended.prototype.initProperties = function initProperties () {\n        Code93.prototype.initProperties.call(this);\n\n        deepExtend(this, Code39ExtendedBase, {\n            name: \"Code 93 extended\",\n            pushCheckSum: function() {\n                var this$1 = this;\n\n                var checkValues = this._getCheckValues();\n                var value;\n\n                this.checksum = checkValues.join(\"\");\n\n                for (var i = 0; i < checkValues.length; i++) {\n                    value = checkValues[i];\n\n                    if (this$1.shiftValuesAsciiCodes[value]) {\n                        this$1.addExtended(this$1.shiftValuesAsciiCodes[value]);\n                    } else {\n                        var characterByValue = this$1._findCharacterByValue(value);\n                        this$1.addPattern(this$1.characterMap[characterByValue].pattern);\n                    }\n                }\n            }\n        });\n    };\n\n    return Code93Extended;\n}(Code93));\n","import { Encoding } from './encoding';\nimport inArray from '../../common/in-array';\n\nvar numberRegex = /^\\d+$/;\nvar extend = Object.assign;\n\nexport var Postnet = (function (Encoding) {\n    function Postnet () {\n        Encoding.apply(this, arguments);\n    }\n\n    if ( Encoding ) Postnet.__proto__ = Encoding;\n    Postnet.prototype = Object.create( Encoding && Encoding.prototype );\n    Postnet.prototype.constructor = Postnet;\n\n    Postnet.prototype.initProperties = function initProperties () {\n        Encoding.prototype.initProperties.call(this);\n\n        extend(this, {\n            name: \"Postnet\",\n            START: \"2\",\n            VALID_CODE_LENGTHS: [5, 9, 11],\n            DIGIT_SEPARATOR: \"-\",\n            characterMap: [\"22111\", \"11122\", \"11212\", \"11221\", \"12112\", \"12121\", \"12211\", \"21112\", \"21121\", \"21211\"]\n        });\n    };\n\n    Postnet.prototype.initValue = function initValue (value, width, height) {\n        this.height = height;\n        this.width = width;\n        this.baseHeight = height / 2;\n        this.value = value.replace(new RegExp(this.DIGIT_SEPARATOR, \"g\"), \"\");\n        this.pattern = [];\n        this.validate(this.value);\n        this.checkSum = 0;\n        this.setBaseUnit();\n    };\n\n    Postnet.prototype.addData = function addData () {\n        var this$1 = this;\n\n        var value = this.value;\n\n        this.addPattern(this.START);\n\n        for (var i = 0; i < value.length; i++) {\n            this$1.addCharacter(value.charAt(i));\n        }\n\n        if (this.options.addCheckSum) {\n            this.addCheckSum();\n        }\n\n        this.addPattern(this.START);\n        this.pattern.pop();\n    };\n\n    Postnet.prototype.addCharacter = function addCharacter (character) {\n        var pattern = this.characterMap[character];\n        this.checkSum += parseInt(character, 10);\n        this.addPattern(pattern);\n    };\n\n    Postnet.prototype.addCheckSum = function addCheckSum () {\n        this.checksum = (10 - (this.checkSum % 10)) % 10;\n        this.addCharacter(this.checksum);\n    };\n\n    Postnet.prototype.setBaseUnit = function setBaseUnit () {\n        var startStopLength = 3;\n\n        this.baseUnit = this.width / ((this.value.length + 1) * 10 + startStopLength + this.quietZoneLength);\n    };\n\n    Postnet.prototype.validate = function validate (value) {\n        if (!numberRegex.test(value)) {\n            this.invalidCharacterError(value.match(/[^0-9]/)[0]);\n        }\n\n        if (!inArray(value.length, this.VALID_CODE_LENGTHS)) {\n            throw new Error(\"Invalid value length. Valid lengths for the Postnet symbology are \" + this.VALID_CODE_LENGTHS.join(\",\") + \".\");\n        }\n    };\n\n    Postnet.prototype.addPattern = function addPattern (pattern) {\n        var this$1 = this;\n\n        var y1;\n\n        for (var i = 0; i < pattern.length; i++) {\n            y1 = this$1.height - this$1.baseHeight * pattern.charAt(i);\n            this$1.pattern.push({ width: 1, y1: y1, y2: this$1.height });\n            this$1.pattern.push(1);\n        }\n    };\n\n    return Postnet;\n}(Encoding));\n","import { Class } from '../../common';\nimport { Encoding } from './encoding';\nimport deepExtend from '../../common/deep-extend';\nimport inArray from '../../common/in-array';\n\nvar numberRegex = /^\\d+$/;\nvar alphanumericRegex = /^[a-z0-9]+$/i;\nvar extend = Object.assign;\n\nexport var State128 = (function (Class) {\n    function State128(encoding) {\n        Class.call(this);\n        this.encoding = encoding;\n        this.initProperties();\n    }\n\n    if ( Class ) State128.__proto__ = Class;\n    State128.prototype = Object.create( Class && Class.prototype );\n    State128.prototype.constructor = State128;\n\n    State128.prototype.initProperties = function initProperties () { };\n\n    State128.prototype.addStart = function addStart () { };\n\n    State128.prototype.is = function is () { };\n\n    State128.prototype.isCode = function isCode () {\n        return false;\n    };\n\n    State128.prototype.move = function move () { };\n\n    State128.prototype.pushState = function pushState () { };\n\n    return State128;\n}(Class));\n\nexport var State128AB = (function (State128) {\n    function State128AB(encoding, states) {\n        State128.call(this, encoding);\n        this.states = states;\n        this._initMoves(states);\n    }\n\n    if ( State128 ) State128AB.__proto__ = State128;\n    State128AB.prototype = Object.create( State128 && State128.prototype );\n    State128AB.prototype.constructor = State128AB;\n\n    State128AB.prototype.initProperties = function initProperties () {\n        State128.prototype.initProperties.call(this);\n\n        deepExtend(this, {\n            FNC4: \"FNC4\",\n            SHIFT: 98\n        });\n    };\n\n    State128AB.prototype.addStart = function addStart () {\n        this.encoding.addPattern(this.START);\n    };\n\n    State128AB.prototype.is = function is (value, index) {\n        var code = value.charCodeAt(index);\n        return this.isCode(code);\n    };\n\n    State128AB.prototype.move = function move (encodingState) {\n        var idx = 0;\n\n        while (!this._moves[idx].call(this, encodingState) && idx < this._moves.length) {\n            idx++;\n        }\n    };\n\n    State128AB.prototype.pushState = function pushState (encodingState) {\n        var this$1 = this;\n\n        var states = this.states,\n            value = encodingState.value,\n            maxLength = value.length,\n            code;\n\n        if (inArray(\"C\", states)) {\n            var numberMatch = value.substr(encodingState.index).match(/\\d{4,}/g);\n\n            if (numberMatch) {\n                maxLength = value.indexOf(numberMatch[0], encodingState.index);\n            }\n        }\n\n        while ((code = encodingState.value.charCodeAt(encodingState.index)) >= 0 &&\n            this.isCode(code) &&\n            encodingState.index < maxLength) {\n            this$1.encoding.addPattern(this$1.getValue(code));\n            encodingState.index++;\n        }\n    };\n\n    State128AB.prototype._initMoves = function _initMoves (states) {\n        this._moves = [];\n\n        if (inArray(this.FNC4, states)) {\n            this._moves.push(this._moveFNC);\n        }\n\n        if (inArray(this.shiftKey, states)) {\n            this._moves.push(this._shiftState);\n        }\n\n        this._moves.push(this._moveState);\n    };\n\n    State128AB.prototype._moveFNC = function _moveFNC (encodingState) {\n        if (encodingState.fnc) {\n            encodingState.fnc = false;\n            return encodingState.previousState === this.key;\n        }\n    };\n\n    State128AB.prototype._shiftState = function _shiftState (encodingState) {\n        if (encodingState.previousState === this.shiftKey &&\n            (encodingState.index + 1 >= encodingState.value.length ||\n                this.encoding[this.shiftKey].is(encodingState.value, encodingState.index + 1))) {\n            this.encoding.addPattern(this.SHIFT);\n            encodingState.shifted = true;\n            return true;\n        }\n    };\n\n    State128AB.prototype._moveState = function _moveState () {\n        this.encoding.addPattern(this.MOVE);\n        return true;\n    };\n\n    return State128AB;\n}(State128));\n\nvar states128 = {};\n\nstates128.A = (function (State128AB) {\n    function State128A () {\n        State128AB.apply(this, arguments);\n    }\n\n    if ( State128AB ) State128A.__proto__ = State128AB;\n    State128A.prototype = Object.create( State128AB && State128AB.prototype );\n    State128A.prototype.constructor = State128A;\n\n    State128A.prototype.initProperties = function initProperties () {\n        State128AB.prototype.initProperties.call(this);\n\n        extend(this, {\n            key: \"A\",\n            shiftKey: \"B\",\n            MOVE: 101,\n            START: 103\n        });\n    };\n\n    State128A.prototype.isCode = function isCode (code) {\n        return 0 <= code && code < 96;\n    };\n\n    State128A.prototype.getValue = function getValue (code) {\n        if (code < 32) {\n            return code + 64;\n        }\n\n        return code - 32;\n    };\n\n    return State128A;\n}(State128AB));\n\nstates128.B = (function (State128AB) {\n    function State128B () {\n        State128AB.apply(this, arguments);\n    }\n\n    if ( State128AB ) State128B.__proto__ = State128AB;\n    State128B.prototype = Object.create( State128AB && State128AB.prototype );\n    State128B.prototype.constructor = State128B;\n\n    State128B.prototype.initProperties = function initProperties () {\n        State128AB.prototype.initProperties.call(this);\n\n        extend(this, {\n            key: \"B\",\n            shiftKey: \"A\",\n            MOVE: 100,\n            START: 104\n        });\n    };\n\n    State128B.prototype.isCode = function isCode (code) {\n        return 32 <= code && code < 128;\n    };\n\n    State128B.prototype.getValue = function getValue (code) {\n        return code - 32;\n    };\n\n    return State128B;\n}(State128AB));\n\nstates128.C = (function (State128) {\n    function State128C () {\n        State128.apply(this, arguments);\n    }\n\n    if ( State128 ) State128C.__proto__ = State128;\n    State128C.prototype = Object.create( State128 && State128.prototype );\n    State128C.prototype.constructor = State128C;\n\n    State128C.prototype.initProperties = function initProperties () {\n        State128.prototype.initProperties.call(this);\n\n        extend(this, {\n            key: \"C\",\n            MOVE: 99,\n            START: 105\n        });\n    };\n\n    State128C.prototype.addStart = function addStart () {\n        this.encoding.addPattern(this.START);\n    };\n\n    State128C.prototype.is = function is (value, index) {\n        var next4 = getSubstring(value, index, 4);\n        return (index + 4 <= value.length || value.length === 2) && numberRegex.test(next4);\n    };\n\n    State128C.prototype.move = function move () {\n        this.encoding.addPattern(this.MOVE);\n    };\n\n    State128C.prototype.pushState = function pushState (encodingState) {\n        var this$1 = this;\n\n        var code;\n\n        while ((code = getSubstring(encodingState.value, encodingState.index, 2)) &&\n            numberRegex.test(code) && code.length === 2) {\n            this$1.encoding.addPattern(parseInt(code, 10));\n            encodingState.index += 2;\n        }\n    };\n\n    State128C.prototype.getValue = function getValue (code) {\n        return code;\n    };\n\n    return State128C;\n}(State128));\n\nstates128.FNC4 = (function (State128) {\n    function State128FNC4(encoding, states) {\n        State128.call(this, encoding);\n        this._initSubStates(states);\n    }\n\n    if ( State128 ) State128FNC4.__proto__ = State128;\n    State128FNC4.prototype = Object.create( State128 && State128.prototype );\n    State128FNC4.prototype.constructor = State128FNC4;\n\n    State128FNC4.prototype.initProperties = function initProperties () {\n        State128.prototype.initProperties.call(this);\n\n        extend(this, {\n            key: \"FNC4\",\n            dependentStates: [\"A\", \"B\"]\n        });\n    };\n\n    State128FNC4.prototype.addStart = function addStart (encodingState) {\n        var code = encodingState.value.charCodeAt(0) - 128,\n            subState = this._getSubState(code);\n\n        this.encoding[subState].addStart();\n    };\n\n    State128FNC4.prototype.is = function is (value, index) {\n        var code = value.charCodeAt(index);\n        return this.isCode(code);\n    };\n\n    State128FNC4.prototype.isCode = function isCode (code) {\n        return 128 <= code && code < 256;\n    };\n\n    State128FNC4.prototype.pushState = function pushState (encodingState) {\n        var this$1 = this;\n\n        var subState = this._initSubState(encodingState),\n            encoding = this.encoding,\n            length = subState.value.length;\n        var code;\n\n        encodingState.index += length;\n\n        if (length < 3) {\n            for (; subState.index < length; subState.index++) {\n                code = subState.value.charCodeAt(subState.index);\n                subState.state = this$1._getSubState(code);\n\n                if (subState.previousState !== subState.state) {\n                    subState.previousState = subState.state;\n                    encoding[subState.state].move(subState);\n                }\n\n                encoding.addPattern(encoding[subState.state].MOVE);\n                encoding.addPattern(encoding[subState.state].getValue(code));\n            }\n        } else {\n            if (subState.state !== subState.previousState) {\n                encoding[subState.state].move(subState);\n            }\n\n            this._pushStart(subState);\n            encoding.pushData(subState, this.subStates);\n\n            if (encodingState.index < encodingState.value.length) {\n                this._pushStart(subState);\n            }\n        }\n\n        encodingState.fnc = true;\n        encodingState.state = subState.state;\n    };\n\n    State128FNC4.prototype._pushStart = function _pushStart (subState) {\n        this.encoding.addPattern(this.encoding[subState.state].MOVE);\n        this.encoding.addPattern(this.encoding[subState.state].MOVE);\n    };\n\n    State128FNC4.prototype._initSubState = function _initSubState (encodingState) {\n        var subState = {\n            value: this._getAll(encodingState.value, encodingState.index),\n            index: 0\n        };\n\n        subState.state = this._getSubState(subState.value.charCodeAt(0));\n        subState.previousState = encodingState.previousState === this.key ?\n            subState.state :\n            encodingState.previousState;\n\n        return subState;\n    };\n\n    State128FNC4.prototype._initSubStates = function _initSubStates (states) {\n        var this$1 = this;\n\n        this.subStates = [];\n\n        for (var i = 0; i < states.length; i++) {\n            if (inArray(states[i], this$1.dependentStates)) {\n                this$1.subStates.push(states[i]);\n            }\n        }\n    };\n\n    State128FNC4.prototype._getSubState = function _getSubState (code) {\n        var this$1 = this;\n\n        for (var i = 0; i < this.subStates.length; i++) {\n            if (this$1.encoding[this$1.subStates[i]].isCode(code)) {\n                return this$1.subStates[i];\n            }\n        }\n    };\n\n    State128FNC4.prototype._getAll = function _getAll (value, index) {\n        var code;\n        var result = \"\";\n        var i = index;\n\n        while ((code = value.charCodeAt(i++)) && this.isCode(code)) {\n            result += String.fromCharCode(code - 128);\n        }\n\n        return result;\n    };\n\n    return State128FNC4;\n}(State128));\n\nstates128.FNC1 = (function (State128) {\n    function States128FNC1(encoding, states) {\n        State128.call(this, encoding);\n        this.states = states;\n    }\n\n    if ( State128 ) States128FNC1.__proto__ = State128;\n    States128FNC1.prototype = Object.create( State128 && State128.prototype );\n    States128FNC1.prototype.constructor = States128FNC1;\n\n    States128FNC1.prototype.initProperties = function initProperties () {\n        State128.prototype.initProperties.call(this);\n\n        extend(this, {\n            key: \"FNC1\",\n            startState: \"C\",\n            startAI: \"(\",\n            endAI: \")\",\n            dependentStates: [\"C\", \"B\"],\n            applicationIdentifiers: {\n                \"22\": { max: 29, type: \"alphanumeric\" },\n                \"402\": { length: 17 },\n                \"7004\": { max: 4, type: \"alphanumeric\" },\n                \"242\": { max: 6, type: \"alphanumeric\" },\n                \"8020\": { max: 25, type: \"alphanumeric\" },\n                \"703\": { min: 3, max: 30, type: \"alphanumeric\" },\n                \"8008\": { min: 8, max: 12, type: \"alphanumeric\" },\n                \"253\": { min: 13, max: 17, type: \"alphanumeric\" },\n                \"8003\": { min: 14, max: 30, type: \"alphanumeric\" },\n                multiKey: [{\n                    ids: [\"15\", \"17\", \"8005\", \"8100\"],\n                    ranges: [\n                        [11, 13],\n                        [310, 316],\n                        [320, 336],\n                        [340, 369]\n                    ],\n                    type: { length: 6 }\n                }, {\n                    ids: [\"240\", \"241\", \"250\", \"251\", \"400\", \"401\", \"403\", \"7002\", \"8004\", \"8007\", \"8110\"],\n                    ranges: [[90 - 99]],\n                    type: { max: 30, type: \"alphanumeric\" }\n                }, {\n                    ids: [\"7001\"],\n                    ranges: [[410, 414]],\n                    type: { length: 13 }\n                }, {\n                    ids: [\"10\", \"21\", \"254\", \"420\", \"8002\"],\n                    type: { max: 20, type: \"alphanumeric\" }\n                }, {\n                    ids: [\"00\", \"8006\", \"8017\", \"8018\"],\n                    type: { length: 18 }\n                }, {\n                    ids: [\"01\", \"02\", \"8001\"],\n                    type: { length: 14 }\n                }, {\n                    ids: [\"422\"],\n                    ranges: [\n                        [424, 426]\n                    ],\n                    type: { length: 3 }\n                }, {\n                    ids: [\"20\", \"8102\"],\n                    type: { length: 2 }\n                }, {\n                    ids: [\"30\", \"37\"],\n                    type: { max: 8, type: \"alphanumeric\" }\n                }, {\n                    ids: [\"390\", \"392\"],\n                    type: { max: 15, type: \"alphanumeric\" }\n                }, {\n                    ids: [\"421\", \"423\"],\n                    type: { min: 3, max: 15, type: \"alphanumeric\" }\n                }, {\n                    ids: [\"391\", \"393\"],\n                    type: { min: 3, max: 18, type: \"alphanumeric\" }\n                }, {\n                    ids: [\"7003\", \"8101\"],\n                    type: { length: 10 }\n                }]\n            },\n            START: 102\n        });\n    };\n\n\n    States128FNC1.prototype.addStart = function addStart () {\n        this.encoding[this.startState].addStart();\n    };\n\n    States128FNC1.prototype.is = function is () {\n        return inArray(this.key, this.states);\n    };\n\n    States128FNC1.prototype.pushState = function pushState (encodingState) {\n        var this$1 = this;\n\n        var encoding = this.encoding,\n            value = encodingState.value.replace(/\\s/g, \"\"),\n            regexSeparators = new RegExp(\"[\" + this.startAI + this.endAI + \"]\", \"g\"),\n            index = encodingState.index,\n            subState = {\n                state: this.startState\n            },\n            current,\n            nextStart,\n            separatorLength;\n\n        encoding.addPattern(this.START);\n\n        var trueCondition = true;\n\n        while (trueCondition) {\n            subState.index = 0;\n\n            separatorLength = value.charAt(index) === this$1.startAI ? 2 : 0;\n            current = separatorLength > 0 ? this$1.getBySeparator(value, index) : this$1.getByLength(value, index);\n\n            if (current.ai.length) {\n                nextStart = index + separatorLength + current.id.length + current.ai.length;\n            } else {\n                nextStart = value.indexOf(this$1.startAI, index + 1);\n\n                if (nextStart < 0) {\n                    if (index + current.ai.max + current.id.length + separatorLength < value.length) {\n                        throw new Error(\"Separators are required after variable length identifiers\");\n                    }\n\n                    nextStart = value.length;\n                }\n            }\n\n            subState.value = value.substring(index, nextStart).replace(regexSeparators, \"\");\n            this$1.validate(current, subState.value);\n            encoding.pushData(subState, this$1.dependentStates);\n\n            if (nextStart >= value.length) {\n                break;\n            }\n\n            index = nextStart;\n\n            if (subState.state !== this$1.startState) {\n                encoding[this$1.startState].move(subState);\n                subState.state = this$1.startState;\n            }\n\n            if (!current.ai.length) {\n                encoding.addPattern(this$1.START);\n            }\n        }\n\n        encodingState.index = encodingState.value.length;\n    };\n\n    States128FNC1.prototype.validate = function validate (current, value) {\n        var code = value.substr(current.id.length),\n            ai = current.ai;\n\n        if (!ai.type && !numberRegex.test(code)) {\n            throw new Error(\"Application identifier \" + current.id + \" is numeric only but contains non numeric character(s).\");\n        }\n\n        if (ai.type === \"alphanumeric\" && !alphanumericRegex.test(code)) {\n            throw new Error(\"Application identifier \" + current.id + \" is alphanumeric only but contains non alphanumeric character(s).\");\n        }\n\n        if (ai.length && ai.length !== code.length) {\n            throw new Error(\"Application identifier \" + current.id + \" must be \" + ai.length + \" characters long.\");\n        }\n\n        if (ai.min && ai.min > code.length) {\n            throw new Error(\"Application identifier \" + current.id + \" must be at least \" + ai.min + \" characters long.\");\n        }\n\n        if (ai.max && ai.max < code.length) {\n            throw new Error(\"Application identifier \" + current.id + \" must be at most \" + ai.max + \" characters long.\");\n        }\n    };\n\n    States128FNC1.prototype.getByLength = function getByLength (value, index) {\n        var this$1 = this;\n\n        var id;\n        var applicationIdentifier;\n\n        for (var i = 2; i <= 4; i++) {\n            id = getSubstring(value, index, i);\n            applicationIdentifier = this$1.getApplicationIdentifier(id) || this$1.getApplicationIdentifier(id.substring(0, id.length - 1));\n            if (applicationIdentifier) {\n                return {\n                    id: id,\n                    ai: applicationIdentifier\n                };\n            }\n        }\n        this.unsupportedAIError(id);\n    };\n\n    States128FNC1.prototype.unsupportedAIError = function unsupportedAIError (id) {\n        throw new Error(\"'\" + id + \"' is not a supported Application Identifier\");\n    };\n\n    States128FNC1.prototype.getBySeparator = function getBySeparator (value, index) {\n        var start = value.indexOf(this.startAI, index),\n            end = value.indexOf(this.endAI, start),\n            id = value.substring(start + 1, end),\n            ai = this.getApplicationIdentifier(id) || this.getApplicationIdentifier(id.substr(id.length - 1));\n\n        if (!ai) {\n            this.unsupportedAIError(id);\n        }\n\n        return {\n            ai: ai,\n            id: id\n        };\n    };\n\n    States128FNC1.prototype.getApplicationIdentifier = function getApplicationIdentifier (id) {\n        var applicationIdentifier = this.applicationIdentifiers,\n            multiKey = applicationIdentifier.multiKey;\n\n        if (applicationIdentifier[id]) {\n            return applicationIdentifier[id];\n        }\n\n        for (var i = 0; i < multiKey.length; i++) {\n            if (multiKey[i].ids && inArray(id, multiKey[i].ids)) {\n                return multiKey[i].type;\n            } else if (multiKey[i].ranges) {\n                var ranges = multiKey[i].ranges;\n\n                for (var j = 0; j < ranges.length; j++) {\n                    if (ranges[j][0] <= id && id <= ranges[j][1]) {\n                        return multiKey[i].type;\n                    }\n                }\n            }\n        }\n    };\n\n    return States128FNC1;\n}(State128));\n\nexport var Code128Base = (function (Encoding) {\n    function Code128Base(options) {\n        Encoding.call(this, options);\n        this._initStates();\n    }\n\n    if ( Encoding ) Code128Base.__proto__ = Encoding;\n    Code128Base.prototype = Object.create( Encoding && Encoding.prototype );\n    Code128Base.prototype.constructor = Code128Base;\n\n    Code128Base.prototype.initProperties = function initProperties () {\n        Encoding.prototype.initProperties.call(this);\n\n        extend(this, {\n            characterMap: [\n                212222, 222122, 222221, 121223, 121322, 131222, 122213, 122312, 132212, 221213,\n                221312, 231212, 112232, 122132, 122231, 113222, 123122, 123221, 223211, 221132,\n                221231, 213212, 223112, 312131, 311222, 321122, 321221, 312212, 322112, 322211,\n                212123, 212321, 232121, 111323, 131123, 131321, 112313, 132113, 132311, 211313,\n                231113, 231311, 112133, 112331, 132131, 113123, 113321, 133121, 313121, 211331,\n                231131, 213113, 213311, 213131, 311123, 311321, 331121, 312113, 312311, 332111,\n                314111, 221411, 431111, 111224, 111422, 121124, 121421, 141122, 141221, 112214,\n                112412, 122114, 122411, 142112, 142211, 241211, 221114, 413111, 241112, 134111,\n                111242, 121142, 121241, 114212, 124112, 124211, 411212, 421112, 421211, 212141,\n                214121, 412121, 111143, 111341, 131141, 114113, 114311, 411113, 411311, 113141,\n                114131, 311141, 411131, 211412, 211214, 211232, 2331112\n            ],\n            STOP: 106\n        });\n    };\n\n    Code128Base.prototype._initStates = function _initStates () {\n        var this$1 = this;\n\n        for (var i = 0; i < this.states.length; i++) {\n            this$1[this$1.states[i]] = new states128[this$1.states[i]](this$1, this$1.states);\n        }\n    };\n\n    Code128Base.prototype.initValue = function initValue (value, width, height) {\n        this.pattern = [];\n        this.value = value;\n        this.width = width;\n        this.height = height;\n        this.checkSum = 0;\n        this.totalUnits = 0;\n        this.index = 0;\n        this.position = 1;\n    };\n\n    Code128Base.prototype.addData = function addData () {\n        var encodingState = {\n            value: this.value,\n            index: 0,\n            state: \"\"\n        };\n\n        if (this.value.length === 0) {\n            return;\n        }\n\n        encodingState.state =\n            encodingState.previousState = this.getNextState(encodingState, this.states);\n\n        this.addStart(encodingState);\n\n        this.pushData(encodingState, this.states);\n\n        this.addCheckSum();\n        this.addStop();\n        this.setBaseUnit();\n    };\n\n    Code128Base.prototype.pushData = function pushData (encodingState, states) {\n        var this$1 = this;\n\n        var trueCondition = true;\n\n        while (trueCondition) {\n            this$1[encodingState.state].pushState(encodingState);\n\n            if (encodingState.index >= encodingState.value.length) {\n                break;\n            }\n\n            if (!encodingState.shifted) {\n                encodingState.previousState = encodingState.state;\n                encodingState.state = this$1.getNextState(encodingState, states);\n                this$1[encodingState.state].move(encodingState);\n            } else {\n                var temp = encodingState.state;\n                encodingState.state = encodingState.previousState;\n                encodingState.previousState = temp;\n                encodingState.shifted = false;\n            }\n        }\n    };\n\n    Code128Base.prototype.addStart = function addStart (encodingState) {\n        this[encodingState.state].addStart(encodingState);\n        this.position = 1;\n    };\n\n    Code128Base.prototype.addCheckSum = function addCheckSum () {\n        this.checksum = this.checkSum % 103;\n        this.addPattern(this.checksum);\n    };\n\n    Code128Base.prototype.addStop = function addStop () {\n        this.addPattern(this.STOP);\n    };\n\n    Code128Base.prototype.setBaseUnit = function setBaseUnit () {\n        this.baseUnit = this.width / (this.totalUnits + this.quietZoneLength);\n    };\n\n    Code128Base.prototype.addPattern = function addPattern (code) {\n        var this$1 = this;\n\n        var pattern = this.characterMap[code].toString();\n        var value;\n\n        for (var i = 0; i < pattern.length; i++) {\n            value = parseInt(pattern.charAt(i), 10);\n            this$1.pattern.push(value);\n            this$1.totalUnits += value;\n        }\n        this.checkSum += code * this.position++;\n    };\n\n    Code128Base.prototype.getNextState = function getNextState (encodingState, states) {\n        var this$1 = this;\n\n        for (var i = 0; i < states.length; i++) {\n            if (this$1[states[i]].is(encodingState.value, encodingState.index)) {\n                return states[i];\n            }\n        }\n\n        this.invalidCharacterError(encodingState.value.charAt(encodingState.index));\n    };\n\n    return Code128Base;\n}(Encoding));\n\nexport var Code128a = (function (Code128Base) {\n    function Code128a () {\n        Code128Base.apply(this, arguments);\n    }\n\n    if ( Code128Base ) Code128a.__proto__ = Code128Base;\n    Code128a.prototype = Object.create( Code128Base && Code128Base.prototype );\n    Code128a.prototype.constructor = Code128a;\n\n    Code128a.prototype.initProperties = function initProperties () {\n        Code128Base.prototype.initProperties.call(this);\n\n        extend(this, {\n            name: \"Code 128 A\",\n            states: [\"A\"]\n        });\n    };\n\n    return Code128a;\n}(Code128Base));\n\nexport var Code128b = (function (Code128Base) {\n    function Code128b () {\n        Code128Base.apply(this, arguments);\n    }\n\n    if ( Code128Base ) Code128b.__proto__ = Code128Base;\n    Code128b.prototype = Object.create( Code128Base && Code128Base.prototype );\n    Code128b.prototype.constructor = Code128b;\n\n    Code128b.prototype.initProperties = function initProperties () {\n        Code128Base.prototype.initProperties.call(this);\n\n        extend(this, {\n            name: \"Code 128 B\",\n            states: [\"B\"]\n        });\n    };\n\n    return Code128b;\n}(Code128Base));\n\nexport var Code128c = (function (Code128Base) {\n    function Code128c () {\n        Code128Base.apply(this, arguments);\n    }\n\n    if ( Code128Base ) Code128c.__proto__ = Code128Base;\n    Code128c.prototype = Object.create( Code128Base && Code128Base.prototype );\n    Code128c.prototype.constructor = Code128c;\n\n    Code128c.prototype.initProperties = function initProperties () {\n        Code128Base.prototype.initProperties.call(this);\n\n        extend(this, {\n            name: \"Code 128 C\",\n            states: [\"C\"]\n        });\n    };\n\n    return Code128c;\n}(Code128Base));\n\nexport var Code128 = (function (Code128Base) {\n    function Code128 () {\n        Code128Base.apply(this, arguments);\n    }\n\n    if ( Code128Base ) Code128.__proto__ = Code128Base;\n    Code128.prototype = Object.create( Code128Base && Code128Base.prototype );\n    Code128.prototype.constructor = Code128;\n\n    Code128.prototype.initProperties = function initProperties () {\n        Code128Base.prototype.initProperties.call(this);\n\n        extend(this, {\n            name: \"Code 128\",\n            states: [\"C\", \"B\", \"A\", \"FNC4\"]\n        });\n    };\n\n    return Code128;\n}(Code128Base));\n\nexport var CodeGS1128 = (function (Code128Base) {\n    function CodeGS1128 () {\n        Code128Base.apply(this, arguments);\n    }\n\n    if ( Code128Base ) CodeGS1128.__proto__ = Code128Base;\n    CodeGS1128.prototype = Object.create( Code128Base && Code128Base.prototype );\n    CodeGS1128.prototype.constructor = CodeGS1128;\n\n    CodeGS1128.prototype.initProperties = function initProperties () {\n        Code128Base.prototype.initProperties.call(this);\n\n        extend(this, {\n            name: \"Code GS1-128\",\n            states: [\"FNC1\", \"C\", \"B\"]\n        });\n    };\n\n    return CodeGS1128;\n}(Code128Base));\n\nfunction getSubstring(value, index, count) {\n    return value.substring(index, index + count);\n}\n","import { Encoding } from './encoding';\n\nvar extend = Object.assign;\n\nexport var MsiBase = (function (Encoding) {\n    function MsiBase () {\n        Encoding.apply(this, arguments);\n    }\n\n    if ( Encoding ) MsiBase.__proto__ = Encoding;\n    MsiBase.prototype = Object.create( Encoding && Encoding.prototype );\n    MsiBase.prototype.constructor = MsiBase;\n\n    MsiBase.prototype.initProperties = function initProperties () {\n        Encoding.prototype.initProperties.call(this);\n\n        extend(this, {\n            characterMap: [\n                \"12121212\",\n                \"12121221\",\n                \"12122112\",\n                \"12122121\",\n                \"12211212\",\n                \"12211221\",\n                \"12212112\",\n                \"12212121\",\n                \"21121212\",\n                \"21121221\"\n            ],\n            START: \"21\",\n            STOP: \"121\",\n            checkSumType: \"\",\n            checkSums: checkSums\n        });\n    };\n\n    MsiBase.prototype.initValue = function initValue (value, width) {\n        this.pattern = [];\n        this.value = value;\n        this.checkSumLength = 0;\n        this.width = width;\n    };\n\n    MsiBase.prototype.setBaseUnit = function setBaseUnit () {\n        var startStopLength = 7;\n\n        this.baseUnit = this.width /\n            (12 * (this.value.length + this.checkSumLength) + this.quietZoneLength + startStopLength);\n    };\n\n    MsiBase.prototype.addData = function addData () {\n        var this$1 = this;\n\n        var value = this.value;\n\n        this.addPattern(this.START);\n\n        for (var i = 0; i < value.length; i++) {\n            this$1.addCharacter(value.charAt(i));\n        }\n\n        if (this.options.addCheckSum) {\n            this.addCheckSum();\n        }\n\n        this.addPattern(this.STOP);\n        this.setBaseUnit();\n    };\n\n    MsiBase.prototype.addCharacter = function addCharacter (character) {\n        var pattern = this.characterMap[character];\n\n        if (!pattern) {\n            this.invalidCharacterError(character);\n        }\n\n        this.addPattern(pattern);\n    };\n\n    MsiBase.prototype.addPattern = function addPattern (pattern) {\n        var this$1 = this;\n\n        for (var i = 0; i < pattern.length; i++) {\n            this$1.pattern.push(parseInt(pattern.charAt(i), 10));\n        }\n    };\n\n    MsiBase.prototype.addCheckSum = function addCheckSum () {\n        var this$1 = this;\n\n        var checkSumFunction = this.checkSums[this.checkSumType];\n        var checkValues = checkSumFunction.call(this.checkSums, this.value);\n\n        this.checksum = checkValues.join(\"\");\n\n        for (var i = 0; i < checkValues.length; i++) {\n            this$1.checkSumLength++;\n            this$1.addPattern(this$1.characterMap[checkValues[i]]);\n        }\n    };\n\n    return MsiBase;\n}(Encoding));\n\nexport var MsiMod10 = (function (MsiBase) {\n    function MsiMod10 () {\n        MsiBase.apply(this, arguments);\n    }\n\n    if ( MsiBase ) MsiMod10.__proto__ = MsiBase;\n    MsiMod10.prototype = Object.create( MsiBase && MsiBase.prototype );\n    MsiMod10.prototype.constructor = MsiMod10;\n\n    MsiMod10.prototype.initProperties = function initProperties () {\n        MsiBase.prototype.initProperties.call(this);\n\n        extend(this, {\n            name: \"MSI Modulo10\",\n            checkSumType: \"Modulo10\"\n        });\n    };\n\n    return MsiMod10;\n}(MsiBase));\n\nexport var MsiMod11 = (function (MsiBase) {\n    function MsiMod11 () {\n        MsiBase.apply(this, arguments);\n    }\n\n    if ( MsiBase ) MsiMod11.__proto__ = MsiBase;\n    MsiMod11.prototype = Object.create( MsiBase && MsiBase.prototype );\n    MsiMod11.prototype.constructor = MsiMod11;\n\n    MsiMod11.prototype.initProperties = function initProperties () {\n        MsiBase.prototype.initProperties.call(this);\n\n        extend(this, {\n            name: \"MSI Modulo11\",\n            checkSumType: \"Modulo11\"\n        });\n    };\n\n    return MsiMod11;\n}(MsiBase));\n\nexport var MsiMod1010 = (function (MsiBase) {\n    function MsiMod1010 () {\n        MsiBase.apply(this, arguments);\n    }\n\n    if ( MsiBase ) MsiMod1010.__proto__ = MsiBase;\n    MsiMod1010.prototype = Object.create( MsiBase && MsiBase.prototype );\n    MsiMod1010.prototype.constructor = MsiMod1010;\n\n    MsiMod1010.prototype.initProperties = function initProperties () {\n        MsiBase.prototype.initProperties.call(this);\n\n        extend(this, {\n            name: \"MSI Modulo10 Modulo10\",\n            checkSumType: \"Modulo10Modulo10\"\n        });\n    };\n\n    return MsiMod1010;\n}(MsiBase));\n\nexport var MsiMod1110 = (function (MsiBase) {\n    function MsiMod1110 () {\n        MsiBase.apply(this, arguments);\n    }\n\n    if ( MsiBase ) MsiMod1110.__proto__ = MsiBase;\n    MsiMod1110.prototype = Object.create( MsiBase && MsiBase.prototype );\n    MsiMod1110.prototype.constructor = MsiMod1110;\n\n    MsiMod1110.prototype.initProperties = function initProperties () {\n        MsiBase.prototype.initProperties.call(this);\n\n        extend(this, {\n            name: \"MSI Modulo11 Modulo10\",\n            checkSumType: \"Modulo11Modulo10\"\n        });\n    };\n\n    return MsiMod1110;\n}(MsiBase));\n\nvar checkSums = {\n    Modulo10: function Modulo10(value) {\n        var checkValues = [0, \"\"],\n            odd = value.length % 2,\n            idx,\n            evenSum,\n            oddSum;\n\n        for (idx = 0; idx < value.length; idx++) {\n            checkValues[(idx + odd) % 2] += parseInt(value.charAt(idx), 10);\n        }\n\n        oddSum = checkValues[0];\n        evenSum = (checkValues[1] * 2).toString();\n\n        for (idx = 0; idx < evenSum.length; idx++) {\n            oddSum += parseInt(evenSum.charAt(idx), 10);\n        }\n\n        return [(10 - (oddSum % 10)) % 10];\n    },\n    Modulo11: function Modulo11(value) {\n        var weightedSum = 0,\n            mod = 11,\n            length = value.length,\n            weight,\n            checkValue;\n\n        for (var i = 0; i < length; i++) {\n            weight = ((length - i) % 6 || 6) + 1;\n            weightedSum += weight * value.charAt(i);\n        }\n\n        checkValue = (mod - weightedSum % mod) % mod;\n\n        if (checkValue !== 10) {\n            return [checkValue];\n        }\n\n        return [1, 0];\n    },\n    Modulo11Modulo10: function Modulo11Modulo10(value) {\n        var checkValues = this.Modulo11(value),\n            mod11Value;\n        mod11Value = value + checkValues[0];\n\n        return checkValues.concat(this.Modulo10(mod11Value));\n    },\n    Modulo10Modulo10: function Modulo10Modulo10(value) {\n        var checkValues = this.Modulo10(value),\n            mod10Value;\n        mod10Value = value + checkValues[0];\n\n        return checkValues.concat(this.Modulo10(mod10Value));\n    }\n};\n","import { Encoding } from './encoding';\n\nvar extend = Object.assign;\n\nexport var Ean13 = (function (Encoding) {\n    function Ean13 () {\n        Encoding.apply(this, arguments);\n    }\n\n    if ( Encoding ) Ean13.__proto__ = Encoding;\n    Ean13.prototype = Object.create( Encoding && Encoding.prototype );\n    Ean13.prototype.constructor = Ean13;\n\n    Ean13.prototype.initProperties = function initProperties () {\n        Encoding.prototype.initProperties.call(this);\n\n        extend(this, {\n            name: \"EAN 13\",\n            keyTable: [\n                '000000',\n                '001011',\n                '001101',\n                '001110',\n                '010011',\n                '011001',\n                '011100',\n                '010101',\n                '010110',\n                '011010'\n            ],\n            characterMap: {\n                digits: [\n                    [3, 2, 1, 1],\n                    [2, 2, 2, 1],\n                    [2, 1, 2, 2],\n                    [1, 4, 1, 1],\n                    [1, 1, 3, 2],\n                    [1, 2, 3, 1],\n                    [1, 1, 1, 4],\n                    [1, 3, 1, 2],\n                    [1, 2, 1, 3],\n                    [3, 1, 1, 2]\n                ],\n                start: [1, 1, 1],\n                middle: [1, 1, 1, 1, 1]\n            }\n        });\n    };\n\n    Ean13.prototype.initValue = function initValue (value, width, height) {\n        var valueAsString = String(value);\n\n        if (valueAsString.length !== 12 || /\\D/.test(valueAsString)) {\n            throw new Error('The value of the \"EAN13\" encoding should be 12 symbols');\n        }\n\n        this.pattern = [];\n        this.options.height = height;\n        this.baseUnit = width / (95 + this.quietZoneLength);\n        this.value = valueAsString;\n        this.checksum = this.calculateChecksum();\n        this.leftKey = valueAsString[0];\n        this.leftPart = valueAsString.substr(1, 6);\n        this.rightPart = valueAsString.substr(7) + this.checksum;\n    };\n\n    Ean13.prototype.addData = function addData () {\n        this.addPieces(this.characterMap.start);\n        this.addSide(this.leftPart, this.leftKey);\n        this.addPieces(this.characterMap.middle);\n        this.addSide(this.rightPart);\n        this.addPieces(this.characterMap.start);\n    };\n\n    Ean13.prototype.addSide = function addSide (leftPart, key) {\n        var this$1 = this;\n\n        for (var i = 0; i < leftPart.length; i++) {\n            if (key && parseInt(this$1.keyTable[key].charAt(i), 10)) {\n                this$1.addPieces(Array.prototype.slice.call(this$1.characterMap.digits[leftPart.charAt(i)]).reverse(), true);\n            } else {\n                this$1.addPieces(this$1.characterMap.digits[leftPart.charAt(i)], true);\n            }\n        }\n    };\n\n    Ean13.prototype.addPieces = function addPieces (arrToAdd, limitedHeight) {\n        var this$1 = this;\n\n        for (var i = 0; i < arrToAdd.length; i++) {\n            if (limitedHeight) {\n                this$1.pattern.push({\n                    y1: 0,\n                    y2: this$1.options.height * 0.95,\n                    width: arrToAdd[i]\n                });\n            } else {\n                this$1.pattern.push(arrToAdd[i]);\n            }\n        }\n    };\n\n    Ean13.prototype.calculateChecksum = function calculateChecksum () {\n        var odd = 0,\n            even = 0,\n            value = this.value.split(\"\").reverse().join(\"\");\n\n        for (var i = 0; i < value.length; i++) {\n            if (i % 2) {\n                even += parseInt(value.charAt(i), 10);\n            } else {\n                odd += parseInt(value.charAt(i), 10);\n            }\n        }\n\n        var checksum = (10 - ((3 * odd + even) % 10)) % 10;\n\n        return checksum;\n    };\n\n    return Ean13;\n}(Encoding));\n","import { Ean13 } from './ean13';\n\nvar extend = Object.assign;\n\nexport var Ean8 = (function (Ean13) {\n    function Ean8 () {\n        Ean13.apply(this, arguments);\n    }\n\n    if ( Ean13 ) Ean8.__proto__ = Ean13;\n    Ean8.prototype = Object.create( Ean13 && Ean13.prototype );\n    Ean8.prototype.constructor = Ean8;\n\n    Ean8.prototype.initProperties = function initProperties () {\n        Ean13.prototype.initProperties.call(this);\n\n        extend(this, {\n            name: \"EAN 8\"\n        });\n    };\n\n    Ean8.prototype.initValue = function initValue (value, width, height) {\n        if (value.length !== 7 || /\\D/.test(value)) {\n            throw new Error('Invalid value provided');\n        }\n\n        this.value = value;\n        this.options.height = height;\n        this.checksum = this.calculateChecksum(this.value);\n        this.leftPart = this.value.substr(0, 4);\n        this.rightPart = this.value.substr(4) + this.checksum;\n        this.pattern = [];\n        this.baseUnit = width / (67 + this.quietZoneLength);\n    };\n\n    return Ean8;\n}(Ean13));\n","import { Code11 } from './code11';\nimport { Code39 } from './code39';\nimport { Code39Extended } from './code39-extended';\nimport { Code93 } from './code93';\nimport { Code93Extended } from './code93-extended';\nimport { Postnet } from './postnet';\n\nimport {\n    Code128,\n    Code128a,\n    Code128b,\n    Code128c,\n    CodeGS1128\n} from './code128';\n\nimport {\n    MsiMod10,\n    MsiMod11,\n    MsiMod1010,\n    MsiMod1110\n} from './msi';\n\nimport { Ean8 } from './ean8';\nimport { Ean13 } from './ean13';\n\nexport var Encodings = {\n    code11: Code11,\n\n    code39: Code39,\n    code39extended: Code39Extended,\n\n    code93: Code93,\n    code93extended: Code93Extended,\n\n    code128: Code128,\n    code128a: Code128a,\n    code128b: Code128b,\n    code128c: Code128c\n};\nEncodings[\"gs1-128\"] = CodeGS1128;\nEncodings.msimod10 = MsiMod10;\nEncodings.msimod11 = MsiMod11;\nEncodings.msimod1010 = MsiMod1010;\nEncodings.msimod1110 = MsiMod1110;\nEncodings.postnet = Postnet;\nEncodings.ean8 = Ean8;\nEncodings.ean13 = Ean13;\n","export function surfaceSize(element, surfaceType) {\n    var display = element.style.display;\n    if (surfaceType === 'canvas') {\n        // The Canvas default size is different from SVG for\n        // inline-block containers such as the Barcode and QR Code.\n        //\n        // Switch to display: block to get same dimensions.\n        element.style.display = 'block';\n    }\n\n    var size = {\n        width: element.clientWidth,\n        height: element.clientHeight\n    };\n\n    element.style.display = display;\n\n    return size;\n}\n","import {\n    geometry as geom,\n    drawing as draw\n} from '@progress/kendo-drawing';\n\nimport {\n    Class,\n    defined,\n    addClass,\n    setDefaultOptions,\n    deepExtend,\n    getSpacing,\n    isObject,\n    defaultErrorHandler\n} from '../common';\n\nimport {\n    Box,\n    TextBox\n} from '../core';\n\nimport { Encodings } from './encodings/main';\nimport { surfaceSize } from './surface-size';\n\nvar DEFAULT_BARCODE_WIDTH = 300;\nvar DEFAULT_BARCODE_HEIGHT = 100;\n\nvar Barcode = (function (Class) {\n    function Barcode(element, options, errorHandler) {\n        if ( errorHandler === void 0 ) errorHandler = defaultErrorHandler;\n\n        Class.call(this);\n\n        this.options = deepExtend({}, this.options, options);\n        this.element = element;\n        this.onError = errorHandler;\n\n        this._initElement();\n        this._initSurface();\n        this._setOptions(options);\n\n        if (options && defined(options.value)) {\n            this.redraw();\n        }\n    }\n\n    if ( Class ) Barcode.__proto__ = Class;\n    Barcode.prototype = Object.create( Class && Class.prototype );\n    Barcode.prototype.constructor = Barcode;\n\n    Barcode.prototype.destroy = function destroy () {\n        this._destroySurface();\n    };\n\n    Barcode.prototype._initElement = function _initElement () {\n        addClass(this.element, \"k-barcode\");\n    };\n\n    Barcode.prototype._initSurface = function _initSurface () {\n        var ref = this;\n        var options = ref.options;\n        var surface = ref.surface;\n\n        if (!surface || surface.options.type !== options.renderAs) {\n            this._destroySurface();\n            this._initSurfaceElement();\n            this.surface = this._createSurface();\n        }\n    };\n\n    Barcode.prototype._createSurface = function _createSurface () {\n        return draw.Surface.create(this.surfaceElement, {\n            type: this.options.renderAs\n        });\n    };\n\n    Barcode.prototype._destroySurface = function _destroySurface () {\n        if (this.surface) {\n            this.surface.destroy();\n            this.surface = null;\n            this._destroySurfaceElement();\n        }\n    };\n\n    Barcode.prototype._initSurfaceElement = function _initSurfaceElement () {\n        if (!this.surfaceElement) {\n            this.surfaceElement = document.createElement('div');\n            this.surfaceElement.style.position = 'relative';\n            this.element.appendChild(this.surfaceElement);\n        }\n    };\n\n    Barcode.prototype._destroySurfaceElement = function _destroySurfaceElement () {\n        if (this.surfaceElement && this.surfaceElement.parentNode) {\n            this.surfaceElement.parentNode.removeChild(this.surfaceElement);\n            this.surfaceElement = null;\n        }\n    };\n\n    Barcode.prototype.setOptions = function setOptions (options) {\n        this._setOptions(options);\n        this._initSurface();\n        this.redraw();\n    };\n\n    Barcode.prototype.redraw = function redraw () {\n        var size = this._getSize();\n\n        this.surface.clear();\n\n        this.surface.setSize({\n            width: size.width,\n            height: size.height\n        });\n\n        this.createVisual();\n\n        this.surface.draw(this.visual);\n    };\n\n    Barcode.prototype.getSize = function getSize () {\n        return {\n            width: this.element.offsetWidth,\n            height: this.element.offsetHeight\n        };\n    };\n\n    Barcode.prototype._resize = function _resize () {\n        this.redraw();\n    };\n\n    Barcode.prototype.createVisual = function createVisual () {\n        this.visual = this._render();\n    };\n\n    Barcode.prototype._render = function _render () {\n        var options = this.options;\n        var value = options.value;\n        var textOptions = options.text;\n        var textMargin = getSpacing(textOptions.margin);\n        var size = this._getSize();\n        var border = options.border || {};\n        var encoding = this.encoding;\n        var contentBox = new Box(0, 0, size.width, size.height).unpad(border.width).unpad(options.padding);\n        var barHeight = contentBox.height();\n        var encodedValue;\n        var textToDisplay;\n        var textHeight;\n        var visual = new draw.Group();\n\n        this.contentBox = contentBox;\n        visual.append(this._getBackground(size));\n\n        if (textOptions.visible) {\n            textHeight = draw.util.measureText(value, { font: textOptions.font }).height;\n            barHeight -= textHeight + textMargin.top + textMargin.bottom;\n        }\n\n        try {\n            encodedValue = encoding.encode(value, contentBox.width(), barHeight);\n        } catch (error) {\n            this.onError(error);\n            return visual;\n        }\n\n        if (textOptions.visible) {\n            textToDisplay = value;\n\n            if (options.checksum && defined(encoding.checksum)) {\n                textToDisplay += \" \" + encoding.checksum;\n            }\n\n            visual.append(this._getText(textToDisplay));\n        }\n\n        this.barHeight = barHeight;\n        this._bandsGroup = this._getBands(encodedValue.pattern, encodedValue.baseUnit);\n        visual.append(this._bandsGroup);\n\n        return visual;\n    };\n\n    Barcode.prototype.exportVisual = function exportVisual () {\n        return this._render();\n    };\n\n    Barcode.prototype._getSize = function _getSize () {\n        var element = this.element;\n        var elementSize = surfaceSize(element, this.options.renderAs);\n        var size = new geom.Size(DEFAULT_BARCODE_WIDTH, DEFAULT_BARCODE_HEIGHT);\n\n        if (elementSize.width > 0) {\n            size.width = elementSize.width;\n        }\n\n        if (elementSize.height > 0) {\n            size.height = elementSize.height;\n        }\n\n        if (this.options.width) {\n            size.width = this.options.width;\n        }\n\n        if (this.options.height) {\n            size.height = this.options.height;\n        }\n\n        return size;\n    };\n\n    Barcode.prototype.value = function value (value$1) {\n        if (!defined(value$1)) {\n            return this.options.value;\n        }\n\n        this.options.value = String(value$1);\n        this.redraw();\n    };\n\n    Barcode.prototype._getBands = function _getBands (pattern, baseUnit) {\n        var this$1 = this;\n\n        var contentBox = this.contentBox;\n        var offsetX = contentBox.x1;\n        var stepX;\n        var patternItem;\n        var group = new draw.Group();\n\n        for (var i = 0; i < pattern.length; i++) {\n            patternItem = isObject(pattern[i]) ? pattern[i] : {\n                width: pattern[i],\n                y1: 0,\n                y2: this$1.barHeight\n            };\n\n            stepX = patternItem.width * baseUnit;\n\n            if (i % 2) {\n                var rect = geom.Rect.fromPoints(\n                    new geom.Point(offsetX, patternItem.y1 + contentBox.y1),\n                    new geom.Point(offsetX + stepX, patternItem.y2 + contentBox.y1)\n                );\n\n                var path = draw.Path.fromRect(rect, {\n                    fill: {\n                        color: this$1.options.color\n                    },\n                    stroke: null\n                });\n\n                group.append(path);\n            }\n\n            offsetX += stepX;\n        }\n\n        return group;\n    };\n\n    Barcode.prototype._getBackground = function _getBackground (size) {\n        var options = this.options;\n        var border = options.border || {};\n        var box = new Box(0, 0, size.width, size.height).unpad(border.width / 2);\n        var path = draw.Path.fromRect(box.toRect(), {\n            fill: {\n                color: options.background\n            },\n            stroke: {\n                color: border.width ? border.color : \"\",\n                width: border.width,\n                dashType: border.dashType\n            }\n        });\n\n        return path;\n    };\n\n    Barcode.prototype._getText = function _getText (value) {\n        var textOptions = this.options.text;\n        var text = this._textbox = new TextBox(value, {\n            font: textOptions.font,\n            color: textOptions.color,\n            align: \"center\",\n            vAlign: \"bottom\",\n            margin: textOptions.margin\n        });\n\n        text.reflow(this.contentBox);\n        text.renderVisual();\n\n        return text.visual;\n    };\n\n    Barcode.prototype._setOptions = function _setOptions (options) {\n        this.type = (options.type || this.options.type).toLowerCase();\n\n        if (this.type === \"upca\") {\n            this.type = \"ean13\";\n            options.value = '0' + options.value;\n        }\n\n        if (this.type === \"upce\") {\n            this.type = \"ean8\";\n            options.value = '0' + options.value;\n        }\n\n        if (!Encodings[this.type]) {\n            throw new Error((\"Encoding '\" + (this.type) + \"' is not supported.\"));\n        }\n\n        this.encoding = new Encodings[this.type]();\n\n        this.options = deepExtend({}, this.options, options);\n    };\n\n    return Barcode;\n}(Class));\n\nsetDefaultOptions(Barcode, {\n    name: \"Barcode\",\n    renderAs: \"svg\",\n    value: \"\",\n    type: \"code39\",\n    checksum: false,\n    width: 0,\n    height: 0,\n    color: \"black\",\n    background: \"white\",\n    text: {\n        visible: true,\n        font: \"16px Consolas, Monaco, Sans Mono, monospace, sans-serif\",\n        color: \"black\",\n        margin: {\n            top: 0,\n            bottom: 0,\n            left: 0,\n            right: 0\n        }\n    },\n    border: {\n        width: 0,\n        dashType: \"solid\",\n        color: \"black\"\n    },\n    padding: {\n        top: 0,\n        bottom: 0,\n        left: 0,\n        right: 0\n    }\n});\n\nexport default Barcode;\n","import withGeometry from '../mixins/with-geometry';\nimport Element from './element';\nimport Rect from '../geometry/rect';\nimport toMatrix from '../geometry/to-matrix';\nimport { defined } from '../util';\n\n\nvar Image = (function (superclass) {\n    function Image(src, rect, options) {\n        if ( rect === void 0 ) rect = new Rect();\n        if ( options === void 0 ) options = {};\n\n        superclass.call(this, options);\n\n        this.src(src);\n        this.rect(rect);\n    }\n\n    if ( superclass ) Image.__proto__ = superclass;\n    Image.prototype = Object.create( superclass && superclass.prototype );\n    Image.prototype.constructor = Image;\n\n    var prototypeAccessors = { nodeType: { configurable: true } };\n\n    prototypeAccessors.nodeType.get = function () {\n        return \"Image\";\n    };\n\n    Image.prototype.src = function src (value) {\n        if (defined(value)) {\n            this.options.set(\"src\", value);\n            return this;\n        }\n\n        return this.options.get(\"src\");\n    };\n\n    Image.prototype.bbox = function bbox (transformation) {\n        var combinedMatrix = toMatrix(this.currentTransform(transformation));\n        return this._rect.bbox(combinedMatrix);\n    };\n\n    Image.prototype.rawBBox = function rawBBox () {\n        return this._rect.bbox();\n    };\n\n    Image.prototype._containsPoint = function _containsPoint (point) {\n        return this._rect.containsPoint(point);\n    };\n\n    Image.prototype._hasFill = function _hasFill () {\n        return this.src();\n    };\n\n    Object.defineProperties( Image.prototype, prototypeAccessors );\n\n    return Image;\n}(withGeometry(Element, [ \"rect\" ])));\n\nexport default Image;","export var extend = Object.assign;\n\nexport function splitInto(str, chunkLength) {\n    var result = [];\n    var idx = 0;\n\n    while (idx < str.length) {\n        result.push(str.substring(idx, idx + chunkLength));\n        idx += chunkLength;\n    }\n\n    return result;\n}\n\nexport function toBitsString(value, length) {\n    var bitString = Number(value).toString(2);\n\n    if (bitString.length < length) {\n        bitString = new Array(length - bitString.length + 1).join(0) + bitString;\n    }\n\n    return bitString;\n}\n\nexport function toDecimal(value) {\n    return parseInt(value, 2);\n}\n\n","import { Class } from '../../common';\n\nexport var FreeCellVisitor = (function (Class) {\n    function FreeCellVisitor(matrix) {\n        Class.call(this);\n\n        this.matrix = matrix;\n        this.row = matrix.length - 1;\n        this.column = matrix.length - 1;\n        this.startColumn = this.column;\n        this.dir = -1;\n        this.c = 0;\n    }\n\n    if ( Class ) FreeCellVisitor.__proto__ = Class;\n    FreeCellVisitor.prototype = Object.create( Class && Class.prototype );\n    FreeCellVisitor.prototype.constructor = FreeCellVisitor;\n\n    FreeCellVisitor.prototype.move = function move () {\n        this.row += this.dir * this.c;\n        this.c ^= 1;\n        this.column = this.startColumn - this.c;\n    };\n\n    FreeCellVisitor.prototype.getNextCell = function getNextCell () {\n        var this$1 = this;\n\n        while (this.matrix[this.row][this.column] !== undefined) {\n            this$1.move();\n\n            if (this$1.row < 0 || this$1.row >= this$1.matrix.length) {\n                this$1.dir = -this$1.dir;\n                this$1.startColumn -= this$1.startColumn !== 8 ? 2 : 3;\n                this$1.column = this$1.startColumn;\n                this$1.row = this$1.dir < 0 ? this$1.matrix.length - 1 : 0;\n            }\n        }\n\n        return {\n            row: this.row,\n            column: this.column\n        };\n    };\n\n    FreeCellVisitor.prototype.getNextRemainderCell = function getNextRemainderCell () {\n        this.move();\n\n        if (this.matrix[this.row][this.column] === undefined) {\n            return {\n                row: this.row,\n                column: this.column\n            };\n        }\n    };\n\n    return FreeCellVisitor;\n}(Class));\n","import { Class } from '../../common';\n\nexport var EncodingResult = (function (Class) {\n    function EncodingResult(dataString, version) {\n        Class.call(this);\n\n        this.dataString = dataString;\n        this.version = version;\n    }\n\n    if ( Class ) EncodingResult.__proto__ = Class;\n    EncodingResult.prototype = Object.create( Class && Class.prototype );\n    EncodingResult.prototype.constructor = EncodingResult;\n\n    return EncodingResult;\n}(Class));\n","import { Class } from '../../../common';\nimport { EncodingResult } from '../encoding-result';\nimport {\n    getModes,\n    getVersion,\n    getDataCodewordsCount,\n    getDataString\n} from '../encoding';\n\nexport var IsoEncoder = (function (Class) {\n    function IsoEncoder () {\n        Class.apply(this, arguments);\n    }\n\n    if ( Class ) IsoEncoder.__proto__ = Class;\n    IsoEncoder.prototype = Object.create( Class && Class.prototype );\n    IsoEncoder.prototype.constructor = IsoEncoder;\n\n    IsoEncoder.prototype.getEncodingResult = function getEncodingResult (inputString, errorCorrectionLevel) {\n        var modes = getModes(inputString),\n            dataCodewordsCount = getDataCodewordsCount(modes),\n            version = getVersion(dataCodewordsCount, errorCorrectionLevel),\n            dataString = getDataString(modes, version);\n\n        return new EncodingResult(dataString, version);\n    };\n\n    return IsoEncoder;\n}(Class));\n","import {\n    toBitsString,\n    toDecimal\n} from '../utils';\nimport { FreeCellVisitor } from './free-cell-visitor';\nimport { IsoEncoder } from './encoders/iso-encoder';\nimport { Utf8Encoder } from './encoders/utf8-encoder';\nimport { VersionsCodewordsInformation } from './version-codewords';\nimport { DataModeInstances } from './data-modes/data-mode-instances';\n\nvar terminator = \"0000\",\n    NUMERIC = \"numeric\",\n    ALPHA_NUMERIC = \"alphanumeric\",\n    BYTE = \"byte\",\n    powersOfTwo = { \"1\": 0 },\n    powersOfTwoResult = { \"0\": 1 },\n    irregularAlignmentPatternsStartDistance = {\n        15: 20, 16: 20, 18: 24, 19: 24, 22: 20,\n        24: 22, 26: 24, 28: 20, 30: 20, 31: 24,\n        32: 28, 33: 24, 36: 18, 37: 22, 39: 20, 40: 24\n    },\n    finderPattern = [1, 0, 1, 1, 1],\n    alignmentPattern = [1, 0, 1],\n    errorCorrectionPatterns = { L: \"01\", M: \"00\", Q: \"11\", H: \"10\" },\n    formatMaskPattern = \"101010000010010\",\n    formatGeneratorPolynomial = \"10100110111\",\n    versionGeneratorPolynomial = \"1111100100101\",\n    paddingCodewords = [\"11101100\", \"00010001\"],\n    finderPatternValue = 93,\n    /* eslint-disable arrow-body-style */\n    /* eslint-disable no-unused-vars */\n    maskPatternConditions = [\n        function (row, column) { return (row + column) % 2 === 0; },\n        function (row, column) { return row % 2 === 0; },\n        function (row, column) { return column % 3 === 0; },\n        function (row, column) { return (row + column) % 3 === 0; },\n        function (row, column) { return (Math.floor(row / 2) + Math.floor(column / 3)) % 2 === 0; },\n        function (row, column) { return ((row * column) % 2) + ((row * column) % 3) === 0; },\n        function (row, column) { return (((row * column) % 2) + ((row * column) % 3)) % 2 === 0; },\n        function (row, column) { return (((row + column) % 2) + ((row * column) % 3)) % 2 === 0; }\n    ],\n    /* eslint-enable no-unused-vars */\n    /* eslint-enable arrow-body-style */\n    numberRegex = /^\\d+/,\n    alphaPattern = \"A-Z0-9 $%*+./:-\",\n    alphaExclusiveSet = \"A-Z $%*+./:-\",\n    alphaRegex = new RegExp(\"^[\" + alphaExclusiveSet + \"]+\"),\n    alphaNumericRegex = new RegExp(\"^[\" + alphaPattern + \"]+\"),\n    byteRegex = new RegExp(\"^[^\" + alphaPattern + \"]+\"),\n    initMinNumericBeforeAlpha = 8,\n    initMinNumericBeforeByte = 5,\n    initMinAlphaBeforeByte = 8,\n    minNumericBeforeAlpha = 17,\n    minNumericBeforeByte = 9,\n    minAlphaBeforeByte = 16;\n\nexport var generatorPolynomials = [[1, 0], [1, 25, 0]];\n\nexport function fillFunctionCell(matrices, bit, x, y) {\n    for (var i = 0; i < matrices.length; i++) {\n        matrices[i][x][y] = bit;\n    }\n}\n\nexport function fillDataCell(matrices, bit, x, y) {\n    for (var i = 0; i < maskPatternConditions.length; i++) {\n        matrices[i][x][y] = maskPatternConditions[i](x, y) ? bit ^ 1 : parseInt(bit, 10);\n    }\n}\n\nexport function fillData(matrices, blocks) {\n    var cellVisitor = new FreeCellVisitor(matrices[0]),\n        block,\n        codewordIdx,\n        cell;\n\n    for (var blockIdx = 0; blockIdx < blocks.length; blockIdx++) {\n        block = blocks[blockIdx];\n        codewordIdx = 0;\n\n        while (block.length > 0) {\n            for (var i = 0; i < block.length; i++) {\n                for (var j = 0; j < 8; j++) {\n                    cell = cellVisitor.getNextCell();\n                    fillDataCell(matrices, block[i][codewordIdx].charAt(j), cell.row, cell.column);\n                }\n            }\n\n            codewordIdx++;\n\n            while (block[0] && codewordIdx === block[0].length) {\n                block.splice(0, 1);\n            }\n        }\n    }\n\n    while ((cell = cellVisitor.getNextRemainderCell())) {\n        fillDataCell(matrices, 0, cell.row, cell.column);\n    }\n}\n\nexport function padDataString(initialDataString, totalDataCodewords) {\n    var dataBitsCount = totalDataCodewords * 8,\n        terminatorIndex = 0,\n        paddingCodewordIndex = 0;\n    var dataString = initialDataString;\n\n    while (dataString.length < dataBitsCount && terminatorIndex < terminator.length) {\n        dataString += terminator.charAt(terminatorIndex++);\n    }\n\n    if (dataString.length % 8 !== 0) {\n        dataString += new Array(9 - dataString.length % 8).join(\"0\");\n    }\n\n    while (dataString.length < dataBitsCount) {\n        dataString += paddingCodewords[paddingCodewordIndex];\n        paddingCodewordIndex ^= 1;\n    }\n\n    return dataString;\n}\n\nexport function generatePowersOfTwo() {\n    var result;\n    var power;\n\n    for (power = 1; power < 255; power++) {\n        result = powersOfTwoResult[power - 1] * 2;\n        if (result > 255) {\n            result = result ^ 285;\n        }\n\n        powersOfTwoResult[power] = result;\n        powersOfTwo[result] = power;\n    }\n\n    result = (powersOfTwoResult[power - 1] * 2) ^ 285;\n    powersOfTwoResult[power] = result;\n    powersOfTwoResult[-1] = 0;\n}\n\nexport function xorPolynomials(x, y) {\n    var result = [],\n        idx = x.length - 2;\n\n    for (var i = idx; i >= 0; i--) {\n        result[i] = x[i] ^ y[i];\n    }\n\n    return result;\n}\n\nexport function multiplyPolynomials(x, y) {\n    var result = [];\n\n    for (var i = 0; i < x.length; i++) {\n        for (var j = 0; j < y.length; j++) {\n            if (result[i + j] === undefined) {\n                result[i + j] = (x[i] + (y[j] >= 0 ? y[j] : 0)) % 255;\n            } else {\n                result[i + j] = powersOfTwo[powersOfTwoResult[result[i + j]] ^ powersOfTwoResult[(x[i] + y[j]) % 255]];\n            }\n        }\n    }\n\n    return result;\n}\n\nexport function generateGeneratorPolynomials() {\n    var maxErrorCorrectionCodeWordsCount = 68;\n\n    for (var idx = 2; idx <= maxErrorCorrectionCodeWordsCount; idx++) {\n        var firstPolynomial = generatorPolynomials[idx - 1],\n            secondPolynomial = [idx, 0];\n\n        generatorPolynomials[idx] = multiplyPolynomials(firstPolynomial, secondPolynomial);\n    }\n}\n\n//possibly generate on demand\ngeneratePowersOfTwo();\ngenerateGeneratorPolynomials();\n\nexport function multiplyByConstant(polynomial, power) {\n    var result = [],\n        idx = polynomial.length - 1;\n\n    do {\n        result[idx] = powersOfTwoResult[(polynomial[idx] + power) % 255];\n        idx--;\n    }\n    while (polynomial[idx] !== undefined);\n\n    return result;\n}\n\nexport function generateErrorCodewords(data, errorCodewordsCount) {\n    var generator = generatorPolynomials[errorCodewordsCount - 1],\n        result = new Array(errorCodewordsCount).concat(data),\n        generatorPolynomial = new Array(result.length - generator.length).concat(generator),\n        steps = data.length,\n        errorCodewords = [],\n        divisor,\n        idx;\n\n    for (idx = 0; idx < steps; idx++) {\n        divisor = multiplyByConstant(generatorPolynomial, powersOfTwo[result[result.length - 1]]);\n        generatorPolynomial.splice(0, 1);\n\n        result = xorPolynomials(divisor, result);\n    }\n\n    for (idx = result.length - 1; idx >= 0; idx--) {\n        errorCodewords[errorCodewordsCount - 1 - idx] = toBitsString(result[idx], 8);\n    }\n\n    return errorCodewords;\n}\n\nexport function getBlocks(dataStream, versionCodewordsInformation) {\n    var codewordStart = 0,\n        dataBlocks = [],\n        errorBlocks = [],\n        dataBlock,\n        versionGroups = versionCodewordsInformation.groups,\n        blockCodewordsCount,\n        groupBlocksCount,\n        messagePolynomial,\n        codeword;\n\n    for (var groupIdx = 0; groupIdx < versionGroups.length; groupIdx++) {\n        groupBlocksCount = versionGroups[groupIdx][0];\n\n        for (var blockIdx = 0; blockIdx < groupBlocksCount; blockIdx++) {\n            blockCodewordsCount = versionGroups[groupIdx][1];\n            dataBlock = [];\n            messagePolynomial = [];\n\n            for (var codewordIdx = 1; codewordIdx <= blockCodewordsCount; codewordIdx++) {\n                codeword = dataStream.substring(codewordStart, codewordStart + 8);\n                dataBlock.push(codeword);\n                messagePolynomial[blockCodewordsCount - codewordIdx] = toDecimal(codeword);\n                codewordStart += 8;\n            }\n\n            dataBlocks.push(dataBlock);\n            errorBlocks.push(generateErrorCodewords(messagePolynomial,\n                versionCodewordsInformation.errorCodewordsPerBlock));\n        }\n    }\n    return [dataBlocks, errorBlocks];\n}\n\nexport function chooseMode(str, minNumericBeforeAlpha, minNumericBeforeByte, minAlphaBeforeByte, previousMode) {\n    var numeric = numberRegex.exec(str),\n        numericMatch = numeric ? numeric[0] : \"\",\n        alpha = alphaRegex.exec(str),\n        alphaMatch = alpha ? alpha[0] : \"\",\n        alphaNumeric = alphaNumericRegex.exec(str),\n        alphaNumericMatch = alphaNumeric ? alphaNumeric[0] : \"\",\n        mode,\n        modeString;\n\n    if (numericMatch &&\n        (numericMatch.length >= minNumericBeforeAlpha || str.length === numericMatch.length ||\n        (numericMatch.length >= minNumericBeforeByte && !alphaNumericRegex.test(str.charAt(numericMatch.length))))) {\n        mode = NUMERIC;\n        modeString = numericMatch;\n    } else if (alphaNumericMatch && (str.length === alphaNumericMatch.length ||\n        alphaNumericMatch.length >= minAlphaBeforeByte || previousMode === ALPHA_NUMERIC)) {\n        mode = ALPHA_NUMERIC;\n        modeString = numericMatch || alphaMatch;\n    } else {\n        mode = BYTE;\n\n        if (alphaNumericMatch) {\n            modeString = alphaNumericMatch + byteRegex.exec(str.substring(alphaNumericMatch.length))[0];\n        } else {\n            modeString = byteRegex.exec(str)[0];\n        }\n    }\n\n    return {\n        mode: mode,\n        modeString: modeString\n    };\n}\n\nexport function getModes(inputString) {\n    var modes = [],\n        previousMode,\n        idx = 0;\n    var str = inputString;\n\n    modes.push(chooseMode(str, initMinNumericBeforeAlpha, initMinNumericBeforeByte, initMinAlphaBeforeByte, previousMode));\n    previousMode = modes[0].mode;\n    str = str.substr(modes[0].modeString.length);\n\n    while (str.length > 0) {\n        var nextMode = chooseMode(str, minNumericBeforeAlpha, minNumericBeforeByte, minAlphaBeforeByte, previousMode);\n\n        if (nextMode.mode !== previousMode) {\n            previousMode = nextMode.mode;\n            modes.push(nextMode);\n            idx++;\n        } else {\n            modes[idx].modeString += nextMode.modeString;\n        }\n\n        str = str.substr(nextMode.modeString.length);\n    }\n\n    return modes;\n}\n\nexport function getDataCodewordsCount(modes) {\n    var length = 0,\n        mode;\n\n    for (var i = 0; i < modes.length; i++) {\n        mode = DataModeInstances[modes[i].mode];\n        length += mode.getStringBitsLength(modes[i].modeString.length);\n    }\n\n    return Math.ceil(length / 8);\n}\n\nexport function getVersion(dataCodewordsCount, errorCorrectionLevel) {\n    var x = 0,\n        y = VersionsCodewordsInformation.length - 1,\n        version = Math.floor(VersionsCodewordsInformation.length / 2);\n\n    do {\n        if (dataCodewordsCount < VersionsCodewordsInformation[version][errorCorrectionLevel].totalDataCodewords) {\n            y = version;\n        } else {\n            x = version;\n        }\n\n        version = x + Math.floor((y - x) / 2);\n    } while (y - x > 1);\n\n    if (dataCodewordsCount <= VersionsCodewordsInformation[x][errorCorrectionLevel].totalDataCodewords) {\n        return version + 1;\n    }\n\n    return y + 1;\n}\n\nexport function getDataString(modes, version) {\n    var dataString = \"\",\n        mode;\n\n    for (var i = 0; i < modes.length; i++) {\n        mode = DataModeInstances[modes[i].mode];\n        dataString += mode.encode(modes[i].modeString, version);\n    }\n\n    return dataString;\n}\n\n//fix case all zeros\nexport function encodeFormatInformation(format) {\n    var formatNumber = toDecimal(format),\n        encodedString,\n        result = \"\";\n\n    if (formatNumber === 0) {\n        return \"101010000010010\";\n    }\n\n    encodedString = encodeBCH(toDecimal(format), formatGeneratorPolynomial, 15);\n\n    for (var i = 0; i < encodedString.length; i++) {\n        result += encodedString.charAt(i) ^ formatMaskPattern.charAt(i);\n    }\n\n    return result;\n}\n\nexport function encodeBCH(value, generatorPolynomial, codeLength) {\n    var generatorNumber = toDecimal(generatorPolynomial),\n        polynomialLength = generatorPolynomial.length - 1,\n        valueNumber = value << polynomialLength,\n        length = codeLength - polynomialLength,\n        valueString = toBitsString(value, length),\n        result = dividePolynomials(valueNumber, generatorNumber);\n\n    result = valueString + toBitsString(result, polynomialLength);\n\n    return result;\n}\n\nexport function dividePolynomials(numberX, numberY) {\n    var yLength = numberY.toString(2).length,\n        xLength = numberX.toString(2).length;\n    var x = numberX;\n\n    do {\n        x ^= numberY << xLength - yLength;\n        xLength = x.toString(2).length;\n    }\n    while (xLength >= yLength);\n\n    return x;\n}\n\nexport function getNumberAt(str, idx) {\n    return parseInt(str.charAt(idx), 10);\n}\n\nexport function initMatrices(version) {\n    var matrices = [],\n        modules = 17 + 4 * version;\n\n    for (var i = 0; i < maskPatternConditions.length; i++) {\n        matrices[i] = new Array(modules);\n\n        for (var j = 0; j < modules; j++) {\n            matrices[i][j] = new Array(modules);\n        }\n    }\n\n    return matrices;\n}\n\nexport function addFormatInformation(matrices, formatString) {\n    var matrix = matrices[0],\n        x,\n        y,\n        idx = 0,\n        length = formatString.length;\n\n    for (x = 0, y = 8; x <= 8; x++) {\n        if (x !== 6) {\n            fillFunctionCell(matrices, getNumberAt(formatString, length - 1 - idx++), x, y);\n        }\n    }\n\n    for (x = 8, y = 7; y >= 0; y--) {\n        if (y !== 6) {\n            fillFunctionCell(matrices, getNumberAt(formatString, length - 1 - idx++), x, y);\n        }\n    }\n\n    idx = 0;\n\n    for (y = matrix.length - 1, x = 8; y >= matrix.length - 8; y--) {\n        fillFunctionCell(matrices, getNumberAt(formatString, length - 1 - idx++), x, y);\n    }\n\n    fillFunctionCell(matrices, 1, matrix.length - 8, 8);\n\n    for (x = matrix.length - 7, y = 8; x < matrix.length; x++) {\n        fillFunctionCell(matrices, getNumberAt(formatString, length - 1 - idx++), x, y);\n    }\n}\n\nexport function encodeVersionInformation(version) {\n    return encodeBCH(version, versionGeneratorPolynomial, 18);\n}\n\nexport function addVersionInformation(matrices, dataString) {\n    var matrix = matrices[0],\n        modules = matrix.length,\n        x1 = 0,\n        y1 = modules - 11,\n        x2 = modules - 11,\n        y2 = 0,\n        quotient,\n        mod,\n        value;\n\n    for (var idx = 0; idx < dataString.length; idx++) {\n        quotient = Math.floor(idx / 3);\n        mod = idx % 3;\n        value = getNumberAt(dataString, dataString.length - idx - 1);\n\n        fillFunctionCell(matrices, value, x1 + quotient, y1 + mod);\n        fillFunctionCell(matrices, value, x2 + mod, y2 + quotient);\n    }\n}\n\nexport function addCentricPattern(matrices, pattern, x, y) {\n    var size = pattern.length + 2,\n        length = pattern.length + 1,\n        value;\n\n    for (var i = 0; i < pattern.length; i++) {\n        for (var j = i; j < size - i; j++) {\n            value = pattern[i];\n\n            fillFunctionCell(matrices, value, x + j, y + i);\n            fillFunctionCell(matrices, value, x + i, y + j);\n            fillFunctionCell(matrices, value, x + length - j, y + length - i);\n            fillFunctionCell(matrices, value, x + length - i, y + length - j);\n        }\n    }\n}\n\nexport function addFinderSeparator(matrices, direction, x, y) {\n    var nextX = x,\n        nextY = y,\n        matrix = matrices[0];\n\n    do {\n        fillFunctionCell(matrices, 0, nextX, y);\n        fillFunctionCell(matrices, 0, x, nextY);\n        nextX += direction[0];\n        nextY += direction[1];\n    }\n    while (nextX >= 0 && nextX < matrix.length);\n}\n\nexport function addFinderPatterns(matrices) {\n    var modules = matrices[0].length;\n\n    addCentricPattern(matrices, finderPattern, 0, 0);\n    addFinderSeparator(matrices, [-1, -1], 7, 7);\n    addCentricPattern(matrices, finderPattern, modules - 7, 0);\n    addFinderSeparator(matrices, [1, -1], modules - 8, 7);\n    addCentricPattern(matrices, finderPattern, 0, modules - 7);\n    addFinderSeparator(matrices, [-1, 1], 7, modules - 8);\n}\n\nexport function addAlignmentPatterns(matrices, version) {\n    if (version < 2) {\n        return;\n    }\n\n    var matrix = matrices[0],\n        modules = matrix.length,\n        pointsCount = Math.floor(version / 7),\n        points = [6],\n        startDistance,\n        distance,\n        idx = 0;\n\n    if ((startDistance = irregularAlignmentPatternsStartDistance[version])) {\n        distance = (modules - 13 - startDistance) / pointsCount;\n    } else {\n        startDistance = distance = (modules - 13) / (pointsCount + 1);\n    }\n\n    points.push(points[idx++] + startDistance);\n\n    while ((points[idx] + distance) < modules) {\n        points.push(points[idx++] + distance);\n    }\n\n    for (var i = 0; i < points.length; i++) {\n        for (var j = 0; j < points.length; j++) {\n            if (matrix[points[i]][points[j]] === undefined) {\n                addCentricPattern(matrices, alignmentPattern, points[i] - 2, points[j] - 2);\n            }\n        }\n    }\n}\n\nexport function addTimingFunctions(matrices) {\n    var row = 6,\n        column = 6,\n        value = 1,\n        modules = matrices[0].length;\n\n    for (var i = 8; i < modules - 8; i++) {\n        fillFunctionCell(matrices, value, row, i);\n        fillFunctionCell(matrices, value, i, column);\n        value ^= 1;\n    }\n}\n\nexport function scoreMaskMatrixes(matrices) {\n    var scores = [],\n        previousBits = [],\n        darkModules = [],\n        patterns = [],\n        adjacentSameBits = [],\n        matrix,\n        i,\n        row = 0,\n        column = 1,\n        modulesLength = matrices[0].length;\n\n    for (i = 0; i < matrices.length; i++) {\n        scores[i] = 0;\n        darkModules[i] = 0;\n        adjacentSameBits[i] = [0, 0];\n        patterns[i] = [0, 0];\n        previousBits[i] = [];\n    }\n\n    for (var rowIndex = 0; rowIndex < modulesLength; rowIndex++) {\n        for (var columnIndex = 0; columnIndex < modulesLength; columnIndex++) {\n            for (var matrixIndex = 0; matrixIndex < matrices.length; matrixIndex++) {\n                matrix = matrices[matrixIndex];\n                darkModules[matrixIndex] += parseInt(matrix[rowIndex][columnIndex], 10);\n\n                if (previousBits[matrixIndex][row] === matrix[rowIndex][columnIndex] &&\n                    rowIndex + 1 < modulesLength &&\n                    columnIndex - 1 >= 0 &&\n                    matrix[rowIndex + 1][columnIndex] === previousBits[matrixIndex][row] &&\n                    matrix[rowIndex + 1][columnIndex - 1] === previousBits[matrixIndex][row]) {\n                    scores[matrixIndex] += 3;\n                }\n\n                scoreFinderPatternOccurance(matrixIndex, patterns, scores, row, matrix[rowIndex][columnIndex]);\n                scoreFinderPatternOccurance(matrixIndex, patterns, scores, column, matrix[columnIndex][rowIndex]);\n                scoreAdjacentSameBits(matrixIndex, scores, previousBits, matrix[rowIndex][columnIndex], adjacentSameBits, row);\n                scoreAdjacentSameBits(matrixIndex, scores, previousBits, matrix[columnIndex][rowIndex], adjacentSameBits, column);\n            }\n        }\n    }\n\n    var total = modulesLength * modulesLength,\n        minIdx,\n        min = Number.MAX_VALUE;\n\n    for (i = 0; i < scores.length; i++) {\n        scores[i] += calculateDarkModulesRatioScore(darkModules[i], total);\n\n        if (scores[i] < min) {\n            min = scores[i];\n            minIdx = i;\n        }\n    }\n\n    return minIdx;\n}\n\nexport function scoreFinderPatternOccurance(idx, patterns, scores, rowColumn, bit) {\n    patterns[idx][rowColumn] = ((patterns[idx][rowColumn] << 1) ^ bit) % 128;\n\n    if (patterns[idx][rowColumn] === finderPatternValue) {\n        scores[idx] += 40;\n    }\n}\n\nexport function scoreAdjacentSameBits(idx, scores, previousBits, bit, adjacentBits, rowColumn) {\n    if (previousBits[idx][rowColumn] === bit) {\n        adjacentBits[idx][rowColumn]++;\n    } else {\n        previousBits[idx][rowColumn] = bit;\n\n        if (adjacentBits[idx][rowColumn] >= 5) {\n            scores[idx] += 3 + adjacentBits[idx][rowColumn] - 5;\n        }\n\n        adjacentBits[idx][rowColumn] = 1;\n    }\n}\n\nexport function calculateDarkModulesRatioScore(darkModules, total) {\n    var percent = Math.floor((darkModules / total) * 100),\n        mod5 = percent % 5,\n        previous = Math.abs(percent - mod5 - 50),\n        next = Math.abs(percent + 5 - mod5 - 50),\n        score = 10 * Math.min(previous / 5, next / 5);\n\n    return score;\n}\n\nexport function createQRCodeDataEncoder(encoding) {\n    if (encoding && encoding.toLowerCase().indexOf(\"utf_8\") >= 0) {\n        return new Utf8Encoder();\n    }\n\n    return new IsoEncoder();\n}\n\nexport function encodeData(inputString, errorCorrectionLevel, encoding) {\n    var encoder = createQRCodeDataEncoder(encoding),\n        encodingResult = encoder.getEncodingResult(inputString, errorCorrectionLevel),\n        version = encodingResult.version,\n        versionInformation = VersionsCodewordsInformation[version - 1][errorCorrectionLevel],\n        dataString = padDataString(encodingResult.dataString, versionInformation.totalDataCodewords),\n        blocks = getBlocks(dataString, versionInformation),\n        matrices = initMatrices(version);\n\n    addFinderPatterns(matrices);\n    addAlignmentPatterns(matrices, version);\n    addTimingFunctions(matrices);\n\n    if (version >= 7) {\n        addVersionInformation(matrices, toBitsString(0, 18));\n    }\n\n    addFormatInformation(matrices, toBitsString(0, 15));\n    fillData(matrices, blocks);\n\n    var minIdx = scoreMaskMatrixes(matrices),\n        optimalMatrix = matrices[minIdx];\n\n    if (version >= 7) {\n        addVersionInformation([optimalMatrix], encodeVersionInformation(version));\n    }\n\n    var formatString = errorCorrectionPatterns[errorCorrectionLevel] + toBitsString(minIdx, 3);\n    addFormatInformation([optimalMatrix], encodeFormatInformation(formatString));\n\n    return optimalMatrix;\n}\n","import { Class } from '../../../common';\nimport { extend } from '../../utils';\nimport {\n    toBitsString\n} from '../../utils';\n\nexport var QRDataMode = (function (Class) {\n    function QRDataMode() {\n        Class.call(this);\n\n        this.initProperties();\n    }\n\n    if ( Class ) QRDataMode.__proto__ = Class;\n    QRDataMode.prototype = Object.create( Class && Class.prototype );\n    QRDataMode.prototype.constructor = QRDataMode;\n\n    QRDataMode.prototype.initProperties = function initProperties () {\n        extend(this, {\n            modeIndicator: \"\",\n            bitsInCharacterCount: []\n        });\n    };\n\n    QRDataMode.prototype.getVersionIndex = function getVersionIndex (version) {\n        if (version < 10) {\n            return 0;\n        } else if (version > 26) {\n            return 2;\n        }\n\n        return 1;\n    };\n\n    QRDataMode.prototype.getBitsCharacterCount = function getBitsCharacterCount (version) {\n        return this.bitsInCharacterCount[this.getVersionIndex(version || 40)];\n    };\n\n    QRDataMode.prototype.getModeCountString = function getModeCountString (length, version) {\n        return this.modeIndicator + toBitsString(length, this.getBitsCharacterCount(version));\n    };\n\n    QRDataMode.prototype.encode = function encode () { };\n\n    QRDataMode.prototype.getStringBitsLength = function getStringBitsLength () { };\n\n    QRDataMode.prototype.getValue = function getValue () { };\n\n    return QRDataMode;\n}(Class));\n","import { QRDataMode } from './qr-data-mode';\nimport { extend } from '../../utils';\nimport {\n    toBitsString,\n    splitInto\n} from '../../utils';\n\nexport var NumericQRDataMode = (function (QRDataMode) {\n    function NumericQRDataMode () {\n        QRDataMode.apply(this, arguments);\n    }\n\n    if ( QRDataMode ) NumericQRDataMode.__proto__ = QRDataMode;\n    NumericQRDataMode.prototype = Object.create( QRDataMode && QRDataMode.prototype );\n    NumericQRDataMode.prototype.constructor = NumericQRDataMode;\n\n    NumericQRDataMode.prototype.initProperties = function initProperties () {\n        QRDataMode.prototype.initProperties.call(this);\n\n        extend(this, {\n            bitsInCharacterCount: [10, 12, 14],\n            modeIndicator: \"0001\"\n        });\n    };\n\n    NumericQRDataMode.prototype.getValue = function getValue (character) {\n        return parseInt(character, 10);\n    };\n\n    NumericQRDataMode.prototype.encode = function encode (str, version) {\n        var mode = this,\n            parts = splitInto(str, 3),\n            result = mode.getModeCountString(str.length, version);\n        var i;\n\n        for (i = 0; i < parts.length - 1; i++) {\n            result += toBitsString(parts[i], 10);\n        }\n\n        return result + toBitsString(parts[i], 1 + 3 * parts[i].length);\n    };\n\n    NumericQRDataMode.prototype.getStringBitsLength = function getStringBitsLength (inputLength, version) {\n        var mod3 = inputLength % 3;\n        return 4 + this.getBitsCharacterCount(version) + 10 * Math.floor(inputLength / 3) + 3 * mod3 + (mod3 === 0 ? 0 : 1);\n    };\n\n    return NumericQRDataMode;\n}(QRDataMode));\n","import { QRDataMode } from './qr-data-mode';\nimport { extend } from '../../utils';\nimport {\n    toBitsString,\n    splitInto\n} from '../../utils';\n\nexport var AlphaNumericQRDataMode = (function (QRDataMode) {\n    function AlphaNumericQRDataMode () {\n        QRDataMode.apply(this, arguments);\n    }\n\n    if ( QRDataMode ) AlphaNumericQRDataMode.__proto__ = QRDataMode;\n    AlphaNumericQRDataMode.prototype = Object.create( QRDataMode && QRDataMode.prototype );\n    AlphaNumericQRDataMode.prototype.constructor = AlphaNumericQRDataMode;\n\n    AlphaNumericQRDataMode.prototype.initProperties = function initProperties () {\n        QRDataMode.prototype.initProperties.call(this);\n\n        extend(this, {\n            characters: {\n                \"0\": 0,\n                \"1\": 1,\n                \"2\": 2,\n                \"3\": 3,\n                \"4\": 4,\n                \"5\": 5,\n                \"6\": 6,\n                \"7\": 7,\n                \"8\": 8,\n                \"9\": 9,\n                \"A\": 10,\n                \"B\": 11,\n                \"C\": 12,\n                \"D\": 13,\n                \"E\": 14,\n                \"F\": 15,\n                \"G\": 16,\n                \"H\": 17,\n                \"I\": 18,\n                \"J\": 19,\n                \"K\": 20,\n                \"L\": 21,\n                \"M\": 22,\n                \"N\": 23,\n                \"O\": 24,\n                \"P\": 25,\n                \"Q\": 26,\n                \"R\": 27,\n                \"S\": 28,\n                \"T\": 29,\n                \"U\": 30,\n                \"V\": 31,\n                \"W\": 32,\n                \"X\": 33,\n                \"Y\": 34,\n                \"Z\": 35,\n                \" \": 36,\n                \"$\": 37,\n                \"%\": 38,\n                \"*\": 39,\n                \"+\": 40,\n                \"-\": 41,\n                \".\": 42,\n                \"/\": 43,\n                \":\": 44\n            },\n            bitsInCharacterCount: [9, 11, 13],\n            modeIndicator: \"0010\"\n        });\n    };\n\n    AlphaNumericQRDataMode.prototype.getValue = function getValue (character) {\n        return this.characters[character];\n    };\n\n    AlphaNumericQRDataMode.prototype.encode = function encode (str, version) {\n        var this$1 = this;\n\n        var\n            parts = splitInto(str, 2),\n            result = this.getModeCountString(str.length, version),\n            value;\n        var i;\n\n        for (i = 0; i < parts.length - 1; i++) {\n            value = 45 * this$1.getValue(parts[i].charAt(0)) + this$1.getValue(parts[i].charAt(1));\n            result += toBitsString(value, 11);\n        }\n\n        value = parts[i].length === 2 ?\n            45 * this.getValue(parts[i].charAt(0)) + this.getValue(parts[i].charAt(1)) :\n            this.getValue(parts[i].charAt(0));\n\n        return result + toBitsString(value, 1 + 5 * parts[i].length);\n    };\n\n    AlphaNumericQRDataMode.prototype.getStringBitsLength = function getStringBitsLength (inputLength, version) {\n        return 4 + this.getBitsCharacterCount(version) + 11 * Math.floor(inputLength / 2) + 6 * (inputLength % 2);\n    };\n\n    return AlphaNumericQRDataMode;\n}(QRDataMode));\n","import { QRDataMode } from './qr-data-mode';\nimport { extend } from '../../utils';\nimport {\n    toBitsString\n} from '../../utils';\n\nexport var ByteQRDataMode = (function (QRDataMode) {\n    function ByteQRDataMode () {\n        QRDataMode.apply(this, arguments);\n    }\n\n    if ( QRDataMode ) ByteQRDataMode.__proto__ = QRDataMode;\n    ByteQRDataMode.prototype = Object.create( QRDataMode && QRDataMode.prototype );\n    ByteQRDataMode.prototype.constructor = ByteQRDataMode;\n\n    ByteQRDataMode.prototype.initProperties = function initProperties () {\n        QRDataMode.prototype.initProperties.call(this);\n\n        extend(this, {\n            bitsInCharacterCount: [8, 16, 16],\n            modeIndicator: \"0100\"\n        });\n    };\n\n    ByteQRDataMode.prototype.getValue = function getValue (character) {\n        var code = character.charCodeAt(0);\n\n        if (code <= 127 || (160 <= code && code <= 255)) {\n            return code;\n        }\n\n        throw new Error((\"Unsupported character in QR Code: \\\"\" + character + \"\\\".\"));\n    };\n\n    ByteQRDataMode.prototype.encode = function encode (str, version) {\n        var mode = this,\n            result = mode.getModeCountString(str.length, version);\n\n        for (var i = 0; i < str.length; i++) {\n            result += toBitsString(mode.getValue(str.charAt(i)), 8);\n        }\n\n        return result;\n    };\n\n    ByteQRDataMode.prototype.getStringBitsLength = function getStringBitsLength (inputLength, version) {\n        return 4 + this.getBitsCharacterCount(version) + 8 * inputLength;\n    };\n\n    return ByteQRDataMode;\n}(QRDataMode));\n","import { NumericQRDataMode } from './numeric-data-mode';\nimport { AlphaNumericQRDataMode } from './alpha-numeric-data-mode';\nimport { ByteQRDataMode } from './byte-data-mode';\n\nvar NUMERIC = \"numeric\";\nvar ALPHA_NUMERIC = \"alphanumeric\";\nvar BYTE = \"byte\";\n\nexport var DataModeInstances = {};\nDataModeInstances[NUMERIC] = new NumericQRDataMode();\nDataModeInstances[ALPHA_NUMERIC] = new AlphaNumericQRDataMode();\nDataModeInstances[BYTE] = new ByteQRDataMode();\n","import { Class } from '../../../common';\nimport { EncodingResult } from '../encoding-result';\nimport { DataModeInstances } from '../data-modes/data-mode-instances';\nimport { extend } from '../../utils';\nimport { toBitsString } from '../../utils';\nimport { getVersion } from '../encoding';\n\nvar BYTE = \"byte\";\n\nexport var Utf8Encoder = (function (Class) {\n    function Utf8Encoder() {\n        Class.call(this);\n\n        this.initProperties();\n\n        this.mode = DataModeInstances[this.encodingMode];\n    }\n\n    if ( Class ) Utf8Encoder.__proto__ = Class;\n    Utf8Encoder.prototype = Object.create( Class && Class.prototype );\n    Utf8Encoder.prototype.constructor = Utf8Encoder;\n\n    Utf8Encoder.prototype.initProperties = function initProperties () {\n        extend(this, {\n            encodingMode: BYTE,\n            utfBOM: \"111011111011101110111111\",\n            initialModeCountStringLength: 20,\n            ranges: [128, 2048, 65536, 2097152, 67108864]\n        });\n    };\n\n    Utf8Encoder.prototype.getEncodingResult = function getEncodingResult (inputString, errorCorrectionLevel) {\n        var data = this.encode(inputString),\n            dataCodewordsCount = this.getDataCodewordsCount(data),\n            version = getVersion(dataCodewordsCount, errorCorrectionLevel),\n            dataString = this.mode.getModeCountString(data.length / 8, version) + data;\n\n        return new EncodingResult(dataString, version);\n    };\n\n    Utf8Encoder.prototype.getDataCodewordsCount = function getDataCodewordsCount (data) {\n        var dataLength = data.length,\n            dataCodewordsCount = Math.ceil((this.initialModeCountStringLength + dataLength) / 8);\n\n        return dataCodewordsCount;\n    };\n\n    Utf8Encoder.prototype.encode = function encode (str) {\n        var this$1 = this;\n\n        var result = this.utfBOM;\n\n        for (var i = 0; i < str.length; i++) {\n            result += this$1.encodeCharacter(str.charCodeAt(i));\n        }\n\n        return result;\n    };\n\n    Utf8Encoder.prototype.encodeCharacter = function encodeCharacter (code) {\n        var bytesCount = this.getBytesCount(code),\n            bc = bytesCount - 1,\n            result = \"\";\n\n        if (bytesCount === 1) {\n            result = toBitsString(code, 8);\n        } else {\n            var significantOnes = 8 - bytesCount;\n\n            for (var i = 0; i < bc; i++) {\n                result = toBitsString(code >> (i * 6) & 63 | 128, 8) + result;\n            }\n\n            result = ((code >> bc * 6) | ((255 >> significantOnes) << significantOnes)).toString(2) + result;\n        }\n\n        return result;\n    };\n\n    Utf8Encoder.prototype.getBytesCount = function getBytesCount (code) {\n        var ranges = this.ranges;\n\n        for (var i = 0; i < ranges.length; i++) {\n            if (code < ranges[i]) {\n                return i + 1;\n            }\n        }\n    };\n\n    return Utf8Encoder;\n}(Class));\n","export var VersionsCodewordsInformation = [{\n    L: {\n        groups: [\n            [1, 19]\n        ],\n        totalDataCodewords: 19,\n        errorCodewordsPerBlock: 7\n    },\n    M: {\n        groups: [\n            [1, 16]\n        ],\n        totalDataCodewords: 16,\n        errorCodewordsPerBlock: 10\n    },\n    Q: {\n        groups: [\n            [1, 13]\n        ],\n        totalDataCodewords: 13,\n        errorCodewordsPerBlock: 13\n    },\n    H: {\n        groups: [\n            [1, 9]\n        ],\n        totalDataCodewords: 9,\n        errorCodewordsPerBlock: 17\n    }\n}, {\n    L: {\n        groups: [\n            [1, 34]\n        ],\n        totalDataCodewords: 34,\n        errorCodewordsPerBlock: 10\n    },\n    M: {\n        groups: [\n            [1, 28]\n        ],\n        totalDataCodewords: 28,\n        errorCodewordsPerBlock: 16\n    },\n    Q: {\n        groups: [\n            [1, 22]\n        ],\n        totalDataCodewords: 22,\n        errorCodewordsPerBlock: 22\n    },\n    H: {\n        groups: [\n            [1, 16]\n        ],\n        totalDataCodewords: 16,\n        errorCodewordsPerBlock: 28\n    }\n}, {\n    L: {\n        groups: [\n            [1, 55]\n        ],\n        totalDataCodewords: 55,\n        errorCodewordsPerBlock: 15\n    },\n    M: {\n        groups: [\n            [1, 44]\n        ],\n        totalDataCodewords: 44,\n        errorCodewordsPerBlock: 26\n    },\n    Q: {\n        groups: [\n            [2, 17]\n        ],\n        totalDataCodewords: 34,\n        errorCodewordsPerBlock: 18\n    },\n    H: {\n        groups: [\n            [2, 13]\n        ],\n        totalDataCodewords: 26,\n        errorCodewordsPerBlock: 22\n    }\n}, {\n    L: {\n        groups: [\n            [1, 80]\n        ],\n        totalDataCodewords: 80,\n        errorCodewordsPerBlock: 20\n    },\n    M: {\n        groups: [\n            [2, 32]\n        ],\n        totalDataCodewords: 64,\n        errorCodewordsPerBlock: 18\n    },\n    Q: {\n        groups: [\n            [2, 24]\n        ],\n        totalDataCodewords: 48,\n        errorCodewordsPerBlock: 26\n    },\n    H: {\n        groups: [\n            [4, 9]\n        ],\n        totalDataCodewords: 36,\n        errorCodewordsPerBlock: 16\n    }\n}, {\n    L: {\n        groups: [\n            [1, 108]\n        ],\n        totalDataCodewords: 108,\n        errorCodewordsPerBlock: 26\n    },\n    M: {\n        groups: [\n            [2, 43]\n        ],\n        totalDataCodewords: 86,\n        errorCodewordsPerBlock: 24\n    },\n    Q: {\n        groups: [\n            [2, 15],\n            [2, 16]\n        ],\n        totalDataCodewords: 62,\n        errorCodewordsPerBlock: 18\n    },\n    H: {\n        groups: [\n            [2, 11],\n            [2, 12]\n        ],\n        totalDataCodewords: 46,\n        errorCodewordsPerBlock: 22\n    }\n}, {\n    L: {\n        groups: [\n            [2, 68]\n        ],\n        totalDataCodewords: 136,\n        errorCodewordsPerBlock: 18\n    },\n    M: {\n        groups: [\n            [4, 27]\n        ],\n        totalDataCodewords: 108,\n        errorCodewordsPerBlock: 16\n    },\n    Q: {\n        groups: [\n            [4, 19]\n        ],\n        totalDataCodewords: 76,\n        errorCodewordsPerBlock: 24\n    },\n    H: {\n        groups: [\n            [4, 15]\n        ],\n        totalDataCodewords: 60,\n        errorCodewordsPerBlock: 28\n    }\n}, {\n    L: {\n        groups: [\n            [2, 78]\n        ],\n        totalDataCodewords: 156,\n        errorCodewordsPerBlock: 20\n    },\n    M: {\n        groups: [\n            [4, 31]\n        ],\n        totalDataCodewords: 124,\n        errorCodewordsPerBlock: 18\n    },\n    Q: {\n        groups: [\n            [2, 14],\n            [4, 15]\n        ],\n        totalDataCodewords: 88,\n        errorCodewordsPerBlock: 18\n    },\n    H: {\n        groups: [\n            [4, 13],\n            [1, 14]\n        ],\n        totalDataCodewords: 66,\n        errorCodewordsPerBlock: 26\n    }\n}, {\n    L: {\n        groups: [\n            [2, 97]\n        ],\n        totalDataCodewords: 194,\n        errorCodewordsPerBlock: 24\n    },\n    M: {\n        groups: [\n            [2, 38],\n            [2, 39]\n        ],\n        totalDataCodewords: 154,\n        errorCodewordsPerBlock: 22\n    },\n    Q: {\n        groups: [\n            [4, 18],\n            [2, 19]\n        ],\n        totalDataCodewords: 110,\n        errorCodewordsPerBlock: 22\n    },\n    H: {\n        groups: [\n            [4, 14],\n            [2, 15]\n        ],\n        totalDataCodewords: 86,\n        errorCodewordsPerBlock: 26\n    }\n}, {\n    L: {\n        groups: [\n            [2, 116]\n        ],\n        totalDataCodewords: 232,\n        errorCodewordsPerBlock: 30\n    },\n    M: {\n        groups: [\n            [3, 36],\n            [2, 37]\n        ],\n        totalDataCodewords: 182,\n        errorCodewordsPerBlock: 22\n    },\n    Q: {\n        groups: [\n            [4, 16],\n            [4, 17]\n        ],\n        totalDataCodewords: 132,\n        errorCodewordsPerBlock: 20\n    },\n    H: {\n        groups: [\n            [4, 12],\n            [4, 13]\n        ],\n        totalDataCodewords: 100,\n        errorCodewordsPerBlock: 24\n    }\n}, {\n    L: {\n        groups: [\n            [2, 68],\n            [2, 69]\n        ],\n        totalDataCodewords: 274,\n        errorCodewordsPerBlock: 18\n    },\n    M: {\n        groups: [\n            [4, 43],\n            [1, 44]\n        ],\n        totalDataCodewords: 216,\n        errorCodewordsPerBlock: 26\n    },\n    Q: {\n        groups: [\n            [6, 19],\n            [2, 20]\n        ],\n        totalDataCodewords: 154,\n        errorCodewordsPerBlock: 24\n    },\n    H: {\n        groups: [\n            [6, 15],\n            [2, 16]\n        ],\n        totalDataCodewords: 122,\n        errorCodewordsPerBlock: 28\n    }\n}, {\n    L: {\n        groups: [\n            [4, 81]\n        ],\n        totalDataCodewords: 324,\n        errorCodewordsPerBlock: 20\n    },\n    M: {\n        groups: [\n            [1, 50],\n            [4, 51]\n        ],\n        totalDataCodewords: 254,\n        errorCodewordsPerBlock: 30\n    },\n    Q: {\n        groups: [\n            [4, 22],\n            [4, 23]\n        ],\n        totalDataCodewords: 180,\n        errorCodewordsPerBlock: 28\n    },\n    H: {\n        groups: [\n            [3, 12],\n            [8, 13]\n        ],\n        totalDataCodewords: 140,\n        errorCodewordsPerBlock: 24\n    }\n}, {\n    L: {\n        groups: [\n            [2, 92],\n            [2, 93]\n        ],\n        totalDataCodewords: 370,\n        errorCodewordsPerBlock: 24\n    },\n    M: {\n        groups: [\n            [6, 36],\n            [2, 37]\n        ],\n        totalDataCodewords: 290,\n        errorCodewordsPerBlock: 22\n    },\n    Q: {\n        groups: [\n            [4, 20],\n            [6, 21]\n        ],\n        totalDataCodewords: 206,\n        errorCodewordsPerBlock: 26\n    },\n    H: {\n        groups: [\n            [7, 14],\n            [4, 15]\n        ],\n        totalDataCodewords: 158,\n        errorCodewordsPerBlock: 28\n    }\n}, {\n    L: {\n        groups: [\n            [4, 107]\n        ],\n        totalDataCodewords: 428,\n        errorCodewordsPerBlock: 26\n    },\n    M: {\n        groups: [\n            [8, 37],\n            [1, 38]\n        ],\n        totalDataCodewords: 334,\n        errorCodewordsPerBlock: 22\n    },\n    Q: {\n        groups: [\n            [8, 20],\n            [4, 21]\n        ],\n        totalDataCodewords: 244,\n        errorCodewordsPerBlock: 24\n    },\n    H: {\n        groups: [\n            [12, 11],\n            [4, 12]\n        ],\n        totalDataCodewords: 180,\n        errorCodewordsPerBlock: 22\n    }\n}, {\n    L: {\n        groups: [\n            [3, 115],\n            [1, 116]\n        ],\n        totalDataCodewords: 461,\n        errorCodewordsPerBlock: 30\n    },\n    M: {\n        groups: [\n            [4, 40],\n            [5, 41]\n        ],\n        totalDataCodewords: 365,\n        errorCodewordsPerBlock: 24\n    },\n    Q: {\n        groups: [\n            [11, 16],\n            [5, 17]\n        ],\n        totalDataCodewords: 261,\n        errorCodewordsPerBlock: 20\n    },\n    H: {\n        groups: [\n            [11, 12],\n            [5, 13]\n        ],\n        totalDataCodewords: 197,\n        errorCodewordsPerBlock: 24\n    }\n}, {\n    L: {\n        groups: [\n            [5, 87],\n            [1, 88]\n        ],\n        totalDataCodewords: 523,\n        errorCodewordsPerBlock: 22\n    },\n    M: {\n        groups: [\n            [5, 41],\n            [5, 42]\n        ],\n        totalDataCodewords: 415,\n        errorCodewordsPerBlock: 24\n    },\n    Q: {\n        groups: [\n            [5, 24],\n            [7, 25]\n        ],\n        totalDataCodewords: 295,\n        errorCodewordsPerBlock: 30\n    },\n    H: {\n        groups: [\n            [11, 12],\n            [7, 13]\n        ],\n        totalDataCodewords: 223,\n        errorCodewordsPerBlock: 24\n    }\n}, {\n    L: {\n        groups: [\n            [5, 98],\n            [1, 99]\n        ],\n        totalDataCodewords: 589,\n        errorCodewordsPerBlock: 24\n    },\n    M: {\n        groups: [\n            [7, 45],\n            [3, 46]\n        ],\n        totalDataCodewords: 453,\n        errorCodewordsPerBlock: 28\n    },\n    Q: {\n        groups: [\n            [15, 19],\n            [2, 20]\n        ],\n        totalDataCodewords: 325,\n        errorCodewordsPerBlock: 24\n    },\n    H: {\n        groups: [\n            [3, 15],\n            [13, 16]\n        ],\n        totalDataCodewords: 253,\n        errorCodewordsPerBlock: 30\n    }\n}, {\n    L: {\n        groups: [\n            [1, 107],\n            [5, 108]\n        ],\n        totalDataCodewords: 647,\n        errorCodewordsPerBlock: 28\n    },\n    M: {\n        groups: [\n            [10, 46],\n            [1, 47]\n        ],\n        totalDataCodewords: 507,\n        errorCodewordsPerBlock: 28\n    },\n    Q: {\n        groups: [\n            [1, 22],\n            [15, 23]\n        ],\n        totalDataCodewords: 367,\n        errorCodewordsPerBlock: 28\n    },\n    H: {\n        groups: [\n            [2, 14],\n            [17, 15]\n        ],\n        totalDataCodewords: 283,\n        errorCodewordsPerBlock: 28\n    }\n}, {\n    L: {\n        groups: [\n            [5, 120],\n            [1, 121]\n        ],\n        totalDataCodewords: 721,\n        errorCodewordsPerBlock: 30\n    },\n    M: {\n        groups: [\n            [9, 43],\n            [4, 44]\n        ],\n        totalDataCodewords: 563,\n        errorCodewordsPerBlock: 26\n    },\n    Q: {\n        groups: [\n            [17, 22],\n            [1, 23]\n        ],\n        totalDataCodewords: 397,\n        errorCodewordsPerBlock: 28\n    },\n    H: {\n        groups: [\n            [2, 14],\n            [19, 15]\n        ],\n        totalDataCodewords: 313,\n        errorCodewordsPerBlock: 28\n    }\n}, {\n    L: {\n        groups: [\n            [3, 113],\n            [4, 114]\n        ],\n        totalDataCodewords: 795,\n        errorCodewordsPerBlock: 28\n    },\n    M: {\n        groups: [\n            [3, 44],\n            [11, 45]\n        ],\n        totalDataCodewords: 627,\n        errorCodewordsPerBlock: 26\n    },\n    Q: {\n        groups: [\n            [17, 21],\n            [4, 22]\n        ],\n        totalDataCodewords: 445,\n        errorCodewordsPerBlock: 26\n    },\n    H: {\n        groups: [\n            [9, 13],\n            [16, 14]\n        ],\n        totalDataCodewords: 341,\n        errorCodewordsPerBlock: 26\n    }\n}, {\n    L: {\n        groups: [\n            [3, 107],\n            [5, 108]\n        ],\n        totalDataCodewords: 861,\n        errorCodewordsPerBlock: 28\n    },\n    M: {\n        groups: [\n            [3, 41],\n            [13, 42]\n        ],\n        totalDataCodewords: 669,\n        errorCodewordsPerBlock: 26\n    },\n    Q: {\n        groups: [\n            [15, 24],\n            [5, 25]\n        ],\n        totalDataCodewords: 485,\n        errorCodewordsPerBlock: 30\n    },\n    H: {\n        groups: [\n            [15, 15],\n            [10, 16]\n        ],\n        totalDataCodewords: 385,\n        errorCodewordsPerBlock: 28\n    }\n}, {\n    L: {\n        groups: [\n            [4, 116],\n            [4, 117]\n        ],\n        totalDataCodewords: 932,\n        errorCodewordsPerBlock: 28\n    },\n    M: {\n        groups: [\n            [17, 42]\n        ],\n        totalDataCodewords: 714,\n        errorCodewordsPerBlock: 26\n    },\n    Q: {\n        groups: [\n            [17, 22],\n            [6, 23]\n        ],\n        totalDataCodewords: 512,\n        errorCodewordsPerBlock: 28\n    },\n    H: {\n        groups: [\n            [19, 16],\n            [6, 17]\n        ],\n        totalDataCodewords: 406,\n        errorCodewordsPerBlock: 30\n    }\n}, {\n    L: {\n        groups: [\n            [2, 111],\n            [7, 112]\n        ],\n        totalDataCodewords: 1006,\n        errorCodewordsPerBlock: 28\n    },\n    M: {\n        groups: [\n            [17, 46]\n        ],\n        totalDataCodewords: 782,\n        errorCodewordsPerBlock: 28\n    },\n    Q: {\n        groups: [\n            [7, 24],\n            [16, 25]\n        ],\n        totalDataCodewords: 568,\n        errorCodewordsPerBlock: 30\n    },\n    H: {\n        groups: [\n            [34, 13]\n        ],\n        totalDataCodewords: 442,\n        errorCodewordsPerBlock: 24\n    }\n}, {\n    L: {\n        groups: [\n            [4, 121],\n            [5, 122]\n        ],\n        totalDataCodewords: 1094,\n        errorCodewordsPerBlock: 30\n    },\n    M: {\n        groups: [\n            [4, 47],\n            [14, 48]\n        ],\n        totalDataCodewords: 860,\n        errorCodewordsPerBlock: 28\n    },\n    Q: {\n        groups: [\n            [11, 24],\n            [14, 25]\n        ],\n        totalDataCodewords: 614,\n        errorCodewordsPerBlock: 30\n    },\n    H: {\n        groups: [\n            [16, 15],\n            [14, 16]\n        ],\n        totalDataCodewords: 464,\n        errorCodewordsPerBlock: 30\n    }\n}, {\n    L: {\n        groups: [\n            [6, 117],\n            [4, 118]\n        ],\n        totalDataCodewords: 1174,\n        errorCodewordsPerBlock: 30\n    },\n    M: {\n        groups: [\n            [6, 45],\n            [14, 46]\n        ],\n        totalDataCodewords: 914,\n        errorCodewordsPerBlock: 28\n    },\n    Q: {\n        groups: [\n            [11, 24],\n            [16, 25]\n        ],\n        totalDataCodewords: 664,\n        errorCodewordsPerBlock: 30\n    },\n    H: {\n        groups: [\n            [30, 16],\n            [2, 17]\n        ],\n        totalDataCodewords: 514,\n        errorCodewordsPerBlock: 30\n    }\n}, {\n    L: {\n        groups: [\n            [8, 106],\n            [4, 107]\n        ],\n        totalDataCodewords: 1276,\n        errorCodewordsPerBlock: 26\n    },\n    M: {\n        groups: [\n            [8, 47],\n            [13, 48]\n        ],\n        totalDataCodewords: 1000,\n        errorCodewordsPerBlock: 28\n    },\n    Q: {\n        groups: [\n            [7, 24],\n            [22, 25]\n        ],\n        totalDataCodewords: 718,\n        errorCodewordsPerBlock: 30\n    },\n    H: {\n        groups: [\n            [22, 15],\n            [13, 16]\n        ],\n        totalDataCodewords: 538,\n        errorCodewordsPerBlock: 30\n    }\n}, {\n    L: {\n        groups: [\n            [10, 114],\n            [2, 115]\n        ],\n        totalDataCodewords: 1370,\n        errorCodewordsPerBlock: 28\n    },\n    M: {\n        groups: [\n            [19, 46],\n            [4, 47]\n        ],\n        totalDataCodewords: 1062,\n        errorCodewordsPerBlock: 28\n    },\n    Q: {\n        groups: [\n            [28, 22],\n            [6, 23]\n        ],\n        totalDataCodewords: 754,\n        errorCodewordsPerBlock: 28\n    },\n    H: {\n        groups: [\n            [33, 16],\n            [4, 17]\n        ],\n        totalDataCodewords: 596,\n        errorCodewordsPerBlock: 30\n    }\n}, {\n    L: {\n        groups: [\n            [8, 122],\n            [4, 123]\n        ],\n        totalDataCodewords: 1468,\n        errorCodewordsPerBlock: 30\n    },\n    M: {\n        groups: [\n            [22, 45],\n            [3, 46]\n        ],\n        totalDataCodewords: 1128,\n        errorCodewordsPerBlock: 28\n    },\n    Q: {\n        groups: [\n            [8, 23],\n            [26, 24]\n        ],\n        totalDataCodewords: 808,\n        errorCodewordsPerBlock: 30\n    },\n    H: {\n        groups: [\n            [12, 15],\n            [28, 16]\n        ],\n        totalDataCodewords: 628,\n        errorCodewordsPerBlock: 30\n    }\n}, {\n    L: {\n        groups: [\n            [3, 117],\n            [10, 118]\n        ],\n        totalDataCodewords: 1531,\n        errorCodewordsPerBlock: 30\n    },\n    M: {\n        groups: [\n            [3, 45],\n            [23, 46]\n        ],\n        totalDataCodewords: 1193,\n        errorCodewordsPerBlock: 28\n    },\n    Q: {\n        groups: [\n            [4, 24],\n            [31, 25]\n        ],\n        totalDataCodewords: 871,\n        errorCodewordsPerBlock: 30\n    },\n    H: {\n        groups: [\n            [11, 15],\n            [31, 16]\n        ],\n        totalDataCodewords: 661,\n        errorCodewordsPerBlock: 30\n    }\n}, {\n    L: {\n        groups: [\n            [7, 116],\n            [7, 117]\n        ],\n        totalDataCodewords: 1631,\n        errorCodewordsPerBlock: 30\n    },\n    M: {\n        groups: [\n            [21, 45],\n            [7, 46]\n        ],\n        totalDataCodewords: 1267,\n        errorCodewordsPerBlock: 28\n    },\n    Q: {\n        groups: [\n            [1, 23],\n            [37, 24]\n        ],\n        totalDataCodewords: 911,\n        errorCodewordsPerBlock: 30\n    },\n    H: {\n        groups: [\n            [19, 15],\n            [26, 16]\n        ],\n        totalDataCodewords: 701,\n        errorCodewordsPerBlock: 30\n    }\n}, {\n    L: {\n        groups: [\n            [5, 115],\n            [10, 116]\n        ],\n        totalDataCodewords: 1735,\n        errorCodewordsPerBlock: 30\n    },\n    M: {\n        groups: [\n            [19, 47],\n            [10, 48]\n        ],\n        totalDataCodewords: 1373,\n        errorCodewordsPerBlock: 28\n    },\n    Q: {\n        groups: [\n            [15, 24],\n            [25, 25]\n        ],\n        totalDataCodewords: 985,\n        errorCodewordsPerBlock: 30\n    },\n    H: {\n        groups: [\n            [23, 15],\n            [25, 16]\n        ],\n        totalDataCodewords: 745,\n        errorCodewordsPerBlock: 30\n    }\n}, {\n    L: {\n        groups: [\n            [13, 115],\n            [3, 116]\n        ],\n        totalDataCodewords: 1843,\n        errorCodewordsPerBlock: 30\n    },\n    M: {\n        groups: [\n            [2, 46],\n            [29, 47]\n        ],\n        totalDataCodewords: 1455,\n        errorCodewordsPerBlock: 28\n    },\n    Q: {\n        groups: [\n            [42, 24],\n            [1, 25]\n        ],\n        totalDataCodewords: 1033,\n        errorCodewordsPerBlock: 30\n    },\n    H: {\n        groups: [\n            [23, 15],\n            [28, 16]\n        ],\n        totalDataCodewords: 793,\n        errorCodewordsPerBlock: 30\n    }\n}, {\n    L: {\n        groups: [\n            [17, 115]\n        ],\n        totalDataCodewords: 1955,\n        errorCodewordsPerBlock: 30\n    },\n    M: {\n        groups: [\n            [10, 46],\n            [23, 47]\n        ],\n        totalDataCodewords: 1541,\n        errorCodewordsPerBlock: 28\n    },\n    Q: {\n        groups: [\n            [10, 24],\n            [35, 25]\n        ],\n        totalDataCodewords: 1115,\n        errorCodewordsPerBlock: 30\n    },\n    H: {\n        groups: [\n            [19, 15],\n            [35, 16]\n        ],\n        totalDataCodewords: 845,\n        errorCodewordsPerBlock: 30\n    }\n}, {\n    L: {\n        groups: [\n            [17, 115],\n            [1, 116]\n        ],\n        totalDataCodewords: 2071,\n        errorCodewordsPerBlock: 30\n    },\n    M: {\n        groups: [\n            [14, 46],\n            [21, 47]\n        ],\n        totalDataCodewords: 1631,\n        errorCodewordsPerBlock: 28\n    },\n    Q: {\n        groups: [\n            [29, 24],\n            [19, 25]\n        ],\n        totalDataCodewords: 1171,\n        errorCodewordsPerBlock: 30\n    },\n    H: {\n        groups: [\n            [11, 15],\n            [46, 16]\n        ],\n        totalDataCodewords: 901,\n        errorCodewordsPerBlock: 30\n    }\n}, {\n    L: {\n        groups: [\n            [13, 115],\n            [6, 116]\n        ],\n        totalDataCodewords: 2191,\n        errorCodewordsPerBlock: 30\n    },\n    M: {\n        groups: [\n            [14, 46],\n            [23, 47]\n        ],\n        totalDataCodewords: 1725,\n        errorCodewordsPerBlock: 28\n    },\n    Q: {\n        groups: [\n            [44, 24],\n            [7, 25]\n        ],\n        totalDataCodewords: 1231,\n        errorCodewordsPerBlock: 30\n    },\n    H: {\n        groups: [\n            [59, 16],\n            [1, 17]\n        ],\n        totalDataCodewords: 961,\n        errorCodewordsPerBlock: 30\n    }\n}, {\n    L: {\n        groups: [\n            [12, 121],\n            [7, 122]\n        ],\n        totalDataCodewords: 2306,\n        errorCodewordsPerBlock: 30\n    },\n    M: {\n        groups: [\n            [12, 47],\n            [26, 48]\n        ],\n        totalDataCodewords: 1812,\n        errorCodewordsPerBlock: 28\n    },\n    Q: {\n        groups: [\n            [39, 24],\n            [14, 25]\n        ],\n        totalDataCodewords: 1286,\n        errorCodewordsPerBlock: 30\n    },\n    H: {\n        groups: [\n            [22, 15],\n            [41, 16]\n        ],\n        totalDataCodewords: 986,\n        errorCodewordsPerBlock: 30\n    }\n}, {\n    L: {\n        groups: [\n            [6, 121],\n            [14, 122]\n        ],\n        totalDataCodewords: 2434,\n        errorCodewordsPerBlock: 30\n    },\n    M: {\n        groups: [\n            [6, 47],\n            [34, 48]\n        ],\n        totalDataCodewords: 1914,\n        errorCodewordsPerBlock: 28\n    },\n    Q: {\n        groups: [\n            [46, 24],\n            [10, 25]\n        ],\n        totalDataCodewords: 1354,\n        errorCodewordsPerBlock: 30\n    },\n    H: {\n        groups: [\n            [2, 15],\n            [64, 16]\n        ],\n        totalDataCodewords: 1054,\n        errorCodewordsPerBlock: 30\n    }\n}, {\n    L: {\n        groups: [\n            [17, 122],\n            [4, 123]\n        ],\n        totalDataCodewords: 2566,\n        errorCodewordsPerBlock: 30\n    },\n    M: {\n        groups: [\n            [29, 46],\n            [14, 47]\n        ],\n        totalDataCodewords: 1992,\n        errorCodewordsPerBlock: 28\n    },\n    Q: {\n        groups: [\n            [49, 24],\n            [10, 25]\n        ],\n        totalDataCodewords: 1426,\n        errorCodewordsPerBlock: 30\n    },\n    H: {\n        groups: [\n            [24, 15],\n            [46, 16]\n        ],\n        totalDataCodewords: 1096,\n        errorCodewordsPerBlock: 30\n    }\n}, {\n    L: {\n        groups: [\n            [4, 122],\n            [18, 123]\n        ],\n        totalDataCodewords: 2702,\n        errorCodewordsPerBlock: 30\n    },\n    M: {\n        groups: [\n            [13, 46],\n            [32, 47]\n        ],\n        totalDataCodewords: 2102,\n        errorCodewordsPerBlock: 28\n    },\n    Q: {\n        groups: [\n            [48, 24],\n            [14, 25]\n        ],\n        totalDataCodewords: 1502,\n        errorCodewordsPerBlock: 30\n    },\n    H: {\n        groups: [\n            [42, 15],\n            [32, 16]\n        ],\n        totalDataCodewords: 1142,\n        errorCodewordsPerBlock: 30\n    }\n}, {\n    L: {\n        groups: [\n            [20, 117],\n            [4, 118]\n        ],\n        totalDataCodewords: 2812,\n        errorCodewordsPerBlock: 30\n    },\n    M: {\n        groups: [\n            [40, 47],\n            [7, 48]\n        ],\n        totalDataCodewords: 2216,\n        errorCodewordsPerBlock: 28\n    },\n    Q: {\n        groups: [\n            [43, 24],\n            [22, 25]\n        ],\n        totalDataCodewords: 1582,\n        errorCodewordsPerBlock: 30\n    },\n    H: {\n        groups: [\n            [10, 15],\n            [67, 16]\n        ],\n        totalDataCodewords: 1222,\n        errorCodewordsPerBlock: 30\n    }\n}, {\n    L: {\n        groups: [\n            [19, 118],\n            [6, 119]\n        ],\n        totalDataCodewords: 2956,\n        errorCodewordsPerBlock: 30\n    },\n    M: {\n        groups: [\n            [18, 47],\n            [31, 48]\n        ],\n        totalDataCodewords: 2334,\n        errorCodewordsPerBlock: 28\n    },\n    Q: {\n        groups: [\n            [34, 24],\n            [34, 25]\n        ],\n        totalDataCodewords: 1666,\n        errorCodewordsPerBlock: 30\n    },\n    H: {\n        groups: [\n            [20, 15],\n            [61, 16]\n        ],\n        totalDataCodewords: 1276,\n        errorCodewordsPerBlock: 30\n    }\n}];\n","import {\n    geometry as geom,\n    drawing as draw\n} from '@progress/kendo-drawing';\n\nimport {\n    Class,\n    addClass,\n    setDefaultOptions,\n    deepExtend,\n    defaultErrorHandler\n} from '../common';\n\nimport { Box } from '../core';\nimport { encodeData } from './encodings/encoding';\nimport { extend } from './utils';\n\nimport { surfaceSize } from '../barcode/surface-size';\n\nvar round = Math.round;\nvar crossPattern = [[0, 1], [1, 1], [1, 2], [2, 2], [2, 1], [3, 1], [3, 0], [2, 0], [2, -1], [1, -1], [1, 0]];\nvar squarePattern = [[0, 1], [1, 1], [1, 0]];\n\nvar QRCodeDefaults = {\n    DEFAULT_SIZE: 200,\n    QUIET_ZONE_LENGTH: 4,\n    DEFAULT_ERROR_CORRECTION_LEVEL: \"L\",\n    DEFAULT_BACKGROUND: \"#fff\",\n    DEFAULT_DARK_MODULE_COLOR: \"#000\",\n    MIN_BASE_UNIT_SIZE: 1,\n    DEFAULT_LOGO_SIZE: 7\n};\n\nvar QRCode = (function (Class) {\n    function QRCode(element, options, errorHandler) {\n        if ( errorHandler === void 0 ) errorHandler = defaultErrorHandler;\n\n        Class.call(this);\n\n        this.options = deepExtend({}, this.options, options);\n        this.element = element;\n        this.wrapper = this.element;\n        this.onError = errorHandler;\n\n        this._initElement();\n        this._initSurface();\n\n        this.setOptions(options);\n    }\n\n    if ( Class ) QRCode.__proto__ = Class;\n    QRCode.prototype = Object.create( Class && Class.prototype );\n    QRCode.prototype.constructor = QRCode;\n\n    QRCode.prototype.destroy = function destroy () {\n        this._destroySurface();\n    };\n\n    QRCode.prototype._initElement = function _initElement () {\n        addClass(this.element, \"k-qrcode\");\n    };\n\n    QRCode.prototype._initSurface = function _initSurface () {\n        var ref = this;\n        var options = ref.options;\n        var surface = ref.surface;\n\n        if (!surface || surface.options.type !== options.renderAs) {\n            this._destroySurface();\n            this._initSurfaceElement();\n            this.surface = this._createSurface();\n        }\n    };\n\n    QRCode.prototype._createSurface = function _createSurface () {\n        return draw.Surface.create(this.surfaceElement, {\n            type: this.options.renderAs\n        });\n    };\n\n    QRCode.prototype._destroySurface = function _destroySurface () {\n        if (this.surface) {\n            this.surface.destroy();\n            this.surface = null;\n            this._destroySurfaceElement();\n        }\n    };\n\n    QRCode.prototype._initSurfaceElement = function _initSurfaceElement () {\n        if (!this.surfaceElement) {\n            this.surfaceElement = document.createElement('div');\n            this.surfaceElement.style.position = \"relative\";\n            this.element.appendChild(this.surfaceElement);\n        }\n    };\n\n    QRCode.prototype._destroySurfaceElement = function _destroySurfaceElement () {\n        if (this.surfaceElement && this.surfaceElement.parentNode) {\n            this.surfaceElement.parentNode.removeChild(this.surfaceElement);\n            this.surfaceElement = null;\n        }\n    };\n\n    QRCode.prototype.redraw = function redraw () {\n        var size = this._getSize();\n\n        this.surface.clear();\n\n        this.surface.setSize({\n            width: size,\n            height: size\n        });\n\n        this.createVisual();\n\n        this.surface.draw(this.visual);\n    };\n\n    QRCode.prototype.getSize = function getSize () {\n        var element = this.element;\n        var elementWidth = element.clientWidth;\n        var elementHeight = element.clientHeight;\n        var size = { width: 0, height: 0 };\n\n        if (elementWidth > 0) {\n            size.width = elementWidth;\n        }\n\n        if (elementHeight) {\n            size.height = elementHeight;\n        }\n\n        return size;\n    };\n\n    QRCode.prototype._resize = function _resize () {\n        this.redraw();\n    };\n\n    QRCode.prototype.createVisual = function createVisual () {\n        this.visual = this._render();\n    };\n\n    QRCode.prototype.exportVisual = function exportVisual () {\n        return this._render();\n    };\n\n    QRCode.prototype._render = function _render () {\n        var value = this._value,\n            baseUnit,\n            border = this.options.border || {},\n            padding = this.options.padding || 0,\n            borderWidth = border.width || 0,\n            quietZoneSize,\n            matrix,\n            size,\n            dataSize,\n            contentSize;\n\n        border.width = borderWidth;\n\n        var visual = new draw.Group();\n\n        try {\n            if (value) {\n                matrix = encodeData(value, this.options.errorCorrection, this.options.encoding);\n                size = this._getSize();\n                contentSize = size - 2 * (borderWidth + padding);\n                baseUnit = this._calculateBaseUnit(contentSize, matrix.length);\n                dataSize = matrix.length * baseUnit;\n                quietZoneSize = borderWidth + padding + (contentSize - dataSize) / 2;\n\n                visual.append(this._renderBackground(size, border));\n                visual.append(this._renderMatrix(matrix, baseUnit, quietZoneSize));\n\n                if (this._hasCustomLogo()) {\n                    visual.append(this._renderLogo(size, baseUnit));\n                } else if (this._isSwiss()) {\n                    visual.append(this._renderSwissCode(size, baseUnit));\n                }\n            }\n        } catch (error) {\n            this.onError(error);\n        }\n\n        return visual;\n    };\n\n    QRCode.prototype._renderLogo = function _renderLogo (qrSize, baseUnit) {\n        var image;\n        var imageRect;\n        var center = round(qrSize / 2);\n        var logoSize = this._getLogoSize(baseUnit * QRCodeDefaults.DEFAULT_LOGO_SIZE);\n        var logoUrl = this.options.overlay.imageUrl;\n        var position = {\n            x: center - logoSize.width / 2,\n            y: center - logoSize.height / 2\n        };\n\n        imageRect = new geom.Rect(\n            new geom.Point(position.x, position.y),\n            new geom.Size(logoSize.width, logoSize.height)\n        );\n\n        image = new draw.Image(logoUrl, imageRect);\n\n        return image;\n    };\n\n    QRCode.prototype._renderSwissCode = function _renderSwissCode (qrSize, baseUnit) {\n        var logoSize = this._getLogoSize(baseUnit * QRCodeDefaults.DEFAULT_LOGO_SIZE);\n        logoSize = Math.max(logoSize.width, logoSize.height);\n        var crossSize = logoSize / 4;\n        var crossOffset = crossSize / 2;\n        var center = qrSize / 2;\n        var start = {};\n        var visual = new draw.Group();\n\n        start.x = start.y = Math.ceil(center - baseUnit - logoSize / 2);\n        visual.append(this._renderShape(start, Math.ceil(logoSize + baseUnit * 2), squarePattern, \"#fff\"));\n\n        start.x = start.y = center - logoSize / 2;\n        visual.append(this._renderShape(start, logoSize, squarePattern, this.options.color));\n\n        start.x = center + crossOffset - logoSize / 2;\n        start.y = center + crossOffset + crossSize - logoSize / 2;\n        visual.append(this._renderShape(start, crossSize, crossPattern, \"#fff\"));\n\n        return visual;\n    };\n\n    QRCode.prototype._renderShape = function _renderShape (start, step, pattern, color) {\n        var path = new draw.MultiPath({\n            fill: {\n                color: color\n            },\n            stroke: null\n        });\n\n        path.moveTo(start.x, start.y);\n\n        for (var i = 0; i < pattern.length; i++) {\n            path.lineTo(start.x + step * pattern[i][0], start.y + step * pattern[i][1]);\n        }\n\n        path.close();\n\n        return path;\n    };\n\n    QRCode.prototype._getSize = function _getSize () {\n        var size;\n\n        if (this.options.size) {\n            size = parseInt(this.options.size, 10);\n        } else {\n            var element = this.element;\n            var elementSize = surfaceSize(element, this.options.renderAs);\n            var min = Math.min(elementSize.width, elementSize.height);\n\n            if (min > 0) {\n                size = min;\n            } else {\n                size = QRCodeDefaults.DEFAULT_SIZE;\n            }\n        }\n\n        return size;\n    };\n\n    QRCode.prototype._calculateBaseUnit = function _calculateBaseUnit (size, matrixSize) {\n        var baseUnit = Math.floor(size / matrixSize);\n\n        if (baseUnit < QRCodeDefaults.MIN_BASE_UNIT_SIZE) {\n            var minSize = Math.ceil(matrixSize * QRCodeDefaults.MIN_BASE_UNIT_SIZE);\n            this.onError(new Error(\n                (\"Insufficient size for QR Code: the current size is \" + size + \"px and the minimum size is \" + minSize + \"px.\")\n            ));\n        } else if (baseUnit * matrixSize >= size &&\n            baseUnit - 1 >= QRCodeDefaults.MIN_BASE_UNIT_SIZE) {\n            baseUnit--;\n        }\n\n        return baseUnit;\n    };\n\n    QRCode.prototype._renderMatrix = function _renderMatrix (matrix, baseUnit, quietZoneSize) {\n        var path = new draw.MultiPath({\n            fill: {\n                color: this.options.color\n            },\n            stroke: null\n        });\n\n        for (var row = 0; row < matrix.length; row++) {\n            var y = quietZoneSize + row * baseUnit;\n            var column = 0;\n\n            while (column < matrix.length) {\n                while (matrix[row][column] === 0 && column < matrix.length) {\n                    column++;\n                }\n\n                if (column < matrix.length) {\n                    var x = column;\n                    while (matrix[row][column] === 1) {\n                        column++;\n                    }\n\n                    var x1 = round(quietZoneSize + x * baseUnit);\n                    var y1 = round(y);\n                    var x2 = round(quietZoneSize + column * baseUnit);\n                    var y2 = round(y + baseUnit);\n\n                    path.moveTo(x1, y1)\n                        .lineTo(x1, y2)\n                        .lineTo(x2, y2)\n                        .lineTo(x2, y1)\n                        .close();\n                }\n            }\n        }\n\n        return path;\n    };\n\n    QRCode.prototype._renderBackground = function _renderBackground (size, border) {\n        var box = new Box(0, 0, size, size).unpad(border.width / 2);\n        var background = draw.Path.fromRect(box.toRect(), {\n            fill: {\n                color: this.options.background\n            },\n            stroke: {\n                color: border.color,\n                width: border.width\n            }\n        });\n\n        return background;\n    };\n\n    QRCode.prototype.setOptions = function setOptions (options) {\n        var newOptions = options || {};\n        this.options = extend(this.options, newOptions);\n\n        if (options.value !== undefined) {\n            this._value = String(this.options.value);\n        }\n\n        this._initSurface();\n        this.redraw();\n    };\n\n    QRCode.prototype.value = function value (value$1) {\n        if (value$1 === undefined) {\n            return this._value;\n        }\n\n        this._value = String(value$1);\n\n        this.redraw();\n    };\n\n    QRCode.prototype._hasCustomLogo = function _hasCustomLogo () {\n        return Boolean(this.options.overlay.imageUrl);\n    };\n\n    QRCode.prototype._isSwiss = function _isSwiss () {\n        return this.options.overlay.type === \"swiss\";\n    };\n\n    QRCode.prototype._getLogoSize = function _getLogoSize (defautLogoSize) {\n        var width = this.options.overlay.width;\n        var height = this.options.overlay.height;\n\n        if (!width && !height) {\n            width = height = defautLogoSize;\n        } else if (width && !height) {\n            height = width;\n        } else if (!width && height) {\n            width = height;\n        }\n\n        return {\n            width: width,\n            height: height\n        };\n    };\n\n    return QRCode;\n}(Class));\n\nsetDefaultOptions(QRCode, {\n    name: \"QRCode\",\n    renderAs: \"svg\",\n    encoding: \"ISO_8859_1\",\n    value: \"\",\n    errorCorrection: QRCodeDefaults.DEFAULT_ERROR_CORRECTION_LEVEL,\n    background: QRCodeDefaults.DEFAULT_BACKGROUND,\n    color: QRCodeDefaults.DEFAULT_DARK_MODULE_COLOR,\n    size: \"\",\n    padding: 0,\n    border: {\n        color: \"\",\n        width: 0\n    },\n    overlay: {\n        type: \"image\",\n        imageUrl: \"\",\n        width: 0,\n        height: 0\n    }\n});\n\nexport default QRCode;\n","// Coordinate reference system\n// World Geodetic System of 1984\nvar WGS84 = {\n    a: 6378137,                 // Semi-major radius\n    b: 6356752.314245179,       // Semi-minor radius\n    f: 0.0033528106647474805,   // Flattening\n    e: 0.08181919084262149      // Eccentricity\n};\n\n// Geographic coordinate systems use a spheroid to calculate positions on the earth.\n// A datum defines the position of the spheroid relative to the center of the earth\n// it provides a frame of reference for measuring locations on the surface of the earth\n// and defines the origin and orientation of latitude and longitude lines.\nexport var datums = {\n    WGS84: WGS84\n};\n","import {\n    Class,\n    deepExtend,\n    deg,\n    rad,\n    round,\n    defined\n} from '../common';\n\nimport {\n    datums\n} from './datums';\n\nfunction toSquare(value) {\n    return value * value;\n}\n\n\nvar math = Math,\n    abs = math.abs,\n    atan = math.atan,\n    atan2 = math.atan2,\n    cos = math.cos,\n    sin = math.sin,\n    tan = math.tan;\n\nexport var Location = (function (Class) {\n    function Location(lat, lng) {\n        Class.call(this);\n\n        this.initProperties();\n\n        if (arguments.length === 1) {\n            this.lat = lat[0];\n            this.lng = lat[1];\n        } else {\n            this.lat = lat;\n            this.lng = lng;\n        }\n    }\n\n    if ( Class ) Location.__proto__ = Class;\n    Location.prototype = Object.create( Class && Class.prototype );\n    Location.prototype.constructor = Location;\n\n    Location.prototype.initProperties = function initProperties () {\n        deepExtend(this, {\n            DISTANCE_ITERATIONS: 100,\n            DISTANCE_CONVERGENCE: 1e-12,\n            DISTANCE_PRECISION: 2,\n            FORMAT: '{0:N6}{1:N6}'\n        });\n    };\n\n    Location.prototype.toArray = function toArray () {\n        return [\n            this.lat,\n            this.lng\n        ];\n    };\n\n    Location.prototype.equals = function equals (loc) {\n        return loc && loc.lat === this.lat && loc.lng === this.lng;\n    };\n\n    Location.prototype.clone = function clone () {\n        return new Location(this.lat, this.lng);\n    };\n\n    Location.prototype.round = function round$1 (precision) {\n        this.lng = round(this.lng, precision);\n        this.lat = round(this.lat, precision);\n        return this;\n    };\n\n    Location.prototype.wrap = function wrap () {\n        this.lng = this.lng % 180;\n        this.lat = this.lat % 90;\n        return this;\n    };\n\n    Location.prototype.distanceTo = function distanceTo (dest, datum) {\n        return this.greatCircleTo(dest, datum).distance;\n    };\n\n    Location.prototype.destination = function destination (distance, initialBearing, initialDatum) {\n        var bearing = rad(initialBearing);\n        var datum = initialDatum || datums.WGS84;\n        var fromLat = rad(this.lat);\n        var fromLng = rad(this.lng);\n        var dToR = distance / datum.a;\n        var lat = math.asin(sin(fromLat) * cos(dToR) + cos(fromLat) * sin(dToR) * cos(bearing));\n        var lng = fromLng + atan2(sin(bearing) * sin(dToR) * cos(fromLat), cos(dToR) - sin(fromLat) * sin(lat));\n\n        return new Location(deg(lat), deg(lng));\n    };\n\n    Location.prototype.greatCircleTo = function greatCircleTo (initialDest, initialDatum) {\n        var this$1 = this;\n\n        var dest = Location.create(dest);\n        var datum = initialDatum || datums.WGS84;\n\n        if (!dest || this.clone().round(8).equals(dest.clone().round(8))) {\n            return {\n                distance: 0,\n                azimuthFrom: 0,\n                azimuthTo: 0\n            };\n        }\n\n        // See http://en.wikipedia.org/wiki/Vincenty's_formulae#Notation\n        // o == sigma\n        // A == alpha\n\n        var a = datum.a;\n        var b = datum.b;\n        var f = datum.f;\n        var L = rad(dest.lng - this.lng);\n        var U1 = atan((1 - f) * tan(rad(this.lat)));\n        var sinU1 = sin(U1);\n        var cosU1 = cos(U1);\n        var U2 = atan((1 - f) * tan(rad(dest.lat)));\n        var sinU2 = sin(U2);\n        var cosU2 = cos(U2);\n        var lambda = L;\n        var prevLambda;\n        var i = this.DISTANCE_ITERATIONS;\n        var converged = false;\n        var sinLambda;\n        var cosLambda;\n        var sino;\n        var cosA2;\n        var coso;\n        var cos2om;\n        var sigma;\n\n        while (!converged && i-- > 0) {\n            sinLambda = sin(lambda);\n            cosLambda = cos(lambda);\n            sino = math.sqrt(toSquare(cosU2 * sinLambda) + toSquare(cosU1 * sinU2 - sinU1 * cosU2 * cosLambda));\n            coso = sinU1 * sinU2 + cosU1 * cosU2 * cosLambda;\n            sigma = atan2(sino, coso);\n\n            var sinA = cosU1 * cosU2 * sinLambda / sino;\n            cosA2 = 1 - toSquare(sinA);\n            cos2om = 0;\n\n            if (cosA2 !== 0) {\n                cos2om = coso - 2 * sinU1 * sinU2 / cosA2;\n            }\n\n            prevLambda = lambda;\n            var C = f / 16 * cosA2 * (4 + f * (4 - 3 * cosA2));\n            lambda = L + (1 - C) * f * sinA * (sigma + C * sino * (cos2om + C * coso * (-1 + 2 * toSquare(cos2om))));\n            converged = abs(lambda - prevLambda) <= this$1.DISTANCE_CONVERGENCE;\n        }\n\n        var u2 = cosA2 * (toSquare(a) - toSquare(b)) / toSquare(b);\n        var A = 1 + u2 / 16384 * (4096 + u2 * (-768 + u2 * (320 - 175 * u2)));\n        var B = u2 / 1024 * (256 + u2 * (-128 + u2 * (74 - 47 * u2)));\n        var deltao = B * sino * (cos2om + B / 4 * (coso * (-1 + 2 * toSquare(cos2om)) - B / 6 * cos2om * (-3 + 4 * toSquare(sino)) * (-3 + 4 * toSquare(cos2om))));\n\n        var azimuthFrom = atan2(cosU2 * sinLambda, cosU1 * sinU2 - sinU1 * cosU2 * cosLambda);\n        var azimuthTo = atan2(cosU1 * sinLambda, -sinU1 * cosU2 + cosU1 * sinU2 * cosLambda);\n\n        return {\n            distance: round(b * A * (sigma - deltao), this.DISTANCE_PRECISION),\n            azimuthFrom: deg(azimuthFrom),\n            azimuthTo: deg(azimuthTo)\n        };\n    };\n\n    // IE < 9 doesn't allow to override toString on definition\n    Location.prototype.toString = function toString () {\n        // return kendo.format(this.FORMAT, this.lat, this.lng);\n        return String(this.lat) + \",\" + String(this.lng);\n    };\n\n    Location.fromLngLat = function fromLngLat (lngAndLat) {\n        return new Location(lngAndLat[1], lngAndLat[0]);\n    };\n\n    Location.fromLatLng = function fromLatLng (lngAndLat) {\n        return new Location(lngAndLat[0], lngAndLat[1]);\n    };\n\n    Location.create = function create (a, b) {\n        if (defined(a)) {\n            if (a instanceof Location) {\n                return a.clone();\n            } else if (arguments.length === 1 && a.length === 2) {\n                return Location.fromLatLng(a);\n            }\n\n            return new Location(a, b);\n        }\n    };\n\n    return Location;\n}(Class));\n","import {\n    geometry as g\n} from '@progress/kendo-drawing';\n\nimport {\n    Class,\n    setDefaultOptions,\n    limitValue,\n    rad,\n    deg,\n    deepExtend\n} from '../common';\n\nimport {\n    Location\n} from './location';\n\nimport {\n    datums\n} from './datums';\n\n\nvar math = Math,\n    atan = math.atan,\n    exp = math.exp,\n    pow = math.pow,\n    sin = math.sin,\n    log = math.log,\n    tan = math.tan,\n    Point = g.Point;\n\nvar PI = math.PI,\n    PI_DIV_2 = PI / 2,\n    PI_DIV_4 = PI / 4,\n    DEG_TO_RAD = PI / 180;\n\nvar WGS84 = datums.WGS84;\n\n// WGS 84 / World Mercator\nexport var Mercator = (function (Class) {\n    function Mercator(options) {\n        Class.call(this);\n        this.initProperties();\n        this._initOptions(options);\n    }\n\n    if ( Class ) Mercator.__proto__ = Class;\n    Mercator.prototype = Object.create( Class && Class.prototype );\n    Mercator.prototype.constructor = Mercator;\n\n    Mercator.prototype._initOptions = function _initOptions (options) {\n        this.options = deepExtend({}, this.options, options);\n    };\n\n    Mercator.prototype.initProperties = function initProperties () {\n        // super.initProperties();\n\n        deepExtend(this, {\n            MAX_LNG: 180,\n            MAX_LAT: 85.0840590501,\n            INVERSE_ITERATIONS: 15,\n            INVERSE_CONVERGENCE: 1e-12\n        });\n    };\n\n    Mercator.prototype.forward = function forward (loc, clamp) {\n        var proj = this,\n            options = proj.options,\n            datum = options.datum,\n            r = datum.a,\n            lng0 = options.centralMeridian,\n            lat = limitValue(loc.lat, -proj.MAX_LAT, proj.MAX_LAT),\n            lng = clamp ? limitValue(loc.lng, -proj.MAX_LNG, proj.MAX_LNG) : loc.lng,\n            x = rad(lng - lng0) * r,\n            y = proj._projectLat(lat);\n        return new Point(x, y);\n    };\n    Mercator.prototype._projectLat = function _projectLat (lat) {\n        var datum = this.options.datum,\n            ecc = datum.e,\n            r = datum.a,\n            y = rad(lat),\n            ts = tan(PI_DIV_4 + y / 2),\n            con = ecc * sin(y),\n            p = pow((1 - con) / (1 + con), ecc / 2);\n\n        // See: http://en.wikipedia.org/wiki/Mercator_projection#Generalization_to_the_ellipsoid\n        return r * log(ts * p);\n    };\n    Mercator.prototype.inverse = function inverse (point, clamp) {\n        var proj = this,\n            options = proj.options,\n            datum = options.datum,\n            r = datum.a,\n            lng0 = options.centralMeridian,\n            lng = point.x / (DEG_TO_RAD * r) + lng0,\n            lat = limitValue(proj._inverseY(point.y), -proj.MAX_LAT, proj.MAX_LAT);\n        if (clamp) {\n            lng = limitValue(lng, -proj.MAX_LNG, proj.MAX_LNG);\n        }\n        return new Location(lat, lng);\n    };\n    Mercator.prototype._inverseY = function _inverseY (y) {\n        var proj = this,\n            datum = proj.options.datum,\n            r = datum.a,\n            ecc = datum.e,\n            ecch = ecc / 2,\n            ts = exp(-y / r),\n            phi = PI_DIV_2 - 2 * atan(ts),\n            i;\n        for (i = 0; i <= proj.INVERSE_ITERATIONS; i++) {\n            var con = ecc * sin(phi),\n                p = pow((1 - con) / (1 + con), ecch),\n                dphi = PI_DIV_2 - 2 * atan(ts * p) - phi;\n            phi += dphi;\n            if (math.abs(dphi) <= proj.INVERSE_CONVERGENCE) {\n                break;\n            }\n        }\n        return deg(phi);\n    };\n\n    return Mercator;\n}(Class));\n\nsetDefaultOptions(Mercator, {\n    centralMeridian: 0,\n    datum: WGS84\n});\n\n\n// WGS 84 / Pseudo-Mercator\n// Used by Google Maps, Bing, OSM, etc.\n// Spherical projection of ellipsoidal coordinates.\nexport var SphericalMercator = (function (Mercator) {\n    function SphericalMercator () {\n        Mercator.apply(this, arguments);\n    }\n\n    if ( Mercator ) SphericalMercator.__proto__ = Mercator;\n    SphericalMercator.prototype = Object.create( Mercator && Mercator.prototype );\n    SphericalMercator.prototype.constructor = SphericalMercator;\n\n    SphericalMercator.prototype.initProperties = function initProperties () {\n        Mercator.prototype.initProperties.call(this);\n\n        deepExtend(this, {\n            MAX_LAT: 85.0511287798\n        });\n    };\n\n    SphericalMercator.prototype._projectLat = function _projectLat (lat) {\n        var r = this.options.datum.a,\n            y = rad(lat),\n            ts = tan(PI_DIV_4 + y / 2);\n        return r * log(ts);\n    };\n\n    SphericalMercator.prototype._inverseY = function _inverseY (y) {\n        var r = this.options.datum.a,\n            ts = exp(-y / r);\n        return deg(PI_DIV_2 - 2 * atan(ts));\n    };\n\n    return SphericalMercator;\n}(Mercator));\n\nexport var Equirectangular = (function (Class) {\n    function Equirectangular () {\n        Class.apply(this, arguments);\n    }\n\n    if ( Class ) Equirectangular.__proto__ = Class;\n    Equirectangular.prototype = Object.create( Class && Class.prototype );\n    Equirectangular.prototype.constructor = Equirectangular;\n\n    Equirectangular.prototype.forward = function forward (loc) {\n        return new Point(loc.lng, loc.lat);\n    };\n    Equirectangular.prototype.inverse = function inverse (point) {\n        return new Location(point.y, point.x);\n    };\n\n    return Equirectangular;\n}(Class));\n\n// This is the projected coordinate system used for rendering maps in Google Maps, OpenStreetMap, etc\n// Unit: metre\n// Geodetic CRS: WGS 84\n// Scope: Certain Web mapping and visualisation applications. It is not a recognised geodetic system: for that see ellipsoidal Mercator CRS code 3395 (WGS 84 / World Mercator).\n// Remarks: Uses spherical development of ellipsoidal coordinates. Relative to WGS 84 / World Mercator (CRS code 3395) errors of 0.7 percent in scale and differences in northing of up to 43km in the map (equivalent to 21km on the ground) may arise.\n// Area of use: World between 85.06°S and 85.06°N.\n// Coordinate system: Cartesian 2D CS. Axes: easting, northing (X,Y). Orientations: east, north. UoM: m.\n// https://epsg.io/3857\nexport var EPSG3857 = (function (Class) {\n    function EPSG3857() {\n        Class.call(this);\n        var crs = this,\n            proj = crs._proj = new SphericalMercator();\n        var c = this.c = 2 * PI * proj.options.datum.a;\n\n        // transfrom matrix\n        // Scale circumference to 1, mirror Y and shift origin to top left\n        this._tm = g.transform().translate(0.5, 0.5).scale(1 / c, -1 / c);\n\n        // Inverse transform matrix\n        this._itm = g.transform().scale(c, -c).translate(-0.5, -0.5);\n    }\n\n    if ( Class ) EPSG3857.__proto__ = Class;\n    EPSG3857.prototype = Object.create( Class && Class.prototype );\n    EPSG3857.prototype.constructor = EPSG3857;\n\n    // Location <-> Point (screen coordinates for a given scale)\n    EPSG3857.prototype.toPoint = function toPoint (loc, scale, clamp) {\n        var point = this._proj.forward(loc, clamp);\n        return point.transform(this._tm).scale(scale || 1);\n    };\n    EPSG3857.prototype.toLocation = function toLocation (point, scale, clamp) {\n        var newPoint = point.clone().scale(1 / (scale || 1)).transform(this._itm);\n        return this._proj.inverse(newPoint, clamp);\n    };\n\n    return EPSG3857;\n}(Class));\n\n// Unit: metre\n// Geodetic CRS: WGS 84\n// Scope: Very small scale mapping.\n// Remarks: Euro-centric view of world excluding polar areas.\n// Area of use: World between 80°S and 84°N.\n// Coordinate system: Cartesian 2D CS. Axes: easting, northing (E,N). Orientations: east, north. UoM: m.\n// https://epsg.io/3395\nexport var EPSG3395 = (function (Class) {\n    function EPSG3395() {\n        Class.call(this);\n        this._proj = new Mercator();\n    }\n\n    if ( Class ) EPSG3395.__proto__ = Class;\n    EPSG3395.prototype = Object.create( Class && Class.prototype );\n    EPSG3395.prototype.constructor = EPSG3395;\n    EPSG3395.prototype.toPoint = function toPoint (loc) {\n        return this._proj.forward(loc);\n    };\n    EPSG3395.prototype.toLocation = function toLocation (point) {\n        return this._proj.inverse(point);\n    };\n\n    return EPSG3395;\n}(Class));\n\n// Unit: degree\n// Geodetic CRS: WGS 84\n// Scope: Horizontal component of 3D system. Used by the GPS satellite navigation system and for NATO military geodetic surveying.\n// Area of use: World.\n// Coordinate system: Ellipsoidal 2D CS. Axes: latitude, longitude. Orientations: north, east. UoM: degree\n// https://epsg.io/4326\nexport var EPSG4326 = (function (Class) {\n    function EPSG4326() {\n        Class.call(this);\n        this._proj = new Equirectangular();\n    }\n\n    if ( Class ) EPSG4326.__proto__ = Class;\n    EPSG4326.prototype = Object.create( Class && Class.prototype );\n    EPSG4326.prototype.constructor = EPSG4326;\n    EPSG4326.prototype.toPoint = function toPoint (loc) {\n        return this._proj.forward(loc);\n    };\n    EPSG4326.prototype.toLocation = function toLocation (point) {\n        return this._proj.inverse(point);\n    };\n\n    return EPSG4326;\n}(Class));\n","import {\n    isFunction,\n    isArray\n} from '../common';\n\n/* eslint-disable arrow-body-style */\n\nvar defineProperty = Object.defineProperty;\n\nexport var extend = Object.assign;\n\nexport var convertToHtml = function (html) {\n    var div = document.createElement(\"div\");\n    div.innerHTML = html;\n    return div.firstChild;\n};\n\nexport var appendHtml = function (html, element) {\n    var div = document.createElement('div');\n    div.innerHTML = html;\n\n    // use childNodes instead of children\n    // to cover text nodes as well\n    while (div.childNodes.length > 0) {\n        element.appendChild(div.childNodes[0]);\n    }\n};\n\nexport var removeChildren = function (element) {\n    while (element.firstChild) {\n        element.removeChild(element.firstChild);\n    }\n};\n\nexport var prepend = function (element, originElement) {\n    originElement.insertBefore(element, originElement.firstChild);\n};\n\nexport var wrapInner = function (parent, wrapper) {\n    parent.appendChild(wrapper);\n\n    while (parent.firstChild !== wrapper) {\n        wrapper.appendChild(parent.firstChild);\n    }\n};\n\nexport var toHyphens = function (str) {\n    var result = str.replace(/([a-z][A-Z])/g, function(g) {\n        return g.charAt(0) + '-' + g.charAt(1).toLowerCase();\n    });\n\n    return result;\n};\n\nexport var toPixels = function (value) {\n    var result;\n\n    if (value && String(value).endsWith(\"px\")) {\n        result = value;\n    } else {\n        result = String(value) + \"px\";\n    }\n\n    return result;\n};\n\nvar detectOS = function (ua) {\n    var os = false, minorVersion, match = [],\n        // notAndroidPhone = !/mobile safari/i.test(ua),\n        agentRxs = {\n            wp: /(Windows Phone(?: OS)?)\\s(\\d+)\\.(\\d+(\\.\\d+)?)/,\n            fire: /(Silk)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n            android: /(Android|Android.*(?:Opera|Firefox).*?\\/)\\s*(\\d+)\\.?(\\d+(\\.\\d+)?)?/,\n            iphone: /(iPhone|iPod).*OS\\s+(\\d+)[\\._]([\\d\\._]+)/,\n            ipad: /(iPad).*OS\\s+(\\d+)[\\._]([\\d_]+)/,\n            meego: /(MeeGo).+NokiaBrowser\\/(\\d+)\\.([\\d\\._]+)/,\n            webos: /(webOS)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n            blackberry: /(BlackBerry|BB10).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n            playbook: /(PlayBook).*?Tablet\\s*OS\\s*(\\d+)\\.(\\d+(\\.\\d+)?)/,\n            windows: /(MSIE)\\s+(\\d+)\\.(\\d+(\\.\\d+)?)/,\n            tizen: /(tizen).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/i,\n            sailfish: /(sailfish).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*firefox/i,\n            ffos: /(Mobile).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*Firefox/\n        },\n        osRxs = {\n            ios: /^i(phone|pad|pod)$/i,\n            android: /^android|fire$/i,\n            blackberry: /^blackberry|playbook/i,\n            windows: /windows/,\n            wp: /wp/,\n            flat: /sailfish|ffos|tizen/i,\n            meego: /meego/\n        },\n        formFactorRxs = {\n            tablet: /playbook|ipad|fire/i\n        },\n        browserRxs = {\n            omini: /Opera\\sMini/i,\n            omobile: /Opera\\sMobi/i,\n            firefox: /Firefox|Fennec/i,\n            mobilesafari: /version\\/.*safari/i,\n            ie: /MSIE|Windows\\sPhone/i,\n            chrome: /chrome|crios/i,\n            webkit: /webkit/i\n        };\n\n    for (var agent in agentRxs) {\n        if (agentRxs.hasOwnProperty(agent)) {\n            match = ua.match(agentRxs[agent]);\n            if (match) {\n                if (agent === \"windows\" && \"plugins\" in navigator) { return false; } // Break if not Metro/Mobile Windows\n\n                os = {};\n                os.device = agent;\n                os.tablet = testRegex(agent, formFactorRxs, false);\n                os.browser = testRegex(ua, browserRxs, \"default\");\n                os.name = testRegex(agent, osRxs);\n                os[os.name] = true;\n                os.majorVersion = match[2];\n                os.minorVersion = (match[3] || \"0\").replace(\"_\", \".\");\n                minorVersion = os.minorVersion.replace(\".\", \"\").substr(0, 2);\n                os.flatVersion = os.majorVersion + minorVersion + (new Array(3 - (minorVersion.length < 3 ? minorVersion.length : 2)).join(\"0\"));\n\n\n                break;\n            }\n        }\n    }\n\n    return os;\n};\n\nfunction testRegex(agent, regexes, dflt) {\n    for (var regex in regexes) {\n        if (regexes.hasOwnProperty(regex) && regexes[regex].test(agent)) {\n            return regex;\n        }\n    }\n    return dflt !== undefined ? dflt : agent;\n}\n\nexport var hasNativeScrolling = function (userAgent) {\n    var os = detectOS(userAgent);\n    return os.ios || os.android;\n};\n\nvar detectBrowser = function (userAgent) {\n    var browser = false,\n        match = [],\n        browserRxs = {\n            edge: /(edge)[ \\/]([\\w.]+)/i,\n            webkit: /(chrome|crios)[ \\/]([\\w.]+)/i,\n            safari: /(webkit)[ \\/]([\\w.]+)/i,\n            opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n            msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n            mozilla: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n        };\n\n    for (var agent in browserRxs) {\n        if (browserRxs.hasOwnProperty(agent)) {\n            match = userAgent.match(browserRxs[agent]);\n\n            if (match) {\n                browser = {};\n                browser[agent] = true;\n                browser[match[1].toLowerCase().split(\" \")[0].split(\"/\")[0]] = true;\n                browser.version = parseInt(document.documentMode || match[2], 10);\n\n                break;\n            }\n        }\n    }\n\n    return browser;\n};\n\nexport var getEventMap = function () {\n    var eventMap = {\n        down: \"touchstart mousedown\",\n        move: \"mousemove touchmove\",\n        up: \"mouseup touchend touchcancel\",\n        cancel: \"mouseleave touchcancel\"\n    };\n\n    var support = getSupportedFeatures();\n\n    if (support.touch && (support.mobileOS.ios || support.mobileOS.android)) {\n        eventMap = {\n            down: \"touchstart\",\n            move: \"touchmove\",\n            up: \"touchend touchcancel\",\n            cancel: \"touchcancel\"\n        };\n    } else if (support.pointers) {\n        eventMap = {\n            down: \"pointerdown\",\n            move: \"pointermove\",\n            up: \"pointerup\",\n            cancel: \"pointercancel pointerleave\"\n        };\n    } else if (support.msPointers) {\n        eventMap = {\n            down: \"MSPointerDown\",\n            move: \"MSPointerMove\",\n            up: \"MSPointerUp\",\n            cancel: \"MSPointerCancel MSPointerLeave\"\n        };\n    }\n\n    return eventMap;\n};\n\nexport var getSupportedFeatures = function () {\n    var os = detectOS(navigator.userAgent);\n    var browser = detectBrowser(navigator.userAgent);\n\n    var chrome = browser.chrome,\n        mobileChrome = browser.crios,\n        mozilla = browser.mozilla,\n        safari = browser.safari;\n\n    var support = {};\n\n    support.mobileOS = os;\n    support.touch = \"ontouchstart\" in window;\n    support.pointers = !chrome && !mobileChrome && !mozilla && !safari && window.PointerEvent;\n    support.msPointers = !chrome && window.MSPointerEvent;\n    support.mouseAndTouchPresent = support.touch && !(support.mobileOS.ios || support.mobileOS.android);\n    support.eventCapture = document.documentElement.addEventListener;\n\n    var table = document.createElement(\"table\");\n\n    var transitions = support.transitions = false,\n        transforms = support.transforms = false;\n\n    var STRING = \"string\";\n\n    [\"Moz\", \"webkit\", \"O\", \"ms\"].forEach(function(prefix) {\n        var hasTransitions = typeof table.style[prefix + \"Transition\"] === STRING;\n\n        if (hasTransitions || typeof table.style[prefix + \"Transform\"] === STRING) {\n            var lowPrefix = prefix.toLowerCase();\n\n            transforms = {\n                css: (lowPrefix !== \"ms\") ? \"-\" + lowPrefix + \"-\" : \"\",\n                prefix: prefix,\n                event: (lowPrefix === \"o\" || lowPrefix === \"webkit\") ? lowPrefix : \"\"\n            };\n\n            if (hasTransitions) {\n                transitions = transforms;\n                transitions.event = transitions.event ? transitions.event + \"TransitionEnd\" : \"transitionend\";\n            }\n\n            return false;\n        }\n    });\n\n    table = null;\n\n    support.transforms = transforms;\n    support.transitions = transitions;\n\n    support.delayedClick = function() {\n        // only the mobile devices with touch events do this.\n        if (support.touch) {\n            // All iOS devices so far (by the time I am writing this, iOS 9.0.2 is the latest),\n            // delay their click events.\n            if (support.mobileOS.ios) {\n                return true;\n            }\n\n            if (support.mobileOS.android) {\n\n                if (!support.browser.chrome) { // older webkits and webviews delay the click\n                    return true;\n                }\n\n                // from here on, we deal with Chrome on Android.\n                if (support.browser.version < 32) {\n                    return false;\n                }\n\n                // Chrome 32+ does conditional fast clicks if the view port is not user scalable.\n                var meta = document.querySelector(\"meta[name=viewport]\");\n                var contentAttr = meta ? meta.getAttribute(\"content\") : \"\";\n                return !contentAttr.match(/user-scalable=no/i);\n            }\n        }\n\n        return false;\n    };\n\n    return support;\n};\n\nexport var ownsElement = function (parent, element) {\n    if (!element) {\n        return false;\n    }\n\n    var node = element.parentNode;\n\n    while (node !== null) {\n        if (node === parent) {\n            return true;\n        }\n\n        node = node.parentNode;\n    }\n\n    return false;\n};\n\nexport var contains = function (parent, element) {\n    return parent === element || ownsElement(parent, element);\n};\n\nexport var proxy = function (method, context) {\n    return method.bind(context);\n};\n\nfunction isString(value) {\n    return typeof(value) === \"string\";\n}\n\nexport var on = function (element, events, filter, handler, useCapture) {\n    addEventListeners(element, events, filter, handler, useCapture);\n};\n\nexport var addEventListeners = function (element, events, filter, handler, useCapture) {\n    var eventNames = isArray(events) ? events : (events || \"\").split(\" \");\n\n    eventNames.forEach(function(eventName) {\n        addEventListener(element, eventName, filter, handler, useCapture);\n    });\n};\n\nexport var addEventListener = function (element, event, filter, handler, useCapture) {\n    var eventHandler = handler;\n    var eventFilter;\n\n    if (filter && isFunction(filter) && !handler) {\n        eventHandler = filter;\n    } else if (filter && isString(filter) && isFunction(eventHandler)) {\n        eventFilter = filter;\n    }\n\n    element.addEventListener(event, function(e) {\n        var closestMatchingTarget = e.target ? e.target.closest(eventFilter) : null;\n\n        if (!eventFilter ||\n            (eventFilter && e.target && closestMatchingTarget)) {\n            var currentTarget = eventFilter ? closestMatchingTarget : e.currentTarget;\n\n            // reassign the property as it is a getters only\n            defineProperty(e, \"currentTarget\", { value: currentTarget });\n            // keep a reference to the top-level target\n            defineProperty(e, \"delegateTarget\", { value: element });\n\n            eventHandler(e);\n        }\n    }, Boolean(useCapture));\n};\n\nexport var off = function (element, events, filter, handler, useCapture) {\n    removeEventListeners(element, events, filter, handler, useCapture);\n};\n\nexport var removeEventListeners = function (element, events, handler, useCapture) {\n    var eventNames = isArray(events) ? events : (events || \"\").split(\" \");\n\n    eventNames.forEach(function(eventName) {\n        removeEventListener(element, eventName, handler, useCapture);\n    });\n};\n\nexport var removeEventListener = function (element, event, handler, useCapture) {\n    element.removeEventListener(event, handler, Boolean(useCapture));\n};\n\nexport var applyEventMap = function (events) {\n    var eventMap = getEventMap(navigator.userAgent);\n    function queryEventMap(e) {\n        return eventMap[e] || e;\n    }\n\n    var eventRegEx = /([^ ]+)/g;\n    var appliedEvents = events.replace(eventRegEx, queryEventMap);\n\n    return appliedEvents;\n};\n\nexport var setDefaultEvents = function (type, events) {\n    var proto = type.prototype;\n\n    if (proto.events) {\n        events.forEach(function (event) {\n            if (proto.events.indexOf(event) < 0) {\n                proto.events.push(event);\n            }\n        });\n    } else {\n        proto.events = events;\n    }\n};\n\nexport var wheelDeltaY = function (jQueryEvent) {\n    var e = jQueryEvent.originalEvent || jQueryEvent;\n    var deltaY = e.wheelDeltaY;\n    var delta;\n\n    if (e.wheelDelta) { // Webkit and IE\n        if (deltaY === undefined || deltaY) { // IE does not have deltaY, thus always scroll (horizontal scrolling is treated as vertical)\n            delta = e.wheelDelta;\n        }\n    } else if (e.detail && e.axis === e.VERTICAL_AXIS) { // Firefox and Opera\n        delta = (-e.detail) * 10;\n    }\n\n    return delta;\n};\n\nexport var guid = function () {\n    var id = \"\";\n    var i;\n    var random;\n\n    for (i = 0; i < 32; i++) {\n        random = Math.random() * 16 | 0;\n\n        if (i === 8 || i === 12 || i === 16 || i === 20) {\n            id += \"-\";\n        }\n\n        id += (i === 12 ? 4 : (i === 16 ? (random & 3 | 8) : random)).toString(16); // eslint-disable-line no-nested-ternary\n    }\n\n    return id;\n};\n\nexport var now = function () {\n    return Number(new Date());\n};\n\nexport var noop = function () {};\n\nexport var renderPos = function (pos) {\n    var result = [];\n\n    if (pos) {\n        var parts = toHyphens(pos).split(\"-\");\n\n        for (var i = 0; i < parts.length; i++) {\n            result.push(\"k-pos-\" + parts[i]);\n        }\n    }\n\n    return result.join(\" \");\n};\n\n/* eslint-enable arrow-body-style */\n","import {\n    Class\n} from '../../common';\n\nvar STRING = \"string\";\nvar FUNCTION = \"function\";\n\nvar preventDefault = function() {\n    this._defaultPrevented = true;\n};\n\nvar isDefaultPrevented = function() {\n    return this._defaultPrevented === true;\n};\n\nexport var Observable = (function (Class) {\n    function Observable() {\n        Class.call(this);\n        this._events = {};\n    }\n\n    if ( Class ) Observable.__proto__ = Class;\n    Observable.prototype = Object.create( Class && Class.prototype );\n    Observable.prototype.constructor = Observable;\n\n    Observable.prototype.destroy = function destroy () {\n        this.unbind();\n    };\n\n    Observable.prototype.bind = function bind (event, handlers, one) {\n        var that = this,\n            idx,\n            eventNames = typeof event === STRING ? [event] : event || [],\n            length,\n            original,\n            handler,\n            handlersIsFunction = typeof handlers === FUNCTION,\n            events;\n\n        if (handlers === undefined) {\n            for (idx in event) {\n                that.bind(idx, event[idx]);\n            }\n\n            return that;\n        }\n\n        /* eslint-disable no-loop-func */\n        var loop = function (  ) {\n            var eventName = eventNames[idx];\n\n            handler = handlersIsFunction ? handlers : handlers[eventName];\n\n            if (handler) {\n                if (one) {\n                    original = handler;\n                    handler = function() {\n                        that.unbind(eventName, handler);\n                        original.apply(that, arguments);\n                    };\n\n                    handler.original = original;\n                }\n\n                events = that._events[eventName] = that._events[eventName] || [];\n                events.push(handler);\n            }\n        };\n\n        for (idx = 0, length = eventNames.length; idx < length; idx++) loop(  );\n        /* eslint-enable no-loop-func */\n\n        return that;\n    };\n\n    Observable.prototype.one = function one (eventNames, handlers) {\n        return this.bind(eventNames, handlers, true);\n    };\n\n    Observable.prototype.first = function first (eventName, handlers) {\n        var that = this,\n            idx,\n            eventNames = typeof eventName === STRING ? [eventName] : eventName,\n            length,\n            handler,\n            handlersIsFunction = typeof handlers === FUNCTION,\n            events;\n\n        for (idx = 0, length = eventNames.length; idx < length; idx++) {\n            var eventName$1 = eventNames[idx];\n\n            handler = handlersIsFunction ? handlers : handlers[eventName$1];\n\n            if (handler) {\n                events = that._events[eventName$1] = that._events[eventName$1] || [];\n                events.unshift(handler);\n            }\n        }\n\n        return that;\n    };\n\n    Observable.prototype.trigger = function trigger (eventName, eventArgs) {\n        var that = this,\n            events = that._events[eventName],\n            idx,\n            length;\n\n        if (events) {\n            var e = eventArgs || {};\n\n            e.sender = that;\n\n            e._defaultPrevented = false;\n\n            e.preventDefault = preventDefault;\n\n            e.isDefaultPrevented = isDefaultPrevented;\n\n            events = events.slice();\n\n            for (idx = 0, length = events.length; idx < length; idx++) {\n                events[idx].call(that, e);\n            }\n\n            return e._defaultPrevented === true;\n        }\n\n        return false;\n    };\n\n    Observable.prototype.unbind = function unbind (eventName, handler) {\n        var that = this,\n            events = that._events[eventName],\n            idx;\n\n        if (eventName === undefined) {\n            that._events = {};\n        } else if (events) {\n            if (handler) {\n                for (idx = events.length - 1; idx >= 0; idx--) {\n                    if (events[idx] === handler || events[idx].original === handler) {\n                        events.splice(idx, 1);\n                    }\n                }\n            } else {\n                that._events[eventName] = [];\n            }\n        }\n\n        return that;\n    };\n\n    Observable.prototype._setEvents = function _setEvents (options) {\n        var this$1 = this;\n\n        var length = (this.events || []).length;\n\n        for (var idx = 0; idx < length; idx ++) {\n            var e = this$1.events[idx];\n\n            if (this$1.options[e] && options[e]) {\n                this$1.unbind(e, this$1.options[e]);\n\n                if (this$1._events && this$1._events[e]) {\n                    delete this$1._events[e];\n                }\n            }\n        }\n\n        this.bind(this.events, options);\n    };\n\n    return Observable;\n}(Class));\n","import {\n    addClass,\n    defined,\n    valueOrDefault,\n    deepExtend,\n    setDefaultOptions\n} from '../common';\n\nimport {\n    appendHtml,\n    removeChildren\n} from './utils';\n\nimport { Observable } from './scroller/observable';\n\nexport var Attribution = (function (Observable) {\n    function Attribution(element, options) {\n        Observable.call(this);\n        this.element = element;\n\n        this._initOptions(options);\n        this.items = [];\n\n        addClass(this.element, 'k-widget k-attribution');\n    }\n\n    if ( Observable ) Attribution.__proto__ = Observable;\n    Attribution.prototype = Object.create( Observable && Observable.prototype );\n    Attribution.prototype.constructor = Attribution;\n\n    Attribution.prototype._initOptions = function _initOptions (options) {\n        this.options = deepExtend({}, this.options, options);\n    };\n\n    Attribution.prototype.filter = function filter (extent, zoom) {\n        this._extent = extent;\n        this._zoom = zoom;\n        this._render();\n    };\n\n    Attribution.prototype.add = function add (item) {\n        var newItem = item;\n\n        if (defined(item)) {\n            if (typeof item === 'string') {\n                newItem = {\n                    text: item\n                };\n            }\n\n            this.items.push(newItem);\n            this._render();\n        }\n    };\n\n    Attribution.prototype.remove = function remove (text) {\n        var this$1 = this;\n\n        var result = [];\n\n        for (var i = 0; i < this.items.length; i++) {\n            var item = this$1.items[i];\n\n            if (item.text !== text) {\n                result.push(item);\n            }\n        }\n\n        this.items = result;\n        this._render();\n    };\n\n    Attribution.prototype.clear = function clear () {\n        this.items = [];\n        removeChildren(this.element);\n    };\n\n    Attribution.prototype._render = function _render () {\n        var this$1 = this;\n\n        var result = [];\n\n        for (var i = 0; i < this.items.length; i++) {\n            var item = this$1.items[i];\n            var text = this$1._itemText(item);\n\n            if (text !== '') {\n                result.push(text);\n            }\n        }\n\n        if (result.length > 0) {\n            removeChildren(this.element);\n\n            var html = result.join(this.options.separator);\n            appendHtml(html, this.element);\n\n            this.showElement();\n        } else {\n            this.hideElement();\n        }\n    };\n\n    Attribution.prototype.hideElement = function hideElement () {\n        this.element.style.display = \"none\";\n    };\n\n    Attribution.prototype.showElement = function showElement () {\n        this.element.style.display = \"\";\n    };\n\n    Attribution.prototype._itemText = function _itemText (item) {\n        var text = '';\n        var inZoomLevel = this._inZoomLevel(item.minZoom, item.maxZoom);\n        var inArea = this._inArea(item.extent);\n\n        if (inZoomLevel && inArea) {\n            text += item.text;\n        }\n\n        return text;\n    };\n\n    Attribution.prototype._inZoomLevel = function _inZoomLevel (min, max) {\n        var result = true;\n        var newMin = valueOrDefault(min, -Number.MAX_VALUE);\n        var newMax = valueOrDefault(max, Number.MAX_VALUE);\n\n        result = this._zoom > newMin && this._zoom < newMax;\n        return result;\n    };\n\n    Attribution.prototype._inArea = function _inArea (area) {\n        var result = true;\n\n        if (area) {\n            result = area.contains(this._extent);\n        }\n\n        return result;\n    };\n\n    return Attribution;\n}(Observable));\n\nsetDefaultOptions(Attribution, {\n    name: 'Attribution',\n    separator: '&nbsp;|&nbsp;'\n});\n","import {\n    deepExtend,\n    addClass,\n    keys,\n    setDefaultOptions,\n    renderIcon\n} from '../common';\n\nimport {\n    Observable\n} from './scroller/observable';\n\nimport {\n    proxy,\n    on,\n    off,\n    setDefaultEvents,\n    convertToHtml\n} from './utils';\n\nvar PAN = \"pan\";\n\nvar directionsMap = {\n    up: {\n        className: \"k-navigator-n\",\n        iconClass: \"k-i-caret-alt-up\"\n    },\n    down: {\n        className: \"k-navigator-s\",\n        iconClass: \"k-i-caret-alt-down\"\n    },\n    right: {\n        className: \"k-navigator-e\",\n        iconClass: \"k-i-caret-alt-right\"\n    },\n    left: {\n        className: \"k-navigator-w\",\n        iconClass: \"k-i-caret-alt-left\"\n    }\n};\n\nfunction createButton(direction, iconOptions) {\n    var html =\n        '<button class=\"k-button k-button-square k-rounded-full k-button-flat k-button-flat-base k-icon-button ' +\n            directionsMap[direction].className +\n            '\" aria-label=\"move ' + direction + '\">' +\n            renderIcon({ icon: (\"caret-alt-\" + direction), iconClass: \"k-button-icon\", svgIcons: iconOptions.svgIcons, type: iconOptions.type }) +\n        '</button>';\n\n    return convertToHtml(html);\n}\n\nexport var Navigator = (function (Observable) {\n    function Navigator(element, options) {\n        Observable.call(this);\n\n        this.element = element;\n        this._initOptions(options);\n\n        var navigateUpButton = createButton(\"up\", options.icons);\n        var navigateRightlButton = createButton(\"right\", options.icons);\n        var navigateDownButton = createButton(\"down\", options.icons);\n        var navigateLeftButton = createButton(\"left\", options.icons);\n\n        this.element.appendChild(navigateUpButton);\n        this.element.appendChild(navigateRightlButton);\n        this.element.appendChild(navigateDownButton);\n        this.element.appendChild(navigateLeftButton);\n\n        addClass(this.element, 'k-widget k-navigator');\n\n        on(this.element, \"click\", \".k-button\", proxy(this._click, this));\n\n        var parentElement = this.element.parentNode.closest(\"[data-role]\");\n\n        this._keyroot = parentElement ? parentElement : this.element;\n        this._tabindex(this._keyroot);\n\n        this._keydownHandler = proxy(this._keydown, this);\n        on(this._keyroot, \"keydown\", this._keydownHandler);\n    }\n\n    if ( Observable ) Navigator.__proto__ = Observable;\n    Navigator.prototype = Object.create( Observable && Observable.prototype );\n    Navigator.prototype.constructor = Navigator;\n\n    Navigator.prototype.destroy = function destroy () {\n        this.dispose();\n    };\n\n    // originates from the kendo.jquery version\n    Navigator.prototype.dispose = function dispose () {\n        off(this._keyroot, \"keydown\", this._keydownHandler);\n    };\n\n    Navigator.prototype._tabindex = function _tabindex (target) {\n        var targetElement = target || this.wrapper || this.element;\n\n        var element = this.element,\n            TABINDEX = \"tabindex\",\n            tabindex = targetElement.getAttribute(TABINDEX) || element.getAttribute(TABINDEX);\n\n        element.removeAttribute(TABINDEX);\n\n        targetElement.setAttribute(TABINDEX, !isNaN(tabindex) ? tabindex : 0);\n    };\n\n    Navigator.prototype._initOptions = function _initOptions (options) {\n        this.options = deepExtend({}, this.options, options);\n    };\n\n    Navigator.prototype._pan = function _pan (x, y) {\n        var panStep = this.options.panStep;\n\n        this.trigger(PAN, {\n            x: x * panStep,\n            y: y * panStep\n        });\n    };\n\n    Navigator.prototype._click = function _click (e) {\n        var x = 0;\n        var y = 0;\n        var button = e.currentTarget;\n\n        if (button.matches('.k-navigator-n')) {\n            y = 1;\n        } else if (button.matches('.k-navigator-s')) {\n            y = -1;\n        } else if (button.matches('.k-navigator-e')) {\n            x = 1;\n        } else if (button.matches('.k-navigator-w')) {\n            x = -1;\n        }\n\n        this._pan(x, y);\n\n        e.preventDefault();\n    };\n\n    /* eslint-disable indent */\n    Navigator.prototype._keydown = function _keydown (e) {\n        switch (e.which) {\n            case keys.UP:\n                this._pan(0, 1);\n                e.preventDefault();\n                break;\n            case keys.DOWN:\n                this._pan(0, -1);\n                e.preventDefault();\n                break;\n            case keys.RIGHT:\n                this._pan(1, 0);\n                e.preventDefault();\n                break;\n            case keys.LEFT:\n                this._pan(-1, 0);\n                e.preventDefault();\n                break;\n            default:\n                break;\n        }\n    };\n\n    return Navigator;\n}(Observable));\n\nsetDefaultOptions(Navigator, {\n    name: 'Navigator',\n    panStep: 1\n});\n\n\nsetDefaultEvents(Navigator, [\n    PAN\n]);\n","import {\n    deepExtend,\n    addClass,\n    keys,\n    hasClasses,\n    setDefaultOptions,\n    renderIcon\n} from '../common';\n\nimport {\n    Observable\n} from './scroller/observable';\n\nimport {\n    on,\n    off,\n    setDefaultEvents,\n    convertToHtml\n} from './utils';\n\nfunction createButton(direction, icon, iconOptions) {\n    var html =\n        '<button class=\"k-button k-button-md k-rounded-md k-button-solid k-button-solid-base k-icon-button k-zoom-' + direction +\n            '\" title=\"zoom-' + direction +\n            '\" aria-label=\"zoom-' + direction + '\">' +\n            renderIcon({ icon: icon, iconClass: \"k-button-icon\", svgIcons: iconOptions.svgIcons, type: iconOptions.type }) +\n        '</button>';\n\n    return convertToHtml(html);\n}\n\nvar PLUS = 187;\nvar MINUS = 189;\nvar FF_PLUS = 61;\nvar FF_MINUS = 173;\nvar CHANGE = \"change\";\n\nexport var ZoomControl = (function (Observable) {\n    function ZoomControl(element, options, iconOptions) {\n        Observable.call(this);\n        this.element = element;\n        this._initOptions(options);\n\n        var zoomInButton = createButton('in', 'plus', iconOptions);\n        var zoomOutButton = createButton('out', 'minus', iconOptions);\n\n        this.element.appendChild(zoomInButton);\n        this.element.appendChild(zoomOutButton);\n\n        addClass(this.element, 'k-widget k-zoom-control k-button-group k-group-horizontal');\n\n        this._clickHandler = this._click.bind(this);\n        on(this.element, \"click\", \".k-button\", this._clickHandler);\n\n        var parentElement = this.element.parentNode.closest(\"[data-role]\");\n\n        this._keyroot = parentElement ? parentElement : this.element;\n\n        this._tabindex(this._keyroot);\n\n        this._keydownHandler = this._keydown.bind(this);\n        on(this._keyroot, \"keydown\", this._keydownHandler);\n    }\n\n    if ( Observable ) ZoomControl.__proto__ = Observable;\n    ZoomControl.prototype = Object.create( Observable && Observable.prototype );\n    ZoomControl.prototype.constructor = ZoomControl;\n\n    ZoomControl.prototype.destroy = function destroy () {\n        if (this.element) {\n            off(this.element, \"click\", this._clickHandler);\n        }\n\n        if (this._keyroot) {\n            off(this._keyroot, 'keydown', this._keydownHandler);\n        }\n    };\n\n    ZoomControl.prototype._tabindex = function _tabindex (target) {\n        var targetElement = target || this.wrapper || this.element;\n\n        var element = this.element,\n            TABINDEX = \"tabindex\",\n            tabindex = targetElement.getAttribute(TABINDEX) || element.getAttribute(TABINDEX);\n\n        element.removeAttribute(TABINDEX);\n\n        targetElement.setAttribute(TABINDEX, !isNaN(tabindex) ? tabindex : 0);\n    };\n\n    ZoomControl.prototype._initOptions = function _initOptions (options) {\n        this.options = deepExtend({}, this.options, options);\n    };\n\n    ZoomControl.prototype._change = function _change (direction) {\n        var zoomStep = this.options.zoomStep;\n        this.trigger(CHANGE, { delta: direction * zoomStep });\n    };\n\n    ZoomControl.prototype._click = function _click (e) {\n        var button = e.currentTarget;\n        var direction = 1;\n\n        if (hasClasses(button, 'k-zoom-out')) {\n            direction = -1;\n        }\n\n        this._change(direction);\n        e.preventDefault();\n    };\n\n    /* eslint-disable indent */\n    ZoomControl.prototype._keydown = function _keydown (e) {\n        switch (e.which) {\n            case keys.NUMPAD_PLUS:\n            case PLUS:\n            case FF_PLUS:\n                this._change(1);\n                break;\n            case keys.NUMPAD_MINUS:\n            case MINUS:\n            case FF_MINUS:\n                this._change(-1);\n                break;\n            default:\n                break;\n        }\n    };\n\n    return ZoomControl;\n}(Observable));\n\nsetDefaultOptions(ZoomControl, {\n    name: 'ZoomControl',\n    zoomStep: 1\n});\n\nsetDefaultEvents(ZoomControl, [\n    CHANGE\n]);\n","import {\n    Class,\n    valueOrDefault\n} from '../common';\n\nimport { Location } from './location';\n\nvar math = Math,\n    max = math.max,\n    min = math.min;\n\nexport var Extent = (function (Class) {\n    function Extent(initialNw, initialSe) {\n        Class.call(this);\n        var nw = Location.create(initialNw);\n        var se = Location.create(initialSe);\n\n        if (nw.lng + 180 > se.lng + 180 && nw.lat + 90 < se.lat + 90) {\n            this.se = nw;\n            this.nw = se;\n        } else {\n            this.se = se;\n            this.nw = nw;\n        }\n    }\n\n    if ( Class ) Extent.__proto__ = Class;\n    Extent.prototype = Object.create( Class && Class.prototype );\n    Extent.prototype.constructor = Extent;\n\n    var staticAccessors = { World: { configurable: true } };\n\n    Extent.prototype.contains = function contains (loc) {\n        var nw = this.nw, se = this.se, lng = valueOrDefault(loc.lng, loc[1]), lat = valueOrDefault(loc.lat, loc[0]);\n\n        return loc &&\n            lng + 180 >= nw.lng + 180 && lng + 180 <= se.lng + 180 &&\n            lat + 90 >= se.lat + 90 && lat + 90 <= nw.lat + 90;\n    };\n\n    Extent.prototype.center = function center () {\n        var nw = this.nw;\n        var se = this.se;\n        var lng = nw.lng + (se.lng - nw.lng) / 2;\n        var lat = nw.lat + (se.lat - nw.lat) / 2;\n\n        return new Location(lat, lng);\n    };\n\n    Extent.prototype.containsAny = function containsAny (locs) {\n        var this$1 = this;\n\n        var result = false;\n\n        for (var i = 0; i < locs.length; i++) {\n            result = result || this$1.contains(locs[i]);\n        }\n\n        return result;\n    };\n\n    Extent.prototype.include = function include (loc) {\n        var nw = this.nw, se = this.se, lng = valueOrDefault(loc.lng, loc[1]), lat = valueOrDefault(loc.lat, loc[0]);\n\n        nw.lng = min(nw.lng, lng);\n        nw.lat = max(nw.lat, lat);\n        se.lng = max(se.lng, lng);\n        se.lat = min(se.lat, lat);\n    };\n\n    Extent.prototype.includeAll = function includeAll (locs) {\n        var this$1 = this;\n\n        for (var i = 0; i < locs.length; i++) {\n            this$1.include(locs[i]);\n        }\n    };\n\n    Extent.prototype.edges = function edges () {\n        var nw = this.nw, se = this.se;\n\n        return {\n            nw: this.nw,\n            ne: new Location(nw.lat, se.lng),\n            se: this.se,\n            sw: new Location(se.lat, nw.lng)\n        };\n    };\n\n    Extent.prototype.toArray = function toArray () {\n        var nw = this.nw, se = this.se;\n\n        return [\n            nw,\n            new Location(nw.lat, se.lng),\n            se,\n            new Location(se.lat, nw.lng)\n        ];\n    };\n\n    Extent.prototype.overlaps = function overlaps (extent) {\n        return this.containsAny(extent.toArray()) ||\n            extent.containsAny(this.toArray());\n    };\n\n    Extent.create = function create (a, b) {\n        if (a instanceof Extent) {\n            return a;\n        } else if (a && b) {\n            return new Extent(a, b);\n        } else if (a && a.length === 4 && !b) {\n            return new Extent([\n                a[0],\n                a[1]\n            ], [\n                a[2],\n                a[3]\n            ]);\n        }\n    };\n\n    staticAccessors.World.get = function () {\n        return new Extent([ 90, -180 ], [ -90, 180 ]);\n    };\n\n    Object.defineProperties( Extent, staticAccessors );\n\n    return Extent;\n}(Class));\n","export var SHOW_TOOLTIP = 'showTooltip';\nexport var HIDE_TOOLTIP = 'hideTooltip';\nexport var CENTER_CHANGE = 'centerChange';\nexport var ZOOM_CHANGE = 'zoomChange';\nexport var INIT = 'init';\n","import { Class, deepExtend, setDefaultOptions } from '../../common';\nimport { SHOW_TOOLTIP, HIDE_TOOLTIP } from '../constants';\n\nexport var Tooltip = (function (Class) {\n    function Tooltip(widgetService, options) {\n        Class.call(this);\n\n        this.widgetService = widgetService;\n        this.options = deepExtend({}, this.options, options);\n        this.offset = { x: 0, y: 0 };\n    }\n\n    if ( Class ) Tooltip.__proto__ = Class;\n    Tooltip.prototype = Object.create( Class && Class.prototype );\n    Tooltip.prototype.constructor = Tooltip;\n\n    var prototypeAccessors = { anchor: { configurable: true } };\n\n    Tooltip.prototype.show = function show (anchor, args) {\n        if (this.location === args.location) {\n            return;\n        }\n\n        this.anchor = anchor;\n        this.location = args.location;\n\n        this.widgetService.notify(SHOW_TOOLTIP,\n            Object.assign({ anchor: this.anchor }, args)\n        );\n\n        this.visible = true;\n    };\n\n    Tooltip.prototype.hide = function hide () {\n        if (this.widgetService) {\n            this.widgetService.notify(HIDE_TOOLTIP);\n        }\n\n        this.visible = false;\n        this.location = null;\n    };\n\n    prototypeAccessors.anchor.get = function () {\n        return this._anchor;\n    };\n\n    prototypeAccessors.anchor.set = function (anchor) {\n        var documentPoint = this.widgetService.widget._toDocumentCoordinates({\n            x: anchor.left - this.offset.x,\n            y: anchor.top - this.offset.y\n        });\n\n        this._anchor = {\n            left: documentPoint.left,\n            top: documentPoint.top\n        };\n    };\n\n    Tooltip.prototype.destroy = function destroy () {\n        this.widgetService = null;\n    };\n\n    Object.defineProperties( Tooltip.prototype, prototypeAccessors );\n\n    return Tooltip;\n}(Class));\n\nsetDefaultOptions(Tooltip, {\n    border: {\n        width: 1\n    },\n    opacity: 1\n});\n","import {\n    Class,\n    addClass,\n    deepExtend,\n    defined\n} from '../../common';\n\nimport {\n    Extent\n} from './../extent';\n\nimport {\n    getSupportedFeatures\n} from '../utils';\n\nexport var Layer = (function (Class) {\n    function Layer(map, options) {\n        Class.call(this);\n\n        this.support = getSupportedFeatures();\n\n        this._initOptions(options);\n        this.map = map;\n\n        var element = document.createElement(\"div\");\n        addClass(element, \"k-layer\");\n        element.style.zIndex = this.options.zIndex;\n        element.style.opacity = this.options.opacity;\n\n        this.element = element;\n\n        map.scrollElement.appendChild(this.element);\n\n        this._beforeReset = this._beforeReset.bind(this);\n        this._reset = this._reset.bind(this);\n        this._resize = this._resize.bind(this);\n        this._panEnd = this._panEnd.bind(this);\n\n        this._activate();\n        this._updateAttribution();\n    }\n\n    if ( Class ) Layer.__proto__ = Class;\n    Layer.prototype = Object.create( Class && Class.prototype );\n    Layer.prototype.constructor = Layer;\n\n    Layer.prototype.destroy = function destroy () {\n        this._deactivate();\n    };\n\n    Layer.prototype._initOptions = function _initOptions (options) {\n        this.options = deepExtend({}, this.options, options);\n    };\n\n    Layer.prototype.show = function show () {\n        this.reset();\n        this._activate();\n        this._applyExtent(true);\n    };\n\n    Layer.prototype.hide = function hide () {\n        this._deactivate();\n        this._setVisibility(false);\n    };\n\n    Layer.prototype.reset = function reset () {\n        this._beforeReset();\n        this._reset();\n    };\n\n    Layer.prototype._reset = function _reset () {\n        this._applyExtent();\n    };\n\n    Layer.prototype._beforeReset = function _beforeReset () {\n\n    };\n\n    Layer.prototype._resize = function _resize () {\n\n    };\n\n    Layer.prototype._panEnd = function _panEnd () {\n        this._applyExtent();\n    };\n\n    Layer.prototype._applyExtent = function _applyExtent () {\n        var options = this.options;\n        var zoom = this.map.zoom();\n        var matchMinZoom = !defined(options.minZoom) || zoom >= options.minZoom;\n        var matchMaxZoom = !defined(options.maxZoom) || zoom <= options.maxZoom;\n        var extent = Extent.create(options.extent);\n        var inside = !extent || extent.overlaps(this.map.extent());\n\n        this._setVisibility(matchMinZoom && matchMaxZoom && inside);\n    };\n\n    Layer.prototype._setVisibility = function _setVisibility (visible) {\n        this.element.style.display = visible ? '' : 'none';\n    };\n\n    Layer.prototype._activate = function _activate () {\n        var map = this.map;\n\n        this._deactivate();\n\n        map.bind('beforeReset', this._beforeReset);\n        map.bind('reset', this._reset);\n        map.bind('resize', this._resize);\n        map.bind('panEnd', this._panEnd);\n    };\n\n    Layer.prototype._deactivate = function _deactivate () {\n        var map = this.map;\n\n        map.unbind('beforeReset', this._beforeReset);\n        map.unbind('reset', this._reset);\n        map.unbind('resize', this._resize);\n        map.unbind('panEnd', this._panEnd);\n    };\n\n    Layer.prototype._updateAttribution = function _updateAttribution () {\n        var attribution = this.map.attribution;\n\n        if (attribution) {\n            attribution.add(this.options.attribution);\n        }\n    };\n\n    Layer.prototype._readData = function _readData () {\n        var data = this.options.data || [];\n        return data;\n    };\n\n    Layer.prototype._hasData = function _hasData () {\n        return this._data && this._data.length > 0;\n    };\n\n    Layer.prototype._layerIndex = function _layerIndex () {\n        var layers = this.map.layers || [];\n        return layers.indexOf(this);\n    };\n\n    return Layer;\n}(Class));\n","import {\n    geometry as g,\n    throttle\n} from '@progress/kendo-drawing';\n\nimport {\n    Class,\n    deepExtend,\n    round,\n    limitValue,\n    hashKey,\n    setDefaultOptions,\n    isFunction\n} from '../../common';\n\nimport { removeChildren } from '../utils';\n\nimport { Layer } from './layer';\n\nimport TemplateService from '../../services/template-service';\n\nvar math = Math,\n    Point = g.Point;\n\nfunction compileTemplate(template) {\n    if (isFunction(template)) {\n        return template;\n    }\n\n    return TemplateService.compile(template);\n}\n\nfunction roundPoint(point) {\n    return new Point(round(point.x), round(point.y));\n}\n\nfunction renderSize(size) {\n    var newSize = size;\n\n    if (typeof(size) !== \"string\") {\n        newSize += \"px\";\n    }\n\n    return newSize;\n}\n\nexport var TileLayer = (function (Layer) {\n    function TileLayer(map, options) {\n        Layer.call(this, map, options);\n\n        if (typeof this.options.subdomains === 'string') {\n            this.options.subdomains = this.options.subdomains.split('');\n        }\n\n        var viewType = this._viewType();\n        this._view = new viewType(this.element, this.options);\n    }\n\n    if ( Layer ) TileLayer.__proto__ = Layer;\n    TileLayer.prototype = Object.create( Layer && Layer.prototype );\n    TileLayer.prototype.constructor = TileLayer;\n\n    TileLayer.prototype.destroy = function destroy () {\n        Layer.prototype.destroy.call(this);\n        this._view.destroy();\n        this._view = null;\n    };\n\n    TileLayer.prototype._beforeReset = function _beforeReset () {\n        var map = this.map;\n        var origin = map.locationToLayer(map.extent().nw).round();\n        this._view.viewOrigin(origin);\n    };\n\n    TileLayer.prototype._reset = function _reset () {\n        Layer.prototype._reset.call(this);\n        this._updateView();\n        this._view.reset();\n    };\n\n    TileLayer.prototype._viewType = function _viewType () {\n        return TileView;\n    };\n\n    TileLayer.prototype._activate = function _activate () {\n        Layer.prototype._activate.call(this);\n\n        if (!this.support.mobileOS) {\n            if (!this._pan) {\n                this._pan = throttle(this._render.bind(this), 100);\n            }\n\n            this.map.bind('pan', this._pan);\n        }\n    };\n\n    TileLayer.prototype._deactivate = function _deactivate () {\n        Layer.prototype._deactivate.call(this);\n\n        if (this._pan) {\n            this.map.unbind('pan', this._pan);\n        }\n    };\n\n    TileLayer.prototype._updateView = function _updateView () {\n        var view = this._view,\n            map = this.map,\n            extent = map.extent(),\n            extentToPoint = {\n                nw: map.locationToLayer(extent.nw).round(),\n                se: map.locationToLayer(extent.se).round()\n            };\n\n        view.center(map.locationToLayer(map.center()));\n        view.extent(extentToPoint);\n        view.zoom(map.zoom());\n    };\n\n    TileLayer.prototype._resize = function _resize () {\n        this._render();\n    };\n\n    TileLayer.prototype._panEnd = function _panEnd (e) {\n        Layer.prototype._panEnd.call(this, e);\n        this._render();\n    };\n\n    TileLayer.prototype._render = function _render () {\n        this._updateView();\n        this._view.render();\n    };\n\n    return TileLayer;\n}(Layer));\n\nsetDefaultOptions(TileLayer, {\n    tileSize: 256,\n    subdomains: ['a', 'b', 'c'],\n    urlTemplate: '',\n    zIndex: 1\n});\n\nexport var TileView = (function (Class) {\n    function TileView(element, options) {\n        Class.call(this);\n        this.element = element;\n        this._initOptions(options);\n        this.pool = new TilePool();\n    }\n\n    if ( Class ) TileView.__proto__ = Class;\n    TileView.prototype = Object.create( Class && Class.prototype );\n    TileView.prototype.constructor = TileView;\n\n    TileView.prototype._initOptions = function _initOptions (options) {\n        this.options = deepExtend({}, this.options, options);\n    };\n\n    TileView.prototype.center = function center (center$1) {\n        this._center = center$1;\n    };\n\n    TileView.prototype.extent = function extent (extent$1) {\n        this._extent = extent$1;\n    };\n\n    TileView.prototype.viewOrigin = function viewOrigin (origin) {\n        this._viewOrigin = origin;\n    };\n\n    TileView.prototype.zoom = function zoom (zoom$1) {\n        this._zoom = zoom$1;\n    };\n\n    TileView.prototype.pointToTileIndex = function pointToTileIndex (point) {\n        return new Point(math.floor(point.x / this.options.tileSize), math.floor(point.y / this.options.tileSize));\n    };\n\n    TileView.prototype.tileCount = function tileCount () {\n        var size = this.size(),\n            firstTileIndex = this.pointToTileIndex(this._extent.nw),\n            nw = this._extent.nw,\n            point = this.indexToPoint(firstTileIndex).translate(-nw.x, -nw.y);\n\n        return {\n            x: math.ceil((math.abs(point.x) + size.width) / this.options.tileSize),\n            y: math.ceil((math.abs(point.y) + size.height) / this.options.tileSize)\n        };\n    };\n\n    TileView.prototype.size = function size () {\n        var nw = this._extent.nw,\n            se = this._extent.se,\n            diff = se.clone().translate(-nw.x, -nw.y);\n\n        return {\n            width: diff.x,\n            height: diff.y\n        };\n    };\n\n    TileView.prototype.indexToPoint = function indexToPoint (index) {\n        var x = index.x,\n            y = index.y;\n\n        return new Point(x * this.options.tileSize, y * this.options.tileSize);\n    };\n\n    TileView.prototype.subdomainText = function subdomainText () {\n        var subdomains = this.options.subdomains;\n        return subdomains[this.subdomainIndex++ % subdomains.length];\n    };\n\n    TileView.prototype.destroy = function destroy () {\n        removeChildren(this.element);\n        this.pool.empty();\n    };\n\n    TileView.prototype.reset = function reset () {\n        this.pool.reset();\n        this.subdomainIndex = 0;\n        this.render();\n    };\n\n    TileView.prototype.render = function render () {\n        var this$1 = this;\n\n        var size = this.tileCount(),\n            firstTileIndex = this.pointToTileIndex(this._extent.nw),\n            tile, x, y;\n\n        for (x = 0; x < size.x; x++) {\n            for (y = 0; y < size.y; y++) {\n                tile = this$1.createTile({\n                    x: firstTileIndex.x + x,\n                    y: firstTileIndex.y + y\n                });\n\n                if (!tile.visible) {\n                    tile.show();\n                }\n            }\n        }\n    };\n\n    TileView.prototype.createTile = function createTile (currentIndex) {\n        var options = this.tileOptions(currentIndex);\n        var tile = this.pool.get(this._center, options);\n\n        if (!tile.element.parentNode) {\n            this.element.append(tile.element);\n        }\n\n        return tile;\n    };\n\n    TileView.prototype.tileOptions = function tileOptions (currentIndex) {\n        var index = this.wrapIndex(currentIndex),\n            point = this.indexToPoint(currentIndex),\n            origin = this._viewOrigin,\n            offset = point.clone().translate(-origin.x, -origin.y);\n\n        return {\n            index: index,\n            currentIndex: currentIndex,\n            point: point,\n            offset: roundPoint(offset),\n            zoom: this._zoom,\n            size: this.options.tileSize,\n            subdomain: this.subdomainText(),\n            urlTemplate: this.options.urlTemplate,\n            errorUrlTemplate: this.options.errorUrlTemplate\n        };\n    };\n\n    TileView.prototype.wrapIndex = function wrapIndex (index) {\n        var boundary = math.pow(2, this._zoom);\n\n        return {\n            x: this.wrapValue(index.x, boundary),\n            y: limitValue(index.y, 0, boundary - 1)\n        };\n    };\n\n    TileView.prototype.wrapValue = function wrapValue (value, boundary) {\n        var remainder = math.abs(value) % boundary;\n        var wrappedValue = value;\n\n        if (value >= 0) {\n            wrappedValue = remainder;\n        } else {\n            wrappedValue = boundary - (remainder === 0 ? boundary : remainder);\n        }\n\n        return wrappedValue;\n    };\n\n    return TileView;\n}(Class));\n\nexport var ImageTile = (function (Class) {\n    function ImageTile(id, options) {\n        Class.call(this);\n        this.id = id;\n        this.visible = true;\n        this._initOptions(options);\n        this.createElement();\n        this.show();\n    }\n\n    if ( Class ) ImageTile.__proto__ = Class;\n    ImageTile.prototype = Object.create( Class && Class.prototype );\n    ImageTile.prototype.constructor = ImageTile;\n\n    ImageTile.prototype.destroy = function destroy () {\n        var element = this.element;\n        var parentNode = element ? element.parentNode : null;\n\n        if (element) {\n            if (parentNode) {\n                parentNode.removeChild(element);\n            }\n\n            this.element = null;\n        }\n    };\n\n    ImageTile.prototype._initOptions = function _initOptions (options) {\n        this.options = deepExtend({}, this.options, options);\n    };\n\n    ImageTile.prototype.createElement = function createElement () {\n        var el = document.createElement(\"img\");\n        var size = this.options.size + \"px\";\n        el.style.position = \"absolute\";\n        el.style.display = \"block\";\n        el.style.width = el.style.maxWidth = size;\n        el.style.height = el.style.maxHeight = size;\n\n        this.element = el;\n\n        // todo\n        // add on error handler\n\n        // this.element =\n        // $('<img style=\\'position: absolute; display: block;\\' alt=\\'\\' />')\n        // .css({\n        //     width: this.options.size,\n        //     height: this.options.size\n        // })\n        // .on('error', proxy(function(e) {\n        //     if (this.errorUrl()) {\n        //         e.target.setAttribute('src', this.errorUrl());\n        //     } else {\n        //         e.target.removeAttribute('src');\n        //     }\n        // }, this));\n    };\n\n    ImageTile.prototype.show = function show () {\n        var element = this.element;\n        element.style.top = renderSize(this.options.offset.y);\n        element.style.left = renderSize(this.options.offset.x);\n\n        var url = this.url();\n\n        if (url) {\n            element.setAttribute('src', url);\n        }\n\n        element.style.visibility = 'visible';\n        this.visible = true;\n    };\n\n    ImageTile.prototype.hide = function hide () {\n        this.element.style.visibility = 'hidden';\n        this.visible = false;\n    };\n\n    ImageTile.prototype.url = function url () {\n        var urlResult = compileTemplate(this.options.urlTemplate);\n        return urlResult(this.urlOptions());\n    };\n\n    ImageTile.prototype.errorUrl = function errorUrl () {\n        var urlResult = compileTemplate(this.options.errorUrlTemplate);\n        return urlResult(this.urlOptions());\n    };\n\n    ImageTile.prototype.urlOptions = function urlOptions () {\n        var options = this.options;\n\n        return {\n            zoom: options.zoom,\n            subdomain: options.subdomain,\n            z: options.zoom,\n            x: options.index.x,\n            y: options.index.y,\n            s: options.subdomain,\n            quadkey: options.quadkey,\n            q: options.quadkey,\n            culture: options.culture,\n            c: options.culture\n        };\n    };\n\n    return ImageTile;\n}(Class));\n\nsetDefaultOptions(ImageTile, {\n    urlTemplate: '',\n    errorUrlTemplate: ''\n});\n\nexport var TilePool = (function (Class) {\n    function TilePool() {\n        Class.call(this);\n        this._items = [];\n    }\n\n    if ( Class ) TilePool.__proto__ = Class;\n    TilePool.prototype = Object.create( Class && Class.prototype );\n    TilePool.prototype.constructor = TilePool;\n\n    TilePool.prototype.get = function get (center, options) {\n        if (this._items.length >= this.options.maxSize) {\n            this._remove(center);\n        }\n\n        return this._create(options);\n    };\n\n    TilePool.prototype.empty = function empty () {\n        var items = this._items;\n\n        for (var i = 0; i < items.length; i++) {\n            items[i].destroy();\n        }\n\n        this._items = [];\n    };\n\n    TilePool.prototype.reset = function reset () {\n        var items = this._items;\n\n        for (var i = 0; i < items.length; i++) {\n            items[i].hide();\n        }\n    };\n\n    TilePool.prototype._create = function _create (options) {\n        var items = this._items;\n        var tile;\n        var id = hashKey(options.point.toString() + options.offset.toString() + options.zoom + options.urlTemplate);\n\n        for (var i = 0; i < items.length; i++) {\n            if (items[i].id === id) {\n                tile = items[i];\n                break;\n            }\n        }\n\n        if (tile) {\n            tile.show();\n        } else {\n            tile = new ImageTile(id, options);\n            this._items.push(tile);\n        }\n\n        return tile;\n    };\n\n    TilePool.prototype._remove = function _remove (center) {\n        var items = this._items;\n        var maxDist = -1;\n        var index = -1;\n\n        for (var i = 0; i < items.length; i++) {\n            var dist = items[i].options.point.distanceTo(center);\n\n            if (dist > maxDist && !items[i].visible) {\n                index = i;\n                maxDist = dist;\n            }\n        }\n\n        if (index !== -1) {\n            items[index].destroy();\n            items.splice(index, 1);\n        }\n    };\n\n    return TilePool;\n}(Class));\n\nsetDefaultOptions(TilePool, {\n    maxSize: 100\n});\n","import {\n    Class,\n    elementOffset\n} from '../../common';\n\nimport {\n    Observable\n} from './observable';\n\nimport {\n    getEventMap,\n    proxy,\n    getSupportedFeatures\n} from '../utils';\n\nvar extend = Object.assign;\n\nvar CHANGE = 'change';\n\nexport var TapCapture = (function (Observable) {\n    function TapCapture(element, options) {\n        Observable.call(this);\n        var that = this,\n            domElement = element[0] || element;\n\n        that.capture = false;\n\n        var eventMap = getEventMap(navigator.userAgent);\n\n        if (domElement.addEventListener) {\n            eventMap.down.split(' ').forEach(function(event) {\n                domElement.addEventListener(event, proxy(that._press, that), true);\n            });\n            eventMap.up.split(' ').forEach(function(event) {\n                domElement.addEventListener(event, proxy(that._release, that), true);\n            });\n        } else {\n            eventMap.down.split(' ').forEach(function(event) {\n                domElement.attachEvent(event, proxy(that._press, that));\n            });\n            eventMap.up.split(' ').forEach(function(event) {\n                domElement.attachEvent(event, proxy(that._release, that));\n            });\n        }\n\n        that.bind([\n            'press',\n            'release'\n        ], options || {});\n    }\n\n    if ( Observable ) TapCapture.__proto__ = Observable;\n    TapCapture.prototype = Object.create( Observable && Observable.prototype );\n    TapCapture.prototype.constructor = TapCapture;\n\n    TapCapture.prototype.captureNext = function captureNext () {\n        this.capture = true;\n    };\n\n    TapCapture.prototype.cancelCapture = function cancelCapture () {\n        this.capture = false;\n    };\n\n    TapCapture.prototype._press = function _press (e) {\n        var that = this;\n\n        that.trigger('press');\n\n        if (that.capture) {\n            e.preventDefault();\n        }\n    };\n\n    TapCapture.prototype._release = function _release (e) {\n        var that = this;\n\n        that.trigger('release');\n\n        if (that.capture) {\n            e.preventDefault();\n            that.cancelCapture();\n        }\n    };\n\n    return TapCapture;\n}(Observable));\n\nexport var PaneDimension = (function (Observable) {\n    function PaneDimension(options) {\n        Observable.call(this);\n        var that = this;\n        that.forcedEnabled = false;\n        extend(that, options);\n        that.scale = 1;\n\n        if (that.horizontal) {\n            that.measure = 'offsetWidth';\n            that.scrollSize = 'scrollWidth';\n            that.axis = 'x';\n        } else {\n            that.measure = 'offsetHeight';\n            that.scrollSize = 'scrollHeight';\n            that.axis = 'y';\n        }\n    }\n\n    if ( Observable ) PaneDimension.__proto__ = Observable;\n    PaneDimension.prototype = Object.create( Observable && Observable.prototype );\n    PaneDimension.prototype.constructor = PaneDimension;\n\n    PaneDimension.prototype.makeVirtual = function makeVirtual () {\n        extend(this, {\n            virtual: true,\n            forcedEnabled: true,\n            _virtualMin: 0,\n            _virtualMax: 0\n        });\n    };\n\n    PaneDimension.prototype.virtualSize = function virtualSize (min, max) {\n        if (this._virtualMin !== min || this._virtualMax !== max) {\n            this._virtualMin = min;\n            this._virtualMax = max;\n            this.update();\n        }\n    };\n\n    PaneDimension.prototype.outOfBounds = function outOfBounds (offset) {\n        return offset > this.max || offset < this.min;\n    };\n\n    PaneDimension.prototype.forceEnabled = function forceEnabled () {\n        this.forcedEnabled = true;\n    };\n\n    PaneDimension.prototype.getSize = function getSize () {\n        return this.container[this.measure];\n    };\n\n    PaneDimension.prototype.getTotal = function getTotal () {\n        return this.element[this.scrollSize];\n    };\n\n    PaneDimension.prototype.rescale = function rescale (scale) {\n        this.scale = scale;\n    };\n\n    PaneDimension.prototype.update = function update (silent) {\n        var that = this,\n            total = that.virtual ? that._virtualMax : that.getTotal(),\n            scaledTotal = total * that.scale,\n            size = that.getSize();\n\n        if (total === 0 && !that.forcedEnabled) {\n            return;\n        }\n\n        that.max = that.virtual ? -that._virtualMin : 0;\n        that.size = size;\n        that.total = scaledTotal;\n        that.min = Math.min(that.max, size - scaledTotal);\n        that.minScale = size / total;\n        that.centerOffset = (scaledTotal - size) / 2;\n        that.enabled = that.forcedEnabled || scaledTotal > size;\n\n        if (!silent) {\n            that.trigger(CHANGE, that);\n        }\n    };\n\n    return PaneDimension;\n}(Observable));\n\nexport var PaneDimensions = (function (Observable) {\n    function PaneDimensions(options) {\n        Observable.call(this);\n        var that = this;\n\n        that.x = new PaneDimension(extend({\n            horizontal: true\n        }, options));\n\n        that.y = new PaneDimension(extend({\n            horizontal: false\n        }, options));\n\n        that.container = options.container;\n        that.forcedMinScale = options.minScale;\n        that.maxScale = options.maxScale || 100;\n        that.bind(CHANGE, options);\n    }\n\n    if ( Observable ) PaneDimensions.__proto__ = Observable;\n    PaneDimensions.prototype = Object.create( Observable && Observable.prototype );\n    PaneDimensions.prototype.constructor = PaneDimensions;\n\n    PaneDimensions.prototype.rescale = function rescale (newScale) {\n        this.x.rescale(newScale);\n        this.y.rescale(newScale);\n        this.refresh();\n    };\n\n    PaneDimensions.prototype.centerCoordinates = function centerCoordinates () {\n        return {\n            x: Math.min(0, -this.x.centerOffset),\n            y: Math.min(0, -this.y.centerOffset)\n        };\n    };\n\n    PaneDimensions.prototype.refresh = function refresh () {\n        var that = this;\n        that.x.update();\n        that.y.update();\n        that.enabled = that.x.enabled || that.y.enabled;\n        that.minScale = that.forcedMinScale || Math.min(that.x.minScale, that.y.minScale);\n        that.fitScale = Math.max(that.x.minScale, that.y.minScale);\n        that.trigger(CHANGE);\n    };\n\n    return PaneDimensions;\n}(Observable));\n\nexport var PaneAxis = (function (Observable) {\n    function PaneAxis(options) {\n        Observable.call(this);\n        extend(this, options);\n    }\n\n    if ( Observable ) PaneAxis.__proto__ = Observable;\n    PaneAxis.prototype = Object.create( Observable && Observable.prototype );\n    PaneAxis.prototype.constructor = PaneAxis;\n\n    PaneAxis.prototype.outOfBounds = function outOfBounds () {\n        return this.dimension.outOfBounds(this.movable[this.axis]);\n    };\n\n    PaneAxis.prototype.dragMove = function dragMove (delta) {\n        var that = this,\n            dimension = that.dimension,\n            axis = that.axis,\n            movable = that.movable,\n            position = movable[axis] + delta;\n\n        if (!dimension.enabled) {\n            return;\n        }\n\n        var dragDelta = delta;\n\n        if (position < dimension.min && delta < 0 || position > dimension.max && delta > 0) {\n            dragDelta *= that.resistance;\n        }\n\n        movable.translateAxis(axis, dragDelta);\n        that.trigger(CHANGE, that);\n    };\n\n    return PaneAxis;\n}(Observable));\n\nexport var Pane = (function (Class) {\n    function Pane(options) {\n        Class.call(this);\n\n        var that = this,\n            x, y,\n            resistance,\n            movable;\n\n        extend(that, {\n            elastic: true\n        }, options);\n\n        resistance = that.elastic ? 0.5 : 0;\n        movable = that.movable;\n\n        that.x = x = new PaneAxis({\n            axis: 'x',\n            dimension: that.dimensions.x,\n            resistance: resistance,\n            movable: movable\n        });\n\n        that.y = y = new PaneAxis({\n            axis: 'y',\n            dimension: that.dimensions.y,\n            resistance: resistance,\n            movable: movable\n        });\n\n        that.userEvents.bind([\n            'press',\n            'move',\n            'end',\n            'gesturestart',\n            'gesturechange'\n        ], {\n            gesturestart: function gesturestart(e) {\n                that.gesture = e;\n\n                that.offset = elementOffset(that.dimensions.container);\n            },\n            press: function press(e) {\n                var closestAnchor = e.event.target.closest('a');\n\n                if (closestAnchor && closestAnchor.matches('[data-navigate-on-press=true]')) {\n                    e.sender.cancel();\n                }\n            },\n            gesturechange: function gesturechange(e) {\n                var previousGesture = that.gesture,\n                    previousCenter = previousGesture.center,\n                    center = e.center,\n                    scaleDelta = e.distance / previousGesture.distance,\n                    minScale = that.dimensions.minScale,\n                    maxScale = that.dimensions.maxScale,\n                    coordinates;\n                if (movable.scale <= minScale && scaleDelta < 1) {\n                    scaleDelta += (1 - scaleDelta) * 0.8;\n                }\n\n                if (movable.scale * scaleDelta >= maxScale) {\n                    scaleDelta = maxScale / movable.scale;\n                }\n\n                var offsetX = movable.x + that.offset.left,\n                    offsetY = movable.y + that.offset.top;\n                coordinates = {\n                    x: (offsetX - previousCenter.x) * scaleDelta + center.x - offsetX,\n                    y: (offsetY - previousCenter.y) * scaleDelta + center.y - offsetY\n                };\n\n                movable.scaleWith(scaleDelta);\n\n                x.dragMove(coordinates.x);\n                y.dragMove(coordinates.y);\n\n                that.dimensions.rescale(movable.scale);\n                that.gesture = e;\n\n                e.preventDefault();\n            },\n            move: function move(e) {\n                if (e.event.target.tagName.match(/textarea|input/i)) {\n                    return;\n                }\n\n                if (x.dimension.enabled || y.dimension.enabled) {\n                    x.dragMove(e.x.delta);\n                    y.dragMove(e.y.delta);\n                    e.preventDefault();\n                } else {\n                    e.touch.skip();\n                }\n            },\n            end: function end(e) {\n                e.preventDefault();\n            }\n        });\n    }\n\n    if ( Class ) Pane.__proto__ = Class;\n    Pane.prototype = Object.create( Class && Class.prototype );\n    Pane.prototype.constructor = Pane;\n\n    return Pane;\n}(Class));\n\nvar translate = function(x, y, scale) {\n    return 'translate3d(' + x + 'px,' + y + 'px,0) scale(' + scale + ')';\n};\n\nexport var Movable = (function (Observable) {\n    function Movable(element) {\n        Observable.call(this);\n\n        var that = this;\n\n        that.support = getSupportedFeatures();\n        this.transformStyle = this.support.transitions.prefix + 'Transform';\n        that.element = element;\n        that.element.style.webkitTransformOrigin = 'left top';\n        that.x = 0;\n        that.y = 0;\n        that.scale = 1;\n\n        var coordinates = translate(that.x, that.y, that.scale);\n        that.element.style[this.transformStyle] = coordinates;\n\n        that._saveCoordinates(coordinates);\n    }\n\n    if ( Observable ) Movable.__proto__ = Observable;\n    Movable.prototype = Object.create( Observable && Observable.prototype );\n    Movable.prototype.constructor = Movable;\n\n    Movable.prototype.translateAxis = function translateAxis (axis, by) {\n        this[axis] += by;\n        this.refresh();\n    };\n\n    Movable.prototype.scaleTo = function scaleTo (scale) {\n        this.scale = scale;\n        this.refresh();\n    };\n\n    Movable.prototype.scaleWith = function scaleWith (scaleDelta) {\n        this.scale *= scaleDelta;\n        this.refresh();\n    };\n\n    Movable.prototype.translate = function translate (coordinates) {\n        this.x += coordinates.x;\n        this.y += coordinates.y;\n        this.refresh();\n    };\n\n    Movable.prototype.moveAxis = function moveAxis (axis, value) {\n        this[axis] = value;\n        this.refresh();\n    };\n\n    Movable.prototype.moveTo = function moveTo (coordinates) {\n        extend(this, coordinates);\n        this.refresh();\n    };\n\n    Movable.prototype.refresh = function refresh () {\n        var that = this,\n            x = that.x,\n            y = that.y,\n            newCoordinates;\n\n        if (that.round) {\n            x = Math.round(x);\n            y = Math.round(y);\n        }\n\n        newCoordinates = translate(x, y, that.scale);\n\n        if (newCoordinates !== that.coordinates) {\n            that.element.style[this.transformStyle] = newCoordinates;\n\n            that._saveCoordinates(newCoordinates);\n            that.trigger(CHANGE);\n        }\n    };\n\n    Movable.prototype._saveCoordinates = function _saveCoordinates (coordinates) {\n        this.coordinates = coordinates;\n    };\n\n    return Movable;\n}(Observable));\n","import {\n    geometry as g,\n    drawing as d\n} from '@progress/kendo-drawing';\n\nimport {\n    Class,\n    defined,\n    last,\n    setDefaultOptions\n} from '../../common';\n\nimport {\n    proxy\n} from '../utils';\n\nimport {\n    Layer\n} from './layer';\n\nimport {\n    Movable\n} from '../scroller/draggable';\n\nimport {\n    Location\n} from '../location';\n\nvar Group = d.Group;\n\nexport var ShapeLayer = (function (Layer) {\n    function ShapeLayer(map, options) {\n        Layer.call(this, map, options);\n\n        this._pan = proxy(this._pan, this);\n\n        this.surface = d.Surface.create(this.element, {\n            width: map.scrollElement.clientWidth,\n            height: map.scrollElement.clientHeight\n        });\n\n        this._initRoot();\n        this.movable = new Movable(this.surface.element);\n        this._markers = [];\n\n        this._click = this._handler('shapeClick');\n        this.surface.bind('click', this._click);\n        this._mouseleave = this._handler('shapeMouseLeave');\n        this.surface.bind('mouseleave', this._mouseleave);\n        this.surface.bind('mouseenter', this._mouseenter.bind(this));\n    }\n\n    if ( Layer ) ShapeLayer.__proto__ = Layer;\n    ShapeLayer.prototype = Object.create( Layer && Layer.prototype );\n    ShapeLayer.prototype.constructor = ShapeLayer;\n\n    ShapeLayer.prototype.destroy = function destroy () {\n        Layer.prototype.destroy.call(this);\n\n        this.surface.destroy();\n    };\n\n    ShapeLayer.prototype._reset = function _reset () {\n        Layer.prototype._reset.call(this);\n\n        this._translateSurface();\n\n        this._data = this._readData();\n\n        if (this._hasData()) {\n            this._load(this._data);\n        }\n    };\n\n    ShapeLayer.prototype._initRoot = function _initRoot () {\n        this._root = new Group();\n        this.surface.draw(this._root);\n    };\n\n    ShapeLayer.prototype._beforeReset = function _beforeReset () {\n        this.surface.clear();\n        this._initRoot();\n    };\n\n    ShapeLayer.prototype._resize = function _resize () {\n        this.surface.size(this.map.size());\n    };\n\n    ShapeLayer.prototype._readData = function _readData () {\n        var data = Layer.prototype._readData.call(this);\n\n        if (data.type === \"FeatureCollection\") {\n            return data.features;\n        }\n\n        if (data.type === \"GeometryCollection\") {\n            return data.geometries;\n        }\n\n        return data;\n    };\n\n    ShapeLayer.prototype._load = function _load (data) {\n        var this$1 = this;\n\n        this._data = data;\n        this._clearMarkers();\n\n        if (!this._loader) {\n            this._loader = new GeoJsonLoader(this.map, this.options.style, this);\n        }\n\n        var container = new Group();\n\n        for (var i = 0; i < data.length; i++) {\n            var shape = this$1._loader.parse(data[i]);\n\n            if (shape) {\n                container.append(shape);\n            }\n        }\n\n        this._root.clear();\n        this._root.append(container);\n    };\n\n    ShapeLayer.prototype.shapeCreated = function shapeCreated (shape) {\n        var cancelled = false;\n\n        // the GeoJSON loader builds \"Point\" type as a circle\n        // use the circle shape type as and indicator for rendering a marker\n        // keep the behavior under a setting as this is supported by kendo jQuery Map\n        // but we opted out of this in blazor\n        if (shape instanceof d.Circle && this.map.options.renderPointsAsMarkers) {\n            cancelled = defined(this._createMarker(shape));\n        }\n\n        if (!cancelled) {\n            var args = {\n                layer: this,\n                shape: shape\n            };\n\n            cancelled = this.map.trigger('shapeCreated', args);\n        }\n\n        return cancelled;\n    };\n\n    ShapeLayer.prototype.featureCreated = function featureCreated (e) {\n        e.layer = this;\n        this.map.trigger('shapeFeatureCreated', e);\n    };\n\n    ShapeLayer.prototype._createMarker = function _createMarker (shape) {\n        var marker = this.map.markers.bind({\n            location: shape.location\n        }, shape.dataItem);\n\n        if (marker) {\n            this._markers.push(marker);\n        }\n\n        return marker;\n    };\n\n    ShapeLayer.prototype._clearMarkers = function _clearMarkers () {\n        var this$1 = this;\n\n        for (var i = 0; i < this._markers.length; i++) {\n            this$1.map.markers.remove(this$1._markers[i]);\n        }\n\n        this._markers = [];\n    };\n\n    ShapeLayer.prototype._pan = function _pan () {\n        if (!this._panning) {\n            this._panning = true;\n            this.surface.suspendTracking();\n        }\n    };\n\n    ShapeLayer.prototype._panEnd = function _panEnd (e) {\n        Layer.prototype._panEnd.call(this, e);\n        this._translateSurface();\n        this.surface.resumeTracking();\n        this._panning = false;\n    };\n\n    ShapeLayer.prototype._translateSurface = function _translateSurface () {\n        var map = this.map;\n        var nw = map.locationToView(map.extent().nw);\n\n        if (this.surface.translate) {\n            this.surface.translate(nw);\n            this.movable.moveTo({\n                x: nw.x,\n                y: nw.y\n            });\n        }\n    };\n\n    ShapeLayer.prototype._eventArgs = function _eventArgs (e) {\n        return {\n            layer: this,\n            layerIndex: this._layerIndex(),\n            shape: e.element,\n            shapeIndex: (this._data || []).indexOf(e.element.dataItem),\n            originalEvent: e.originalEvent\n        };\n    };\n\n    ShapeLayer.prototype._handler = function _handler (eventName) {\n        var this$1 = this;\n\n        return function (e) {\n            if (e.element) {\n                this$1.map.trigger(eventName, this$1._eventArgs(e));\n            }\n        };\n    };\n\n    ShapeLayer.prototype._mouseenter = function _mouseenter (e) {\n        if (!e.element) {\n            return;\n        }\n\n        this.map.trigger('shapeMouseEnter', this._eventArgs(e));\n\n        var shape = e.element;\n        var anchor = this._tooltipAnchor(e);\n        this.map._tooltip.show(anchor, this._tooltipContext(shape));\n    };\n\n    ShapeLayer.prototype._tooltipContext = function _tooltipContext (shape) {\n        return {\n            type: 'shape',\n            layerIndex: this._layerIndex(),\n            className: 'k-map-shape-tooltip',\n            dataItem: shape.dataItem,\n            location: shape.location\n        };\n    };\n\n    ShapeLayer.prototype._tooltipAnchor = function _tooltipAnchor (e) {\n        var cursor = this.map.eventOffset(e.originalEvent);\n        return {\n            top: cursor.y,\n            left: cursor.x\n        };\n    };\n\n    ShapeLayer.prototype._activate = function _activate () {\n        Layer.prototype._activate.call(this);\n        this._panHandler = proxy(this._pan, this);\n        this.map.bind('pan', this.panHandler);\n    };\n\n    ShapeLayer.prototype._deactivate = function _deactivate () {\n        Layer.prototype._deactivate.call(this);\n        this.map.unbind('pan', this._panHandler);\n    };\n\n    return ShapeLayer;\n}(Layer));\n\nsetDefaultOptions(ShapeLayer, {\n    autoBind: true,\n    zIndex: 100\n});\n\nvar GeoJsonLoader = (function (Class) {\n    function GeoJsonLoader(locator, defaultStyle, observer) {\n        Class.call(this);\n        this.observer = observer;\n        this.locator = locator;\n        this.style = defaultStyle;\n    }\n\n    if ( Class ) GeoJsonLoader.__proto__ = Class;\n    GeoJsonLoader.prototype = Object.create( Class && Class.prototype );\n    GeoJsonLoader.prototype.constructor = GeoJsonLoader;\n\n    GeoJsonLoader.prototype.parse = function parse (item) {\n        var root = new Group();\n        var unwrap = true;\n\n        if (item.type === 'Feature') {\n            unwrap = false;\n            this._loadGeometryTo(root, item.geometry, item);\n            this._featureCreated(root, item);\n        } else {\n            this._loadGeometryTo(root, item, item);\n        }\n\n        if (unwrap && root.children.length < 2) {\n            root = root.children[0];\n        }\n\n        return root;\n    };\n\n    GeoJsonLoader.prototype._shapeCreated = function _shapeCreated (shape) {\n        var cancelled = false;\n\n        if (this.observer && this.observer.shapeCreated) {\n            cancelled = this.observer.shapeCreated(shape);\n        }\n\n        return cancelled;\n    };\n\n    GeoJsonLoader.prototype._featureCreated = function _featureCreated (group, dataItem) {\n        if (this.observer && this.observer.featureCreated) {\n            this.observer.featureCreated({\n                group: group,\n                dataItem: dataItem,\n                properties: dataItem.properties\n            });\n        }\n    };\n\n    /* eslint-disable indent */\n    GeoJsonLoader.prototype._loadGeometryTo = function _loadGeometryTo (container, geometry, dataItem) {\n        var this$1 = this;\n\n        var coords = geometry.coordinates;\n        var i;\n        var path;\n\n        switch (geometry.type) {\n            case 'LineString':\n                path = this._loadPolygon(container, [coords], dataItem);\n                this._setLineFill(path);\n                break;\n            case 'MultiLineString':\n                for (i = 0; i < coords.length; i++) {\n                    path = this$1._loadPolygon(container, [coords[i]], dataItem);\n                    this$1._setLineFill(path);\n                }\n                break;\n            case 'Polygon':\n                this._loadPolygon(container, coords, dataItem);\n                break;\n            case 'MultiPolygon':\n                for (i = 0; i < coords.length; i++) {\n                    this$1._loadPolygon(container, coords[i], dataItem);\n                }\n                break;\n            case 'Point':\n                this._loadPoint(container, coords, dataItem);\n                break;\n            case 'MultiPoint':\n                for (i = 0; i < coords.length; i++) {\n                    this$1._loadPoint(container, coords[i], dataItem);\n                }\n                break;\n            default:\n                break;\n        }\n    };\n    /* eslint-disable indent */\n\n    GeoJsonLoader.prototype._setLineFill = function _setLineFill (path) {\n        var segments = path.segments;\n\n        if (segments.length < 4 || !segments[0].anchor().equals(last(segments).anchor())) {\n            path.options.fill = null;\n        }\n    };\n\n    GeoJsonLoader.prototype._loadShape = function _loadShape (container, shape) {\n        if (!this._shapeCreated(shape)) {\n            container.append(shape);\n        }\n\n        return shape;\n    };\n\n    GeoJsonLoader.prototype._loadPolygon = function _loadPolygon (container, rings, dataItem) {\n        var shape = this._buildPolygon(rings);\n        shape.dataItem = dataItem;\n        shape.location = this.locator.viewToLocation(shape.bbox().center());\n        return this._loadShape(container, shape);\n    };\n\n    GeoJsonLoader.prototype._buildPolygon = function _buildPolygon (rings) {\n        var this$1 = this;\n\n        var type = rings.length > 1 ? d.MultiPath : d.Path;\n        var path = new type(this.style);\n\n        for (var i = 0; i < rings.length; i++) {\n            for (var j = 0; j < rings[i].length; j++) {\n                var point = this$1.locator.locationToView(Location.fromLngLat(rings[i][j]));\n                if (j === 0) {\n                    path.moveTo(point.x, point.y);\n                } else {\n                    path.lineTo(point.x, point.y);\n                }\n            }\n        }\n\n        return path;\n    };\n\n    GeoJsonLoader.prototype._loadPoint = function _loadPoint (container, coords, dataItem) {\n        var location = Location.fromLngLat(coords);\n        var point = this.locator.locationToView(location);\n        var circle = new g.Circle(point, 10);\n        var shape = new d.Circle(circle, this.style);\n\n        shape.dataItem = dataItem;\n        shape.location = location;\n\n        return this._loadShape(container, shape);\n    };\n\n    return GeoJsonLoader;\n}(Class));\n","import {\n    geometry as g,\n    drawing as d\n} from '@progress/kendo-drawing';\n\nimport {\n    Class,\n    defined,\n    isFunction,\n    getter,\n    setDefaultOptions\n} from '../../common';\n\nimport {\n    ShapeLayer\n} from './shape';\n\nimport {\n    Location\n} from '../location';\n\nexport var BubbleLayer = (function (ShapeLayer) {\n    function BubbleLayer () {\n        ShapeLayer.apply(this, arguments);\n    }\n\n    if ( ShapeLayer ) BubbleLayer.__proto__ = ShapeLayer;\n    BubbleLayer.prototype = Object.create( ShapeLayer && ShapeLayer.prototype );\n    BubbleLayer.prototype.constructor = BubbleLayer;\n\n    BubbleLayer.prototype._readData = function _readData () {\n        var data = this.options.data || [];\n        return data;\n    };\n\n    BubbleLayer.prototype._load = function _load (data) {\n        var this$1 = this;\n\n        this._data = data;\n        this.surface.clear();\n\n        if (data.length === 0) {\n            return;\n        }\n\n        var options = this.options;\n        var getValue = getter(options.valueField);\n\n        var newData = data.slice(0);\n        newData.sort(function(a, b) {\n            return getValue(b) - getValue(a);\n        });\n\n        var scaleType = this._scaleType();\n        var scale;\n        var getLocation = getter(this.options.locationField);\n\n        for (var i = 0; i < newData.length; i++) {\n            var dataItem = newData[i];\n            var location = getLocation(dataItem);\n            var value = getValue(dataItem);\n\n            if (defined(location) && defined(value)) {\n                if (!scale) {\n                    scale = new scaleType([\n                        0,\n                        value\n                    ], [\n                        options.minSize,\n                        options.maxSize\n                    ]);\n                }\n\n                location = Location.create(location);\n\n                var center = this$1.map.locationToView(location);\n                var size = scale.map(value);\n                var symbol = this$1._createSymbol({\n                    center: center,\n                    size: size,\n                    style: options.style,\n                    dataItem: dataItem,\n                    location: location\n                });\n\n                symbol.dataItem = dataItem;\n                symbol.location = location;\n                symbol.value = value;\n\n                this$1._drawSymbol(symbol);\n            }\n        }\n    };\n\n    BubbleLayer.prototype._scaleType = function _scaleType () {\n        var scale = this.options.scale;\n\n        if (isFunction(scale)) {\n            return scale;\n        }\n\n        return Scales[scale];\n    };\n\n    BubbleLayer.prototype._createSymbol = function _createSymbol (args) {\n        var symbol = this.options.symbol;\n\n        if (!isFunction(symbol)) {\n            symbol = Symbols[symbol];\n        }\n\n        return symbol(args);\n    };\n\n    BubbleLayer.prototype._drawSymbol = function _drawSymbol (shape) {\n        var args = {\n            layer: this,\n            shape: shape\n        };\n\n        var cancelled = this.map.trigger('shapeCreated', args);\n\n        if (!cancelled) {\n            this.surface.draw(shape);\n        }\n    };\n\n    BubbleLayer.prototype._tooltipContext = function _tooltipContext (shape) {\n        return {\n            type: 'bubble',\n            layerIndex: this._layerIndex(),\n            className: 'k-map-bubble-tooltip',\n            dataItem: shape.dataItem,\n            location: shape.location,\n            value: shape.value\n        };\n    };\n\n    BubbleLayer.prototype._tooltipAnchor = function _tooltipAnchor (e) {\n        var shape = e.element;\n        var center = shape.bbox().center();\n\n        return {\n            top: center.y,\n            left: center.x\n        };\n    };\n\n    return BubbleLayer;\n}(ShapeLayer));\n\nsetDefaultOptions(BubbleLayer, {\n    // autoBind: true,\n    locationField: 'location',\n    valueField: 'value',\n    minSize: 0,\n    maxSize: 100,\n    scale: 'sqrt',\n    symbol: 'circle',\n    // ensure bubble layers are displayed over tile and shape layers\n    zIndex: 200\n});\n\nvar SqrtScale = (function (Class) {\n    function SqrtScale(domain, range) {\n        Class.call(this);\n\n        this._domain = domain;\n        this._range = range;\n\n        var domainRange = Math.sqrt(domain[1]) - Math.sqrt(domain[0]);\n        var outputRange = range[1] - range[0];\n\n        this._ratio = outputRange / domainRange;\n    }\n\n    if ( Class ) SqrtScale.__proto__ = Class;\n    SqrtScale.prototype = Object.create( Class && Class.prototype );\n    SqrtScale.prototype.constructor = SqrtScale;\n\n    SqrtScale.prototype.map = function map (value) {\n        var rel = (Math.sqrt(value) - Math.sqrt(this._domain[0])) * this._ratio;\n        return this._range[0] + rel;\n    };\n\n    return SqrtScale;\n}(Class));\n\nvar Scales = {\n    sqrt: SqrtScale\n};\n\nvar Symbols = {\n    circle: function(args) {\n        var geo = new g.Circle(args.center, args.size / 2);\n        return new d.Circle(geo, args.style);\n    },\n\n    square: function(args) {\n        var path = new d.Path(args.style);\n        var halfSize = args.size / 2;\n        var center = args.center;\n        path.moveTo(center.x - halfSize, center.y - halfSize).lineTo(center.x + halfSize, center.y - halfSize).lineTo(center.x + halfSize, center.y + halfSize).lineTo(center.x - halfSize, center.y + halfSize).close();\n        return path;\n    }\n};\n","import {\n    Class,\n    addClass,\n    isArray,\n    getter,\n    deepExtend,\n    setDefaultOptions,\n    renderIcon\n} from '../../common';\n\nimport { Layer } from './layer';\nimport { Location } from '../location';\nimport {\n    proxy,\n    on,\n    off,\n    toHyphens,\n    toPixels,\n    convertToHtml\n} from '../utils';\nimport TemplateService from '../../services/template-service';\n\nvar CLICK = \"click\";\nvar MOUSE_ENTER = \"mouseenter\";\nvar MOUSE_LEAVE = \"mouseleave\";\n\nvar extend = Object.assign;\nvar MARKER_CLASS_NAME = \"k-marker\";\nvar MARKER_CLASS = \".\" + MARKER_CLASS_NAME;\n\nexport var MarkerLayer = (function (Layer) {\n    function MarkerLayer(map, options) {\n        Layer.call(this, map, options);\n\n        this._markerClickHandler = proxy(this._markerClick, this);\n        on(this.element, CLICK, MARKER_CLASS, this._markerClickHandler);\n\n        this.items = [];\n\n        this._load(this._readData());\n    }\n\n    if ( Layer ) MarkerLayer.__proto__ = Layer;\n    MarkerLayer.prototype = Object.create( Layer && Layer.prototype );\n    MarkerLayer.prototype.constructor = MarkerLayer;\n\n    MarkerLayer.prototype.destroy = function destroy () {\n        Layer.prototype.destroy.call(this);\n        off(this.element, CLICK, this._markerClickHandler);\n        this.clear();\n    };\n\n    MarkerLayer.prototype.add = function add (args) {\n        var this$1 = this;\n\n        if (isArray(args)) {\n            for (var i = 0; i < args.length; i++) {\n                this$1._addOne(args[i]);\n            }\n        } else {\n            return this._addOne(args);\n        }\n    };\n\n    MarkerLayer.prototype.remove = function remove (marker) {\n        marker.destroy();\n        var index = (this.items || []).indexOf(marker);\n\n        if (index > -1) {\n            this.items.splice(index, 1);\n        }\n    };\n\n    MarkerLayer.prototype.clear = function clear () {\n        var this$1 = this;\n\n        for (var i = 0; i < this.items.length; i++) {\n            this$1.items[i].destroy();\n        }\n\n        this.items = [];\n    };\n\n    MarkerLayer.prototype.update = function update (marker) {\n        var location = marker.location();\n\n        if (location) {\n            marker.showAt(this.map.locationToView(location));\n\n            var args = {\n                marker: marker,\n                layer: this\n            };\n\n            this.map.trigger('markerActivate', args);\n        }\n    };\n\n    MarkerLayer.prototype._reset = function _reset () {\n        var this$1 = this;\n\n        Layer.prototype._reset.call(this);\n\n        var items = this.items;\n\n        for (var i = 0; i < items.length; i++) {\n            this$1.update(items[i]);\n        }\n    };\n\n    MarkerLayer.prototype.bind = function bind (options, dataItem) {\n        var marker = Marker.create(options, this.options);\n        marker.dataItem = dataItem;\n\n        var args = {\n            marker: marker,\n            layer: this\n        };\n\n        var cancelled = this.map.trigger('markerCreated', args);\n\n        if (!cancelled) {\n            this.add(marker);\n            return marker;\n        }\n    };\n\n    MarkerLayer.prototype._addOne = function _addOne (arg) {\n        var marker = Marker.create(arg, this.options);\n        marker.addTo(this);\n        return marker;\n    };\n\n    MarkerLayer.prototype._readData = function _readData () {\n        var data = this.options.data || [];\n        return data;\n    };\n\n    MarkerLayer.prototype._load = function _load (data) {\n        var this$1 = this;\n\n        this._data = data;\n        this.clear();\n\n        var getLocation = getter(this.options.locationField);\n        var getTitle = getter(this.options.titleField);\n\n        for (var i = 0; i < data.length; i++) {\n            var dataItem = data[i];\n\n            this$1.bind({\n                location: getLocation(dataItem),\n                title: getTitle(dataItem)\n            }, dataItem);\n        }\n    };\n\n    MarkerLayer.prototype._markerClick = function _markerClick (e) {\n        var marker = e.currentTarget._kendoNode;\n\n        var args = {\n            layer: this,\n            layerIndex: this._layerIndex(),\n            marker: marker,\n            markerIndex: (this.items || []).indexOf(marker),\n            originalEvent: e\n        };\n\n        this.map.trigger('markerClick', args);\n    };\n\n    MarkerLayer.prototype._markerMouseEnter = function _markerMouseEnter (e) {\n        var args = this._createMarkerEventArgs(e);\n        this.map.trigger(\"markerMouseEnter\", args);\n    };\n\n    MarkerLayer.prototype._markerMouseLeave = function _markerMouseLeave (e) {\n        var args = this._createMarkerEventArgs(e);\n        this.map.trigger(\"markerMouseLeave\", args);\n    };\n\n    MarkerLayer.prototype._createMarkerEventArgs = function _createMarkerEventArgs (e) {\n        var marker = e.marker;\n\n        var args = extend({}, {\n            layer: this,\n            layerIndex: this._layerIndex(),\n            marker: marker,\n            markerIndex: (this.items || []).indexOf(marker)\n        }, e);\n\n        return args;\n    };\n\n    return MarkerLayer;\n}(Layer));\n\nsetDefaultOptions(MarkerLayer, {\n    zIndex: 1000,\n    autoBind: true,\n    locationField: 'location',\n    titleField: 'title',\n    template: \"\"\n});\n\nexport var Marker = (function (Class) {\n    function Marker(options) {\n        Class.call(this);\n        this.options = options || {};\n    }\n\n    if ( Class ) Marker.__proto__ = Class;\n    Marker.prototype = Object.create( Class && Class.prototype );\n    Marker.prototype.constructor = Marker;\n\n    Marker.prototype.destroy = function destroy () {\n        this.layer = null;\n        this.unbindEvents();\n        this.hide();\n    };\n\n    Marker.prototype.addTo = function addTo (parent) {\n        this.layer = parent.markers || parent;\n        this.layer.items.push(this);\n        this.layer.update(this);\n    };\n\n    Marker.prototype.location = function location (value) {\n        if (value) {\n            this.options.location = Location.create(value).toArray();\n\n            if (this.layer) {\n                this.layer.update(this);\n            }\n\n            return this;\n        }\n\n        return Location.create(this.options.location);\n    };\n\n    Marker.prototype.showAt = function showAt (point) {\n        this.render();\n\n        this._anchor = { left: Math.round(point.x), top: Math.round(point.y) };\n        this.element.style.left = toPixels(this._anchor.left);\n        this.element.style.top = toPixels(this._anchor.top);\n    };\n\n    Marker.prototype.hide = function hide () {\n        if (this.element) {\n            this.element.remove();\n            this.element = null;\n        }\n    };\n\n    Marker.prototype.bindEvents = function bindEvents () {\n        if (!this.element) {\n            return;\n        }\n\n        this._mouseEnterHandler = proxy(this._mouseEnter, this);\n        on(this.element, MOUSE_ENTER, MARKER_CLASS, this._mouseEnterHandler);\n        this._mouseLeaveHandler = proxy(this._mouseLeave, this);\n        on(this.element, MOUSE_LEAVE, MARKER_CLASS, this._mouseLeaveHandler);\n    };\n\n    Marker.prototype.unbindEvents = function unbindEvents () {\n        if (!this.element) {\n            return;\n        }\n\n        off(this.element, MOUSE_ENTER, this._mouseEnterHandler);\n        off(this.element, MOUSE_LEAVE, this._mouseLeaveHandler);\n    };\n\n    Marker.prototype.render = function render () {\n        if (!this.element) {\n            var options = this.options;\n            var layer = this.layer;\n            var element = document.createElement('span');\n            addClass(element, MARKER_CLASS_NAME);\n\n            if (this.options.template) {\n                var templateFn = this._compileTemplate(this.options.template);\n                var templateHtml = templateFn(this.dataItem);\n                var templateElement = convertToHtml(templateHtml);\n                element.appendChild(templateElement);\n            } else if (options.svgIcon) {\n                renderIcon(element, { icon: options.svgIcon, iconClass: \"k-icon-xxl\", svgIcons: this.options.icons.svgIcons, type: \"svg\" });\n            } else {\n                var iconOptions = { icon: \"map-marker\", iconClass: \"k-icon-xxl\", svgIcons: this.options.icons.svgIcons, type: this.options.icons.type };\n\n                if (options.shape) {\n                    if (options.shape === \"pinTarget\") {\n                        iconOptions.icon = \"map-marker-target\";\n                        renderIcon(element, iconOptions);\n                    } else if (options.shape === \"pin\") {\n                        renderIcon(element, iconOptions);\n                    } else {\n                        addClass(element, 'k-icon k-icon-xxl k-i-marker-' + toHyphens(options.shape || 'pin'));\n                    }\n                } else {\n                    renderIcon(element, iconOptions);\n                }\n            }\n\n            if (options.title) {\n                element.setAttribute(\"title\", options.title);\n            }\n\n            var attributes = options.attributes || {};\n            Object.keys(attributes).forEach(function(key) {\n                element.setAttribute(key, attributes[key]);\n            });\n\n            element._kendoNode = this;\n            element.style.zIndex = options.zIndex;\n\n            this.element = element;\n\n            if (layer) {\n                layer.element.appendChild(this.element);\n            }\n\n            this.bindEvents();\n        }\n    };\n\n    Marker.prototype._mouseEnter = function _mouseEnter (e) {\n        var args = this._createEventArgs(e);\n        this.layer._markerMouseEnter(args);\n\n        this.layer.map._tooltip.show({\n            top: this._anchor.top - this.element.offsetHeight,\n            left: this._anchor.left\n        }, this._tooltipContext());\n    };\n\n    Marker.prototype._tooltipContext = function _tooltipContext () {\n        return {\n            type: 'marker',\n            layerIndex: this.layer._layerIndex(),\n            className: 'k-map-marker-tooltip',\n            dataItem: this.dataItem,\n            title: this.options.title,\n            location: this.location()\n        };\n    };\n\n    Marker.prototype._mouseLeave = function _mouseLeave (e) {\n        var args = this._createEventArgs(e);\n        this.layer._markerMouseLeave(args);\n    };\n\n    Marker.prototype._createEventArgs = function _createEventArgs (e) {\n        var args = {\n            marker: this,\n            originalEvent: e\n        };\n\n        return args;\n    };\n\n    Marker.prototype._compileTemplate = function _compileTemplate (template) {\n        return TemplateService.compile(template, {\n            paramName: \"dataItem\",\n            useWithBlock: false\n        });\n    };\n\n    Marker.create = function create (arg, defaults) {\n        if (arg instanceof Marker) {\n            return arg;\n        }\n\n        return new Marker(deepExtend({}, defaults, arg));\n    };\n\n    return Marker;\n}(Class));\n","import {\n    Class\n} from '../../common';\n\nimport {\n    proxy,\n    now\n} from '../utils';\n\nvar extend = Object.assign;\n\nfunction animationFrame(callback) {\n    window.requestAnimationFrame(callback);\n}\n\nexport var Animation = (function (Class) {\n    function Animation() {\n        Class.call(this);\n        var that = this;\n\n        that._tickProxy = proxy(that._tick, that);\n        that._started = false;\n    }\n\n    if ( Class ) Animation.__proto__ = Class;\n    Animation.prototype = Object.create( Class && Class.prototype );\n    Animation.prototype.constructor = Animation;\n\n    Animation.prototype.tick = function tick () { };\n    Animation.prototype.done = function done () { };\n    Animation.prototype.onEnd = function onEnd () { };\n    Animation.prototype.onCancel = function onCancel () { };\n\n    Animation.prototype.start = function start () {\n        if (!this.enabled()) {\n            return;\n        }\n\n        if (!this.done()) {\n            this._started = true;\n            animationFrame(this._tickProxy);\n        } else {\n            this.onEnd();\n        }\n    };\n\n    Animation.prototype.enabled = function enabled () {\n        return true;\n    };\n\n    Animation.prototype.cancel = function cancel () {\n        this._started = false;\n        this.onCancel();\n    };\n\n    Animation.prototype._tick = function _tick () {\n        var that = this;\n\n        if (!that._started) {\n            return;\n        }\n\n        that.tick();\n\n        if (!that.done()) {\n            animationFrame(that._tickProxy);\n        } else {\n            that._started = false;\n            that.onEnd();\n        }\n    };\n\n    return Animation;\n}(Class));\n\nexport var Transition = (function (Animation) {\n    function Transition(options) {\n        Animation.call(this);\n        extend(this, options);\n    }\n\n    if ( Animation ) Transition.__proto__ = Animation;\n    Transition.prototype = Object.create( Animation && Animation.prototype );\n    Transition.prototype.constructor = Transition;\n\n    Transition.prototype.done = function done () {\n        return this.timePassed() >= this.duration;\n    };\n\n    Transition.prototype.timePassed = function timePassed () {\n        return Math.min(this.duration, now() - this.startDate);\n    };\n\n    Transition.prototype.moveTo = function moveTo (options) {\n        var that = this,\n            movable = that.movable;\n\n        that.initial = movable[that.axis];\n        that.delta = options.location - that.initial;\n        that.duration = typeof options.duration === 'number' ? options.duration : 300;\n        that.tick = that._easeProxy(options.ease);\n        that.startDate = now();\n        that.start();\n    };\n\n    Transition.prototype._easeProxy = function _easeProxy (ease) {\n        var that = this;\n\n        return function() {\n            that.movable.moveAxis(that.axis, ease(that.timePassed(), that.initial, that.delta, that.duration));\n        };\n    };\n\n    Transition.easeOutExpo = function easeOutExpo (t, b, c, d) {\n        return t === d ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;\n    };\n\n    return Transition;\n}(Animation));\n","import {\n    Class,\n    grep\n} from '../../common';\n\nimport {\n    proxy,\n    noop,\n    applyEventMap,\n    getEventMap,\n    on,\n    off,\n    now,\n    getSupportedFeatures\n} from '../utils';\n\nimport {\n    Observable\n} from './observable';\n\nvar extend = Object.assign;\n\nvar preventDefault = function (e) {\n    e.preventDefault();\n};\n\nvar\n    DEFAULT_MIN_HOLD = 800,\n    CLICK_DELAY = 300,\n    // DEFAULT_THRESHOLD = support.browser.msie ? 5 : 0,\n    DEFAULT_THRESHOLD = 0,\n    PRESS = 'press',\n    HOLD = 'hold',\n    SELECT = 'select',\n    START = 'start',\n    MOVE = 'move',\n    END = 'end',\n    CANCEL = 'cancel',\n    TAP = 'tap',\n    DOUBLETAP = 'doubleTap',\n    RELEASE = 'release',\n    GESTURESTART = 'gesturestart',\n    GESTURECHANGE = 'gesturechange',\n    GESTUREEND = 'gestureend',\n    GESTURETAP = 'gesturetap';\n\nvar THRESHOLD = {\n    'api': 0,\n    'touch': 0,\n    'mouse': 9,\n    'pointer': 9\n};\n\nfunction touchDelta(touch1, touch2) {\n    var x1 = touch1.x.location,\n        y1 = touch1.y.location,\n        x2 = touch2.x.location,\n        y2 = touch2.y.location,\n        dx = x1 - x2,\n        dy = y1 - y2;\n\n    return {\n        center: {\n            x: (x1 + x2) / 2,\n            y: (y1 + y2) / 2\n        },\n        distance: Math.sqrt(dx * dx + dy * dy)\n    };\n}\n\nfunction getTouches(e) {\n    var support = getSupportedFeatures();\n    var touches = [],\n        originalEvent = e.originalEvent || e,\n        currentTarget = e.currentTarget,\n        idx = 0,\n        length, changedTouches, touch;\n\n    if (e.api) {\n        touches.push({\n            id: 2,\n            event: e,\n            target: e.target,\n            currentTarget: e.target,\n            location: e,\n            type: 'api'\n        });\n    } else if (e.type.match(/touch/)) {\n        changedTouches = originalEvent ? originalEvent.changedTouches : [];\n\n        for (length = changedTouches.length; idx < length; idx++) {\n            touch = changedTouches[idx];\n            touches.push({\n                location: touch,\n                event: e,\n                target: touch.target,\n                currentTarget: currentTarget,\n                id: touch.identifier,\n                type: 'touch'\n            });\n        }\n    } else if (support.pointers || support.msPointers) {\n        touches.push({\n            location: originalEvent,\n            event: e,\n            target: e.target,\n            currentTarget: currentTarget,\n            id: originalEvent.pointerId,\n            type: 'pointer'\n        });\n    } else {\n        touches.push({\n            id: 1,\n            event: e,\n            target: e.target,\n            currentTarget: currentTarget,\n            location: e,\n            type: 'mouse'\n        });\n    }\n\n    return touches;\n}\nexport var TouchAxis = (function (Class) {\n    function TouchAxis(axis, location) {\n        Class.call(this);\n        var that = this;\n\n        that.support = getSupportedFeatures();\n        that.invalidZeroEvents = this.support.mobileOS && this.support.mobileOS.android;\n        that.axis = axis;\n        that._updateLocationData(location);\n        that.startLocation = that.location;\n        that.velocity = that.delta = 0;\n        that.timeStamp = now();\n    }\n\n    if ( Class ) TouchAxis.__proto__ = Class;\n    TouchAxis.prototype = Object.create( Class && Class.prototype );\n    TouchAxis.prototype.constructor = TouchAxis;\n\n    TouchAxis.prototype.move = function move (location) {\n        var that = this,\n            offset = location['page' + that.axis],\n            timeStamp = now(),\n            timeDelta = timeStamp - that.timeStamp || 1;\n\n        if (!offset && this.invalidZeroEvents) {\n            return;\n        }\n\n        that.delta = offset - that.location;\n        that._updateLocationData(location);\n        that.initialDelta = offset - that.startLocation;\n        that.velocity = that.delta / timeDelta;\n        that.timeStamp = timeStamp;\n    };\n\n    TouchAxis.prototype._updateLocationData = function _updateLocationData (location) {\n        var that = this,\n            axis = that.axis;\n\n        that.location = location['page' + axis];\n        that.client = location['client' + axis];\n        that.screen = location['screen' + axis];\n    };\n\n    return TouchAxis;\n}(Class));\n\nexport var Touch = (function (Class) {\n    function Touch(userEvents, target, touchInfo) {\n        Class.call(this);\n\n        extend(this, {\n            x: new TouchAxis('X', touchInfo.location),\n            y: new TouchAxis('Y', touchInfo.location),\n            type: touchInfo.type,\n            useClickAsTap: userEvents.useClickAsTap,\n            threshold: userEvents.threshold || THRESHOLD[touchInfo.type],\n            userEvents: userEvents,\n            target: target,\n            currentTarget: touchInfo.currentTarget,\n            initialTouch: touchInfo.target,\n            id: touchInfo.id,\n            pressEvent: touchInfo,\n            _clicks: userEvents._clicks,\n            supportDoubleTap: userEvents.supportDoubleTap,\n            _moved: false,\n            _finished: false\n        });\n    }\n\n    if ( Class ) Touch.__proto__ = Class;\n    Touch.prototype = Object.create( Class && Class.prototype );\n    Touch.prototype.constructor = Touch;\n\n    Touch.prototype.press = function press () {\n        // this._holdTimeout = setTimeout($.proxy(this, '_hold'), this.userEvents.minHold);\n        this._holdTimeout = setTimeout(proxy(this._hold, this), this.userEvents.minHold);\n        this._trigger(PRESS, this.pressEvent);\n    };\n\n    Touch.prototype._tap = function _tap (touchInfo) {\n        var that = this;\n\n        that.userEvents._clicks++;\n\n        if (that.userEvents._clicks === 1) {\n            that._clickTimeout = setTimeout(function() {\n                if (that.userEvents._clicks === 1) {\n                    that._trigger(TAP, touchInfo);\n                } else {\n                    that._trigger(DOUBLETAP, touchInfo);\n                }\n\n                that.userEvents._clicks = 0;\n            }, CLICK_DELAY);\n        }\n    };\n\n    Touch.prototype._hold = function _hold () {\n        this._trigger(HOLD, this.pressEvent);\n    };\n\n    /* eslint-disable consistent-return */\n    Touch.prototype.move = function move (touchInfo) {\n        var that = this;\n        var preventMove = touchInfo.type !== 'api' && that.userEvents._shouldNotMove;\n\n        if (that._finished || preventMove) {\n            return;\n        }\n\n        that.x.move(touchInfo.location);\n        that.y.move(touchInfo.location);\n\n        if (!that._moved) {\n            if (that._withinIgnoreThreshold()) {\n                return;\n            }\n\n            if (!UserEvents.current || UserEvents.current === that.userEvents) {\n                that._start(touchInfo);\n            } else {\n                return that.dispose();\n            }\n        }\n\n        if (!that._finished) {\n            that._trigger(MOVE, touchInfo);\n        }\n    };\n    /* eslint-enable consistent-return */\n\n    Touch.prototype.end = function end (touchInfo) {\n        this.endTime = now();\n\n        if (this._finished) {\n            return;\n        }\n\n        this._finished = true;\n        this._trigger(RELEASE, touchInfo);\n\n        if (this._moved) {\n            this._trigger(END, touchInfo);\n        } else {\n            if (!this.useClickAsTap) {\n                if (this.supportDoubleTap) {\n                    this._tap(touchInfo);\n                } else {\n                    this._trigger(TAP, touchInfo);\n                }\n            }\n        }\n\n        clearTimeout(this._holdTimeout);\n        this.dispose();\n    };\n\n    Touch.prototype.dispose = function dispose () {\n        var userEvents = this.userEvents,\n            activeTouches = userEvents.touches || [];\n\n        this._finished = true;\n        this.pressEvent = null;\n\n        clearTimeout(this._holdTimeout);\n        // activeTouches.splice($.inArray(this, activeTouches), 1);\n        var activeTouchIndex = activeTouches.indexOf(this);\n        activeTouches.splice(activeTouchIndex, 1);\n    };\n\n    Touch.prototype.skip = function skip () {\n        this.dispose();\n    };\n\n    Touch.prototype.cancel = function cancel () {\n        this.dispose();\n    };\n\n    Touch.prototype.isMoved = function isMoved () {\n        return this._moved;\n    };\n\n    Touch.prototype._start = function _start (touchInfo) {\n        clearTimeout(this._holdTimeout);\n        this.startTime = now();\n        this._moved = true;\n        this._trigger(START, touchInfo);\n    };\n\n    Touch.prototype._trigger = function _trigger (name, touchInfo) {\n        var that = this,\n            jQueryEvent = touchInfo.event,\n            data = {\n                touch: that,\n                x: that.x,\n                y: that.y,\n                target: that.target,\n                event: jQueryEvent\n            };\n        if (that.userEvents.notify(name, data)) {\n            jQueryEvent.preventDefault();\n        }\n    };\n\n    Touch.prototype._withinIgnoreThreshold = function _withinIgnoreThreshold () {\n        var xDelta = this.x.initialDelta,\n            yDelta = this.y.initialDelta;\n        return Math.sqrt(xDelta * xDelta + yDelta * yDelta) <= this.threshold;\n    };\n\n    return Touch;\n}(Class));\n\nfunction withEachUpEvent(callback) {\n    var eventMap = getEventMap(navigator.userAgent);\n    var downEvents = eventMap.up.split(' '),\n        idx = 0,\n        length = downEvents.length;\n\n    for (; idx < length; idx++) {\n        callback(downEvents[idx]);\n    }\n}\n\nexport var UserEvents = (function (Observable) {\n    function UserEvents(element, options) {\n        Observable.call(this);\n        var that = this;\n        var filter;\n\n        var support = getSupportedFeatures();\n        this.support = support;\n\n        /* eslint-disable no-param-reassign */\n        options = options || {};\n        /* eslint-enable no-param-reassign */\n        this.options = options;\n\n        filter = that.filter = options.filter;\n        that.threshold = options.threshold || DEFAULT_THRESHOLD;\n        that.minHold = options.minHold || DEFAULT_MIN_HOLD;\n        that.touches = [];\n        that._maxTouches = options.multiTouch ? 2 : 1;\n        that.allowSelection = options.allowSelection;\n        that.captureUpIfMoved = options.captureUpIfMoved;\n        that.useClickAsTap = !options.fastTap && !support.delayedClick();\n        that._clicks = 0;\n        that.supportDoubleTap = options.supportDoubleTap;\n\n        var enableGlobalSurface = !support.touch || support.mouseAndTouchPresent;\n\n        extend(that, {\n            element: element,\n            surface: options.global && enableGlobalSurface ?\n                element.ownerDocument.documentElement :\n                options.surface || element,\n            stopPropagation: options.stopPropagation,\n            pressed: false\n        });\n\n        this._surfaceMoveHandler = proxy(this._move, this);\n        on(that.surface, applyEventMap('move'), this._surfaceMoveHandler);\n\n        this._surfaceEndHandler = proxy(this._end, this);\n        on(that.surface, applyEventMap('up cancel'), this._surfaceEndHandler);\n\n        this._elementStartHandler = proxy(this._start, this);\n        on(element, applyEventMap('down'), filter, this._elementStartHandler);\n\n        if (that.useClickAsTap) {\n            this._elementClickHandler = proxy(this._click, this);\n            on(element, applyEventMap('click'), filter, this._elementClickHandler);\n        }\n\n        if (support.pointers || support.msPointers) {\n            if (support.browser.version < 11) {\n                var defaultAction = 'pinch-zoom double-tap-zoom';\n\n                element.style['-ms-touch-action'] =\n                    options.touchAction && options.touchAction !== 'none' ?\n                        defaultAction + ' ' + options.touchAction :\n                        defaultAction;\n\n            } else {\n                element.style['touch-action'] = options.touchAction || 'none';\n            }\n        }\n        if (options.preventDragEvent) {\n            this._elementDragStartHandler = preventDefault;\n            on(element, applyEventMap('dragstart'), this._elementDragStartHandler);\n        }\n\n        // element.on(kendo.applyEventMap('mousedown'), filter, {\n        //     root: element\n        // } '_select');\n\n        // todo: use root\n        this._elementSelectHandler = proxy(this._select, this);\n        on(element, applyEventMap('mousedown'), filter, this._elementSelectHandler);\n\n        if (that.captureUpIfMoved && support.eventCapture) {\n            var surfaceElement = that.surface,\n                preventIfMovingProxy = proxy(that.preventIfMoving, that);\n\n            withEachUpEvent(function(eventName) {\n                surfaceElement.addEventListener(eventName, preventIfMovingProxy, true);\n            });\n        }\n\n        that.bind([\n            PRESS,\n            HOLD,\n            TAP,\n            DOUBLETAP,\n            START,\n            MOVE,\n            END,\n            RELEASE,\n            CANCEL,\n            GESTURESTART,\n            GESTURECHANGE,\n            GESTUREEND,\n            GESTURETAP,\n            SELECT\n        ], options);\n    }\n\n    if ( Observable ) UserEvents.__proto__ = Observable;\n    UserEvents.prototype = Object.create( Observable && Observable.prototype );\n    UserEvents.prototype.constructor = UserEvents;\n\n    UserEvents.prototype.preventIfMoving = function preventIfMoving (e) {\n        if (this._isMoved()) {\n            e.preventDefault();\n        }\n    };\n\n    UserEvents.prototype.destroy = function destroy () {\n        var that = this;\n        var options = this.options;\n        var element = this.element;\n\n        if (that._destroyed) {\n            return;\n        }\n\n        that._destroyed = true;\n\n        if (that.captureUpIfMoved && this.support.eventCapture) {\n            var surfaceElement = that.surface;\n            withEachUpEvent(function(eventName) {\n                surfaceElement.removeEventListener(eventName, that.preventIfMoving);\n            });\n        }\n\n        off(that.surface, applyEventMap('move'), this._surfaceMoveHandler);\n        off(that.surface, applyEventMap('up cancel'), this._surfaceEndHandler);\n\n        off(element, applyEventMap('down'), this._elementStartHandler);\n\n        if (that.useClickAsTap) {\n            off(element, applyEventMap('click'), this._elementClickHandler);\n        }\n\n        if (options.preventDragEvent) {\n            off(element, applyEventMap('dragstart'), this._elementDragStartHandler);\n        }\n\n        off(element, applyEventMap('mousedown'), this._elementSelectHandler);\n\n        that._disposeAll();\n        that.unbind();\n\n        delete that.surface;\n        delete that.element;\n        delete that.currentTarget;\n    };\n\n    UserEvents.prototype.capture = function capture () {\n        UserEvents.current = this;\n    };\n\n    UserEvents.prototype.cancel = function cancel () {\n        this._disposeAll();\n        this.trigger(CANCEL);\n    };\n\n    /* eslint-disable indent */\n    UserEvents.prototype.notify = function notify (event, data) {\n        var that = this,\n            touches = that.touches;\n        var eventName = event;\n\n        if (this._isMultiTouch()) {\n            switch (eventName) {\n                case MOVE:\n                    eventName = GESTURECHANGE;\n                    break;\n                case END:\n                    eventName = GESTUREEND;\n                    break;\n                case TAP:\n                    eventName = GESTURETAP;\n                    break;\n                default:\n                    break;\n            }\n\n            extend(data, {\n                touches: touches\n            }, touchDelta(touches[0], touches[1]));\n        }\n\n        return this.trigger(eventName, extend(data, {\n            type: eventName\n        }));\n    };\n    /* eslint-enable indent */\n\n    UserEvents.prototype.press = function press (x, y, target) {\n        this._apiCall('_start', x, y, target);\n    };\n\n    UserEvents.prototype.move = function move (x, y) {\n        this._apiCall('_move', x, y);\n    };\n\n    UserEvents.prototype.end = function end (x, y) {\n        this._apiCall('_end', x, y);\n    };\n\n    UserEvents.prototype._isMultiTouch = function _isMultiTouch () {\n        return this.touches.length > 1;\n    };\n\n    UserEvents.prototype._maxTouchesReached = function _maxTouchesReached () {\n        return this.touches.length >= this._maxTouches;\n    };\n\n    UserEvents.prototype._disposeAll = function _disposeAll () {\n        var touches = this.touches;\n        while (touches.length > 0) {\n            touches.pop().dispose();\n        }\n    };\n\n    UserEvents.prototype._isMoved = function _isMoved () {\n        return grep(this.touches, function(touch) {\n            return touch.isMoved();\n        }).length;\n    };\n\n    UserEvents.prototype._select = function _select (e) {\n        if (!this.allowSelection || this.trigger(SELECT, { event: e })) {\n            e.preventDefault();\n        }\n    };\n\n    UserEvents.prototype._start = function _start (e) {\n        var that = this,\n            idx = 0,\n            filter = that.filter,\n            target,\n            touches = getTouches(e),\n            length = touches.length,\n            touch,\n            which = e.which;\n\n        if (which && which > 1 || that._maxTouchesReached()) {\n            return;\n        }\n\n        UserEvents.current = null;\n        that.currentTarget = e.currentTarget;\n\n        if (that.stopPropagation) {\n            e.stopPropagation();\n        }\n\n        for (; idx < length; idx++) {\n            if (that._maxTouchesReached()) {\n                break;\n            }\n\n            touch = touches[idx];\n\n            if (filter) {\n                target = touch.currentTarget;\n            } else {\n                target = that.element;\n            }\n\n            if (target && target.length === 0) {\n                continue;\n            }\n\n            touch = new Touch(that, target, touch);\n            that.touches.push(touch);\n            touch.press();\n\n            if (that._isMultiTouch()) {\n                that.notify('gesturestart', {});\n            }\n        }\n    };\n\n    UserEvents.prototype._move = function _move (e) {\n        this._eachTouch('move', e);\n    };\n\n    UserEvents.prototype._end = function _end (e) {\n        this._eachTouch('end', e);\n    };\n\n    UserEvents.prototype._click = function _click (e) {\n        var data = {\n            touch: {\n                initialTouch: e.target,\n                target: e.currentTarget,\n                endTime: now(),\n                x: {\n                    location: e.pageX,\n                    client: e.clientX\n                },\n                y: {\n                    location: e.pageY,\n                    client: e.clientY\n                }\n            },\n            x: e.pageX,\n            y: e.pageY,\n            target: e.currentTarget,\n            event: e,\n            type: 'tap'\n        };\n\n        if (this.trigger('tap', data)) {\n            e.preventDefault();\n        }\n    };\n\n    UserEvents.prototype._eachTouch = function _eachTouch (methodName, e) {\n        var that = this,\n            dict = {},\n            touches = getTouches(e),\n            activeTouches = that.touches,\n            idx,\n            touch,\n            touchInfo,\n            matchingTouch;\n\n        for (idx = 0; idx < activeTouches.length; idx++) {\n            touch = activeTouches[idx];\n            dict[touch.id] = touch;\n        }\n\n        for (idx = 0; idx < touches.length; idx++) {\n            touchInfo = touches[idx];\n            matchingTouch = dict[touchInfo.id];\n\n            if (matchingTouch) {\n                matchingTouch[methodName](touchInfo);\n            }\n        }\n    };\n\n    UserEvents.prototype._apiCall = function _apiCall (type, x, y, target) {\n        this[type]({\n            api: true,\n            pageX: x,\n            pageY: y,\n            clientX: x,\n            clientY: y,\n            target: target || this.element,\n            stopPropagation: noop,\n            preventDefault: noop\n        });\n    };\n\n    UserEvents.defaultThreshold = function defaultThreshold (value) {\n        DEFAULT_THRESHOLD = value;\n    };\n\n    UserEvents.minHold = function minHold (value) {\n        DEFAULT_MIN_HOLD = value;\n    };\n\n    return UserEvents;\n}(Observable));\n","// todo: extract to a separate place\n\nimport {\n    Class,\n    deepExtend,\n    addClass,\n    isFunction,\n    setDefaultOptions\n} from '../../common';\n\nimport {\n    convertToHtml,\n    prepend,\n    wrapInner,\n    contains,\n    hasNativeScrolling,\n    on,\n    off,\n    proxy,\n    wheelDeltaY,\n    setDefaultEvents\n} from '../utils';\n\nimport {\n    Transition,\n    Animation\n} from './fx';\n\nimport {\n    Pane,\n    PaneDimensions,\n    Movable,\n    TapCapture\n} from './draggable';\n\nimport {\n    UserEvents\n} from './user-events';\n\nimport {\n    Observable\n} from './observable';\n\nvar\n    extend = Object.assign,\n    abs = Math.abs,\n    SNAPBACK_DURATION = 500,\n    SCROLLBAR_OPACITY = 0.7,\n    FRICTION = 0.96,\n    VELOCITY_MULTIPLIER = 10,\n    MAX_VELOCITY = 55,\n    OUT_OF_BOUNDS_FRICTION = 0.5,\n    ANIMATED_SCROLLER_PRECISION = 5,\n    // SCROLLER_RELEASE_CLASS = 'km-scroller-release',\n    // SCROLLER_REFRESH_CLASS = 'km-scroller-refresh',\n    PULL = 'pull',\n    CHANGE = 'change',\n    RESIZE = 'resize',\n    SCROLL = 'scroll',\n    MOUSE_WHEEL_ID = 2;\n\nvar ZoomSnapBack = (function (Animation) {\n    function ZoomSnapBack(options) {\n        Animation.call(this, options);\n        var that = this;\n        extend(that, options);\n        that.userEvents.bind('gestureend', that.start.bind(this));\n        that.tapCapture.bind('press', that.cancel.bind(this));\n    }\n\n    if ( Animation ) ZoomSnapBack.__proto__ = Animation;\n    ZoomSnapBack.prototype = Object.create( Animation && Animation.prototype );\n    ZoomSnapBack.prototype.constructor = ZoomSnapBack;\n\n    ZoomSnapBack.prototype.enabled = function enabled () {\n        return this.movable.scale < this.dimensions.minScale;\n    };\n\n    ZoomSnapBack.prototype.done = function done () {\n        return this.dimensions.minScale - this.movable.scale < 0.01;\n    };\n\n    ZoomSnapBack.prototype.tick = function tick () {\n        var movable = this.movable;\n        movable.scaleWith(1.1);\n        this.dimensions.rescale(movable.scale);\n    };\n\n    ZoomSnapBack.prototype.onEnd = function onEnd () {\n        var movable = this.movable;\n        movable.scaleTo(this.dimensions.minScale);\n        this.dimensions.rescale(movable.scale);\n    };\n\n    return ZoomSnapBack;\n}(Animation));\n\nvar DragInertia = (function (Animation) {\n    function DragInertia(options) {\n        Animation.call(this);\n        var that = this;\n\n        extend(that, options, {\n            transition: new Transition({\n                axis: options.axis,\n                movable: options.movable,\n                onEnd: function onEnd() {\n                    that._end();\n                }\n            })\n        });\n\n        that.tapCapture.bind('press', function() {\n            that.cancel();\n        });\n\n        that.userEvents.bind('end', proxy(that.start, that));\n        that.userEvents.bind('gestureend', proxy(that.start, that));\n        that.userEvents.bind('tap', proxy(that.onEnd, that));\n    }\n\n    if ( Animation ) DragInertia.__proto__ = Animation;\n    DragInertia.prototype = Object.create( Animation && Animation.prototype );\n    DragInertia.prototype.constructor = DragInertia;\n\n    DragInertia.prototype.onCancel = function onCancel () {\n        this.transition.cancel();\n    };\n\n    DragInertia.prototype.freeze = function freeze (location) {\n        var that = this;\n        that.cancel();\n        that._moveTo(location);\n    };\n\n    DragInertia.prototype.onEnd = function onEnd () {\n        var that = this;\n        if (that.paneAxis.outOfBounds()) {\n            that._snapBack();\n        } else {\n            that._end();\n        }\n    };\n\n    DragInertia.prototype.done = function done () {\n        return abs(this.velocity) < 1;\n    };\n\n    DragInertia.prototype.start = function start (e) {\n        var that = this,\n            velocity;\n        if (!that.dimension.enabled) {\n            return;\n        }\n        if (that.paneAxis.outOfBounds()) {\n            if (that.transition._started) {\n                that.transition.cancel();\n                that.velocity = Math.min(e.touch[that.axis].velocity * that.velocityMultiplier, MAX_VELOCITY);\n                Animation.prototype.start.call(this);\n            } else {\n                that._snapBack();\n            }\n        } else {\n            velocity = e.touch.id === MOUSE_WHEEL_ID ? 0 : e.touch[that.axis].velocity;\n            that.velocity = Math.max(Math.min(velocity * that.velocityMultiplier, MAX_VELOCITY), -MAX_VELOCITY);\n            that.tapCapture.captureNext();\n            Animation.prototype.start.call(this);\n        }\n    };\n\n    DragInertia.prototype.tick = function tick () {\n        var that = this,\n            dimension = that.dimension,\n            friction = that.paneAxis.outOfBounds() ? OUT_OF_BOUNDS_FRICTION : that.friction,\n            delta = that.velocity *= friction,\n            location = that.movable[that.axis] + delta;\n\n        if (!that.elastic && dimension.outOfBounds(location)) {\n            location = Math.max(Math.min(location, dimension.max), dimension.min);\n            that.velocity = 0;\n        }\n\n        that.movable.moveAxis(that.axis, location);\n    };\n\n    DragInertia.prototype._end = function _end () {\n        this.tapCapture.cancelCapture();\n        this.end();\n    };\n\n    DragInertia.prototype._snapBack = function _snapBack () {\n        var that = this,\n            dimension = that.dimension,\n            snapBack = that.movable[that.axis] > dimension.max ? dimension.max : dimension.min;\n\n        that._moveTo(snapBack);\n    };\n\n    DragInertia.prototype._moveTo = function _moveTo (location) {\n        this.transition.moveTo({\n            location: location,\n            duration: SNAPBACK_DURATION,\n            ease: Transition.easeOutExpo\n        });\n    };\n\n    return DragInertia;\n}(Animation));\n\nvar AnimatedScroller = (function (Animation) {\n    function AnimatedScroller(options) {\n        Animation.call(this, options);\n        var that = this;\n\n        extend(that, options, {\n            origin: {},\n            destination: {},\n            offset: {}\n        });\n    }\n\n    if ( Animation ) AnimatedScroller.__proto__ = Animation;\n    AnimatedScroller.prototype = Object.create( Animation && Animation.prototype );\n    AnimatedScroller.prototype.constructor = AnimatedScroller;\n\n    AnimatedScroller.prototype.tick = function tick () {\n        this._updateCoordinates();\n        this.moveTo(this.origin);\n    };\n\n    AnimatedScroller.prototype.done = function done () {\n        return abs(this.offset.y) < ANIMATED_SCROLLER_PRECISION && abs(this.offset.x) < ANIMATED_SCROLLER_PRECISION;\n    };\n\n    AnimatedScroller.prototype.onEnd = function onEnd () {\n        this.moveTo(this.destination);\n        if (this.callback) {\n            this.callback.call();\n        }\n    };\n\n    AnimatedScroller.prototype.setCoordinates = function setCoordinates (from, to) {\n        this.offset = {};\n        this.origin = from;\n        this.destination = to;\n    };\n\n    /* eslint-disable no-param-reassign */\n    AnimatedScroller.prototype.setCallback = function setCallback (callback) {\n        if (callback && isFunction(callback)) {\n            this.callback = callback;\n        } else {\n            callback = undefined;\n        }\n    };\n    /* eslint-enable no-param-reassign */\n\n    AnimatedScroller.prototype._updateCoordinates = function _updateCoordinates () {\n        this.offset = {\n            x: (this.destination.x - this.origin.x) / 4,\n            y: (this.destination.y - this.origin.y) / 4\n        };\n        this.origin = {\n            y: this.origin.y + this.offset.y,\n            x: this.origin.x + this.offset.x\n        };\n    };\n\n    return AnimatedScroller;\n}(Animation));\n\nvar ScrollBar = (function (Class) {\n    function ScrollBar(options) {\n        Class.call(this);\n        var that = this,\n            horizontal = options.axis === 'x';\n\n        var orientation = (horizontal ? 'horizontal' : 'vertical');\n        var element = convertToHtml('<div class=\"km-touch-scrollbar km-' + orientation + '-scrollbar\" />');\n\n        extend(that, options, {\n            element: element,\n            elementSize: 0,\n            movable: new Movable(element),\n            scrollMovable: options.movable,\n            alwaysVisible: options.alwaysVisible,\n            size: horizontal ? 'width' : 'height'\n        });\n\n        that.scrollMovable.bind(CHANGE, that.refresh.bind(that));\n\n        that.container.appendChild(element);\n\n        if (options.alwaysVisible) {\n            that.show();\n        }\n    }\n\n    if ( Class ) ScrollBar.__proto__ = Class;\n    ScrollBar.prototype = Object.create( Class && Class.prototype );\n    ScrollBar.prototype.constructor = ScrollBar;\n\n    ScrollBar.prototype.refresh = function refresh () {\n        var that = this,\n            axis = that.axis,\n            dimension = that.dimension,\n            paneSize = dimension.size,\n            scrollMovable = that.scrollMovable,\n            sizeRatio = paneSize / dimension.total,\n            position = Math.round(-scrollMovable[axis] * sizeRatio),\n            size = Math.round(paneSize * sizeRatio);\n        if (sizeRatio >= 1) {\n            this.element.style.display = \"none\";\n        } else {\n            this.element.style.display = \"\";\n        }\n        if (position + size > paneSize) {\n            size = paneSize - position;\n        } else if (position < 0) {\n            size += position;\n            position = 0;\n        }\n        if (that.elementSize !== size) {\n            that.element.style[that.size] = size + 'px';\n            that.elementSize = size;\n        }\n        that.movable.moveAxis(axis, position);\n    };\n\n    ScrollBar.prototype.show = function show () {\n        this.element.style.opacity = SCROLLBAR_OPACITY;\n        this.element.style.visibility = \"visible\";\n    };\n\n    ScrollBar.prototype.hide = function hide () {\n        if (!this.alwaysVisible) {\n            this.element.style.opacity = 0;\n        }\n    };\n\n    return ScrollBar;\n}(Class));\n\n// export class Scroller extends Class {\nexport var Scroller = (function (Observable) {\n    function Scroller(element, options) {\n        Observable.call(this);\n        var that = this;\n        this.element = element;\n\n        this._initOptions(options);\n\n        var hasScrolling = hasNativeScrolling(navigator.userAgent);\n        that._native = that.options.useNative && hasScrolling;\n        var scrollHeader = convertToHtml('<div class=\"km-scroll-header\"/>');\n\n        if (that._native) {\n            addClass(element, 'km-native-scroller');\n            prepend(scrollHeader, element);\n\n            extend(that, {\n                scrollElement: element,\n                fixedContainer: element.children[0]\n            });\n\n            return;\n        }\n\n        element.style.overflow = \"hidden\";\n        addClass(element, 'km-scroll-wrapper');\n\n        var scrollContainer = convertToHtml('<div class=\"km-scroll-container\"/>');\n        wrapInner(element, scrollContainer);\n        prepend(scrollHeader, element);\n\n        var inner = element.children[1],\n            tapCapture = new TapCapture(element),\n            movable = new Movable(inner),\n\n            dimensions = new PaneDimensions({\n                element: inner,\n                container: element,\n                forcedEnabled: that.options.zoom\n            }),\n            avoidScrolling = this.options.avoidScrolling,\n\n            userEvents = new UserEvents(element, {\n                touchAction: 'pan-y',\n                fastTap: true,\n                allowSelection: true,\n                preventDragEvent: true,\n                captureUpIfMoved: true,\n                multiTouch: that.options.zoom,\n                supportDoubleTap: that.options.supportDoubleTap,\n                start: function start(e) {\n                    dimensions.refresh();\n                    var velocityX = abs(e.x.velocity),\n                        velocityY = abs(e.y.velocity),\n                        horizontalSwipe = velocityX * 2 >= velocityY,\n                        originatedFromFixedContainer = contains(that.fixedContainer, e.event.target),\n                        verticalSwipe = velocityY * 2 >= velocityX;\n                    if (!originatedFromFixedContainer && !avoidScrolling(e) && that.enabled && (dimensions.x.enabled && horizontalSwipe || dimensions.y.enabled && verticalSwipe)) {\n                        userEvents.capture();\n                    } else {\n                        userEvents.cancel();\n                    }\n                }\n            }),\n\n            pane = new Pane({\n                movable: movable,\n                dimensions: dimensions,\n                userEvents: userEvents,\n                elastic: that.options.elastic\n            }),\n\n            zoomSnapBack = new ZoomSnapBack({\n                movable: movable,\n                dimensions: dimensions,\n                userEvents: userEvents,\n                tapCapture: tapCapture\n            }),\n\n            animatedScroller = new AnimatedScroller({\n                moveTo: function moveTo(coordinates) {\n                    that.scrollTo(coordinates.x, coordinates.y);\n                }\n            });\n\n        movable.bind(CHANGE, function() {\n            that.scrollTop = -movable.y;\n            that.scrollLeft = -movable.x;\n            that.trigger(SCROLL, {\n                scrollTop: that.scrollTop,\n                scrollLeft: that.scrollLeft\n            });\n        });\n\n        if (that.options.mousewheelScrolling) {\n            this._wheelScrollHandler = this._wheelScroll.bind(this);\n            on(element, 'wheel', this._wheelScrollHandler);\n        }\n\n        extend(that, {\n            movable: movable,\n            dimensions: dimensions,\n            zoomSnapBack: zoomSnapBack,\n            animatedScroller: animatedScroller,\n            userEvents: userEvents,\n            pane: pane,\n            tapCapture: tapCapture,\n            pulled: false,\n            enabled: true,\n            scrollElement: inner,\n            scrollTop: 0,\n            scrollLeft: 0,\n            fixedContainer: element.children[0]\n        });\n\n        that._initAxis('x');\n        that._initAxis('y');\n\n        that._wheelEnd = function() {\n            that._wheel = false;\n            that.userEvents.end(0, that._wheelY);\n        };\n\n        dimensions.refresh();\n\n        if (that.options.pullToRefresh) {\n            that._initPullToRefresh();\n        }\n    }\n\n    if ( Observable ) Scroller.__proto__ = Observable;\n    Scroller.prototype = Object.create( Observable && Observable.prototype );\n    Scroller.prototype.constructor = Scroller;\n\n    Scroller.prototype._initOptions = function _initOptions (options) {\n        this.options = deepExtend({}, this.options, options);\n    };\n\n    Scroller.prototype._wheelScroll = function _wheelScroll (e) {\n        if (e.ctrlKey) {\n            return;\n        }\n        if (!this._wheel) {\n            this._wheel = true;\n            this._wheelY = 0;\n            this.userEvents.press(0, this._wheelY);\n        }\n\n        clearTimeout(this._wheelTimeout);\n        this._wheelTimeout = setTimeout(this._wheelEnd, 50);\n        var delta = wheelDeltaY(e);\n\n        if (delta) {\n            this._wheelY += delta;\n            this.userEvents.move(0, this._wheelY);\n        }\n\n        e.preventDefault();\n    };\n\n    Scroller.prototype.makeVirtual = function makeVirtual () {\n        this.dimensions.y.makeVirtual();\n    };\n\n    Scroller.prototype.virtualSize = function virtualSize (min, max) {\n        this.dimensions.y.virtualSize(min, max);\n    };\n\n    Scroller.prototype.height = function height () {\n        return this.dimensions.y.size;\n    };\n\n    Scroller.prototype.scrollHeight = function scrollHeight () {\n        return this.scrollElement.scrollHeight;\n    };\n\n    Scroller.prototype.scrollWidth = function scrollWidth () {\n        return this.scrollElement.scrollWidth;\n    };\n\n    Scroller.prototype._resize = function _resize () {\n        if (!this._native) {\n            this.contentResized();\n        }\n    };\n\n    Scroller.prototype.setOptions = function setOptions (options) {\n        var that = this;\n\n        this._initOptions(options);\n\n        if (options.pullToRefresh) {\n            that._initPullToRefresh();\n        }\n    };\n\n    Scroller.prototype.reset = function reset () {\n        if (this._native) {\n            this.scrollElement.scrollTop(0);\n        } else {\n            this.movable.moveTo({\n                x: 0,\n                y: 0\n            });\n            this._scale(1);\n        }\n    };\n\n    Scroller.prototype.contentResized = function contentResized () {\n        this.dimensions.refresh();\n        if (this.pane.x.outOfBounds()) {\n            this.movable.moveAxis('x', this.dimensions.x.min);\n        }\n        if (this.pane.y.outOfBounds()) {\n            this.movable.moveAxis('y', this.dimensions.y.min);\n        }\n    };\n\n    Scroller.prototype.zoomOut = function zoomOut () {\n        var dimensions = this.dimensions;\n        dimensions.refresh();\n        this._scale(dimensions.fitScale);\n        this.movable.moveTo(dimensions.centerCoordinates());\n    };\n\n    Scroller.prototype.enable = function enable () {\n        this.enabled = true;\n    };\n\n    Scroller.prototype.disable = function disable () {\n        this.enabled = false;\n    };\n\n    Scroller.prototype.scrollTo = function scrollTo (x, y) {\n        if (this._native) {\n            this.scrollElement.scrollLeft(abs(x));\n            this.scrollElement.scrollTop(abs(y));\n        } else {\n            this.dimensions.refresh();\n            this.movable.moveTo({\n                x: x,\n                y: y\n            });\n        }\n    };\n\n    Scroller.prototype.animatedScrollTo = function animatedScrollTo (x, y, callback) {\n        var from, to;\n        if (this._native) {\n            this.scrollTo(x, y);\n        } else {\n            from = {\n                x: this.movable.x,\n                y: this.movable.y\n            };\n            to = {\n                x: x,\n                y: y\n            };\n            this.animatedScroller.setCoordinates(from, to);\n            this.animatedScroller.setCallback(callback);\n            this.animatedScroller.start();\n        }\n    };\n\n    // kept for API compatibility, not used\n    Scroller.prototype.pullHandled = function pullHandled () {\n        // let that = this;\n\n        // removeClass(that.refreshHint, SCROLLER_REFRESH_CLASS);\n        // that.hintContainer.innerHTML = that.pullTemplate({}));\n\n        // that.yinertia.onEnd();\n        // that.xinertia.onEnd();\n        // that.userEvents.cancel();\n    };\n\n    Scroller.prototype.destroy = function destroy () {\n        var element = this.element;\n\n        off(element, 'wheel', this._wheelScrollHandler);\n\n        if (this.userEvents) {\n            this.userEvents.destroy();\n        }\n    };\n\n    Scroller.prototype._scale = function _scale (scale) {\n        this.dimensions.rescale(scale);\n        this.movable.scaleTo(scale);\n    };\n\n    Scroller.prototype._initPullToRefresh = function _initPullToRefresh () {\n    };\n\n    // kept for API compatibility, not used\n    Scroller.prototype._dragEnd = function _dragEnd () {\n        // let that = this;\n\n        // if (!that.pulled) {\n        //     return;\n        // }\n\n        // that.pulled = false;\n\n        // removeClass(that.refreshHint, SCROLLER_RELEASE_CLASS);\n        // addClass(that.refreshHint, SCROLLER_REFRESH_CLASS);\n\n        // that.hintContainer.innerHTML = that.refreshTemplate({});\n\n        // that.yinertia.freeze(that.options.pullOffset / 2);\n        // that.trigger('pull');\n    };\n\n    // kept for API compatibility, not used\n    Scroller.prototype._paneChange = function _paneChange () {\n        // let that = this;\n        // if (that.movable.y / OUT_OF_BOUNDS_FRICTION > that.options.pullOffset) {\n        //     if (!that.pulled) {\n        //         that.pulled = true;\n        //         that.refreshHint.removeClass(SCROLLER_REFRESH_CLASS).addClass(SCROLLER_RELEASE_CLASS);\n        //         that.hintContainer.html(that.releaseTemplate({}));\n        //         that.hintContainer.html(that.releaseTemplate({}));\n        //     }\n        // } else if (that.pulled) {\n        //     that.pulled = false;\n        //     that.refreshHint.removeClass(SCROLLER_RELEASE_CLASS);\n        //     that.hintContainer.html(that.pullTemplate({}));\n        // }\n    };\n\n    Scroller.prototype._initAxis = function _initAxis (axis) {\n        var that = this,\n            movable = that.movable,\n            dimension = that.dimensions[axis],\n            tapCapture = that.tapCapture,\n            paneAxis = that.pane[axis],\n            scrollBar = new ScrollBar({\n                axis: axis,\n                movable: movable,\n                dimension: dimension,\n                container: that.element,\n                alwaysVisible: that.options.visibleScrollHints\n            });\n\n        dimension.bind(CHANGE, function() {\n            scrollBar.refresh();\n        });\n\n        paneAxis.bind(CHANGE, function() {\n            scrollBar.show();\n        });\n\n        that[axis + 'inertia'] = new DragInertia({\n            axis: axis,\n            paneAxis: paneAxis,\n            movable: movable,\n            tapCapture: tapCapture,\n            userEvents: that.userEvents,\n            dimension: dimension,\n            elastic: that.options.elastic,\n            friction: that.options.friction || FRICTION,\n            velocityMultiplier: that.options.velocityMultiplier || VELOCITY_MULTIPLIER,\n            end: function end() {\n                scrollBar.hide();\n                that.trigger('scrollEnd', {\n                    axis: axis,\n                    scrollTop: that.scrollTop,\n                    scrollLeft: that.scrollLeft\n                });\n            }\n        });\n    };\n\n    return Scroller;\n}(Observable));\n\nsetDefaultOptions(Scroller, {\n    name: 'Scroller',\n    zoom: false,\n    pullOffset: 140,\n    visibleScrollHints: false,\n    elastic: true,\n    useNative: false,\n    mousewheelScrolling: true,\n    avoidScrolling: function avoidScrolling() {\n        return false;\n    },\n    pullToRefresh: false,\n    messages: {\n        pullTemplate: 'Pull to refresh',\n        releaseTemplate: 'Release to refresh',\n        refreshTemplate: 'Refreshing'\n    }\n});\n\nsetDefaultEvents(Scroller, [\n    PULL,\n    SCROLL,\n    RESIZE\n]);\n\n","var MapService = function MapService(widget, context) {\n    if ( context === void 0 ) context = {};\n\n    this.sender = context.sender || widget;\n    this.widget = widget;\n    this.rtl = Boolean(context.rtl);\n};\n\nMapService.prototype.notify = function notify (name, args) {\n    if (this.widget) {\n        this.widget.trigger(name, args);\n    }\n};\n\nexport default MapService;\n","import {\n    geometry as g,\n    throttle\n} from '@progress/kendo-drawing';\n\nimport {\n    addClass,\n    setDefaultOptions,\n    valueOrDefault,\n    defined,\n    mousewheelDelta,\n    limitValue,\n    deepExtend,\n    elementOffset,\n    isArray,\n    round\n} from '../common';\n\nimport {\n    EPSG3857\n} from './crs';\n\nimport {\n    Attribution\n} from './attribution';\n\nimport {\n    Navigator\n} from './navigator';\n\nimport {\n    ZoomControl\n} from './zoom';\n\nimport {\n    Location\n} from './location';\n\nimport {\n    Extent\n} from './extent';\n\nimport { Tooltip } from './tooltip/tooltip';\n\nimport {\n    TileLayer\n} from './layers/tile';\n\nimport {\n    BubbleLayer\n} from './layers/bubble';\n\nimport {\n    ShapeLayer\n} from './layers/shape';\n\nimport {\n    MarkerLayer\n} from './layers/marker';\n\nimport {\n    removeChildren,\n    setDefaultEvents,\n    proxy,\n    now,\n    on,\n    off,\n    getSupportedFeatures,\n    convertToHtml,\n    renderPos\n} from './utils';\n\nimport {\n    Scroller\n} from './scroller/scroller';\n\nimport {\n    Observable\n} from './scroller/observable';\n\nimport MapService from './../services/map-service';\n\nimport { CENTER_CHANGE, INIT, ZOOM_CHANGE } from './constants';\n\nvar math = Math,\n    min = math.min,\n    pow = math.pow,\n    Point = g.Point,\n    MARKER = \"marker\",\n    LOCATION = \"location\",\n    FRICTION = 0.9,\n    FRICTION_MOBILE = 0.93,\n    MOUSEWHEEL = 'wheel',\n    MOUSEWHEEL_THROTTLE = 50,\n    VELOCITY_MULTIPLIER = 5,\n    DEFAULT_ZOOM_RATE = 1;\n\nvar layersMap = {\n    bubble: BubbleLayer,\n    shape: ShapeLayer,\n    tile: TileLayer\n};\nlayersMap[MARKER] = MarkerLayer;\n\nvar Map = (function (Observable) {\n    function Map(element, options, themeOptions, context) {\n        if ( options === void 0 ) options = {};\n        if ( themeOptions === void 0 ) themeOptions = {};\n        if ( context === void 0 ) context = {};\n\n        Observable.call(this);\n\n        this._init(element, options, themeOptions, context);\n    }\n\n    if ( Observable ) Map.__proto__ = Observable;\n    Map.prototype = Object.create( Observable && Observable.prototype );\n    Map.prototype.constructor = Map;\n\n    Map.prototype.destroy = function destroy () {\n        var this$1 = this;\n\n        this.scroller.destroy();\n\n        if (this._tooltip) {\n            this._tooltip.destroy();\n        }\n\n        if (this.navigator) {\n            this.navigator.destroy();\n        }\n        if (this.attribution) {\n            this.attribution.destroy();\n        }\n        if (this.zoomControl) {\n            this.zoomControl.destroy();\n        }\n\n        if (isArray(this.markers)) {\n            this.markers.forEach(function (markerLayer) {\n                markerLayer.destroy();\n            });\n        } else {\n            this.markers.destroy();\n        }\n\n        for (var i = 0; i < this.layers.length; i++) {\n            this$1.layers[i].destroy();\n        }\n\n        off(this.element, MOUSEWHEEL, this._mousewheelHandler);\n\n        Observable.prototype.destroy.call(this);\n    };\n\n    Map.prototype._init = function _init (element, options, themeOptions, context) {\n        if ( options === void 0 ) options = {};\n        if ( themeOptions === void 0 ) themeOptions = {};\n        if ( context === void 0 ) context = {};\n\n        this.support = getSupportedFeatures();\n        this.context = context;\n\n        this.initObserver(context);\n        this.initServices(context);\n        this._notifyObserver(INIT);\n\n        this._initOptions(options);\n        this._setEvents(options);\n        this.crs = new EPSG3857();\n\n        this._initElement(element);\n\n        this._viewOrigin = this._getOrigin();\n\n        this._tooltip = this._createTooltip();\n        this._initScroller();\n        this._initMarkers();\n        this._initControls();\n        this._initLayers();\n        this._reset();\n\n        var mousewheelThrottled = throttle(this._mousewheel.bind(this), MOUSEWHEEL_THROTTLE);\n        this._mousewheelHandler = function (e) {\n            e.preventDefault();\n            mousewheelThrottled(e);\n        };\n        on(this.element, MOUSEWHEEL, this._mousewheelHandler);\n    };\n\n    Map.prototype._initOptions = function _initOptions (options) {\n        this.options = deepExtend({}, this.options, options);\n    };\n\n    Map.prototype._initElement = function _initElement (element) {\n        this.element = element;\n\n        addClass(element, \"k-map\");\n        element.style.position = \"relative\";\n        element.setAttribute(\"data-role\", \"map\");\n        removeChildren(element);\n\n        var div = convertToHtml(\"<div />\");\n        this.element.appendChild(div);\n    };\n\n    Map.prototype.initServices = function initServices (context) {\n        if ( context === void 0 ) context = {};\n\n        this.widgetService = new MapService(this, context);\n    };\n\n    Map.prototype.initObserver = function initObserver (context) {\n        if ( context === void 0 ) context = {};\n\n        this.observers = [];\n        this.addObserver(context.observer);\n    };\n\n    Map.prototype.addObserver = function addObserver (observer) {\n        if (observer) {\n            this.observers.push(observer);\n        }\n    };\n\n    Map.prototype.removeObserver = function removeObserver (observer) {\n        var index = this.observers.indexOf(observer);\n\n        if (index >= 0) {\n            this.observers.splice(index, 1);\n        }\n    };\n\n    Map.prototype.requiresHandlers = function requiresHandlers (eventNames) {\n        var observers = this.observers;\n\n        for (var idx = 0; idx < observers.length; idx++) {\n            if (observers[idx].requiresHandlers(eventNames)) {\n                return true;\n            }\n        }\n    };\n\n    Map.prototype.trigger = function trigger (name, args) {\n        if ( args === void 0 ) args = {};\n\n        args.sender = this;\n\n        var observers = this.observers;\n        var isDefaultPrevented = false;\n\n        for (var idx = 0; idx < observers.length; idx++) {\n            if (observers[idx].trigger(name, args)) {\n                isDefaultPrevented = true;\n            }\n        }\n\n        if (!isDefaultPrevented) {\n            Observable.prototype.trigger.call(this, name, args);\n        }\n\n        return isDefaultPrevented;\n    };\n\n    Map.prototype._notifyObserver = function _notifyObserver (name, args) {\n        if ( args === void 0 ) args = {};\n\n        args.sender = this;\n\n        var observers = this.observers;\n        var isDefaultPrevented = false;\n\n        for (var idx = 0; idx < observers.length; idx++) {\n            if (observers[idx].trigger(name, args)) {\n                isDefaultPrevented = true;\n            }\n        }\n\n        return isDefaultPrevented;\n    };\n\n    Map.prototype.zoom = function zoom (level) {\n        var options = this.options;\n        var result;\n\n        if (defined(level)) {\n            var zoomLevel = math.round(limitValue(level, options.minZoom, options.maxZoom));\n\n            if (options.zoom !== zoomLevel) {\n                options.zoom = zoomLevel;\n                this.widgetService.notify(ZOOM_CHANGE, { zoom: options.zoom });\n\n                this._reset();\n            }\n            result = this;\n        } else {\n            result = options.zoom;\n        }\n\n        return result;\n    };\n\n    Map.prototype.center = function center (center$1) {\n        var result;\n\n        if (center$1) {\n            var current = Location.create(center$1);\n            var previous = Location.create(this.options.center);\n            if (!current.equals(previous)) {\n                this.options.center = current.toArray();\n                this.widgetService.notify(CENTER_CHANGE, { center: this.options.center });\n                this._reset();\n            }\n\n            result = this;\n        } else {\n            result = Location.create(this.options.center);\n        }\n\n        return result;\n    };\n\n    Map.prototype.extent = function extent (extent$1) {\n        var result;\n\n        if (extent$1) {\n            this._setExtent(extent$1);\n            result = this;\n        } else {\n            result = this._getExtent();\n        }\n\n        return result;\n    };\n\n    Map.prototype.setOptions = function setOptions (options) {\n        if ( options === void 0 ) options = {};\n\n        var element = this.element;\n\n        this.destroy();\n        removeChildren(element);\n        this._init(element, options, {}, this.context);\n\n        this._reset();\n    };\n\n    Map.prototype.locationToLayer = function locationToLayer (location, zoom) {\n        var clamp = !this.options.wraparound;\n        var locationObject = Location.create(location);\n\n        return this.crs.toPoint(locationObject, this._layerSize(zoom), clamp);\n    };\n\n    Map.prototype.layerToLocation = function layerToLocation (point, zoom) {\n        var clamp = !this.options.wraparound;\n        var pointObject = Point.create(point);\n\n        return this.crs.toLocation(pointObject, this._layerSize(zoom), clamp);\n    };\n\n    Map.prototype.locationToView = function locationToView (location) {\n        var locationObject = Location.create(location);\n        var origin = this.locationToLayer(this._viewOrigin);\n        var point = this.locationToLayer(locationObject);\n\n        return point.translateWith(origin.scale(-1));\n    };\n\n    Map.prototype.viewToLocation = function viewToLocation (point, zoom) {\n        var origin = this.locationToLayer(this._getOrigin(), zoom);\n        var pointObject = Point.create(point);\n        var pointResult = pointObject.clone().translateWith(origin);\n\n        return this.layerToLocation(pointResult, zoom);\n    };\n\n    Map.prototype.eventOffset = function eventOffset (e) {\n        var x;\n        var y;\n        var offset = elementOffset(this.element);\n\n        if ((e.x && e.x[LOCATION]) || (e.y && e.y[LOCATION])) {\n            x = e.x[LOCATION] - offset.left;\n            y = e.y[LOCATION] - offset.top;\n        } else {\n            var event = e.originalEvent || e;\n            x = valueOrDefault(event.pageX, event.clientX) - offset.left;\n            y = valueOrDefault(event.pageY, event.clientY) - offset.top;\n        }\n\n        var point = new g.Point(x, y);\n\n        return point;\n    };\n\n    Map.prototype.eventToView = function eventToView (e) {\n        var cursor = this.eventOffset(e);\n        return this.locationToView(this.viewToLocation(cursor));\n    };\n\n    Map.prototype.eventToLayer = function eventToLayer (e) {\n        return this.locationToLayer(this.eventToLocation(e));\n    };\n\n    Map.prototype.eventToLocation = function eventToLocation (e) {\n        var cursor = this.eventOffset(e);\n        return this.viewToLocation(cursor);\n    };\n\n    Map.prototype.viewSize = function viewSize () {\n        var element = this.element;\n        var scale = this._layerSize();\n        var width = element.clientWidth;\n\n        if (!this.options.wraparound) {\n            width = min(scale, width);\n        }\n\n        return {\n            width: width,\n            height: min(scale, element.clientHeight)\n        };\n    };\n\n    Map.prototype.exportVisual = function exportVisual () {\n        this._reset();\n        return false;\n    };\n\n    Map.prototype.hideTooltip = function hideTooltip () {\n        if (this._tooltip) {\n            this._tooltip.hide();\n        }\n    };\n\n    Map.prototype._setOrigin = function _setOrigin (origin, zoom) {\n        var size = this.viewSize(),\n            topLeft;\n\n        var originLocation = this._origin = Location.create(origin);\n        topLeft = this.locationToLayer(originLocation, zoom);\n        topLeft.x += size.width / 2;\n        topLeft.y += size.height / 2;\n        this.options.center = this.layerToLocation(topLeft, zoom).toArray();\n        this.widgetService.notify(CENTER_CHANGE, { center: this.options.center });\n\n        return this;\n    };\n\n    Map.prototype._getOrigin = function _getOrigin (invalidate) {\n        var size = this.viewSize(),\n            topLeft;\n\n        if (invalidate || !this._origin) {\n            topLeft = this.locationToLayer(this.center());\n            topLeft.x -= size.width / 2;\n            topLeft.y -= size.height / 2;\n            this._origin = this.layerToLocation(topLeft);\n        }\n\n        return this._origin;\n    };\n\n    Map.prototype._setExtent = function _setExtent (newExtent) {\n        var this$1 = this;\n\n        var raw = Extent.create(newExtent);\n        var se = raw.se.clone();\n\n        if (this.options.wraparound && se.lng < 0 && newExtent.nw.lng > 0) {\n            se.lng = 180 + (180 + se.lng);\n        }\n\n        var extent = new Extent(raw.nw, se);\n        this.center(extent.center());\n        var width = this.element.clientWidth;\n        var height = this.element.clientHeight;\n        var zoom;\n\n        for (zoom = this.options.maxZoom; zoom >= this.options.minZoom; zoom--) {\n            var topLeft = this$1.locationToLayer(extent.nw, zoom);\n            var bottomRight = this$1.locationToLayer(extent.se, zoom);\n            var layerWidth = math.abs(bottomRight.x - topLeft.x);\n            var layerHeight = math.abs(bottomRight.y - topLeft.y);\n\n            if (layerWidth <= width && layerHeight <= height) {\n                break;\n            }\n        }\n\n        this.zoom(zoom);\n    };\n\n    Map.prototype._getExtent = function _getExtent () {\n        var nw = this._getOrigin();\n        var bottomRight = this.locationToLayer(nw);\n        var size = this.viewSize();\n\n        bottomRight.x += size.width;\n        bottomRight.y += size.height;\n\n        var se = this.layerToLocation(bottomRight);\n\n        return new Extent(nw, se);\n    };\n\n    Map.prototype._zoomAround = function _zoomAround (pivot, level) {\n        this._setOrigin(this.layerToLocation(pivot, level), level);\n        this.zoom(level);\n    };\n\n    Map.prototype._initControls = function _initControls () {\n        var controls = this.options.controls;\n        if (controls.attribution) {\n            this._createAttribution(controls.attribution);\n        }\n\n        if (!this.support.mobileOS) {\n            if (controls.navigator) {\n                this._createNavigator(controls.navigator);\n            }\n\n            if (controls.zoom) {\n                this._createZoomControl(controls.zoom);\n            }\n        }\n    };\n\n    Map.prototype._createControlElement = function _createControlElement (options, defaultPosition) {\n        var pos = options.position || defaultPosition;\n        var posSelector = '.' + renderPos(pos).replace(' ', '.');\n        var wrap = this.element.querySelector('.k-map-controls' + posSelector) || [];\n\n        if (wrap.length === 0) {\n            var div$1 = document.createElement(\"div\");\n            addClass(div$1, 'k-map-controls ' + renderPos(pos));\n            wrap = div$1;\n            this.element.appendChild(wrap);\n        }\n\n        var div = document.createElement(\"div\");\n\n        wrap.appendChild(div);\n\n        return div;\n    };\n\n    Map.prototype._createAttribution = function _createAttribution (options) {\n        var element = this._createControlElement(options, 'bottomRight');\n        this.attribution = new Attribution(element, options);\n    };\n\n    Map.prototype._createNavigator = function _createNavigator (options) {\n        var element = this._createControlElement(options, 'topLeft');\n        var navigator = this.navigator = new Navigator(element, deepExtend({}, options, { icons: this.options.icons }));\n\n        this._navigatorPan = this._navigatorPan.bind(this);\n        navigator.bind('pan', this._navigatorPan);\n\n        this._navigatorCenter = this._navigatorCenter.bind(this);\n        navigator.bind('center', this._navigatorCenter);\n    };\n\n    Map.prototype._navigatorPan = function _navigatorPan (e) {\n        var scroller = this.scroller;\n        var x = scroller.scrollLeft + e.x;\n        var y = scroller.scrollTop - e.y;\n        var bounds = this._virtualSize;\n        var width = this.element.clientWidth;\n        var height = this.element.clientHeight;\n\n        // TODO: Move limits to scroller\n        x = limitValue(x, bounds.x.min, bounds.x.max - width);\n        y = limitValue(y, bounds.y.min, bounds.y.max - height);\n\n        this.scroller.one('scroll', proxy(this._scrollEnd, this));\n\n        this.scroller.scrollTo(-x, -y);\n    };\n\n    Map.prototype._navigatorCenter = function _navigatorCenter () {\n        this.center(this.options.center);\n    };\n\n    Map.prototype._createZoomControl = function _createZoomControl (options) {\n        var element = this._createControlElement(options, 'topLeft');\n        var zoomControl = this.zoomControl = new ZoomControl(element, options, this.options.icons);\n\n        this._zoomControlChange = this._zoomControlChange.bind(this);\n        zoomControl.bind('change', this._zoomControlChange);\n    };\n\n    Map.prototype._zoomControlChange = function _zoomControlChange (e) {\n        if (!this.trigger('zoomStart', { originalEvent: e })) {\n            this.zoom(this.zoom() + e.delta);\n\n            this.trigger('zoomEnd', {\n                originalEvent: e\n            });\n        }\n    };\n\n    Map.prototype._initScroller = function _initScroller () {\n        var friction = this.support.mobileOS ? FRICTION_MOBILE : FRICTION;\n        var zoomable = this.options.zoomable !== false;\n        var scroller = this.scroller = new Scroller(this.element.children[0], {\n            friction: friction,\n            velocityMultiplier: VELOCITY_MULTIPLIER,\n            zoom: zoomable,\n            mousewheelScrolling: false,\n            supportDoubleTap: true\n        });\n\n        scroller.bind('scroll', proxy(this._scroll, this));\n        scroller.bind('scrollEnd', proxy(this._scrollEnd, this));\n\n        scroller.userEvents.bind('gesturestart', proxy(this._scaleStart, this));\n        scroller.userEvents.bind('gestureend', proxy(this._scale, this));\n        scroller.userEvents.bind('doubleTap', proxy(this._doubleTap, this));\n        scroller.userEvents.bind('tap', proxy(this._tap, this));\n\n        this.scrollElement = scroller.scrollElement;\n    };\n\n    Map.prototype._initLayers = function _initLayers () {\n        var this$1 = this;\n\n        var defs = this.options.layers,\n            layers = this.layers = [];\n\n        for (var i = 0; i < defs.length; i++) {\n            var options = defs[i];\n\n            var layer = this$1._createLayer(options);\n            layers.push(layer);\n        }\n    };\n\n    Map.prototype._createLayer = function _createLayer (options) {\n        var type = options.type || 'shape';\n        var layerDefaults = this.options.layerDefaults[type];\n        var layerOptions = type === MARKER ?\n            deepExtend({}, this.options.markerDefaults, options, { icons: this.options.icons }) :\n            deepExtend({}, layerDefaults, options);\n\n        var layerConstructor = layersMap[type];\n        var layer = new layerConstructor(this, layerOptions);\n\n        if (type === MARKER) {\n            this.markers = layer;\n        }\n\n        return layer;\n    };\n\n    Map.prototype._createTooltip = function _createTooltip () {\n        return new Tooltip(this.widgetService, this.options.tooltip);\n    };\n\n    /* eslint-disable arrow-body-style */\n    Map.prototype._initMarkers = function _initMarkers () {\n        var markerLayers = (this.options.layers || []).filter(function (x) {\n            return x && x.type === MARKER;\n        });\n\n        if (markerLayers.length > 0) {\n            // render the markers from options.layers\n            // instead of options.markers\n            return;\n        }\n\n        this.markers = new MarkerLayer(this, deepExtend({}, this.options.markerDefaults, { icons: this.options.icons }));\n        this.markers.add(this.options.markers);\n    };\n    /* eslint-enable arrow-body-style */\n\n    Map.prototype._scroll = function _scroll (e) {\n        var origin = this.locationToLayer(this._viewOrigin).round();\n        var movable = e.sender.movable;\n        var offset = new g.Point(movable.x, movable.y).scale(-1).scale(1 / movable.scale);\n\n        origin.x += offset.x;\n        origin.y += offset.y;\n        this._scrollOffset = offset;\n\n        this._tooltip.offset = offset;\n        this.hideTooltip();\n\n        this._setOrigin(this.layerToLocation(origin));\n\n        this.trigger('pan', {\n            originalEvent: e,\n            origin: this._getOrigin(),\n            center: this.center()\n        });\n    };\n\n    Map.prototype._scrollEnd = function _scrollEnd (e) {\n        if (!this._scrollOffset || !this._panComplete()) {\n            return;\n        }\n\n        this._scrollOffset = null;\n        this._panEndTimestamp = now();\n\n        this.trigger('panEnd', {\n            originalEvent: e,\n            origin: this._getOrigin(),\n            center: this.center()\n        });\n    };\n\n    Map.prototype._panComplete = function _panComplete () {\n        return now() - (this._panEndTimestamp || 0) > 50;\n    };\n\n    Map.prototype._scaleStart = function _scaleStart (e) {\n        if (this.trigger('zoomStart', { originalEvent: e })) {\n            var touch = e.touches[1];\n\n            if (touch) {\n                touch.cancel();\n            }\n        }\n    };\n\n    Map.prototype._scale = function _scale (e) {\n        var scale = this.scroller.movable.scale;\n        var zoom = this._scaleToZoom(scale);\n        var gestureCenter = new g.Point(e.center.x, e.center.y);\n        var centerLocation = this.viewToLocation(gestureCenter, zoom);\n        var centerPoint = this.locationToLayer(centerLocation, zoom);\n        var originPoint = centerPoint.translate(-gestureCenter.x, -gestureCenter.y);\n\n        this._zoomAround(originPoint, zoom);\n\n        this.trigger('zoomEnd', {\n            originalEvent: e\n        });\n    };\n\n    Map.prototype._scaleToZoom = function _scaleToZoom (scaleDelta) {\n        var scale = this._layerSize() * scaleDelta;\n        var tiles = scale / this.options.minSize;\n        var zoom = math.log(tiles) / math.log(2);\n\n        return math.round(zoom);\n    };\n\n    Map.prototype._reset = function _reset () {\n        if (this.attribution) {\n            this.attribution.filter(this.center(), this.zoom());\n        }\n\n        this._viewOrigin = this._getOrigin(true);\n\n        this._resetScroller();\n        this.hideTooltip();\n\n        this.trigger('beforeReset');\n        this.trigger('reset');\n    };\n\n    Map.prototype._resetScroller = function _resetScroller () {\n        var scroller = this.scroller;\n        var x = scroller.dimensions.x;\n        var y = scroller.dimensions.y;\n        var scale = this._layerSize();\n        var nw = this.extent().nw;\n        var topLeft = this.locationToLayer(nw).round();\n\n        scroller.movable.round = true;\n        scroller.reset();\n        scroller.userEvents.cancel();\n\n        var zoom = this.zoom();\n\n        scroller.dimensions.forcedMinScale = pow(2, this.options.minZoom - zoom);\n        scroller.dimensions.maxScale = pow(2, this.options.maxZoom - zoom);\n\n        var xBounds = {\n            min: -topLeft.x,\n            max: scale - topLeft.x\n        };\n\n        var yBounds = {\n            min: -topLeft.y,\n            max: scale - topLeft.y\n        };\n\n        if (this.options.wraparound) {\n            xBounds.max = 20 * scale;\n            xBounds.min = -xBounds.max;\n        }\n\n        if (this.options.pannable === false) {\n            var viewSize = this.viewSize();\n            xBounds.min = yBounds.min = 0;\n            xBounds.max = viewSize.width;\n            yBounds.max = viewSize.height;\n        }\n\n        x.makeVirtual();\n        y.makeVirtual();\n\n        x.virtualSize(xBounds.min, xBounds.max);\n        y.virtualSize(yBounds.min, yBounds.max);\n\n        this._virtualSize = {\n            x: xBounds,\n            y: yBounds\n        };\n    };\n\n    // kept for API compatibility, not used\n    Map.prototype._renderLayers = function _renderLayers () {\n    };\n\n    Map.prototype._layerSize = function _layerSize (zoom) {\n        var newZoom = valueOrDefault(zoom, this.options.zoom);\n        return this.options.minSize * pow(2, newZoom);\n    };\n\n    Map.prototype._tap = function _tap (e) {\n        if (!this._panComplete()) {\n            return;\n        }\n\n        var cursor = this.eventOffset(e);\n        this.hideTooltip();\n\n        this.trigger('click', {\n            originalEvent: e,\n            location: this.viewToLocation(cursor)\n        });\n    };\n\n    Map.prototype._doubleTap = function _doubleTap (e) {\n        var options = this.options;\n\n        if (options.zoomable !== false) {\n            if (!this.trigger('zoomStart', { originalEvent: e })) {\n                var toZoom = this.zoom() + DEFAULT_ZOOM_RATE;\n                var cursor = this.eventOffset(e);\n                var location = this.viewToLocation(cursor);\n                var postZoom = this.locationToLayer(location, toZoom);\n                var origin = postZoom.translate(-cursor.x, -cursor.y);\n\n                this._zoomAround(origin, toZoom);\n\n                this.trigger('zoomEnd', {\n                    originalEvent: e\n                });\n            }\n        }\n    };\n\n    Map.prototype._mousewheel = function _mousewheel (e) {\n        var delta = mousewheelDelta(e) > 0 ? -1 : 1;\n        var options = this.options;\n        var fromZoom = this.zoom();\n        var toZoom = limitValue(fromZoom + delta, options.minZoom, options.maxZoom);\n\n        if (options.zoomable !== false && toZoom !== fromZoom) {\n            if (!this.trigger('zoomStart', { originalEvent: e })) {\n                var cursor = this.eventOffset(e);\n                var location = this.viewToLocation(cursor);\n                var postZoom = this.locationToLayer(location, toZoom);\n                var origin = postZoom.translate(-cursor.x, -cursor.y);\n\n                this._zoomAround(origin, toZoom);\n\n                this.trigger('zoomEnd', {\n                    originalEvent: e\n                });\n            }\n        }\n    };\n\n    Map.prototype._toDocumentCoordinates = function _toDocumentCoordinates (point) {\n        var offset = elementOffset(this.element);\n\n        return {\n            left: round(point.x + offset.left),\n            top: round(point.y + offset.top)\n        };\n    };\n\n    return Map;\n}(Observable));\n\nsetDefaultOptions(Map, {\n    name: 'Map',\n    controls: {\n        attribution: true,\n        navigator: {\n            panStep: 100\n        },\n        zoom: true\n    },\n    layers: [],\n    layerDefaults: {\n        shape: {\n            style: {\n                fill: {\n                    color: '#fff'\n                },\n                stroke: {\n                    color: '#aaa',\n                    width: 0.5\n                }\n            }\n        },\n        bubble: {\n            style: {\n                fill: {\n                    color: '#fff',\n                    opacity: 0.5\n                },\n                stroke: {\n                    color: '#aaa',\n                    width: 0.5\n                }\n            }\n        },\n        marker: {\n            shape: 'pinTarget',\n            tooltip: {\n                position: 'top'\n            }\n        }\n    },\n    center: [\n        0,\n        0\n    ],\n    icons: {\n        type: \"font\",\n        svgIcons: {}\n    },\n    zoom: 3,\n    minSize: 256,\n    minZoom: 1,\n    maxZoom: 19,\n    markers: [],\n    markerDefaults: {\n        shape: 'pinTarget',\n        tooltip: {\n            position: 'top'\n        }\n    },\n    wraparound: true,\n    // If set to true, GeoJSON layer \"Point\" features will be rendered as markers.\n    // Otherwise, the points will be rendered as circles.\n    // Defaults to `true` for KUI/jQuery, `false` everywhere else.\n    renderPointsAsMarkers: false\n});\n\nsetDefaultEvents(Map, [\n    'beforeReset',\n    'click',\n    'markerActivate',\n    'markerClick',\n    'markerCreated',\n\n    // Events for implementing custom tooltips.\n    'markerMouseEnter',\n    'markerMouseLeave',\n\n    'pan',\n    'panEnd',\n    'reset',\n    'shapeClick',\n    'shapeCreated',\n    'shapeFeatureCreated',\n    'shapeMouseEnter',\n    'shapeMouseLeave',\n    'zoomEnd',\n    'zoomStart'\n]);\n\nexport default Map;\n","import { TRENDLINE_SERIES } from './constants';\nimport { INHERIT } from '../common/constants';\n\nvar BAR_GAP = 1.5;\nvar BAR_SPACING = 0.4;\nvar BLACK = '#000';\nvar SANS = 'Arial, Helvetica, sans-serif';\nvar SANS11 = \"11px \" + SANS;\nvar SANS12 = '12px ' + SANS;\nvar SANS16 = '16px ' + SANS;\nvar TRANSPARENT = 'transparent';\nvar WHITE = '#fff';\n\nvar notes = function () { return ({\n    icon: {\n        border: {\n            width: 1\n        }\n    },\n    label: {\n        font: SANS12,\n        padding: 3\n    },\n    line: {\n        length: 10,\n        width: 2\n    },\n    visible: true\n}); };\n\nvar axisDefaults = function () { return ({\n    labels: {\n        font: SANS12\n    },\n    notes: notes(),\n    title: {\n        font: SANS16,\n        margin: 5\n    }\n}); };\n\nvar areaSeries = function () { return ({\n    highlight: {\n        markers: {\n            border: {}\n        }\n    },\n    line: {\n        opacity: 1,\n        width: 0\n    },\n    markers: {\n        size: 6,\n        visible: false\n    },\n    opacity: 0.4\n}); };\n\nvar rangeAreaSeries = function () { return ({\n    highlight: {\n        markers: {\n            border: {}\n        }\n    },\n    line: {\n        opacity: 1,\n        width: 0\n    },\n    markers: {\n        size: 6,\n        visible: false\n    },\n    opacity: 0.4\n}); };\n\nvar barSeries = function () { return ({\n    gap: BAR_GAP,\n    spacing: BAR_SPACING\n}); };\n\nvar boxPlotSeries = function () { return ({\n    outliersField: \"\",\n    meanField: \"\",\n    border: {\n        _brightness: 0.8,\n        width: 1\n    },\n    downColor: WHITE,\n    gap: 1,\n    highlight: {\n        border: {\n            opacity: 1,\n            width: 2\n        },\n        whiskers: {\n            width: 3\n        },\n        mean: {\n            width: 2\n        },\n        median: {\n            width: 2\n        }\n    },\n    mean: {\n        width: 2\n    },\n    median: {\n        width: 2\n    },\n    spacing: 0.3,\n    whiskers: {\n        width: 2\n    }\n}); };\n\nvar bubbleSeries = function () { return ({\n    border: {\n        width: 0\n    },\n    labels: {\n        background: TRANSPARENT\n    },\n    opacity: 0.6\n}); };\n\nvar bulletSeries = function () { return ({\n    gap: BAR_GAP,\n    spacing: BAR_SPACING,\n    target: {\n        color: \"#ff0000\"\n    }\n}); };\n\nvar candlestickSeries = function () { return ({\n    border: {\n        _brightness: 0.8,\n        width: 1\n    },\n    downColor: WHITE,\n    gap: 1,\n    highlight: {\n        border: {\n            opacity: 1,\n            width: 2\n        },\n        line: {\n            width: 2\n        }\n    },\n    line: {\n        color: BLACK,\n        width: 1\n    },\n    spacing: 0.3\n}); };\n\nvar columnSeries = function () { return ({\n    gap: BAR_GAP,\n    spacing: BAR_SPACING\n}); };\n\nvar donutSeries = function () { return ({\n    margin: 1\n}); };\n\nvar lineSeries = function () { return ({\n    width: 2\n}); };\n\nvar ohlcSeries = function () { return ({\n    gap: 1,\n    highlight: {\n        line: {\n            opacity: 1,\n            width: 3\n        }\n    },\n    line: {\n        width: 1\n    },\n    spacing: 0.3\n}); };\n\nvar radarAreaSeries = function () { return ({\n    line: {\n        opacity: 1,\n        width: 0\n    },\n    markers: {\n        size: 6,\n        visible: false\n    },\n    opacity: 0.5\n}); };\n\nvar radarLineSeries = function () { return ({\n    markers: {\n        visible: false\n    },\n    width: 2\n}); };\n\nvar rangeBarSeries = function () { return ({\n    gap: BAR_GAP,\n    spacing: BAR_SPACING\n}); };\n\nvar rangeColumnSeries = function () { return ({\n    gap: BAR_GAP,\n    spacing: BAR_SPACING\n}); };\n\nvar scatterLineSeries = function () { return ({\n    width: 1\n}); };\n\nvar waterfallSeries = function () { return ({\n    gap: 0.5,\n    line: {\n        color: BLACK,\n        width: 1\n    },\n    spacing: BAR_SPACING\n}); };\n\nvar pieSeries = function () { return ({\n    labels: {\n        background: '',\n        color: '',\n        padding: {\n            top: 5,\n            bottom: 5,\n            left: 7,\n            right: 7\n        }\n    }\n}); };\n\nvar funnelSeries = function () { return ({\n    labels: {\n        background: '',\n        color: '',\n        padding: {\n            top: 5,\n            bottom: 5,\n            left: 7,\n            right: 7\n        }\n    }\n}); };\n\nvar pyramidSeries = funnelSeries;\n\nvar heatmapSeries = function () { return ({\n    labels: {\n        color: '',\n        background: TRANSPARENT,\n        visible: true\n    },\n    highlight: {\n        border: {\n            width: 0\n        }\n    }\n}); };\n\nvar trendlineSeriesDefaults = function () { return TRENDLINE_SERIES.reduce(\n    function (options, type) {\n        options[type] = {\n            color: INHERIT,\n            trendline: {},\n            markers: {\n                visible: false\n            },\n            width: 1,\n            dashType: 'longDash'\n        };\n\n        return options;\n    }, {}); };\n\nvar seriesDefaults = function (options) { return (Object.assign({\n    visible: true,\n    labels: {\n        font: SANS11\n    },\n    overlay: options.gradients ? {} : {\n        gradient: \"none\"\n    },\n    area: areaSeries(),\n    rangeArea: rangeAreaSeries(),\n    verticalRangeArea: rangeAreaSeries(),\n    bar: barSeries(),\n    boxPlot: boxPlotSeries(),\n    bubble: bubbleSeries(),\n    bullet: bulletSeries(),\n    candlestick: candlestickSeries(),\n    column: columnSeries(),\n    heatmap: heatmapSeries(),\n    pie: pieSeries(),\n    donut: donutSeries(),\n    funnel: funnelSeries(),\n    pyramid: pyramidSeries(),\n    horizontalWaterfall: waterfallSeries(),\n    line: lineSeries(),\n    notes: notes(),\n    ohlc: ohlcSeries(),\n    radarArea: radarAreaSeries(),\n    radarLine: radarLineSeries(),\n    polarArea: radarAreaSeries(),\n    polarLine: radarLineSeries(),\n    rangeBar: rangeBarSeries(),\n    rangeColumn: rangeColumnSeries(),\n    scatterLine: scatterLineSeries(),\n    verticalArea: areaSeries(),\n    verticalBoxPlot: boxPlotSeries(),\n    verticalBullet: bulletSeries(),\n    verticalLine: lineSeries(),\n    waterfall: waterfallSeries()\n},\n    trendlineSeriesDefaults()\n)); };\n\nvar title = function () { return ({\n    font: SANS16\n}); };\n\nvar subtitle = function () { return ({\n    font: SANS12\n}); };\n\nvar legend = function () { return ({\n    labels: {\n        font: SANS12\n    }\n}); };\n\nexport var baseTheme = function (options) {\n    if ( options === void 0 ) options = {};\n\n    return ({\n    axisDefaults: axisDefaults(),\n    categoryAxis: {\n        majorGridLines: {\n            visible: true\n        }\n    },\n    navigator: {\n        pane: {\n            height: 90,\n            margin: {\n                top: 10\n            }\n        }\n    },\n    seriesDefaults: seriesDefaults(options),\n    title: title(),\n    subtitle: subtitle(),\n    legend: legend()\n});\n};\n\n","/**\n * @hidden\n */\nfunction hasParent(element, parent) {\n    var current = element;\n    while (current && current !== parent) {\n        current = current.parentNode;\n    }\n    return current ? true : false;\n}\n/**\n * @hidden\n */\nfunction validateChildren(props, propName, componentName, childType) {\n    var prop = props[propName];\n    if (prop) {\n        if (Array.isArray(prop)) {\n            for (var _i = 0, prop_1 = prop; _i < prop_1.length; _i++) {\n                var value = prop_1[_i];\n                if (!value.type || value.type !== childType) {\n                    return new Error(componentName + \" children should be Array of type \" + childType.displayName + \".\");\n                }\n            }\n        }\n    }\n    return null;\n}\n/**\n * @hidden\n */\nvar toggle = function (flag) { return flag === undefined ? false : !flag; };\nexport { hasParent, validateChildren, toggle };\n","var getTouch = function (domEvent) {\n    return {\n        x: {\n            location: domEvent.pageX\n        },\n        y: {\n            location: domEvent.pageY\n        }\n    };\n};\nvar eventArgs = function (e, previousArgs) {\n    var pointers = e.pointers;\n    var pointer = pointers[0];\n    var xLocation = pointer.pageX;\n    var yLocation = pointer.pageY;\n    var distance = 0;\n    if (pointers.length > 1) {\n        var pointer1 = pointers[0];\n        var pointer2 = pointers[1];\n        distance = Math.sqrt(Math.pow(pointer1.pageX - pointer2.pageX, 2) +\n            Math.pow(pointer1.pageY - pointer2.pageY, 2));\n    }\n    return {\n        distance: distance,\n        event: e.srcEvent,\n        preventDefault: function () {\n            e.preventDefault();\n        },\n        target: e.target,\n        touches: pointers.map(getTouch),\n        type: e.type,\n        x: {\n            delta: previousArgs ? xLocation - previousArgs.x.location : 0,\n            initialDelta: e.deltaX,\n            location: xLocation,\n            startLocation: xLocation - e.deltaX\n        },\n        y: {\n            delta: previousArgs ? yLocation - previousArgs.y.location : 0,\n            initialDelta: e.deltaY,\n            location: yLocation,\n            startLocation: yLocation - e.deltaY\n        }\n    };\n};\nfunction shouldBindGroup(groupNames, events) {\n    for (var idx = 0; idx < groupNames.length; idx++) {\n        if (events[groupNames[idx]]) {\n            return true;\n        }\n    }\n    return false;\n}\nvar eventGroups = [{\n        end: 'panend',\n        move: 'panmove',\n        start: 'panstart'\n    }, {\n        gesturechange: 'pinchmove',\n        gestureend: 'pinchend',\n        gesturestart: 'pinchstart'\n    }, {\n        press: 'press'\n    }, {\n        tap: 'tap'\n    }];\n/**\n * @hidden\n */\nvar DomEvents = /** @class */ (function () {\n    function DomEvents(hammerInstance, events) {\n        this.hammerInstance = hammerInstance;\n        this.eventHandlers = {};\n        this.tap = this.tap.bind(this);\n        this.press = this.press.bind(this);\n        this.panstart = this.panstart.bind(this);\n        this.panmove = this.panmove.bind(this);\n        this.panend = this.panend.bind(this);\n        this.pinchstart = this.pinchstart.bind(this);\n        this.pinchmove = this.pinchmove.bind(this);\n        this.pinchend = this.pinchend.bind(this);\n        if (events) {\n            this.bind(events);\n        }\n    }\n    DomEvents.prototype.tap = function (e) {\n        this.trigger('tap', e);\n    };\n    DomEvents.prototype.press = function (e) {\n        this.trigger('press', e);\n    };\n    DomEvents.prototype.panstart = function (e) {\n        delete this.previous;\n        this.previous = this.trigger('start', e);\n    };\n    DomEvents.prototype.panmove = function (e) {\n        this.previous = this.trigger('move', e);\n    };\n    DomEvents.prototype.panend = function (e) {\n        this.trigger('end', e);\n        delete this.previous;\n    };\n    DomEvents.prototype.pinchstart = function (e) {\n        this.trigger('gesturestart', e);\n    };\n    DomEvents.prototype.pinchmove = function (e) {\n        this.trigger('gesturechange', e);\n    };\n    DomEvents.prototype.pinchend = function (e) {\n        this.trigger('gestureend', e);\n    };\n    DomEvents.prototype.trigger = function (name, e) {\n        var args = eventArgs(e, this.previous);\n        if (this.eventHandlers[name]) {\n            this.eventHandlers[name](args);\n        }\n        return args;\n    };\n    DomEvents.prototype.bind = function (events) {\n        if (events === void 0) { events = {}; }\n        this.unbind();\n        this.eventHandlers = events;\n        for (var idx = 0; idx < eventGroups.length; idx++) {\n            var eventGroup = eventGroups[idx];\n            var groupNames = Object.keys(eventGroup);\n            if (shouldBindGroup(groupNames, events)) {\n                for (var nameIdx = 0; nameIdx < groupNames.length; nameIdx++) {\n                    var name_1 = eventGroup[groupNames[nameIdx]];\n                    this.hammerInstance.on(name_1, this[name_1]);\n                }\n            }\n        }\n    };\n    DomEvents.prototype.unbind = function () {\n        if (this.hammerInstance) {\n            this.hammerInstance.off();\n        }\n        this.eventHandlers = {};\n    };\n    DomEvents.prototype.destroy = function () {\n        if (this.hammerInstance) {\n            this.hammerInstance.destroy();\n            delete this.hammerInstance;\n        }\n        delete this.eventHandlers;\n    };\n    DomEvents.prototype.toggleDrag = function (enable) {\n        this.toggle('pan', enable);\n    };\n    DomEvents.prototype.toggleZoom = function (enable) {\n        this.toggle('pinch', enable);\n    };\n    DomEvents.prototype.toggle = function (recognizer, enable) {\n        if (this.hammerInstance) {\n            var instanceRecognizer = this.hammerInstance.get(recognizer);\n            instanceRecognizer.set({\n                enable: enable\n            });\n        }\n    };\n    return DomEvents;\n}());\nexport { DomEvents };\n","import { DomEvents } from './dom-events';\nvar MISSING_HAMMER_MESSAGE = 'Hammerjs is not loaded.' +\n    'Solution: http://www.telerik.com/kendo-react-ui/components/charts/troubleshooting/#toc-installation';\n/**\n * @hidden\n */\nvar DomEventsBuilder = /** @class */ (function () {\n    function DomEventsBuilder() {\n    }\n    DomEventsBuilder.create = function (element, events) {\n        if (typeof window !== 'undefined') {\n            var HAMMER = window.Hammer;\n            if (!HAMMER) {\n                if (process.env.NODE_ENV !== 'production') {\n                    console.warn(MISSING_HAMMER_MESSAGE);\n                }\n                return;\n            }\n            var hammerInstance = new HAMMER(element, {\n                recognizers: [\n                    [HAMMER.Tap],\n                    [HAMMER.Pan],\n                    [HAMMER.Pinch],\n                    [HAMMER.Press, { time: 0 }]\n                ]\n            });\n            return new DomEvents(hammerInstance, events);\n        }\n    };\n    return DomEventsBuilder;\n}());\nexport { DomEventsBuilder };\n","/**\n * @hidden\n */\nvar BaseEvent = /** @class */ (function () {\n    /**\n     * @hidden\n     */\n    function BaseEvent(target) {\n        this.target = target;\n    }\n    return BaseEvent;\n}());\nexport { BaseEvent };\n","var __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})();\nimport { BaseEvent } from './base-event';\n/* eslint-disable max-len */\n/**\n * Arguments for the `axisLabelClick` event.\n */\nvar AxisLabelClickEvent = /** @class */ (function (_super) {\n    __extends(AxisLabelClickEvent, _super);\n    /**\n     * @hidden\n     */\n    function AxisLabelClickEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.axis = e.axis;\n        _this.dataItem = e.dataItem;\n        _this.index = e.index;\n        _this.text = e.text;\n        _this.value = e.value;\n        return _this;\n    }\n    return AxisLabelClickEvent;\n}(BaseEvent));\nexport { AxisLabelClickEvent };\n// tslint:enable:max-line-length\n","var __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})();\nimport { BaseEvent } from './base-event';\n/**\n * @hidden\n */\nvar PreventableEvent = /** @class */ (function (_super) {\n    __extends(PreventableEvent, _super);\n    function PreventableEvent() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.prevented = false;\n        return _this;\n    }\n    /* eslint-disable max-len */\n    /**\n     * Prevents the default action for a specified event. In this way, the source component suppresses the built-in behavior that follows the event.\n     */\n    PreventableEvent.prototype.preventDefault = function () {\n        this.prevented = true;\n    };\n    /**\n     * Returns `true` if the event was prevented by any of its subscribers.\n     *\n     * @returns `true` if the default action was prevented.\n     * Otherwise, returns `false`.\n     */\n    PreventableEvent.prototype.isDefaultPrevented = function () {\n        return this.prevented;\n    };\n    return PreventableEvent;\n}(BaseEvent));\nexport { PreventableEvent };\n// tslint:enable:max-line-length\n","var __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})();\nimport { PreventableEvent } from './preventable-event';\n/**\n * Arguments for the `drag` event.\n */\nvar DragEvent = /** @class */ (function (_super) {\n    __extends(DragEvent, _super);\n    /**\n     * @hidden\n     */\n    function DragEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.axisRanges = e.axisRanges;\n        _this.nativeEvent = e.originalEvent;\n        return _this;\n    }\n    return DragEvent;\n}(PreventableEvent));\nexport { DragEvent };\n","var __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})();\nimport { BaseEvent } from './base-event';\n/* eslint-disable max-len */\n/**\n * Arguments for the `dragEnd` event.\n */\nvar DragEndEvent = /** @class */ (function (_super) {\n    __extends(DragEndEvent, _super);\n    /**\n     * @hidden\n     */\n    function DragEndEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.axisRanges = e.axisRanges;\n        _this.nativeEvent = e.originalEvent;\n        return _this;\n    }\n    return DragEndEvent;\n}(BaseEvent));\nexport { DragEndEvent };\n// tslint:enable:max-line-length\n","var __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})();\nimport { PreventableEvent } from './preventable-event';\n/**\n * Arguments for the `dragStart` event.\n */\nvar DragStartEvent = /** @class */ (function (_super) {\n    __extends(DragStartEvent, _super);\n    /**\n     * @hidden\n     */\n    function DragStartEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.axisRanges = e.axisRanges;\n        _this.nativeEvent = e.originalEvent;\n        return _this;\n    }\n    return DragStartEvent;\n}(PreventableEvent));\nexport { DragStartEvent };\n","var __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})();\nimport { PreventableEvent } from './preventable-event';\n/**\n * Arguments for the `legendItemHover` event.\n */\nvar LegendItemHoverEvent = /** @class */ (function (_super) {\n    __extends(LegendItemHoverEvent, _super);\n    /**\n     * @hidden\n     */\n    function LegendItemHoverEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.series = e.series;\n        _this.seriesIndex = e.seriesIndex;\n        _this.pointIndex = e.pointIndex;\n        _this.text = e.text;\n        return _this;\n    }\n    /**\n     * If called, the series highlight is not shown as a result of hovering over the legend item.\n     */\n    LegendItemHoverEvent.prototype.preventDefault = function () {\n        _super.prototype.preventDefault.call(this);\n    };\n    return LegendItemHoverEvent;\n}(PreventableEvent));\nexport { LegendItemHoverEvent };\n","var __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})();\nimport { PreventableEvent } from './preventable-event';\n/**\n * Arguments for the `legendItemClick` event.\n */\nvar LegendItemClickEvent = /** @class */ (function (_super) {\n    __extends(LegendItemClickEvent, _super);\n    /**\n     * @hidden\n     */\n    function LegendItemClickEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.series = e.series;\n        _this.seriesIndex = e.seriesIndex;\n        _this.pointIndex = e.pointIndex;\n        _this.text = e.text;\n        return _this;\n    }\n    /**\n     * If called, the series visibility is not toggled as a result of clicking the legend item.\n     */\n    LegendItemClickEvent.prototype.preventDefault = function () {\n        _super.prototype.preventDefault.call(this);\n    };\n    return LegendItemClickEvent;\n}(PreventableEvent));\nexport { LegendItemClickEvent };\n","var __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})();\nimport { PreventableEvent } from './preventable-event';\n/**\n * Arguments for the `legendItemLeave` event.\n */\nvar LegendItemLeaveEvent = /** @class */ (function (_super) {\n    __extends(LegendItemLeaveEvent, _super);\n    /**\n     * @hidden\n     */\n    function LegendItemLeaveEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.series = e.series;\n        _this.seriesIndex = e.seriesIndex;\n        _this.pointIndex = e.pointIndex;\n        _this.text = e.text;\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    LegendItemLeaveEvent.prototype.preventDefault = function () {\n        _super.prototype.preventDefault.call(this);\n    };\n    return LegendItemLeaveEvent;\n}(PreventableEvent));\nexport { LegendItemLeaveEvent };\n","var __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})();\nimport { BaseEvent } from './base-event';\n/**\n * The arguments for the `navigatorFilter` event.\n */\nvar NavigatorFilterEvent = /** @class */ (function (_super) {\n    __extends(NavigatorFilterEvent, _super);\n    /**\n     * Constructs the event arguments from a raw object.\n     */\n    function NavigatorFilterEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.from = e.from;\n        _this.to = e.to;\n        return _this;\n    }\n    return NavigatorFilterEvent;\n}(BaseEvent));\nexport { NavigatorFilterEvent };\n","var __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})();\nimport { BaseEvent } from './base-event';\n/**\n * Arguments for the `noteClick` event.\n */\nvar NoteClickEvent = /** @class */ (function (_super) {\n    __extends(NoteClickEvent, _super);\n    /**\n     * @hidden\n     */\n    function NoteClickEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.category = e.category;\n        _this.dataItem = e.dataItem;\n        _this.series = e.series;\n        _this.value = e.value;\n        _this.visual = e.visual;\n        return _this;\n    }\n    return NoteClickEvent;\n}(BaseEvent));\nexport { NoteClickEvent };\n","var __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})();\nimport { BaseEvent } from './base-event';\n/**\n * Arguments for the `noteHover` event.\n */\nvar NoteHoverEvent = /** @class */ (function (_super) {\n    __extends(NoteHoverEvent, _super);\n    /**\n     * @hidden\n     */\n    function NoteHoverEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.category = e.category;\n        _this.dataItem = e.dataItem;\n        _this.series = e.series;\n        _this.value = e.value;\n        _this.visual = e.visual;\n        return _this;\n    }\n    return NoteHoverEvent;\n}(BaseEvent));\nexport { NoteHoverEvent };\n","var __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})();\nimport { BaseEvent } from './base-event';\n/**\n * Arguments for the `plotAreaClick` event.\n */\nvar PlotAreaClickEvent = /** @class */ (function (_super) {\n    __extends(PlotAreaClickEvent, _super);\n    /**\n     * @hidden\n     */\n    function PlotAreaClickEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.category = e.category;\n        _this.nativeEvent = e.originalEvent;\n        _this.value = e.value;\n        _this.x = e.x;\n        _this.y = e.y;\n        return _this;\n    }\n    return PlotAreaClickEvent;\n}(BaseEvent));\nexport { PlotAreaClickEvent };\n","var __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})();\nimport { BaseEvent } from './base-event';\n/**\n * Arguments for the `plotAreaHover` event.\n */\nvar PlotAreaHoverEvent = /** @class */ (function (_super) {\n    __extends(PlotAreaHoverEvent, _super);\n    /**\n     * @hidden\n     */\n    function PlotAreaHoverEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.category = e.category;\n        _this.nativeEvent = e.originalEvent;\n        _this.value = e.value;\n        _this.x = e.x;\n        _this.y = e.y;\n        return _this;\n    }\n    return PlotAreaHoverEvent;\n}(BaseEvent));\nexport { PlotAreaHoverEvent };\n","var __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})();\nimport { BaseEvent } from './base-event';\n/**\n * Arguments for the `render` event.\n */\nvar RenderEvent = /** @class */ (function (_super) {\n    __extends(RenderEvent, _super);\n    /**\n     * @hidden\n     */\n    function RenderEvent(_e, sender) {\n        return _super.call(this, sender) || this;\n    }\n    return RenderEvent;\n}(BaseEvent));\nexport { RenderEvent };\n","var __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})();\nimport { PreventableEvent } from './preventable-event';\n/**\n * Arguments for the `select` event.\n */\nvar SelectEvent = /** @class */ (function (_super) {\n    __extends(SelectEvent, _super);\n    /**\n     * @hidden\n     */\n    function SelectEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.axis = e.axis;\n        _this.from = e.from;\n        _this.to = e.to;\n        return _this;\n    }\n    return SelectEvent;\n}(PreventableEvent));\nexport { SelectEvent };\n","var __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})();\nimport { BaseEvent } from './base-event';\n/**\n * Arguments for the `selectEnd` event.\n */\nvar SelectEndEvent = /** @class */ (function (_super) {\n    __extends(SelectEndEvent, _super);\n    /**\n     * @hidden\n     */\n    function SelectEndEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.axis = e.axis;\n        _this.from = e.from;\n        _this.to = e.to;\n        return _this;\n    }\n    return SelectEndEvent;\n}(BaseEvent));\nexport { SelectEndEvent };\n","var __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})();\nimport { PreventableEvent } from './preventable-event';\n/**\n * Arguments for the `selectStart` event.\n */\nvar SelectStartEvent = /** @class */ (function (_super) {\n    __extends(SelectStartEvent, _super);\n    /**\n     * @hidden\n     */\n    function SelectStartEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.axis = e.axis;\n        _this.from = e.from;\n        _this.to = e.to;\n        return _this;\n    }\n    return SelectStartEvent;\n}(PreventableEvent));\nexport { SelectStartEvent };\n","var __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})();\nimport { BaseEvent } from './base-event';\n/* eslint-disable max-len */\n/**\n * Arguments for the `seriesClick` event.\n */\nvar SeriesClickEvent = /** @class */ (function (_super) {\n    __extends(SeriesClickEvent, _super);\n    // tslint:enable:max-line-length\n    /**\n     * @hidden\n     */\n    function SeriesClickEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.category = e.category;\n        _this.dataItem = e.dataItem;\n        _this.nativeEvent = e.originalEvent;\n        _this.percentage = e.percentage;\n        _this.point = e.point;\n        _this.series = e.series;\n        _this.stackValue = e.stackValue;\n        _this.value = e.value;\n        return _this;\n    }\n    return SeriesClickEvent;\n}(BaseEvent));\nexport { SeriesClickEvent };\n","var __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})();\nimport { PreventableEvent } from './preventable-event';\n/* eslint-disable max-len */\n/**\n * Arguments for the `seriesHover` event.\n */\nvar SeriesHoverEvent = /** @class */ (function (_super) {\n    __extends(SeriesHoverEvent, _super);\n    /**\n     * @hidden\n     */\n    function SeriesHoverEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.category = e.category;\n        _this.categoryPoints = e.categoryPoints;\n        _this.dataItem = e.dataItem;\n        _this.nativeEvent = e.originalEvent;\n        _this.percentage = e.percentage;\n        _this.point = e.point;\n        _this.series = e.series;\n        _this.stackValue = e.stackValue;\n        _this.value = e.value;\n        return _this;\n    }\n    return SeriesHoverEvent;\n}(PreventableEvent));\nexport { SeriesHoverEvent };\n// tslint:enable:max-line-length\n","var __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})();\nimport { PreventableEvent } from './preventable-event';\n/* eslint-disable max-len */\n/**\n * Arguments for the `zoom` event.\n */\nvar ZoomEvent = /** @class */ (function (_super) {\n    __extends(ZoomEvent, _super);\n    // tslint:enable:max-line-length\n    /**\n     * @hidden\n     */\n    function ZoomEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.axisRanges = e.axisRanges;\n        _this.delta = e.delta;\n        _this.nativeEvent = e.originalEvent;\n        return _this;\n    }\n    return ZoomEvent;\n}(PreventableEvent));\nexport { ZoomEvent };\n","var __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})();\nimport { BaseEvent } from './base-event';\n/* eslint-disable max-len */\n/**\n * Arguments for the `zoomEnd` event.\n */\nvar ZoomEndEvent = /** @class */ (function (_super) {\n    __extends(ZoomEndEvent, _super);\n    // tslint:enable:max-line-length\n    /**\n     * @hidden\n     */\n    function ZoomEndEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.axisRanges = e.axisRanges;\n        _this.nativeEvent = e.originalEvent;\n        return _this;\n    }\n    return ZoomEndEvent;\n}(BaseEvent));\nexport { ZoomEndEvent };\n","var __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})();\nimport { PreventableEvent } from './preventable-event';\n/* eslint-disable max-len */\n/**\n * Arguments for the `zoomStart` event.\n */\nvar ZoomStartEvent = /** @class */ (function (_super) {\n    __extends(ZoomStartEvent, _super);\n    // tslint:enable:max-line-length\n    /**\n     * @hidden\n     */\n    function ZoomStartEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.axisRanges = e.axisRanges;\n        _this.nativeEvent = e.originalEvent;\n        return _this;\n    }\n    return ZoomStartEvent;\n}(PreventableEvent));\nexport { ZoomStartEvent };\n","import { AxisLabelClickEvent } from './axis-label-click-event';\nimport { DragEvent } from './drag-event';\nimport { DragEndEvent } from './drag-end-event';\nimport { DragStartEvent } from './drag-start-event';\nimport { LegendItemHoverEvent } from './legend-item-hover-event';\nimport { LegendItemClickEvent } from './legend-item-click-event';\nimport { LegendItemLeaveEvent } from './legend-item-leave-event';\nimport { NavigatorFilterEvent } from './navigator-filter-event';\nimport { NoteClickEvent } from './note-click-event';\nimport { NoteHoverEvent } from './note-hover-event';\nimport { PlotAreaClickEvent } from './plot-area-click-event';\nimport { PlotAreaHoverEvent } from './plot-area-hover-event';\nimport { RenderEvent } from './render-event';\nimport { SelectEvent } from './select-event';\nimport { SelectEndEvent } from './select-end-event';\nimport { SelectStartEvent } from './select-start-event';\nimport { SeriesClickEvent } from './series-click-event';\nimport { SeriesHoverEvent } from './series-hover-event';\nimport { ZoomEvent } from './zoom-event';\nimport { ZoomEndEvent } from './zoom-end-event';\nimport { ZoomStartEvent } from './zoom-start-event';\nvar EVENT_MAP = {\n    axisLabelClick: AxisLabelClickEvent,\n    drag: DragEvent,\n    dragEnd: DragEndEvent,\n    dragStart: DragStartEvent,\n    legendItemHover: LegendItemHoverEvent,\n    legendItemClick: LegendItemClickEvent,\n    legendItemLeave: LegendItemLeaveEvent,\n    navigatorFilter: NavigatorFilterEvent,\n    noteClick: NoteClickEvent,\n    noteHover: NoteHoverEvent,\n    plotAreaClick: PlotAreaClickEvent,\n    plotAreaHover: PlotAreaHoverEvent,\n    render: RenderEvent,\n    select: SelectEvent,\n    selectEnd: SelectEndEvent,\n    selectStart: SelectStartEvent,\n    seriesClick: SeriesClickEvent,\n    seriesHover: SeriesHoverEvent,\n    zoom: ZoomEvent,\n    zoomEnd: ZoomEndEvent,\n    zoomStart: ZoomStartEvent\n};\n/**\n * @hidden\n */\nfunction create(name, args, sender) {\n    if (EVENT_MAP[name]) {\n        return new EVENT_MAP[name](args, sender);\n    }\n}\nexport { create };\n","/**\n * @hidden\n */\nvar DomEvent = /** @class */ (function () {\n    /**\n     * @hidden\n     */\n    function DomEvent(sender, e) {\n        this.sender = sender;\n        this.syntheticEvent = e;\n    }\n    return DomEvent;\n}());\nexport { DomEvent };\nfunction toDomEvent(sender, e) {\n    return new DomEvent(sender, e);\n}\nexport { toDomEvent };\n","import { chartBaseTheme } from '@progress/kendo-charts';\nvar font = function (style) { return style.fontWeight + \" \" + style.fontSize + \" \" + style.fontFamily; };\nvar computedBackgroundColor = function (element) { return window.getComputedStyle(element).backgroundColor; };\nvar letterPos = function (letter) { return letter.toLowerCase().charCodeAt(0) - 'a'.charCodeAt(0); };\nvar seriesPos = function (name) {\n    var alpha = name.match(/series-([a-z])$/);\n    if (alpha !== null) {\n        return letterPos(alpha[1]);\n    }\n    var num = name.split('--series-')[1];\n    return parseInt(num, 10) - 1;\n};\nvar SERIES_COLORS = 30;\nvar seriesTemplate = function () {\n    var result = \"\\n      <div class=\\\"k-var--series-a\\\"></div>\\n      <div class=\\\"k-var--series-b\\\"></div>\\n      <div class=\\\"k-var--series-c\\\"></div>\\n      <div class=\\\"k-var--series-d\\\"></div>\\n      <div class=\\\"k-var--series-e\\\"></div>\\n      <div class=\\\"k-var--series-f\\\"></div>\\n\";\n    for (var i = 0; i < SERIES_COLORS; i++) {\n        result += \"\\n      <div class=\\\"k-var--series-\" + (i + 1) + \"\\\"></div>\";\n    }\n    return result;\n};\nvar template = \"\\n    <div class=\\\"k-var--accent\\\"></div>\\n    <div class=\\\"k-var--base\\\"></div>\\n    <div class=\\\"k-var--background\\\"></div>\\n\\n    <div class=\\\"k-var--normal-background\\\"></div>\\n    <div class=\\\"k-var--normal-text-color\\\"></div>\\n    <div class=\\\"k-var--hover-background\\\"></div>\\n    <div class=\\\"k-var--hover-text-color\\\"></div>\\n    <div class=\\\"k-var--selected-background\\\"></div>\\n    <div class=\\\"k-var--selected-text-color\\\"></div>\\n    <div class=\\\"k-var--chart-error-bars-background\\\"></div>\\n    <div class=\\\"k-var--chart-notes-background\\\"></div>\\n    <div class=\\\"k-var--chart-notes-border\\\"></div>\\n    <div class=\\\"k-var--chart-notes-lines\\\"></div>\\n    <div class=\\\"k-var--chart-crosshair-background\\\"></div>\\n\\n    <div class=\\\"k-var--chart-inactive\\\"></div>\\n    <div class=\\\"k-var--chart-major-lines\\\"></div>\\n    <div class=\\\"k-var--chart-minor-lines\\\"></div>\\n    <div class=\\\"k-var--chart-area-opacity\\\"></div>\\n    <div class=\\\"k-var--chart-area-inactive-opacity\\\"></div>\\n    <div class=\\\"k-var--chart-line-inactive-opacity\\\"></div>\\n\\n    <div class=\\\"k-widget k-chart\\\">\\n        <div class=\\\"k-var--chart-font\\\"></div>\\n        <div class=\\\"k-var--chart-title-font\\\"></div>\\n        <div class=\\\"k-var--chart-pane-title-font\\\"></div>\\n        <div class=\\\"k-var--chart-label-font\\\"></div>\\n    </div>\\n\\n    <div class=\\\"k-var--series-unset\\\"></div>\\n    <div class=\\\"k-var--series\\\">\\n      \" + seriesTemplate() + \"\\n    </div>\\n\";\n/**\n * @hidden\n */\nvar ThemeService = /** @class */ (function () {\n    function ThemeService(store) {\n        this.store = store;\n    }\n    ThemeService.prototype.setStyle = function (field, value) {\n        this.store.dispatch({ type: 'set', payload: { field: field, value: value } });\n    };\n    ThemeService.prototype.setColors = function () {\n        this.mapColor('axisDefaults.crosshair.color', 'chart-crosshair-background');\n        this.mapColor('axisDefaults.labels.color', 'normal-text-color');\n        this.mapColor('axisDefaults.line.color', 'chart-major-lines');\n        this.mapColor('axisDefaults.majorGridLines.color', 'chart-major-lines');\n        this.mapColor('axisDefaults.minorGridLines.color', 'chart-minor-lines');\n        this.mapColor('axisDefaults.notes.icon.background', 'chart-notes-background');\n        this.mapColor('axisDefaults.notes.icon.border.color', 'chart-notes-border');\n        this.mapColor('axisDefaults.notes.line.color', 'chart-notes-lines');\n        this.mapColor('axisDefaults.title.color', 'normal-text-color');\n        this.mapColor('chartArea.background', 'background');\n        this.mapColor('legend.inactiveItems.labels.color', 'chart-inactive');\n        this.mapColor('legend.inactiveItems.markers.color', 'chart-inactive');\n        this.mapColor('legend.labels.color', 'normal-text-color');\n        this.mapColor('seriesDefaults.boxPlot.downColor', 'chart-major-lines');\n        this.mapColor('seriesDefaults.boxPlot.mean.color', 'base');\n        this.mapColor('seriesDefaults.boxPlot.median.color', 'base');\n        this.mapColor('seriesDefaults.boxPlot.whiskers.color', 'accent');\n        this.mapColor('seriesDefaults.bullet.target.color', 'normal-text-color');\n        this.mapColor('seriesDefaults.candlestick.downColor', 'normal-text-color');\n        this.mapColor('seriesDefaults.candlestick.line.color', 'normal-text-color');\n        this.mapColor('seriesDefaults.errorBars.color', 'chart-error-bars-background');\n        this.mapColor('seriesDefaults.horizontalWaterfall.line.color', 'chart-major-lines');\n        this.mapColor('seriesDefaults.icon.border.color', 'chart-major-lines');\n        this.mapColor('seriesDefaults.labels.background', 'background');\n        this.mapColor('seriesDefaults.labels.color', 'normal-text-color');\n        this.mapColor('seriesDefaults.notes.icon.background', 'chart-notes-background');\n        this.mapColor('seriesDefaults.notes.icon.border.color', 'chart-notes-border');\n        this.mapColor('seriesDefaults.notes.line.color', 'chart-notes-lines');\n        this.mapColor('seriesDefaults.verticalBoxPlot.downColor', 'chart-major-lines');\n        this.mapColor('seriesDefaults.verticalBoxPlot.mean.color', 'base');\n        this.mapColor('seriesDefaults.verticalBoxPlot.median.color', 'base');\n        this.mapColor('seriesDefaults.verticalBoxPlot.whiskers.color', 'accent');\n        this.mapColor('seriesDefaults.verticalBullet.target.color', 'normal-text-color');\n        this.mapColor('seriesDefaults.waterfall.line.color', 'chart-major-lines');\n        this.mapColor('title.color', 'normal-text-color');\n        var opacity = parseFloat(this.queryStyle('chart-area-opacity').opacity);\n        if (!isNaN(opacity)) {\n            this.setStyle('seriesDefaults.area.opacity', opacity);\n            this.setStyle('seriesDefaults.radarArea.opacity', opacity);\n            this.setStyle('seriesDefaults.verticalArea.opacity', opacity);\n            this.setStyle('seriesDefaults.labels.opacity', opacity);\n        }\n        this.setInactiveOpacity(['area', 'verticalArea'], 'chart-area-inactive-opacity');\n        this.setInactiveOpacity(['line', 'verticalLine'], 'chart-line-inactive-opacity');\n    };\n    ThemeService.prototype.setFonts = function () {\n        var defaultFont = font(this.queryStyle('chart-font'));\n        var titleFont = font(this.queryStyle('chart-title-font'));\n        var paneTitleFont = font(this.queryStyle('chart-pane-title-font'));\n        var labelFont = font(this.queryStyle('chart-label-font'));\n        this.setStyle('axisDefaults.labels.font', labelFont);\n        this.setStyle('axisDefaults.notes.label.font', defaultFont);\n        this.setStyle('axisDefaults.title.font', defaultFont);\n        this.setStyle('legend.labels.font', defaultFont);\n        this.setStyle('seriesDefaults.labels.font', labelFont);\n        this.setStyle('seriesDefaults.notes.label.font', defaultFont);\n        this.setStyle('title.font', titleFont);\n        this.setStyle('paneDefaults.title.font', paneTitleFont);\n    };\n    ThemeService.prototype.setSeriesColors = function () {\n        var element = this.element;\n        var series = [].slice.call(element.querySelectorAll('.k-var--series div'));\n        var unsetColor = computedBackgroundColor(element.querySelector('.k-var--series-unset'));\n        var seriesColors = series.reduce(function (arr, el) {\n            var pos = seriesPos(el.className);\n            var color = computedBackgroundColor(el);\n            if (color !== unsetColor) {\n                arr[pos] = color;\n            }\n            return arr;\n        }, [] // Will populate the series colors in this array\n        );\n        this.setStyle('seriesColors', seriesColors);\n    };\n    ThemeService.prototype.mapColor = function (key, varName) {\n        this.setStyle(key, this.queryStyle(varName).backgroundColor);\n    };\n    ThemeService.prototype.queryStyle = function (varName) {\n        var element = this.element;\n        return window.getComputedStyle(element.querySelector(\".k-var--\" + varName));\n    };\n    ThemeService.prototype.setInactiveOpacity = function (seriesTypes, selector) {\n        var _this = this;\n        var inactiveOpacity = parseFloat(this.queryStyle(selector).opacity);\n        if (!isNaN(inactiveOpacity) && inactiveOpacity < 1) {\n            seriesTypes.forEach(function (type) {\n                return _this.setStyle(\"seriesDefaults.\" + type + \".highlight.inactiveOpacity\", inactiveOpacity);\n            });\n        }\n    };\n    return ThemeService;\n}());\nvar loadTheme = function (store, done) {\n    var service = new ThemeService(store);\n    if (typeof document === 'undefined') {\n        store.dispatch({ type: 'push', payload: chartBaseTheme() });\n        return;\n    }\n    var container = service.element = document.createElement('div');\n    container.style.display = 'none';\n    container.innerHTML = template;\n    document.body.appendChild(container);\n    try {\n        store.dispatch({ type: 'push', payload: chartBaseTheme() });\n        service.setColors();\n        service.setFonts();\n        service.setSeriesColors();\n    }\n    finally {\n        document.body.removeChild(service.element);\n        delete service.element;\n        done();\n    }\n};\nexport { loadTheme };\n","import { canUseDOM } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nexport var THROTTLE_MS = 1000 / 60;\n/**\n * @hidden\n */\nvar createStore = function (reducer) {\n    var state;\n    var timerId;\n    var listeners = [];\n    var getState = function () { return state; };\n    var dispatch = function (action) {\n        state = reducer(state, action);\n        if (canUseDOM) {\n            window.clearTimeout(timerId);\n            timerId = window.setTimeout(function () { return listeners.forEach(function (l) { return l(); }); }, THROTTLE_MS);\n        }\n    };\n    var subscribe = function (listener) {\n        listeners.push(listener);\n        return function () { return listeners = listeners.filter(function (l) { return l !== listener; }); };\n    };\n    dispatch({});\n    return { getState: getState, dispatch: dispatch, subscribe: subscribe };\n};\nexport default createStore;\n","/**\n * @hidden\n */\nvar optionsReducer = function (currentState, action) {\n    if (action.chartCollectionIdxKey) {\n        return reducers.collectionConfigurationItem(currentState, action);\n    }\n    else if (action.chartKey) {\n        return reducers.configurationItem(currentState, action);\n    }\n    else {\n        return {};\n    }\n};\n/**\n * @hidden\n */\nvar themeReducer = function (currentState, action) {\n    if (action.type) {\n        switch (action.type) {\n            case 'set':\n                return reducers.themeItem(currentState, action);\n            case 'push':\n                return Object.assign(currentState, action.payload);\n            default:\n                return currentState;\n        }\n    }\n    else {\n        return {};\n    }\n};\n/**\n * @hidden\n */\nvar observersReducer = function (currentState, action) {\n    if (action.type) {\n        switch (action.type) {\n            case 'add':\n                return currentState.concat([action.payload]);\n            case 'remove':\n                return currentState.filter(function (element) { return element !== action.payload; });\n            default:\n                return currentState;\n        }\n    }\n    else {\n        return [];\n    }\n};\n/**\n * @hidden\n */\nvar reducers = {\n    configurationItem: function (currentState, action) {\n        var _a;\n        return Object.assign(currentState, (_a = {},\n            _a[action.chartKey] = action.payload,\n            _a));\n    },\n    collectionConfigurationItem: function (currentState, action) {\n        var _a;\n        var inCollection = false;\n        var _b = action.chartCollectionIdxKey.split('_'), collectionName = _b[0], collectionIdx = _b[1];\n        var collection = currentState[collectionName].map(function (item, index) {\n            if (parseInt(collectionIdx, 10) === index) {\n                inCollection = true;\n                return action.payload;\n            }\n            return item;\n        });\n        if (inCollection === false) {\n            collection.splice(parseInt(collectionIdx, 10), 0, action.payload);\n        }\n        return Object.assign(currentState, (_a = {},\n            _a[collectionName] = collection,\n            _a));\n    },\n    themeItem: function (currentState, action) {\n        var store = {};\n        var nextStore = Object.assign(store, currentState);\n        var _a = action.payload, field = _a.field, value = _a.value;\n        var parts = field.split('.');\n        var key = parts.shift();\n        while (parts.length > 0) {\n            store = store[key] = store[key] || {};\n            key = parts.shift();\n        }\n        store[key] = value;\n        return nextStore;\n    }\n};\nexport { optionsReducer, themeReducer, observersReducer };\n","/**\n * The point that is passed to the tooltip component.\n */\nvar TooltipPoint = /** @class */ (function () {\n    /**\n     * @hidden\n     */\n    function TooltipPoint(point, format) {\n        this.value = point.value;\n        this.category = point.category;\n        this.categoryIndex = point.categoryIx;\n        this.series = point.series;\n        this.dataItem = point.dataItem;\n        this.percentage = point.percentage;\n        this.runningTotal = point.runningTotal;\n        this.total = point.total;\n        this.low = point.low;\n        this.high = point.high;\n        this.xLow = point.xLow;\n        this.xHigh = point.xHigh;\n        this.yLow = point.yLow;\n        this.yHigh = point.yHigh;\n        this.point = point;\n        this.format = ((point.options || {}).tooltip || {}).format || format;\n    }\n    Object.defineProperty(TooltipPoint.prototype, \"formattedValue\", {\n        get: function () {\n            return this.format ? this.point.formatValue(this.format) : String(this.value);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    return TooltipPoint;\n}());\nexport { TooltipPoint };\n","import * as React from 'react';\nvar TOOLTIP_MARKER_CLASS = 'k-chart-shared-tooltip-marker';\n/**\n * @hidden\n */\nvar SharedTooltipContent = function (props) {\n    var categoryText = props.categoryText, colorMarker = props.colorMarker, colspan = props.colspan, nameColumn = props.nameColumn, points = props.points;\n    var pointsMap = function (point, idx) {\n        return (React.createElement(\"tr\", { key: idx },\n            colorMarker && (React.createElement(\"td\", null,\n                React.createElement(\"span\", { className: TOOLTIP_MARKER_CLASS, style: { backgroundColor: point.series.color } }))),\n            nameColumn && (React.createElement(\"td\", null, point.series.name)),\n            React.createElement(\"td\", { dangerouslySetInnerHTML: { __html: point.formattedValue } })));\n    };\n    return (React.createElement(\"table\", null,\n        React.createElement(\"thead\", null,\n            React.createElement(\"tr\", null,\n                React.createElement(\"th\", { colSpan: colspan }, categoryText))),\n        React.createElement(\"tbody\", null, points.map(pointsMap))));\n};\nexport { SharedTooltipContent };\n","import * as React from 'react';\n/**\n * @hidden\n */\nexport var ChartContext = React.createContext(null);\nChartContext.displayName = 'ChartContext';\n","var __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})();\nimport * as React from 'react';\nimport { InstanceObserver } from '@progress/kendo-charts';\nimport { toDomEvent } from './../events/dom-event';\nimport { hasParent } from '../utils/main';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { ChartContext } from '../ChartContext';\nvar COLLISION = { horizontal: 'fit', vertical: 'fit' };\nvar TOOLTIP_CLASS = 'k-chart-tooltip';\nvar POPUP_WRAPPER_CLASS = 'k-chart-tooltip-wrapper';\n/**\n * @hidden\n */\nvar TooltipPopup = /** @class */ (function (_super) {\n    __extends(TooltipPopup, _super);\n    function TooltipPopup(props, context) {\n        var _this = _super.call(this, props, context) || this;\n        _this.onChartMouseLeave = function (e) {\n            var syntheticEvent = e.syntheticEvent;\n            if (hasParent(syntheticEvent.relatedTarget, _this.element)) {\n                /* prevent default behavior so that the tooltip won't be hidden */\n                return true;\n            }\n            return false;\n        };\n        _this.onMouseLeave = function (e) {\n            var domEvent = toDomEvent(_this, e);\n            var isDefaultPrevented = _this.context.childrenObserver.trigger('onMouseLeave', domEvent);\n            if (isDefaultPrevented) {\n                e.preventDefault();\n            }\n        };\n        _this.chartObserver = new InstanceObserver(_this, {\n            onMouseLeave: 'onChartMouseLeave'\n        });\n        context.observersStore.dispatch({\n            type: 'add',\n            payload: _this.chartObserver\n        });\n        return _this;\n    }\n    TooltipPopup.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, popupShown = _a.popupShown, popupAlign = _a.popupAlign, popupOffset = _a.popupOffset, popupStyles = _a.popupStyles, popupContent = _a.popupContent, className = _a.className;\n        var wrapperClass = [TOOLTIP_CLASS, className].join(' ').trim();\n        var popupComponent = (React.createElement(Popup, { animate: false, popupAlign: popupAlign, offset: popupOffset, show: popupShown, collision: COLLISION, className: POPUP_WRAPPER_CLASS },\n            React.createElement(\"div\", { className: wrapperClass, style: popupStyles, onMouseLeave: this.onMouseLeave, ref: function (el) { return _this.element = el; } }, popupContent())));\n        return popupComponent;\n    };\n    TooltipPopup.prototype.componentWillUnmount = function () {\n        this.context.observersStore.dispatch({\n            type: 'remove',\n            payload: this.chartObserver\n        });\n    };\n    TooltipPopup.contextType = ChartContext;\n    return TooltipPopup;\n}(React.Component));\nexport { TooltipPopup };\n","var __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 __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};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { InstanceObserver } from '@progress/kendo-charts';\nimport { TooltipPoint } from './Point';\nimport { SharedTooltipContent } from './SharedTooltipContent';\nimport { TooltipPopup } from './Popup';\nimport { ChartContext } from '../ChartContext';\nvar SHARED_TOOLTIP_CLASS = 'k-chart-shared-tooltip';\nvar INVERSE_TOOLTIP_CLASS = 'k-chart-tooltip-inverse';\n/**\n * @hidden\n */\nvar SeriesTooltip = /** @class */ (function (_super) {\n    __extends(SeriesTooltip, _super);\n    function SeriesTooltip() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.state = {\n            popupShown: false\n        };\n        return _this;\n    }\n    SeriesTooltip.prototype.componentDidMount = function () {\n        // This is moved here as calls to the listed methods contains setState which is restricted before component mount\n        this.chartObserver = new InstanceObserver(this, {\n            showTooltip: 'onShowTooltip',\n            hideTooltip: 'onHideTooltip'\n        });\n        this.context.observersStore.dispatch({\n            type: 'add',\n            payload: this.chartObserver\n        });\n    };\n    SeriesTooltip.prototype.render = function () {\n        var _this = this;\n        var _a;\n        var _b = this.state, popupContext = _b.popupContext, shared = _b.shared, className = _b.className, tooltipProps = __rest(_b, [\"popupContext\", \"shared\", \"className\"]);\n        var tooltipContent = this.state.popupShown ? function () {\n            var render = _this.findRenderFunction();\n            if (shared) {\n                return render !== null ? render(popupContext) :\n                    (React.createElement(SharedTooltipContent, __assign({}, popupContext)));\n            }\n            else {\n                var point = popupContext.point;\n                var seriesRenderer = _this.findRenderFunctionByIndex(point.series.index);\n                if (seriesRenderer !== null) {\n                    return seriesRenderer(popupContext);\n                }\n                else if (render !== null) {\n                    return render(popupContext);\n                }\n                else {\n                    return (React.createElement(\"span\", { dangerouslySetInnerHTML: { __html: popupContext.point.formattedValue } }));\n                }\n            }\n        } : Function.prototype;\n        var popupContainerClassName = classNames((_a = {},\n            _a[SHARED_TOOLTIP_CLASS] = shared,\n            _a[INVERSE_TOOLTIP_CLASS] = !!className,\n            _a));\n        return (React.createElement(TooltipPopup, __assign({}, tooltipProps, { popupContent: tooltipContent, className: popupContainerClassName })));\n    };\n    SeriesTooltip.prototype.componentWillUnmount = function () {\n        this.context.observersStore.dispatch({\n            type: 'remove',\n            payload: this.chartObserver\n        });\n    };\n    SeriesTooltip.prototype.onShowTooltip = function (e) {\n        var anchor = e.anchor, style = e.style, shared = e.shared, className = e.className, crosshair = e.crosshair;\n        var context;\n        if (crosshair) {\n            return;\n        }\n        if (shared) {\n            context = this.createSharedTooltipContext(e);\n        }\n        else {\n            context = this.createTooltipContext(e);\n        }\n        this.setState({\n            popupShown: true,\n            popupAlign: anchor.align,\n            popupOffset: anchor.point,\n            popupContext: context,\n            popupStyles: style,\n            className: className,\n            shared: shared\n        });\n    };\n    SeriesTooltip.prototype.onHideTooltip = function () {\n        this.setState({\n            popupShown: false,\n            popupStyles: {},\n            className: undefined\n        });\n    };\n    SeriesTooltip.prototype.createSharedTooltipContext = function (e) {\n        var points = e.points, categoryText = e.categoryText;\n        var nameColumn = points.filter(function (point) { return typeof point.series.name !== 'undefined'; }).length > 0;\n        var colorMarker = e.series.length > 1;\n        var colspan = 1;\n        if (nameColumn) {\n            colspan++;\n        }\n        if (colorMarker) {\n            colspan++;\n        }\n        return {\n            categoryText: categoryText,\n            colorMarker: colorMarker,\n            colspan: colspan,\n            nameColumn: nameColumn,\n            points: e.points.map(function (point) { return new TooltipPoint(point, e.format); })\n        };\n    };\n    SeriesTooltip.prototype.createTooltipContext = function (e) {\n        var point = e.point, format = e.format;\n        return { point: new TooltipPoint(point, format) };\n    };\n    SeriesTooltip.prototype.findRenderFunctionByIndex = function (seriesIdx) {\n        var series = this.context.optionsStore.getState().series;\n        if (series !== undefined\n            && Array.isArray(series)\n            && series[seriesIdx] !== undefined\n            && series[seriesIdx].hasOwnProperty('tooltip')\n            && series[seriesIdx].tooltip.hasOwnProperty('render')) {\n            return series[seriesIdx].tooltip.render;\n        }\n        return null;\n    };\n    SeriesTooltip.prototype.findRenderFunction = function () {\n        var tooltip = this.context.optionsStore.getState().tooltip;\n        if (tooltip !== undefined\n            && tooltip.hasOwnProperty('render')) {\n            return tooltip.render;\n        }\n        return null;\n    };\n    SeriesTooltip.contextType = ChartContext;\n    return SeriesTooltip;\n}(React.Component));\nexport { SeriesTooltip };\n","/**\n * @hidden\n */\nvar Container = function (props) { return (props.children); };\nContainer.displayName = 'Container';\n/* eslint-disable max-len */\n/**\n * To provide support for React versions which do not support `React.Fragment`, the following component acts as its replacement. Returning an array is not an option as it blocks unit testing until [https://github.com/airbnb/enzyme/pull/1498#issuecomment-378413134](https://github.com/airbnb/enzyme/pull/1498#issuecomment-378413134) is released.\n */\nexport { Container };\n","var __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 __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};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { InstanceObserver } from '@progress/kendo-charts';\nimport { TooltipPopup } from './Popup';\nimport { ChartContext } from '../ChartContext';\nvar CROSSHAIR_TOOLTIP_CLASS = 'k-chart-crosshair-tooltip';\nvar INVERSE_TOOLTIP_CLASS = 'k-chart-tooltip-inverse';\n/**\n * @hidden\n */\nvar CrosshairTooltip = /** @class */ (function (_super) {\n    __extends(CrosshairTooltip, _super);\n    function CrosshairTooltip(props, context) {\n        var _this = _super.call(this, props, context) || this;\n        _this.state = {\n            popupShown: false\n        };\n        _this.chartObserver = new InstanceObserver(_this, {\n            showTooltip: 'onShowTooltip',\n            hideTooltip: 'onHideTooltip'\n        });\n        context.observersStore.dispatch({\n            type: 'add',\n            payload: _this.chartObserver\n        });\n        return _this;\n    }\n    CrosshairTooltip.prototype.render = function () {\n        var _a;\n        var _b = this.state, popupContend = _b.popupContend, className = _b.className, tooltipProps = __rest(_b, [\"popupContend\", \"className\"]);\n        var tooltipContent = this.state.popupShown ? function () { return popupContend; } : Function.prototype;\n        var popupContainerClassName = classNames((_a = {},\n            _a[CROSSHAIR_TOOLTIP_CLASS] = true,\n            _a[INVERSE_TOOLTIP_CLASS] = !!className,\n            _a));\n        return (React.createElement(TooltipPopup, __assign({}, tooltipProps, { popupContent: tooltipContent, className: popupContainerClassName })));\n    };\n    CrosshairTooltip.prototype.componentWillUnmount = function () {\n        this.context.observersStore.dispatch({\n            type: 'remove',\n            payload: this.chartObserver\n        });\n    };\n    CrosshairTooltip.prototype.onShowTooltip = function (e) {\n        var anchor = e.anchor, style = e.style, className = e.className, crosshair = e.crosshair, axisName = e.axisName, axisIndex = e.axisIndex, value = e.value;\n        var _a = this.props, name = _a.name, index = _a.index;\n        if (!crosshair) {\n            return;\n        }\n        if (axisName === name && axisIndex === index) {\n            this.setState({\n                popupShown: true,\n                popupAlign: anchor.align,\n                popupOffset: anchor.point,\n                popupContend: value,\n                popupStyles: style,\n                className: className\n            });\n        }\n    };\n    CrosshairTooltip.prototype.onHideTooltip = function () {\n        this.setState({\n            popupShown: false,\n            popupStyles: {},\n            className: undefined\n        });\n    };\n    CrosshairTooltip.contextType = ChartContext;\n    return CrosshairTooltip;\n}(React.Component));\nexport { CrosshairTooltip };\n","var __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 __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};\nimport * as React from 'react';\nimport { Container } from './../Container';\nimport { CrosshairTooltip } from './Crosshair';\nimport { ChartContext } from '../ChartContext';\nvar AXES = ['categoryAxis', 'valueAxis', 'xAxis', 'yAxis'];\nfunction mapTooltips(options) {\n    var map = {};\n    for (var idx = 0; idx < AXES.length; idx++) {\n        var tooltips = axesCrosshairTooltipOptions(options, AXES[idx]);\n        for (var tooltipIdx = 0; tooltipIdx < tooltips.length; tooltipIdx++) {\n            var tooltip = tooltips[tooltipIdx];\n            map[tooltip.name + tooltip.index] = tooltip;\n        }\n    }\n    return map;\n}\nfunction axesCrosshairTooltipOptions(options, name) {\n    var result = [];\n    if (options[name]) {\n        var axes = [].concat(options[name]);\n        for (var idx = 0; idx < axes.length; idx++) {\n            var tooltip = (axes[idx].crosshair || {}).tooltip;\n            if (tooltip && tooltip.visible) {\n                result.push({\n                    index: idx,\n                    name: name\n                });\n            }\n        }\n    }\n    return result;\n}\n/**\n * @hidden\n */\nvar CrosshairTooltipContainer = /** @class */ (function (_super) {\n    __extends(CrosshairTooltipContainer, _super);\n    function CrosshairTooltipContainer() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.state = {\n            tooltips: {}\n        };\n        _this.storeUnsubscriber = Function.prototype;\n        _this.subscriber = function () {\n            _this.setState({\n                tooltips: mapTooltips(_this.context.optionsStore.getState())\n            });\n        };\n        return _this;\n    }\n    CrosshairTooltipContainer.prototype.componentDidMount = function () {\n        // This is moved here as calls to the listed methods contains setState which is restricted before component mount\n        this.storeUnsubscriber = this.context.optionsStore.subscribe(this.subscriber);\n    };\n    CrosshairTooltipContainer.prototype.render = function () {\n        var tooltips = this.state.tooltips;\n        var childrenMap = Object.keys(tooltips).map(function (key) { return (React.createElement(CrosshairTooltip, __assign({}, tooltips[key], { key: key }))); });\n        return React.createElement(Container, null, childrenMap);\n    };\n    CrosshairTooltipContainer.prototype.componentWillUnmount = function () {\n        this.storeUnsubscriber();\n    };\n    CrosshairTooltipContainer.contextType = ChartContext;\n    return CrosshairTooltipContainer;\n}(React.Component));\nexport { CrosshairTooltipContainer };\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n    name: '@progress/kendo-react-charts',\n    productName: 'KendoReact',\n    productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n    publishDate: 1642516099,\n    version: '',\n    licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var __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 __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { registerForIntl, provideIntlService } from '@progress/kendo-react-intl';\nimport { DomEventsBuilder as ChartDomEventsBuilder, InstanceObserver } from '@progress/kendo-charts';\nimport { canUseDOM } from '@progress/kendo-react-common';\nimport { hasParent } from './utils/main';\nimport { DomEventsBuilder } from './events/dom-events-builder';\nimport { create as createEvent } from './events/chart-event-builder';\nimport { toDomEvent } from './events/dom-event';\nimport { loadTheme } from './theming/theme-service';\nimport createStore from './store/store';\nimport { optionsReducer, themeReducer, observersReducer } from './store/reducer';\nimport { toggle } from './utils/main';\nimport './defaults';\nimport { SeriesTooltip } from './tooltip/Series';\nimport { CrosshairTooltipContainer } from './tooltip/CrosshairContainer';\nimport { ChartContext } from './ChartContext';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from './package-metadata';\n/**\n * @hidden\n */\nvar BaseChart = /** @class */ (function (_super) {\n    __extends(BaseChart, _super);\n    function BaseChart(props) {\n        var _this = _super.call(this, props) || this;\n        /**\n         * @hidden\n         */\n        _this.chartInstance = null;\n        _this._element = null;\n        _this.optionsStore = {};\n        _this.optionsUnsubscriber = Function.prototype;\n        _this.themeStore = {};\n        _this.themeUnsubscriber = Function.prototype;\n        _this.observersStore = {};\n        _this.suppressTransitions = false;\n        /* Chart handlers */\n        /**\n         * @hidden\n         */\n        _this.onRender = function (e) {\n            if (_this.chartInstance !== null) {\n                _this.surface = e.sender.surface;\n                _this.trigger('render', e);\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.onLegendItemClick = function (e) {\n            if (_this.chartInstance !== null) {\n                /**\n                 * In \"controlled\" state the user should toggle the series data visibility\n                 */\n                if (_this.props.onLegendItemClick) {\n                    _this.trigger('legendItemClick', e);\n                }\n                else {\n                    var series = _this.optionsStore.getState().series;\n                    if (!series) {\n                        return;\n                    }\n                    var payload = {};\n                    var seriesIndex = e.seriesIndex, pointIndex = e.pointIndex;\n                    var seriesByIndex = series[seriesIndex];\n                    if (pointIndex === undefined) {\n                        payload = Object.assign({}, seriesByIndex, { visible: toggle(seriesByIndex.visible) });\n                    }\n                    else {\n                        var pv = seriesByIndex.pointVisibility = seriesByIndex.pointVisibility || [];\n                        pv[pointIndex] = toggle(pv[pointIndex]);\n                        payload = Object.assign({}, seriesByIndex);\n                    }\n                    _this.optionsStore.dispatch({\n                        chartCollectionIdxKey: \"series_\" + seriesIndex,\n                        payload: payload\n                    });\n                    _this.suppressTransitions = true;\n                }\n            }\n        };\n        /* Dom event handlers */\n        /**\n         * @hidden\n         */\n        _this.onWindowResize = function () {\n            if (_this.chartInstance !== null) {\n                _this.chartInstance.resize();\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.onChartMouseLeave = function (e) {\n            var domEvent = toDomEvent(_this, e);\n            var isDefaultPrevented = _this.triggerDomEvent('onMouseLeave', domEvent);\n            if (isDefaultPrevented) {\n                e.preventDefault();\n            }\n            else if (_this.chartInstance !== null) {\n                _this.chartInstance.hideElements();\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.onChildMouseLeave = function (e) {\n            var syntheticEvent = e.syntheticEvent;\n            if (_this.chartInstance && !hasParent(syntheticEvent.relatedTarget, _this.element)) {\n                _this.chartInstance.hideElements();\n            }\n            return false;\n        };\n        validatePackage(packageMetadata);\n        _this.optionsStore = createStore(optionsReducer);\n        _this.observersStore = createStore(observersReducer);\n        _this.childrenObserver = new InstanceObserver(_this, { onMouseLeave: 'onChildMouseLeave' });\n        _this.contextValue = {\n            optionsStore: _this.optionsStore,\n            observersStore: _this.observersStore,\n            childrenObserver: _this.childrenObserver\n        };\n        _this.themeStore = createStore(themeReducer);\n        _this.chartObserver = new InstanceObserver(_this, { render: 'onRender', legendItemClick: 'onLegendItemClick' });\n        return _this;\n    }\n    Object.defineProperty(BaseChart.prototype, \"element\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    BaseChart.prototype.componentDidMount = function () {\n        loadTheme(this.themeStore, this.instantiateCoreChart.bind(this));\n        this.optionsUnsubscriber = this.optionsStore.subscribe(this.refresh.bind(this));\n        this.themeUnsubscriber = this.themeStore.subscribe(this.refresh.bind(this));\n        window.addEventListener('resize', this.onWindowResize);\n    };\n    /**\n     * @hidden\n     */\n    BaseChart.prototype.componentWillUnmount = function () {\n        this.optionsUnsubscriber();\n        this.themeUnsubscriber();\n        if (this.chartInstance !== null) {\n            this.chartInstance.destroy();\n            this.chartInstance = null;\n        }\n        window.removeEventListener('resize', this.onWindowResize);\n    };\n    /**\n     * @hidden\n     */\n    BaseChart.prototype.componentDidUpdate = function (prevProps) {\n        var _a = this.props, dir = _a.dir, children = _a.children, spreadProps = __rest(_a, [\"dir\", \"children\"]);\n        if (this.chartInstance !== null) {\n            var currentIntlService = provideIntlService(this);\n            var chartService = this.chartInstance.chartService;\n            var localeChanged = currentIntlService.locale !== chartService._intlService.locale;\n            var shouldUpdate = Object.entries(prevProps)\n                .filter(function (keyValue) { return (keyValue[0] !== 'dir' && keyValue[0] !== 'children'); })\n                .some(function (keyValue) {\n                var key = keyValue[0], value = keyValue[1];\n                return !(spreadProps.hasOwnProperty(key) && spreadProps[key] === value);\n            });\n            if (localeChanged) {\n                this.chartInstance.chartService._intlService = currentIntlService;\n                this.chartInstance.chartService.format._intlService = currentIntlService;\n                if (!shouldUpdate) {\n                    this.chartInstance.noTransitionsRedraw();\n                }\n            }\n            if (shouldUpdate) {\n                this.refresh();\n            }\n            if (prevProps.dir !== dir) {\n                this.chartInstance.setDirection(this.getDirection(dir));\n            }\n        }\n    };\n    /**\n     * @hidden\n     */\n    BaseChart.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, _b = _a.style, style = _b === void 0 ? {} : _b, className = _a.className, wrapper = _a.wrapper, children = _a.children;\n        var chartStyles = Object.assign({}, style, { position: 'relative' });\n        var content = React.createElement(wrapper, {\n            className: className,\n            style: chartStyles,\n            key: 'chartElement'\n        }, (React.createElement(\"div\", { onMouseLeave: this.onChartMouseLeave, ref: function (el) { return _this._element = el; }, className: \"k-chart-surface\" }, children)));\n        return (React.createElement(ChartContext.Provider, { value: this.contextValue },\n            React.createElement(SeriesTooltip, { key: \"seriesTooltip\" }),\n            React.createElement(CrosshairTooltipContainer, { key: \"crosshairTooltips\" }),\n            content));\n    };\n    /**\n     * @hidden\n     */\n    BaseChart.prototype.getDirection = function (dir) {\n        var _this = this;\n        var directionFromWindow = function () { return canUseDOM && window.getComputedStyle(_this.element).direction; };\n        var direction = dir !== undefined ? dir : (directionFromWindow() || 'ltr');\n        return direction === 'rtl';\n    };\n    /**\n     * @hidden\n     */\n    BaseChart.prototype.getChartOptions = function () {\n        var _a = this.props, renderAs = _a.renderAs, pannable = _a.pannable, zoomable = _a.zoomable, paneDefaults = _a.paneDefaults, panes = _a.panes, transitions = _a.transitions, seriesColors = _a.seriesColors, seriesDefaults = _a.seriesDefaults, axisDefaults = _a.axisDefaults, deriveOptionsFromParent = _a.deriveOptionsFromParent;\n        var chartOptions = {};\n        // undefined clears chart defaults which leads to several issues\n        if (renderAs !== undefined) {\n            chartOptions.renderAs = renderAs;\n        }\n        if (pannable !== undefined) {\n            chartOptions.pannable = pannable;\n        }\n        if (zoomable !== undefined) {\n            chartOptions.zoomable = zoomable;\n        }\n        if (paneDefaults !== undefined) {\n            chartOptions.paneDefaults = paneDefaults;\n        }\n        if (panes !== undefined) {\n            chartOptions.panes = panes;\n        }\n        if (transitions !== undefined) {\n            chartOptions.transitions = transitions;\n        }\n        if (seriesColors !== undefined) {\n            chartOptions.seriesColors = seriesColors;\n        }\n        if (seriesDefaults !== undefined) {\n            chartOptions.seriesDefaults = seriesDefaults;\n        }\n        if (axisDefaults !== undefined) {\n            chartOptions.axisDefaults = axisDefaults;\n        }\n        chartOptions = Object.assign(chartOptions, this.optionsStore.getState());\n        if (deriveOptionsFromParent) {\n            chartOptions = deriveOptionsFromParent(chartOptions);\n        }\n        return chartOptions;\n    };\n    /**\n     * @hidden\n     */\n    BaseChart.prototype.refresh = function () {\n        if (this.chartInstance !== null) {\n            var themeOptions = this.themeStore.getState();\n            var chartOptions = this.getChartOptions();\n            var transitions = chartOptions.transitions;\n            if (this.suppressTransitions) {\n                chartOptions.transitions = false;\n            }\n            if (this.props.onRefresh) {\n                this.props.onRefresh.call(undefined, chartOptions, themeOptions, this.chartInstance);\n            }\n            else {\n                this.chartInstance.setOptions(chartOptions, themeOptions);\n            }\n            if (this.suppressTransitions) {\n                chartOptions.transitions = transitions;\n                this.suppressTransitions = false;\n            }\n        }\n    };\n    /**\n     * @hidden\n     */\n    BaseChart.prototype.instantiateCoreChart = function () {\n        var _a = this.props, dir = _a.dir, chartConstructor = _a.chartConstructor;\n        var chartOptions = this.getChartOptions();\n        this.chartInstance = new chartConstructor(this.element, chartOptions, this.themeStore.getState(), {\n            rtl: this.getDirection(dir),\n            intlService: provideIntlService(this),\n            observer: this.chartObserver,\n            sender: this\n        });\n    };\n    /* Triggers public dom event handlers */\n    /**\n     * @hidden\n     */\n    BaseChart.prototype.trigger = function (name, e) {\n        var target = this.props.getTarget();\n        var eventObject = createEvent(name, e, target);\n        var handler = 'on' + name.charAt(0).toUpperCase() + name.slice(1);\n        var observers = this.observersStore.getState();\n        var isDefaultPrevented = false;\n        for (var idx = 0; idx < observers.length; idx++) {\n            if (observers[idx].trigger(name, e)) {\n                isDefaultPrevented = true;\n            }\n        }\n        /* We have not prevented the event internally, now pass it to the user */\n        if (isDefaultPrevented === false\n            && eventObject\n            && this.props.hasOwnProperty(handler)) {\n            this.props[handler].call(undefined, eventObject);\n            return eventObject.isDefaultPrevented && eventObject.isDefaultPrevented();\n        }\n        return isDefaultPrevented;\n    };\n    /* Used by (event)InstanceObserver to check the wrapper for supported events */\n    /**\n     * @hidden\n     */\n    BaseChart.prototype.requiresHandlers = function (names) {\n        for (var idx = 0; idx < names.length; idx++) {\n            var name_1 = names[idx];\n            var handler = 'on' + name_1.charAt(0).toUpperCase() + name_1.slice(1);\n            if (this.props.hasOwnProperty(handler)) {\n                return true;\n            }\n        }\n        return false;\n    };\n    /* Triggers private dom event handlers */\n    /**\n     * @hidden\n     */\n    BaseChart.prototype.triggerDomEvent = function (name, e) {\n        var observers = this.observersStore.getState();\n        var isDefaultPrevented = false;\n        for (var idx = 0; idx < observers.length; idx++) {\n            if (observers[idx].trigger(name, e)) {\n                isDefaultPrevented = true;\n            }\n        }\n        return isDefaultPrevented;\n    };\n    /**\n     * @hidden\n     */\n    BaseChart.propTypes = {\n        dir: PropTypes.string,\n        renderAs: PropTypes.oneOf(['svg', 'canvas'])\n    };\n    /**\n     * @hidden\n     */\n    BaseChart.defaultProps = {\n        renderAs: 'svg'\n    };\n    return BaseChart;\n}(React.Component));\nexport { BaseChart };\nregisterForIntl(BaseChart);\nChartDomEventsBuilder.register(DomEventsBuilder);\n","var __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})();\nimport * as React from 'react';\nimport { InstanceObserver } from '@progress/kendo-charts';\nimport { ChartContext } from './ChartContext';\n/**\n * @hidden\n */\nvar DonutCenter = /** @class */ (function (_super) {\n    __extends(DonutCenter, _super);\n    function DonutCenter(props, context) {\n        var _this = _super.call(this, props, context) || this;\n        _this.state = {\n            donutCenterStyles: null\n        };\n        _this.chartObserver = new InstanceObserver(_this, {\n            render: 'onRender'\n        });\n        context.observersStore.dispatch({\n            type: 'add',\n            payload: _this.chartObserver\n        });\n        return _this;\n    }\n    DonutCenter.prototype.render = function () {\n        var render = this.props.render;\n        var donutCenterStyles = this.state.donutCenterStyles;\n        var renderer = null;\n        if (render && donutCenterStyles) {\n            renderer = (React.createElement(\"div\", { className: \"k-chart-donut-center\", style: donutCenterStyles }, render()));\n        }\n        return renderer;\n    };\n    DonutCenter.prototype.onRender = function (event) {\n        var series = this.context.optionsStore.getState().series;\n        var firstSeries = Array.isArray(series) ? series[0] : null;\n        var charts = event.sender._plotArea.charts;\n        if (!firstSeries || firstSeries.type !== 'donut' || charts[0].points.length === 0) {\n            return;\n        }\n        var sector = charts[0].points[0].sector;\n        var radius = sector.innerRadius;\n        var top = sector.center.y - radius;\n        var left = sector.center.x - radius;\n        var size = radius * 2;\n        this.setState({\n            donutCenterStyles: {\n                height: size,\n                left: left,\n                top: top,\n                width: size\n            }\n        });\n    };\n    DonutCenter.contextType = ChartContext;\n    return DonutCenter;\n}(React.Component));\nexport { DonutCenter };\n","var __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 __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};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport { BaseChart } from './BaseChart';\nimport { DonutCenter } from './DonutCenter';\nimport { Chart as KendoChart } from '@progress/kendo-charts';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * Represents the [KendoReact Chart component]({% slug overview_chart_charts %}).\n *\n * @example\n * ```jsx\n * import {\n *     Chart,\n *     ChartSeries,\n *     ChartSeriesItem,\n *     ChartCategoryAxis,\n *     ChartCategoryAxisItem,\n *     ChartTitle,\n *     ChartLegend\n * } from '@progress/kendo-react-charts';\n *\n * const categories = [ 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 ];\n * const series = [ {\n *     name: 'India',\n *     data: [ 3.907, 7.943, 7.848, 9.284, 9.263, 9.801, 3.890, 8.238, 9.552, 6.855 ]\n * }, {\n *     name: 'Russian Federation',\n *     data: [ 4.743, 7.295, 7.175, 6.376, 8.153, 8.535, 5.247, -7.832, 4.3, 4.3 ]\n * }, {\n *     name: 'Germany',\n *     data: [ 0.010, -0.375, 1.161, 0.684, 3.7, 3.269, 1.083, -5.127, 3.690, 2.995 ]\n * }, {\n *     name: 'World',\n *     data: [ 1.988, 2.733, 3.994, 3.464, 4.001, 3.939, 1.333, -2.245, 4.339, 2.727 ]\n * } ];\n *\n * const ChartContainer = () => (\n *     <Chart>\n *         <ChartTitle text=\"Gross domestic product growth GDP annual\" />\n *         <ChartLegend position=\"top\" orientation=\"horizontal\" />\n *         <ChartCategoryAxis>\n *             <ChartCategoryAxisItem categories={categories} startAngle={45} />\n *         </ChartCategoryAxis>\n *         <ChartSeries>\n *             {series.map((item, idx) => (\n *                 <ChartSeriesItem\n *                     key={idx}\n *                     type=\"column\"\n *                     data={item.data}\n *                     name={item.name}\n *                 />))}\n *         </ChartSeries>\n *     </Chart>\n * );\n *\n * ReactDOM.render(\n *     <ChartContainer />,\n *     document.querySelector('my-app')\n * );\n * ```\n */\nvar Chart = /** @class */ (function (_super) {\n    __extends(Chart, _super);\n    function Chart() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.getTarget = function () {\n            return _this;\n        };\n        return _this;\n    }\n    Object.defineProperty(Chart.prototype, \"chartInstance\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            if (this._baseChart !== null) {\n                return this._baseChart.chartInstance;\n            }\n            return null;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Chart.prototype, \"surface\", {\n        /**\n         * The Drawing `Surface` of the Chart.\n         */\n        get: function () {\n            if (this._baseChart !== null) {\n                return this._baseChart.surface;\n            }\n            return null;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Chart.prototype, \"element\", {\n        /**\n         * The DOM element of the Chart.\n         */\n        get: function () {\n            if (this._baseChart !== null) {\n                return this._baseChart.element;\n            }\n            return null;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    Chart.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, donutCenterRender = _a.donutCenterRender, children = _a.children, className = _a.className, baseChartProps = __rest(_a, [\"donutCenterRender\", \"children\", \"className\"]);\n        return (React.createElement(BaseChart, __assign({}, baseChartProps, { ref: function (baseChart) { return _this._baseChart = baseChart; }, chartConstructor: KendoChart, getTarget: this.getTarget, wrapper: \"div\", className: classNames('k-chart k-widget', className) }),\n            children,\n            React.createElement(DonutCenter, { render: donutCenterRender })));\n    };\n    return Chart;\n}(React.Component));\nexport { Chart };\n","var __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 __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};\nimport * as React from 'react';\nimport { ChartContext } from '../../ChartContext';\n/**\n * @hidden\n */\nvar CollectionConfigurationComponent = /** @class */ (function (_super) {\n    __extends(CollectionConfigurationComponent, _super);\n    function CollectionConfigurationComponent(props, context) {\n        var _this = _super.call(this, props, context) || this;\n        _this.optionsStore = context.optionsStore;\n        return _this;\n    }\n    CollectionConfigurationComponent.prototype.renderChildren = function (child, index) {\n        var children = child.props.children;\n        var _a = this.props, _chartKey = _a._chartKey, _parentStore = _a._parentStore;\n        var collectionItemProps = __assign({}, child.props, { _chartCollectionIdxKey: _chartKey + \"_\" + index, _parentStore: _parentStore });\n        return React.cloneElement(child, collectionItemProps, children);\n    };\n    CollectionConfigurationComponent.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, _chartKey = _a._chartKey, _parentStore = _a._parentStore, children = _a.children;\n        var store = _parentStore || this.optionsStore;\n        store.dispatch({\n            chartKey: _chartKey,\n            payload: []\n        });\n        return React.Children.map(children, function (child, index) {\n            if (React.isValidElement(child)) {\n                return _this.renderChildren(child, index);\n            }\n            return child;\n        });\n    };\n    CollectionConfigurationComponent.contextType = ChartContext;\n    return CollectionConfigurationComponent;\n}(React.Component));\nexport default CollectionConfigurationComponent;\n","var __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 __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};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport createStore from './../../store/store';\nimport { optionsReducer } from './../../store/reducer';\nimport { ChartContext } from '../../ChartContext';\n/**\n * @hidden\n */\nvar ConfigurationComponent = /** @class */ (function (_super) {\n    __extends(ConfigurationComponent, _super);\n    function ConfigurationComponent(props, context) {\n        var _this = _super.call(this, props, context) || this;\n        _this.optionsStore = context.optionsStore;\n        _this.childStore = createStore(optionsReducer);\n        return _this;\n    }\n    ConfigurationComponent.prototype.render = function () {\n        var _this = this;\n        var children = this.props.children;\n        return children !== undefined ? React.Children.map(children, function (child) {\n            if (React.isValidElement(child)) {\n                return _this.renderChildren(child);\n            }\n            return child;\n        }) : null;\n    };\n    ConfigurationComponent.prototype.componentDidMount = function () {\n        this.dispatch();\n    };\n    ConfigurationComponent.prototype.componentDidUpdate = function () {\n        this.dispatch();\n    };\n    ConfigurationComponent.prototype.dispatch = function () {\n        var _a = this.props, _chartKey = _a._chartKey, _chartCollectionIdxKey = _a._chartCollectionIdxKey, _parentStore = _a._parentStore, children = _a.children, options = __rest(_a, [\"_chartKey\", \"_chartCollectionIdxKey\", \"_parentStore\", \"children\"]);\n        var store = _parentStore || this.optionsStore;\n        store.dispatch({\n            chartKey: _chartKey,\n            chartCollectionIdxKey: _chartCollectionIdxKey,\n            payload: Object.assign({}, options, this.childStore.getState())\n        });\n    };\n    ConfigurationComponent.prototype.renderChildren = function (child) {\n        var children = child.props.children;\n        var configurationItemProps = __assign({}, child.props, { _parentStore: this.childStore });\n        return React.cloneElement(child, configurationItemProps, children);\n    };\n    ConfigurationComponent.contextType = ChartContext;\n    return ConfigurationComponent;\n}(React.Component));\nexport default ConfigurationComponent;\n","var __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};\nimport * as React from 'react';\nimport ConfigurationComponent from './base/ConfigurationComponent';\nvar ChartSeriesItem = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props)));\n};\nChartSeriesItem.displayName = 'ChartSeriesItem';\nexport default ChartSeriesItem;\n","var __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};\nimport * as React from 'react';\nimport CollectionConfigurationComponent from './base/CollectionConfigurationComponent';\nimport ChartSeriesItem from './SeriesItem';\nimport { validateChildren } from '../utils/main';\nvar ChartSeries = function (props) {\n    return (React.createElement(CollectionConfigurationComponent, __assign({}, props, { _chartKey: \"series\" })));\n};\nChartSeries.propTypes = {\n    children: function (props, propName, componentName) {\n        return validateChildren(props, propName, componentName, ChartSeriesItem);\n    }\n};\nexport default ChartSeries;\n","var __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};\nimport * as React from 'react';\nimport ConfigurationComponent from './base/ConfigurationComponent';\nvar ChartLegend = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"legend\" })));\n};\nChartLegend.defaultProps = {\n    visible: true\n};\nexport default ChartLegend;\n","export const CheckIfNYCDOELicense = (licenseModel: string) => {\r\n    if (licenseModel && licenseModel === \"Unlimited use of catalog for unlimited users\") {\r\n        return true\r\n    } else {\r\n        return false\r\n    }\r\n\r\n}","\r\n\r\nimport {\r\n  Chart,\r\n  ChartLegend,\r\n  ChartSeries,\r\n  ChartSeriesItem,\r\n} from '@progress/kendo-react-charts';\r\n\r\nimport 'hammerjs';\r\nimport { CheckIfNYCDOELicense } from '../../helpers/helper';\r\n\r\n\r\ninterface Data {\r\n  kind: string,\r\n  share: number,\r\n  color: string\r\n}\r\n\r\ninterface SchoolLicenseUsage {\r\n  id: number,\r\n  quantityAllocated: number,\r\n  quantityAssigned: number,\r\n  vendorId: number,\r\n  vendorName: string,\r\n  vendorModel: string\r\n}\r\n\r\n\r\n\r\nfunction ChartContainer(data: any) {\r\n  let schoolLicenseUsage: SchoolLicenseUsage[] = [];\r\n  let isDOELicense = data.data &&  CheckIfNYCDOELicense(data.data.vendorModel);\r\n\r\n  schoolLicenseUsage.push(data.data);\r\n  let schoolLicenseUsageChartData: Data[] = [];\r\n  schoolLicenseUsageChartData.push(\r\n    { kind: \"Used\", share: schoolLicenseUsage[0].quantityAssigned, color: \"#E87511\" },\r\n    { kind: \"Unused\", share: isDOELicense ? Number.MAX_SAFE_INTEGER : (schoolLicenseUsage[0].quantityAllocated - schoolLicenseUsage[0].quantityAssigned), color: \"#d4dae3\" }\r\n  );\r\n\r\n  const donutCenterRender = () => (<span style={{ fontSize: \"15px\" }}>{schoolLicenseUsage[0].quantityAssigned}/ {isDOELicense ? 'Unlimited' : schoolLicenseUsage[0].quantityAllocated}</span>);\r\n\r\n  if (schoolLicenseUsageChartData.length > 0) {\r\n    return (\r\n      <Chart renderAs='svg' style={{ width: \"120px\", height: \"120px\" }} donutCenterRender={donutCenterRender}>\r\n        <ChartSeries>\r\n          <ChartSeriesItem type=\"donut\" data={schoolLicenseUsageChartData} outliers={{ rotation: 5 }} categoryField=\"kind\" field=\"share\" color=\"color\" holeSize={45} size={8} />\r\n        </ChartSeries>\r\n        <ChartLegend visible={false} />\r\n      </Chart>\r\n    );\r\n  } else {\r\n    return (\r\n      <div>No Assigned Licenses</div>\r\n    );\r\n  }\r\n}\r\n\r\nexport default ChartContainer\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import * as React from 'react';\r\nimport * as ReactDOM from 'react-dom';\r\nimport courseService from '../../services/CoursesService'\r\nimport {\r\n  Chart,\r\n  ChartArea,\r\n  ChartLegend,\r\n  ChartSeries,\r\n  ChartSeriesItem,\r\n  ChartSeriesLabels\r\n} from '@progress/kendo-react-charts';\r\nimport 'hammerjs';\r\n\r\n\r\ninterface CourseStatusList {\r\n  courseStatus: string,\r\n  courseCount: string\r\n}\r\n\r\nconst labelContent = (e: any) => (e.text + \" - \" + e.value);\r\n\r\nfunction CourseChartContainer(data: any) {\r\n  let Tdata: CourseStatusList[] = []\r\n  if (data.data.length > 0) {\r\n    Tdata = data.data\r\n  } \r\n  \r\n  if (Tdata.length > 0) {\r\n    return (\r\n      <Chart renderAs='svg'  style={{fontSize:\"20px\",height:\"210px\"}}>\r\n        <ChartSeries >\r\n          <ChartSeriesItem type=\"donut\" data={Tdata} categoryField=\"courseStatus\" field=\"courseCount\"  holeSize={80} size={20}>\r\n          </ChartSeriesItem>\r\n        </ChartSeries>\r\n        <ChartLegend visible={true}  position=\"right\" labels={\r\n          { margin: 5 ,content:labelContent}\r\n        } />\r\n      </Chart>\r\n    )\r\n  } else {\r\n    return (\r\n      <div>No Courses</div>\r\n    ) \r\n  }\r\n};\r\n\r\nexport default CourseChartContainer\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import { AxiosInstances as AxiosInstance } from './BaseService'\r\nimport ICourseVendorContent from '../model/ICourseVendorContent';\r\nimport ICourses from '../model/ICourses';\r\nimport ICourseDetail from '../model/ICourseDetail';\r\nimport IMergeCourses from '../model/IMergeCourses';\r\nimport IMultipleCoursesVendorContent from '../model/IMultipleCoursesVendorContent';\r\nimport internal from 'stream';\r\nimport IAddMultipleCoursesVendorContent from '../model/IAddMultipleCoursesVendorContent';\r\nexport default {\r\n    getCourses: (schoolDBN: string, schoolYear: number, pageNumber: number, pageSize: number, orderBy: string) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Schools/${schoolDBN}/${schoolYear}/Courses?pageNumber=${pageNumber}&pageSize=${pageSize}&orderBy=${orderBy}`,\r\n        }),\r\n    getStarsCourses: (sharedCourseUniqueId: string, schoolDBN: string, schoolYear: number, pageNumber: number, pageSize: number) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Courses/${schoolYear}/Stars/${sharedCourseUniqueId}/${schoolDBN}/${pageNumber}/${pageSize}`,\r\n        }),\r\n\r\n    searchStarsCourseByName: (sharedCourseUniqueId: string, schoolDBN: string, schoolYear: number, pageNumber: number, pageSize: number, searchCourseName: string) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Courses/${schoolYear}/Stars/${sharedCourseUniqueId}/${schoolDBN}/${pageNumber}/${pageSize}/${searchCourseName}`,\r\n        }),\r\n\r\n    filterCourses: (schoolDBN: string, schoolYear: number, pageNumber: number, pageSize: number, orderBy: string, searchCourseName: string , searchCourseStatus: string , searchCourseType: string,searchUnpublishedStudents:string) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Schools/${schoolDBN}/${schoolYear}/Courses?pageNumber=${pageNumber}&pageSize=${pageSize}&orderBy=${orderBy}&searchCourseName=${searchCourseName}&searchCourseStatus=${searchCourseStatus}&searchCourseType=${searchCourseType}&searchUnpublishedStudents=${searchUnpublishedStudents}`,\r\n        }),\r\n    filterCoursesByNameAndStatus: (schoolDBN: string, schoolYear: number, pageNumber: number, pageSize: number, orderBy: string, searchCourseStatus: string, searchCourseName: string,) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Schools/${schoolDBN}/${schoolYear}/Courses/${pageNumber}/${pageSize}/${orderBy}/${searchCourseStatus}/${searchCourseName}`,\r\n        }),\r\n    filterCoursesByStatus: (schoolDBN: string, schoolYear: number, pageNumber: number, pageSize: number, orderBy: string, searchCourseStatus: string) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Schools/${schoolDBN}/${schoolYear}/Courses/${pageNumber}/${pageSize}/${orderBy}/${searchCourseStatus}`,\r\n        }),\r\n    getCourseDetail: (courseId: number, schoolDBN: string) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Schools/${schoolDBN}/Courses/${courseId}`,\r\n        }),\r\n\r\n    getCourseStatus: () =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Courses/CourseStatus`,\r\n        }),\r\n    getUnassignedVendorContentData: (courseId: number, schoolDBN: string) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Schools/${schoolDBN}/Courses/${courseId}/UnassignedVendorContent`,\r\n        }),\r\n    getVendorContentUnassignedCourses: (schoolDBN: string,vendorContentId:number,vendorId:number) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Schools/${schoolDBN}/${vendorContentId}/${vendorId}/UnassignedCourses`,\r\n        }),       \r\n    getIndividualCoursesBySharedCourseId: (courseId: number) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/IndividualCourses/${courseId}`,\r\n        }),\r\n    getVendorContentData: (courseId: number, schoolDBN: string) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Schools/${schoolDBN}/Courses/${courseId}/VendorContent`,\r\n        }),\r\n    post: (requestdata: ICourseVendorContent) =>\r\n        AxiosInstance({\r\n            'method': 'POST',\r\n            'url': '/Courses/VendorContent',\r\n            'data': requestdata\r\n        }),\r\n    postMultipleCoursesVendorContent: (requestdata: IAddMultipleCoursesVendorContent) =>\r\n        AxiosInstance({\r\n            'method': 'POST',\r\n            'url': '/Courses/VendorContent/Add',\r\n            'data': requestdata\r\n        }),\r\n    postVendorContentMultipleCourses: (requestdata: IMultipleCoursesVendorContent) =>\r\n        AxiosInstance({\r\n            'method': 'POST',\r\n            'url': '/MultipleCourses/VendorContent',\r\n            'data': requestdata\r\n        }),\r\n    delete: (requestdata: ICourseVendorContent) =>\r\n        AxiosInstance({\r\n            'method': 'POST',\r\n            'url': '/Courses/VendorContent/Delete',\r\n            'data': requestdata\r\n        }),\r\n    edit: (requestdata: ICourses) =>\r\n        AxiosInstance({\r\n            'method': 'PUT',\r\n            'url': '/Courses/CourseName',\r\n            'data': requestdata\r\n        }),\r\n    merge: (requestdata: IMergeCourses) =>\r\n        AxiosInstance({\r\n            'method': 'PUT',\r\n            'url': '/Courses/Merge',\r\n            'data': requestdata\r\n        }),\r\n    postCourse: (requestdata: ICourseDetail) =>\r\n        AxiosInstance({\r\n            'method': 'POST',\r\n            'url': '/Courses/Course',\r\n            'data': requestdata\r\n        }),\r\n\r\n    editCourse: (requestdata: ICourseDetail) =>\r\n        AxiosInstance({\r\n            'method': 'PUT',\r\n            'url': '/Courses/Course',\r\n            'data': requestdata\r\n        }),\r\n\r\n    addIndividualCourses: (requestdata: any) =>\r\n        AxiosInstance({\r\n            'method': 'POST',\r\n            'url': '/Courses/AddIndividualCourses',\r\n            'data': requestdata\r\n        }),\r\n    deleteIndividualCourses: (requestdata: any) =>\r\n        AxiosInstance({\r\n            'method': 'POST',\r\n            'url': '/Courses/DeleteIndividualCourses',\r\n            'data': requestdata\r\n        }),\r\n\r\n    GetCourseStatusChart: (schoolDBN: string, schoolYear: number) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Schools/Chart/${schoolDBN}/Courses/${schoolYear}`,\r\n        }),\r\n\r\n    publishCourse: (requestdata: ICourseDetail) =>\r\n        AxiosInstance({\r\n            'method': 'PUT',\r\n            'url': '/Courses/publish',\r\n            'data': requestdata\r\n        }),\r\n\r\n    deleteCourse: (requestdata: ICourseDetail) =>\r\n        AxiosInstance({\r\n            'method': 'PUT',\r\n            'url': '/Courses/delete',\r\n            'data': requestdata\r\n        }),\r\n\r\n    closeCourse: (requestdata: ICourseDetail) =>\r\n        AxiosInstance({\r\n            'method': 'PUT',\r\n            'url': '/Courses/close',\r\n            'data': requestdata\r\n        }),\r\n\r\n    reOpenCourse: (requestdata: ICourseDetail) =>\r\n        AxiosInstance({\r\n            'method': 'PUT',\r\n            'url': '/Courses/reopen',\r\n            'data': requestdata\r\n        }),\r\n\r\n    getLicenseSummary: (courseId: number) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Courses/${courseId}/LicenseSummary`,\r\n        }),\r\n\r\n}","\r\nimport ILicenseAllocation from '../model/ILicenseAllocation'\r\nimport { AxiosInstances as AxiosInstance} from './BaseService'\r\n\r\nexport default {\r\n   \r\n    getAllocatedVendorsDetail: (locationCode: string , schoolYear : number ) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Schools/${locationCode}/AllocatedVendorsDetail/${schoolYear}`\r\n        }),\r\n    getAllocatedVendorDetailById: (locationCode: string, vendorId: number) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Schools/${locationCode}/AllocatedVendors/${vendorId}/VendorContents`\r\n        }),\r\n               //get School License chart data- hossni 14/6\r\n    GetSchoolLicenseUsageChart: (locationCode: string, year: string) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Schools/${locationCode}/AllocatedVendors/${year}/SchoolLicenseUsageChart`\r\n        }),\r\n\r\n        GetSchoolLicenseUsageReport: (locationCode: string, year: string) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Schools/${locationCode}/AllocatedVendors/${year}/SchoolLicenseUsageReport`\r\n        }),\r\n    getNonAllocatedVendors: (locationCode: string , schoolYear : number) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Schools/${locationCode}/NonAllocatedVendors/${schoolYear}`\r\n        }),\r\n    getAllocatedVendors: (locationCode: string , schoolYear : number) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Schools/${locationCode}/AllocatedVendors/${schoolYear}`\r\n        }),\r\n    post: (requestdata: ILicenseAllocation) =>\r\n        AxiosInstance({\r\n            'method': 'POST',\r\n            'url': '/LicenseAllocation',\r\n            'data': requestdata\r\n        }),\r\n    put: (requestdata: ILicenseAllocation) =>\r\n        AxiosInstance({\r\n            'method': 'PUT',\r\n            'url': '/LicenseAllocation',\r\n            'data': requestdata\r\n        }),\r\n    postTransfer: (requestdata: ILicenseAllocation) =>\r\n        AxiosInstance({\r\n            'method': 'POST',\r\n            'url': '/LicenseAllocation/Transfer',\r\n            'data': requestdata\r\n        })\r\n}","import React, { useState, useEffect, useContext } from 'react';\r\nimport AnnouncementDisplay from '../components/announcement/AnnouncementDisplay';\r\nimport ChartContainer from './charts/licenseChart';\r\nimport CourseChartContainer from './charts/CourseChart'\r\nimport courseService from '../services/CoursesService'\r\nimport licenseAllocationService from '../services/LicenseAllocation'\r\nimport { LocationContext, Year } from '../services/AppContext'\r\n\r\ninterface ILocationCode {\r\n  id: string,\r\n}\r\n\r\n\r\ninterface CourseStatusList {\r\n  courseStatus: string,\r\n  courseCount: string\r\n}\r\n\r\ninterface SchoolLicenseUsage {\r\n  id: number,\r\n  quantityAllocated: number,\r\n  quantityAssigned: number, \r\n  vendorId: number,\r\n  vendorName: string\r\n}\r\nexport default function Dashboard(location: ILocationCode) {\r\n\r\n    // get locationCode and schoolYear from dropDown - hossni 14/6\r\n  const { locationCode } = useContext(LocationContext);\r\n  const { orginalSchoolYear } = useContext(Year);\r\n \r\n  const [courseStatusList, setcourseStatusList] = useState<CourseStatusList[]>([]);\r\n  const [schoolLicenseUsageList, setSchoolLicenseUsage] = useState<SchoolLicenseUsage[]>([]);\r\n  useEffect(() => {\r\n    if(locationCode != \"\" && orginalSchoolYear.id != \"\"){\r\n      courseService.GetCourseStatusChart(locationCode, +orginalSchoolYear.id).then(response => {\r\n        setcourseStatusList(response.data);\r\n      })\r\n      licenseAllocationService.GetSchoolLicenseUsageChart(locationCode, orginalSchoolYear.id).then(response => {\r\n        setSchoolLicenseUsage(response.data)\r\n      }) \r\n    }\r\n  \r\n  }, [locationCode, orginalSchoolYear.id]);\r\n\r\n  return (\r\n    <div>\r\n      <AnnouncementDisplay />\r\n      <div className=\"row mb-4\" >\r\n        <div className=\"col-md-6\">\r\n          <div className=\"card\">\r\n            <div className=\"card-header bg-blue-gray d-flex justify-content-between align-items-center\">\r\n              <div className=\"h3 mb-0 font-weight-normal\">\r\n                Courses ({courseStatusList.reduce((accumulator, currentValue) => accumulator + +currentValue.courseCount,0)})\r\n                </div>\r\n            </div>\r\n            <div className=\"card-body text-center\">\r\n            {/* // get locationCode and schoolYear from dropDown - hossni 14/6 */} \r\n              <CourseChartContainer data={courseStatusList} />\r\n            </div>\r\n          </div>   \r\n        </div>\r\n        <div className=\"col-md-6 mt-4 mt-md-0\">\r\n          <div className=\"card\">\r\n            <div className=\"card-header bg-blue-gray d-flex justify-content-between align-items-center\">\r\n              <div className=\"h3 mb-0 font-weight-normal\">\r\n                Assigned Licenses\r\n              </div>\r\n            </div>\r\n            <div className=\"card-body text-center\">\r\n              <div className=\"row\">\r\n                {\r\n                  schoolLicenseUsageList.length > 0 ? schoolLicenseUsageList.map(vendor => <div className=\"col-lg-4 col-sm-6 d-flex flex-column justify-content-between align-items-center\" key={vendor.id} ><div> <ChartContainer data={vendor} /> </div> <div className=\"small\">{vendor.vendorName}</div> </div>) : <div className=\"col-sm-12\"> <div>No Assigned Licenses</div> </div>\r\n                }\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n\r\n    </div>\r\n  )\r\n}\r\n\r\n","import axios from 'axios'\r\nimport { AxiosInstances as AxiosInstance } from './BaseService'\r\n\r\nexport default {\r\n    getData: () =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': '/SetupSchool',\r\n        }),\r\n\r\n    getSchoolsFromDaap: () =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': '/SetupSchool/Daap',\r\n        }),\r\n\r\n        getSchoolOrgFromEndPoint: (req:any) =>\r\n        AxiosInstance({\r\n            'method': 'POST',\r\n            'url': '/AddSchool',\r\n            'data':req\r\n        }),\r\n\r\n        addNewSchool: (req:any) =>\r\n        AxiosInstance({\r\n            'method': 'POST',\r\n            'url': '/AddSchool',\r\n            'data':req\r\n        }),\r\n        updatePrincipal: (req:any) =>\r\n        AxiosInstance({\r\n            'method': 'POST',\r\n            'url': '/School/UpdatePrincipal',\r\n            'data':req\r\n        }),\r\n        getPrincipalInfoBySchoolDBN: (locationCode: string) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Schools/${locationCode}/PrincipalInfo`\r\n        })\r\n\r\n\r\n\r\n}","import React, { useState, useEffect } from 'react';\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport schoolService from '../services/SchoolService';\r\nimport { LocationContext, UserProfileType ,AuthContextDefault} from '../services/AppContext'\r\nimport { useContext } from 'react';\r\nimport { IDropDownValue } from '../services/Utility'\r\nimport LocalStorageService from '../services/LocalStorage';\r\n\r\n\r\n\r\nexport default function SchoolDropDown(props: any) {\r\n  const [orginalSchoolList, setOrginalSchoolList] = useState<IDropDownValue[]>([]);\r\n  const [schoolList, setSchoolList] = useState<IDropDownValue[]>([]);\r\n  const { locationCode, setLocationCode } = useContext(LocationContext);\r\n  const [userProfile, setUserProfile] = useState<UserProfileType>(AuthContextDefault.userProfile);\r\n  useEffect(() => { \r\n    setUserProfile(LocalStorageService.getUserProfile())\r\n    if(LocalStorageService.getUserProfile()?.role?.roleName == 'System Administrator' || LocalStorageService.getUserProfile().role.roleName == \"Central Staff\"){\r\n      schoolService.getData().then(response => {\r\n        let dropDownData = response.data.map((sl: any) => ({\r\n          id: sl.locationCode, \r\n          text: sl.locationCode + ' -- ' + sl.schoolName\r\n        }));\r\n        setLocationCode(response.data[0].locationCode)\r\n        setSchoolList(dropDownData)\r\n        setOrginalSchoolList(dropDownData)\r\n      })\r\n    }else{\r\n     let data =  LocalStorageService.getUserProfile()?.role?.locations?.map(s=>({id:s.LocationCode,text:s.LocationCode + ' -- ' + s.LocationName}))\r\n     \r\n      if(data){\r\n        setSchoolList(data)\r\n        setOrginalSchoolList(data)\r\n      }\r\n      \r\n    }\r\n   \r\n  }, []);\r\n\r\n  const filterData = (filter: any) => {\r\n    let data = orginalSchoolList.slice();\r\n    return filterBy(data, filter);\r\n  }\r\n\r\n  const filterChange = (event: any) => {\r\n    let data = filterData(event.filter)\r\n    setSchoolList(data)\r\n  } \r\n\r\n  const handleChange = (event: any) => {\r\n    const selectedSchool = event.target.value;\r\n    setLocationCode(selectedSchool.id);\r\n  }\r\n\r\n  const changeSelectedSchool = (event: any) => {\r\n    const selectedSchool = event.target.value;\r\n    setLocationCode(selectedSchool.id);\r\n  }\r\n  return (\r\n\r\n    <DropDownList\r\n      data={schoolList}\r\n      defaultValue={schoolList[0]}\r\n      textField=\"text\"\r\n      filterable={true}\r\n      onChange={handleChange}\r\n      onFilterChange={filterChange}\r\n      onClose={changeSelectedSchool}\r\n      \r\n    />\r\n\r\n  )\r\n}\r\n","import axios from 'axios'\r\nimport { AxiosInstances as AxiosInstance } from './BaseService'\r\n\r\nexport default {\r\n    getData: () =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': '/SchoolYear',\r\n        }),\r\n    getCurrentSchoolYear: () =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': '/CurrentSchoolYear',\r\n        }),\r\n\r\n    AddNewSchoolYear: (req: any) =>\r\n        AxiosInstance({\r\n            'method': 'POST',\r\n            'url': '/AddNewSchoolYear',\r\n            'data': req\r\n        }),\r\n\r\n}","import React, { useState, useEffect , useContext} from 'react';\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport { Year } from '../services/AppContext';\r\nimport schoolYearService from '../services/SchoolYearService'\r\ninterface IDropDownValue {\r\n  id: string;\r\n  text: string; \r\n  isCurrent:number;\r\n  schoolYearEndDate:Date;\r\n}\r\n\r\n  export default function SchoolYearDropDown(props: any)\r\n  {    \r\n    let { orginalSchoolYear, setOrginalSchoolYear } = useContext(Year);\r\n    const [currentYear , setCurrentYear] = useState<IDropDownValue>({id:'',text:'',isCurrent:0,schoolYearEndDate:new Date()})\r\n    let currentDate = new Date();\r\n    const [orginalSchoolYearList, setOrginalSchoolYearList] = useState<IDropDownValue[]>([\r\n  ]);\r\n  \r\n \r\n  useEffect(() => { \r\n    schoolYearService.getData().then(response => {\r\n      \r\n      let year = response.data.find((y:any)=>y.isCurrent==1)\r\n      if(year){\r\n         let current = {\r\n           id:year.schoolYear,\r\n           text: year.schoolYearRange,\r\n           isCurrent : year.isCurrent,\r\n           schoolYearEndDate:year.schoolYearEndDate\r\n         }\r\n         setCurrentYear(current)\r\n         setOrginalSchoolYear({\r\n           id:current.id,\r\n           isCurrent:current.isCurrent,\r\n           schoolYearEndDate:current.schoolYearEndDate\r\n         })\r\n      }\r\n      let dropDownData = response.data.map((sl: any) => ({\r\n        id: sl.schoolYear,\r\n        text: sl.schoolYearRange,\r\n        isCurrent:sl.isCurrent,\r\n        schoolYearEndDate:sl.schoolYearEndDate\r\n      }));\r\n      setOrginalSchoolYearList(dropDownData)\r\n    })\r\n  }, []);\r\n\r\n  const handleChange = (event: any) => {\r\n    const selectedYear = event.target.value;\r\n    setOrginalSchoolYear(selectedYear);\r\n  }\r\n\r\n \r\n    return (\r\n        <DropDownList\r\n        data={orginalSchoolYearList}\r\n        defaultValue={orginalSchoolYearList.find((y:any)=>y.isCurrent==1)}\r\n        textField=\"text\"\r\n        onChange={handleChange}\r\n        />\r\n      )\r\n  }","import { AxiosInstances as AxiosInstance, setupInterceptorsTo } from './BaseService'\r\n\r\nconst axiosInstance = setupInterceptorsTo(AxiosInstance)\r\nexport default {\r\n    getData: () =>\r\n        axiosInstance({\r\n            'method': 'GET',\r\n            'url': '/Menu',\r\n        })\r\n\r\n}","function isAbsolute(pathname) {\n  return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n  for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n    list[i] = list[k];\n  }\n\n  list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n  if (from === undefined) from = '';\n\n  var toParts = (to && to.split('/')) || [];\n  var fromParts = (from && from.split('/')) || [];\n\n  var isToAbs = to && isAbsolute(to);\n  var isFromAbs = from && isAbsolute(from);\n  var mustEndAbs = isToAbs || isFromAbs;\n\n  if (to && isAbsolute(to)) {\n    // to is absolute\n    fromParts = toParts;\n  } else if (toParts.length) {\n    // to is relative, drop the filename\n    fromParts.pop();\n    fromParts = fromParts.concat(toParts);\n  }\n\n  if (!fromParts.length) return '/';\n\n  var hasTrailingSlash;\n  if (fromParts.length) {\n    var last = fromParts[fromParts.length - 1];\n    hasTrailingSlash = last === '.' || last === '..' || last === '';\n  } else {\n    hasTrailingSlash = false;\n  }\n\n  var up = 0;\n  for (var i = fromParts.length; i >= 0; i--) {\n    var part = fromParts[i];\n\n    if (part === '.') {\n      spliceOne(fromParts, i);\n    } else if (part === '..') {\n      spliceOne(fromParts, i);\n      up++;\n    } else if (up) {\n      spliceOne(fromParts, i);\n      up--;\n    }\n  }\n\n  if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n  if (\n    mustEndAbs &&\n    fromParts[0] !== '' &&\n    (!fromParts[0] || !isAbsolute(fromParts[0]))\n  )\n    fromParts.unshift('');\n\n  var result = fromParts.join('/');\n\n  if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n  return result;\n}\n\nexport default resolvePathname;\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n    if (condition) {\n        return;\n    }\n    if (isProduction) {\n        throw new Error(prefix);\n    }\n    var provided = typeof message === 'function' ? message() : message;\n    var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n    throw new Error(value);\n}\n\nexport { invariant as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n  return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n  return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n  return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n  return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n  return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n  var pathname = path || '/';\n  var search = '';\n  var hash = '';\n  var hashIndex = pathname.indexOf('#');\n\n  if (hashIndex !== -1) {\n    hash = pathname.substr(hashIndex);\n    pathname = pathname.substr(0, hashIndex);\n  }\n\n  var searchIndex = pathname.indexOf('?');\n\n  if (searchIndex !== -1) {\n    search = pathname.substr(searchIndex);\n    pathname = pathname.substr(0, searchIndex);\n  }\n\n  return {\n    pathname: pathname,\n    search: search === '?' ? '' : search,\n    hash: hash === '#' ? '' : hash\n  };\n}\nfunction createPath(location) {\n  var pathname = location.pathname,\n      search = location.search,\n      hash = location.hash;\n  var path = pathname || '/';\n  if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n  if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n  return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n  var location;\n\n  if (typeof path === 'string') {\n    // Two-arg form: push(path, state)\n    location = parsePath(path);\n    location.state = state;\n  } else {\n    // One-arg form: push(location)\n    location = _extends({}, path);\n    if (location.pathname === undefined) location.pathname = '';\n\n    if (location.search) {\n      if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n    } else {\n      location.search = '';\n    }\n\n    if (location.hash) {\n      if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n    } else {\n      location.hash = '';\n    }\n\n    if (state !== undefined && location.state === undefined) location.state = state;\n  }\n\n  try {\n    location.pathname = decodeURI(location.pathname);\n  } catch (e) {\n    if (e instanceof URIError) {\n      throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n    } else {\n      throw e;\n    }\n  }\n\n  if (key) location.key = key;\n\n  if (currentLocation) {\n    // Resolve incomplete/relative pathname relative to current location.\n    if (!location.pathname) {\n      location.pathname = currentLocation.pathname;\n    } else if (location.pathname.charAt(0) !== '/') {\n      location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n    }\n  } else {\n    // When there is no prior location and pathname is empty, set it to /\n    if (!location.pathname) {\n      location.pathname = '/';\n    }\n  }\n\n  return location;\n}\nfunction locationsAreEqual(a, b) {\n  return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n  var prompt = null;\n\n  function setPrompt(nextPrompt) {\n    process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n    prompt = nextPrompt;\n    return function () {\n      if (prompt === nextPrompt) prompt = null;\n    };\n  }\n\n  function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n    // TODO: If another transition starts while we're still confirming\n    // the previous one, we may end up in a weird state. Figure out the\n    // best way to handle this.\n    if (prompt != null) {\n      var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n      if (typeof result === 'string') {\n        if (typeof getUserConfirmation === 'function') {\n          getUserConfirmation(result, callback);\n        } else {\n          process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n          callback(true);\n        }\n      } else {\n        // Return false from a transition hook to cancel the transition.\n        callback(result !== false);\n      }\n    } else {\n      callback(true);\n    }\n  }\n\n  var listeners = [];\n\n  function appendListener(fn) {\n    var isActive = true;\n\n    function listener() {\n      if (isActive) fn.apply(void 0, arguments);\n    }\n\n    listeners.push(listener);\n    return function () {\n      isActive = false;\n      listeners = listeners.filter(function (item) {\n        return item !== listener;\n      });\n    };\n  }\n\n  function notifyListeners() {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    listeners.forEach(function (listener) {\n      return listener.apply(void 0, args);\n    });\n  }\n\n  return {\n    setPrompt: setPrompt,\n    confirmTransitionTo: confirmTransitionTo,\n    appendListener: appendListener,\n    notifyListeners: notifyListeners\n  };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n  callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n  var ua = window.navigator.userAgent;\n  if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n  return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n  return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n  return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n  return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n  try {\n    return window.history.state || {};\n  } catch (e) {\n    // IE 11 sometimes throws when accessing window.history.state\n    // See https://github.com/ReactTraining/history/pull/289\n    return {};\n  }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n  if (props === void 0) {\n    props = {};\n  }\n\n  !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n  var globalHistory = window.history;\n  var canUseHistory = supportsHistory();\n  var needsHashChangeListener = !supportsPopStateOnHashChange();\n  var _props = props,\n      _props$forceRefresh = _props.forceRefresh,\n      forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n      _props$getUserConfirm = _props.getUserConfirmation,\n      getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n      _props$keyLength = _props.keyLength,\n      keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n  var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n  function getDOMLocation(historyState) {\n    var _ref = historyState || {},\n        key = _ref.key,\n        state = _ref.state;\n\n    var _window$location = window.location,\n        pathname = _window$location.pathname,\n        search = _window$location.search,\n        hash = _window$location.hash;\n    var path = pathname + search + hash;\n    process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n    if (basename) path = stripBasename(path, basename);\n    return createLocation(path, state, key);\n  }\n\n  function createKey() {\n    return Math.random().toString(36).substr(2, keyLength);\n  }\n\n  var transitionManager = createTransitionManager();\n\n  function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = globalHistory.length;\n    transitionManager.notifyListeners(history.location, history.action);\n  }\n\n  function handlePopState(event) {\n    // Ignore extraneous popstate events in WebKit.\n    if (isExtraneousPopstateEvent(event)) return;\n    handlePop(getDOMLocation(event.state));\n  }\n\n  function handleHashChange() {\n    handlePop(getDOMLocation(getHistoryState()));\n  }\n\n  var forceNextPop = false;\n\n  function handlePop(location) {\n    if (forceNextPop) {\n      forceNextPop = false;\n      setState();\n    } else {\n      var action = 'POP';\n      transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n        if (ok) {\n          setState({\n            action: action,\n            location: location\n          });\n        } else {\n          revertPop(location);\n        }\n      });\n    }\n  }\n\n  function revertPop(fromLocation) {\n    var toLocation = history.location; // TODO: We could probably make this more reliable by\n    // keeping a list of keys we've seen in sessionStorage.\n    // Instead, we just default to 0 for keys we don't know.\n\n    var toIndex = allKeys.indexOf(toLocation.key);\n    if (toIndex === -1) toIndex = 0;\n    var fromIndex = allKeys.indexOf(fromLocation.key);\n    if (fromIndex === -1) fromIndex = 0;\n    var delta = toIndex - fromIndex;\n\n    if (delta) {\n      forceNextPop = true;\n      go(delta);\n    }\n  }\n\n  var initialLocation = getDOMLocation(getHistoryState());\n  var allKeys = [initialLocation.key]; // Public interface\n\n  function createHref(location) {\n    return basename + createPath(location);\n  }\n\n  function push(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'PUSH';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var href = createHref(location);\n      var key = location.key,\n          state = location.state;\n\n      if (canUseHistory) {\n        globalHistory.pushState({\n          key: key,\n          state: state\n        }, null, href);\n\n        if (forceRefresh) {\n          window.location.href = href;\n        } else {\n          var prevIndex = allKeys.indexOf(history.location.key);\n          var nextKeys = allKeys.slice(0, prevIndex + 1);\n          nextKeys.push(location.key);\n          allKeys = nextKeys;\n          setState({\n            action: action,\n            location: location\n          });\n        }\n      } else {\n        process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n        window.location.href = href;\n      }\n    });\n  }\n\n  function replace(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'REPLACE';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var href = createHref(location);\n      var key = location.key,\n          state = location.state;\n\n      if (canUseHistory) {\n        globalHistory.replaceState({\n          key: key,\n          state: state\n        }, null, href);\n\n        if (forceRefresh) {\n          window.location.replace(href);\n        } else {\n          var prevIndex = allKeys.indexOf(history.location.key);\n          if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n          setState({\n            action: action,\n            location: location\n          });\n        }\n      } else {\n        process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n        window.location.replace(href);\n      }\n    });\n  }\n\n  function go(n) {\n    globalHistory.go(n);\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  var listenerCount = 0;\n\n  function checkDOMListeners(delta) {\n    listenerCount += delta;\n\n    if (listenerCount === 1 && delta === 1) {\n      window.addEventListener(PopStateEvent, handlePopState);\n      if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n    } else if (listenerCount === 0) {\n      window.removeEventListener(PopStateEvent, handlePopState);\n      if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n    }\n  }\n\n  var isBlocked = false;\n\n  function block(prompt) {\n    if (prompt === void 0) {\n      prompt = false;\n    }\n\n    var unblock = transitionManager.setPrompt(prompt);\n\n    if (!isBlocked) {\n      checkDOMListeners(1);\n      isBlocked = true;\n    }\n\n    return function () {\n      if (isBlocked) {\n        isBlocked = false;\n        checkDOMListeners(-1);\n      }\n\n      return unblock();\n    };\n  }\n\n  function listen(listener) {\n    var unlisten = transitionManager.appendListener(listener);\n    checkDOMListeners(1);\n    return function () {\n      checkDOMListeners(-1);\n      unlisten();\n    };\n  }\n\n  var history = {\n    length: globalHistory.length,\n    action: 'POP',\n    location: initialLocation,\n    createHref: createHref,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    block: block,\n    listen: listen\n  };\n  return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n  hashbang: {\n    encodePath: function encodePath(path) {\n      return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n    },\n    decodePath: function decodePath(path) {\n      return path.charAt(0) === '!' ? path.substr(1) : path;\n    }\n  },\n  noslash: {\n    encodePath: stripLeadingSlash,\n    decodePath: addLeadingSlash\n  },\n  slash: {\n    encodePath: addLeadingSlash,\n    decodePath: addLeadingSlash\n  }\n};\n\nfunction stripHash(url) {\n  var hashIndex = url.indexOf('#');\n  return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n  // We can't use window.location.hash here because it's not\n  // consistent across browsers - Firefox will pre-decode it!\n  var href = window.location.href;\n  var hashIndex = href.indexOf('#');\n  return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n  window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n  window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n  if (props === void 0) {\n    props = {};\n  }\n\n  !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n  var globalHistory = window.history;\n  var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n  var _props = props,\n      _props$getUserConfirm = _props.getUserConfirmation,\n      getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n      _props$hashType = _props.hashType,\n      hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n  var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n  var _HashPathCoders$hashT = HashPathCoders[hashType],\n      encodePath = _HashPathCoders$hashT.encodePath,\n      decodePath = _HashPathCoders$hashT.decodePath;\n\n  function getDOMLocation() {\n    var path = decodePath(getHashPath());\n    process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n    if (basename) path = stripBasename(path, basename);\n    return createLocation(path);\n  }\n\n  var transitionManager = createTransitionManager();\n\n  function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = globalHistory.length;\n    transitionManager.notifyListeners(history.location, history.action);\n  }\n\n  var forceNextPop = false;\n  var ignorePath = null;\n\n  function locationsAreEqual$$1(a, b) {\n    return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n  }\n\n  function handleHashChange() {\n    var path = getHashPath();\n    var encodedPath = encodePath(path);\n\n    if (path !== encodedPath) {\n      // Ensure we always have a properly-encoded hash.\n      replaceHashPath(encodedPath);\n    } else {\n      var location = getDOMLocation();\n      var prevLocation = history.location;\n      if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n      if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n      ignorePath = null;\n      handlePop(location);\n    }\n  }\n\n  function handlePop(location) {\n    if (forceNextPop) {\n      forceNextPop = false;\n      setState();\n    } else {\n      var action = 'POP';\n      transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n        if (ok) {\n          setState({\n            action: action,\n            location: location\n          });\n        } else {\n          revertPop(location);\n        }\n      });\n    }\n  }\n\n  function revertPop(fromLocation) {\n    var toLocation = history.location; // TODO: We could probably make this more reliable by\n    // keeping a list of paths we've seen in sessionStorage.\n    // Instead, we just default to 0 for paths we don't know.\n\n    var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n    if (toIndex === -1) toIndex = 0;\n    var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n    if (fromIndex === -1) fromIndex = 0;\n    var delta = toIndex - fromIndex;\n\n    if (delta) {\n      forceNextPop = true;\n      go(delta);\n    }\n  } // Ensure the hash is encoded properly before doing anything else.\n\n\n  var path = getHashPath();\n  var encodedPath = encodePath(path);\n  if (path !== encodedPath) replaceHashPath(encodedPath);\n  var initialLocation = getDOMLocation();\n  var allPaths = [createPath(initialLocation)]; // Public interface\n\n  function createHref(location) {\n    var baseTag = document.querySelector('base');\n    var href = '';\n\n    if (baseTag && baseTag.getAttribute('href')) {\n      href = stripHash(window.location.href);\n    }\n\n    return href + '#' + encodePath(basename + createPath(location));\n  }\n\n  function push(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n    var action = 'PUSH';\n    var location = createLocation(path, undefined, undefined, history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var path = createPath(location);\n      var encodedPath = encodePath(basename + path);\n      var hashChanged = getHashPath() !== encodedPath;\n\n      if (hashChanged) {\n        // We cannot tell if a hashchange was caused by a PUSH, so we'd\n        // rather setState here and ignore the hashchange. The caveat here\n        // is that other hash histories in the page will consider it a POP.\n        ignorePath = path;\n        pushHashPath(encodedPath);\n        var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n        var nextPaths = allPaths.slice(0, prevIndex + 1);\n        nextPaths.push(path);\n        allPaths = nextPaths;\n        setState({\n          action: action,\n          location: location\n        });\n      } else {\n        process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n        setState();\n      }\n    });\n  }\n\n  function replace(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n    var action = 'REPLACE';\n    var location = createLocation(path, undefined, undefined, history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var path = createPath(location);\n      var encodedPath = encodePath(basename + path);\n      var hashChanged = getHashPath() !== encodedPath;\n\n      if (hashChanged) {\n        // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n        // rather setState here and ignore the hashchange. The caveat here\n        // is that other hash histories in the page will consider it a POP.\n        ignorePath = path;\n        replaceHashPath(encodedPath);\n      }\n\n      var prevIndex = allPaths.indexOf(createPath(history.location));\n      if (prevIndex !== -1) allPaths[prevIndex] = path;\n      setState({\n        action: action,\n        location: location\n      });\n    });\n  }\n\n  function go(n) {\n    process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n    globalHistory.go(n);\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  var listenerCount = 0;\n\n  function checkDOMListeners(delta) {\n    listenerCount += delta;\n\n    if (listenerCount === 1 && delta === 1) {\n      window.addEventListener(HashChangeEvent$1, handleHashChange);\n    } else if (listenerCount === 0) {\n      window.removeEventListener(HashChangeEvent$1, handleHashChange);\n    }\n  }\n\n  var isBlocked = false;\n\n  function block(prompt) {\n    if (prompt === void 0) {\n      prompt = false;\n    }\n\n    var unblock = transitionManager.setPrompt(prompt);\n\n    if (!isBlocked) {\n      checkDOMListeners(1);\n      isBlocked = true;\n    }\n\n    return function () {\n      if (isBlocked) {\n        isBlocked = false;\n        checkDOMListeners(-1);\n      }\n\n      return unblock();\n    };\n  }\n\n  function listen(listener) {\n    var unlisten = transitionManager.appendListener(listener);\n    checkDOMListeners(1);\n    return function () {\n      checkDOMListeners(-1);\n      unlisten();\n    };\n  }\n\n  var history = {\n    length: globalHistory.length,\n    action: 'POP',\n    location: initialLocation,\n    createHref: createHref,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    block: block,\n    listen: listen\n  };\n  return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n  return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n  if (props === void 0) {\n    props = {};\n  }\n\n  var _props = props,\n      getUserConfirmation = _props.getUserConfirmation,\n      _props$initialEntries = _props.initialEntries,\n      initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n      _props$initialIndex = _props.initialIndex,\n      initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n      _props$keyLength = _props.keyLength,\n      keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n  var transitionManager = createTransitionManager();\n\n  function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = history.entries.length;\n    transitionManager.notifyListeners(history.location, history.action);\n  }\n\n  function createKey() {\n    return Math.random().toString(36).substr(2, keyLength);\n  }\n\n  var index = clamp(initialIndex, 0, initialEntries.length - 1);\n  var entries = initialEntries.map(function (entry) {\n    return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n  }); // Public interface\n\n  var createHref = createPath;\n\n  function push(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'PUSH';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var prevIndex = history.index;\n      var nextIndex = prevIndex + 1;\n      var nextEntries = history.entries.slice(0);\n\n      if (nextEntries.length > nextIndex) {\n        nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n      } else {\n        nextEntries.push(location);\n      }\n\n      setState({\n        action: action,\n        location: location,\n        index: nextIndex,\n        entries: nextEntries\n      });\n    });\n  }\n\n  function replace(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'REPLACE';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      history.entries[history.index] = location;\n      setState({\n        action: action,\n        location: location\n      });\n    });\n  }\n\n  function go(n) {\n    var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n    var action = 'POP';\n    var location = history.entries[nextIndex];\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (ok) {\n        setState({\n          action: action,\n          location: location,\n          index: nextIndex\n        });\n      } else {\n        // Mimic the behavior of DOM histories by\n        // causing a render after a cancelled POP.\n        setState();\n      }\n    });\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  function canGo(n) {\n    var nextIndex = history.index + n;\n    return nextIndex >= 0 && nextIndex < history.entries.length;\n  }\n\n  function block(prompt) {\n    if (prompt === void 0) {\n      prompt = false;\n    }\n\n    return transitionManager.setPrompt(prompt);\n  }\n\n  function listen(listener) {\n    return transitionManager.appendListener(listener);\n  }\n\n  var history = {\n    length: entries.length,\n    action: 'POP',\n    location: entries[index],\n    index: index,\n    entries: entries,\n    createHref: createHref,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    canGo: canGo,\n    block: block,\n    listen: listen\n  };\n  return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","// MIT License\n// Copyright (c) 2019-present StringEpsilon <StringEpsilon@gmail.com>\n// Copyright (c) 2017-2019 James Kyle <me@thejameskyle.com>\n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nconst MAX_SIGNED_31_BIT_INT = 1073741823;\n\nconst commonjsGlobal =\n  typeof globalThis !== \"undefined\" // 'global proper'\n    ? // eslint-disable-next-line no-undef\n      globalThis\n    : typeof window !== \"undefined\"\n    ? window // Browser\n    : typeof global !== \"undefined\"\n    ? global // node.js\n    : {};\n\nfunction getUniqueId() {\n  let key = \"__global_unique_id__\";\n  return (commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1);\n}\n\n// Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction objectIs(x, y) {\n  if (x === y) {\n    return x !== 0 || 1 / x === 1 / y;\n  } else {\n    // eslint-disable-next-line no-self-compare\n    return x !== x && y !== y;\n  }\n}\n\nfunction createEventEmitter(value) {\n  let handlers = [];\n  return {\n    on(handler) {\n      handlers.push(handler);\n    },\n\n    off(handler) {\n      handlers = handlers.filter(h => h !== handler);\n    },\n\n    get() {\n      return value;\n    },\n\n    set(newValue, changedBits) {\n      value = newValue;\n      handlers.forEach(handler => handler(value, changedBits));\n    }\n  };\n}\n\nfunction onlyChild(children) {\n  return Array.isArray(children) ? children[0] : children;\n}\n\nexport default function createReactContext(defaultValue, calculateChangedBits) {\n  const contextProp = \"__create-react-context-\" + getUniqueId() + \"__\";\n\n  class Provider extends React.Component {\n    emitter = createEventEmitter(this.props.value);\n\n    static childContextTypes = {\n      [contextProp]: PropTypes.object.isRequired\n    };\n\n    getChildContext() {\n      return {\n        [contextProp]: this.emitter\n      };\n    }\n\n    componentWillReceiveProps(nextProps) {\n      if (this.props.value !== nextProps.value) {\n        let oldValue = this.props.value;\n        let newValue = nextProps.value;\n        let changedBits;\n\n        if (objectIs(oldValue, newValue)) {\n          changedBits = 0; // No change\n        } else {\n          changedBits =\n            typeof calculateChangedBits === \"function\"\n              ? calculateChangedBits(oldValue, newValue)\n              : MAX_SIGNED_31_BIT_INT;\n          if (process.env.NODE_ENV !== \"production\") {\n            warning(\n              (changedBits & MAX_SIGNED_31_BIT_INT) === changedBits,\n              \"calculateChangedBits: Expected the return value to be a \" +\n                \"31-bit integer. Instead received: \" +\n                changedBits\n            );\n          }\n\n          changedBits |= 0;\n\n          if (changedBits !== 0) {\n            this.emitter.set(nextProps.value, changedBits);\n          }\n        }\n      }\n    }\n\n    render() {\n      return this.props.children;\n    }\n  }\n\n  class Consumer extends React.Component {\n    static contextTypes = {\n      [contextProp]: PropTypes.object\n    };\n\n    observedBits;\n\n    state = {\n      value: this.getValue()\n    };\n\n    componentWillReceiveProps(nextProps) {\n      let { observedBits } = nextProps;\n      this.observedBits =\n        observedBits === undefined || observedBits === null\n          ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n          : observedBits;\n    }\n\n    componentDidMount() {\n      if (this.context[contextProp]) {\n        this.context[contextProp].on(this.onUpdate);\n      }\n      let { observedBits } = this.props;\n      this.observedBits =\n        observedBits === undefined || observedBits === null\n          ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n          : observedBits;\n    }\n\n    componentWillUnmount() {\n      if (this.context[contextProp]) {\n        this.context[contextProp].off(this.onUpdate);\n      }\n    }\n\n    getValue() {\n      if (this.context[contextProp]) {\n        return this.context[contextProp].get();\n      } else {\n        return defaultValue;\n      }\n    }\n\n    onUpdate = (newValue, changedBits) => {\n      const observedBits = this.observedBits | 0;\n      if ((observedBits & changedBits) !== 0) {\n        this.setState({ value: this.getValue() });\n      }\n    };\n\n    render() {\n      return onlyChild(this.props.children)(this.state.value);\n    }\n  }\n\n  return {\n    Provider,\n    Consumer\n  };\n}\n","// MIT License\n// Copyright (c) 2019-present StringEpsilon <StringEpsilon@gmail.com>\n// Copyright (c) 2017-2019 James Kyle <me@thejameskyle.com>\n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport createReactContext from \"./miniCreateReactContext\";\n\nexport default React.createContext || createReactContext;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"./createContext\";\n\nconst createNamedContext = name => {\n  const context = createContext();\n  context.displayName = name;\n\n  return context;\n};\n\nexport default createNamedContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n  static computeRootMatch(pathname) {\n    return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n  }\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      location: props.history.location\n    };\n\n    // This is a bit of a hack. We have to start listening for location\n    // changes here in the constructor in case there are any <Redirect>s\n    // on the initial render. If there are, they will replace/push when\n    // they mount and since cDM fires in children before parents, we may\n    // get a new location before the <Router> is mounted.\n    this._isMounted = false;\n    this._pendingLocation = null;\n\n    if (!props.staticContext) {\n      this.unlisten = props.history.listen(location => {\n        this._pendingLocation = location;\n      });\n    }\n  }\n\n  componentDidMount() {\n    this._isMounted = true;\n\n    if (this.unlisten) {\n      // Any pre-mount location changes have been captured at\n      // this point, so unregister the listener.\n      this.unlisten();\n    }\n    if (!this.props.staticContext) {\n      this.unlisten = this.props.history.listen(location => {\n        if (this._isMounted) {\n          this.setState({ location });\n        }\n      });\n    }\n    if (this._pendingLocation) {\n      this.setState({ location: this._pendingLocation });\n    }\n  }\n\n  componentWillUnmount() {\n    if (this.unlisten) {\n      this.unlisten();\n      this._isMounted = false;\n      this._pendingLocation = null;\n    }\n  }\n\n  render() {\n    return (\n      <RouterContext.Provider\n        value={{\n          history: this.props.history,\n          location: this.state.location,\n          match: Router.computeRootMatch(this.state.location.pathname),\n          staticContext: this.props.staticContext\n        }}\n      >\n        <HistoryContext.Provider\n          children={this.props.children || null}\n          value={this.props.history}\n        />\n      </RouterContext.Provider>\n    );\n  }\n}\n\nif (__DEV__) {\n  Router.propTypes = {\n    children: PropTypes.node,\n    history: PropTypes.object.isRequired,\n    staticContext: PropTypes.object\n  };\n\n  Router.prototype.componentDidUpdate = function(prevProps) {\n    warning(\n      prevProps.history === this.props.history,\n      \"You cannot change <Router history>\"\n    );\n  };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a <Router> that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n  history = createHistory(this.props);\n\n  render() {\n    return <Router history={this.history} children={this.props.children} />;\n  }\n}\n\nif (__DEV__) {\n  MemoryRouter.propTypes = {\n    initialEntries: PropTypes.array,\n    initialIndex: PropTypes.number,\n    getUserConfirmation: PropTypes.func,\n    keyLength: PropTypes.number,\n    children: PropTypes.node\n  };\n\n  MemoryRouter.prototype.componentDidMount = function() {\n    warning(\n      !this.props.history,\n      \"<MemoryRouter> ignores the history prop. To use a custom history, \" +\n        \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n    );\n  };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n  componentDidMount() {\n    if (this.props.onMount) this.props.onMount.call(this, this);\n  }\n\n  componentDidUpdate(prevProps) {\n    if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n  }\n\n  componentWillUnmount() {\n    if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n  }\n\n  render() {\n    return null;\n  }\n}\n\nexport default Lifecycle;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n  const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n  const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n  if (pathCache[path]) return pathCache[path];\n\n  const keys = [];\n  const regexp = pathToRegexp(path, keys, options);\n  const result = { regexp, keys };\n\n  if (cacheCount < cacheLimit) {\n    pathCache[path] = result;\n    cacheCount++;\n  }\n\n  return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n  if (typeof options === \"string\" || Array.isArray(options)) {\n    options = { path: options };\n  }\n\n  const { path, exact = false, strict = false, sensitive = false } = options;\n\n  const paths = [].concat(path);\n\n  return paths.reduce((matched, path) => {\n    if (!path && path !== \"\") return null;\n    if (matched) return matched;\n\n    const { regexp, keys } = compilePath(path, {\n      end: exact,\n      strict,\n      sensitive\n    });\n    const match = regexp.exec(pathname);\n\n    if (!match) return null;\n\n    const [url, ...values] = match;\n    const isExact = pathname === url;\n\n    if (exact && !isExact) return null;\n\n    return {\n      path, // the path used to match\n      url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n      isExact, // whether or not we matched exactly\n      params: keys.reduce((memo, key, index) => {\n        memo[key.name] = values[index];\n        return memo;\n      }, {})\n    };\n  }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n  return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n  const value = children(props);\n\n  warning(\n    value !== undefined,\n    \"You returned `undefined` from the `children` function of \" +\n      `<Route${path ? ` path=\"${path}\"` : \"\"}>, but you ` +\n      \"should have returned a React element or `null`\"\n  );\n\n  return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n  render() {\n    return (\n      <RouterContext.Consumer>\n        {context => {\n          invariant(context, \"You should not use <Route> outside a <Router>\");\n\n          const location = this.props.location || context.location;\n          const match = this.props.computedMatch\n            ? this.props.computedMatch // <Switch> already computed the match for us\n            : this.props.path\n            ? matchPath(location.pathname, this.props)\n            : context.match;\n\n          const props = { ...context, location, match };\n\n          let { children, component, render } = this.props;\n\n          // Preact uses an empty array as children by\n          // default, so use null if that's the case.\n          if (Array.isArray(children) && isEmptyChildren(children)) {\n            children = null;\n          }\n\n          return (\n            <RouterContext.Provider value={props}>\n              {props.match\n                ? children\n                  ? typeof children === \"function\"\n                    ? __DEV__\n                      ? evalChildrenDev(children, props, this.props.path)\n                      : children(props)\n                    : children\n                  : component\n                  ? React.createElement(component, props)\n                  : render\n                  ? render(props)\n                  : null\n                : typeof children === \"function\"\n                ? __DEV__\n                  ? evalChildrenDev(children, props, this.props.path)\n                  : children(props)\n                : null}\n            </RouterContext.Provider>\n          );\n        }}\n      </RouterContext.Consumer>\n    );\n  }\n}\n\nif (__DEV__) {\n  Route.propTypes = {\n    children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n    component: (props, propName) => {\n      if (props[propName] && !isValidElementType(props[propName])) {\n        return new Error(\n          `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n        );\n      }\n    },\n    exact: PropTypes.bool,\n    location: PropTypes.object,\n    path: PropTypes.oneOfType([\n      PropTypes.string,\n      PropTypes.arrayOf(PropTypes.string)\n    ]),\n    render: PropTypes.func,\n    sensitive: PropTypes.bool,\n    strict: PropTypes.bool\n  };\n\n  Route.prototype.componentDidMount = function() {\n    warning(\n      !(\n        this.props.children &&\n        !isEmptyChildren(this.props.children) &&\n        this.props.component\n      ),\n      \"You should not use <Route component> and <Route children> in the same route; <Route component> will be ignored\"\n    );\n\n    warning(\n      !(\n        this.props.children &&\n        !isEmptyChildren(this.props.children) &&\n        this.props.render\n      ),\n      \"You should not use <Route render> and <Route children> in the same route; <Route render> will be ignored\"\n    );\n\n    warning(\n      !(this.props.component && this.props.render),\n      \"You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored\"\n    );\n  };\n\n  Route.prototype.componentDidUpdate = function(prevProps) {\n    warning(\n      !(this.props.location && !prevProps.location),\n      '<Route> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n    );\n\n    warning(\n      !(!this.props.location && prevProps.location),\n      '<Route> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n    );\n  };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n  return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n  if (!basename) return location;\n\n  return {\n    ...location,\n    pathname: addLeadingSlash(basename) + location.pathname\n  };\n}\n\nfunction stripBasename(basename, location) {\n  if (!basename) return location;\n\n  const base = addLeadingSlash(basename);\n\n  if (location.pathname.indexOf(base) !== 0) return location;\n\n  return {\n    ...location,\n    pathname: location.pathname.substr(base.length)\n  };\n}\n\nfunction createURL(location) {\n  return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n  return () => {\n    invariant(false, \"You cannot %s with <StaticRouter>\", methodName);\n  };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" <Router>, so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n  navigateTo(location, action) {\n    const { basename = \"\", context = {} } = this.props;\n    context.action = action;\n    context.location = addBasename(basename, createLocation(location));\n    context.url = createURL(context.location);\n  }\n\n  handlePush = location => this.navigateTo(location, \"PUSH\");\n  handleReplace = location => this.navigateTo(location, \"REPLACE\");\n  handleListen = () => noop;\n  handleBlock = () => noop;\n\n  render() {\n    const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n    const history = {\n      createHref: path => addLeadingSlash(basename + createURL(path)),\n      action: \"POP\",\n      location: stripBasename(basename, createLocation(location)),\n      push: this.handlePush,\n      replace: this.handleReplace,\n      go: staticHandler(\"go\"),\n      goBack: staticHandler(\"goBack\"),\n      goForward: staticHandler(\"goForward\"),\n      listen: this.handleListen,\n      block: this.handleBlock\n    };\n\n    return <Router {...rest} history={history} staticContext={context} />;\n  }\n}\n\nif (__DEV__) {\n  StaticRouter.propTypes = {\n    basename: PropTypes.string,\n    context: PropTypes.object,\n    location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n  };\n\n  StaticRouter.prototype.componentDidMount = function() {\n    warning(\n      !this.props.history,\n      \"<StaticRouter> ignores the history prop. To use a custom history, \" +\n        \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n    );\n  };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first <Route> that matches.\n */\nclass Switch extends React.Component {\n  render() {\n    return (\n      <RouterContext.Consumer>\n        {context => {\n          invariant(context, \"You should not use <Switch> outside a <Router>\");\n\n          const location = this.props.location || context.location;\n\n          let element, match;\n\n          // We use React.Children.forEach instead of React.Children.toArray().find()\n          // here because toArray adds keys to all child elements and we do not want\n          // to trigger an unmount/remount for two <Route>s that render the same\n          // component at different URLs.\n          React.Children.forEach(this.props.children, child => {\n            if (match == null && React.isValidElement(child)) {\n              element = child;\n\n              const path = child.props.path || child.props.from;\n\n              match = path\n                ? matchPath(location.pathname, { ...child.props, path })\n                : context.match;\n            }\n          });\n\n          return match\n            ? React.cloneElement(element, { location, computedMatch: match })\n            : null;\n        }}\n      </RouterContext.Consumer>\n    );\n  }\n}\n\nif (__DEV__) {\n  Switch.propTypes = {\n    children: PropTypes.node,\n    location: PropTypes.object\n  };\n\n  Switch.prototype.componentDidUpdate = function(prevProps) {\n    warning(\n      !(this.props.location && !prevProps.location),\n      '<Switch> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n    );\n\n    warning(\n      !(!this.props.location && prevProps.location),\n      '<Switch> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n    );\n  };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n  if (__DEV__) {\n    invariant(\n      typeof useContext === \"function\",\n      \"You must use React >= 16.8 in order to use useHistory()\"\n    );\n  }\n\n  return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n  if (__DEV__) {\n    invariant(\n      typeof useContext === \"function\",\n      \"You must use React >= 16.8 in order to use useLocation()\"\n    );\n  }\n\n  return useContext(RouterContext).location;\n}\n\nexport function useParams() {\n  if (__DEV__) {\n    invariant(\n      typeof useContext === \"function\",\n      \"You must use React >= 16.8 in order to use useParams()\"\n    );\n  }\n\n  const match = useContext(RouterContext).match;\n  return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n  if (__DEV__) {\n    invariant(\n      typeof useContext === \"function\",\n      \"You must use React >= 16.8 in order to use useRouteMatch()\"\n    );\n  }\n\n  const location = useLocation();\n  const match = useContext(RouterContext).match;\n  return path ? matchPath(location.pathname, path) : match;\n}\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a <Router> that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n  history = createHistory(this.props);\n\n  render() {\n    return <Router history={this.history} children={this.props.children} />;\n  }\n}\n\nif (__DEV__) {\n  BrowserRouter.propTypes = {\n    basename: PropTypes.string,\n    children: PropTypes.node,\n    forceRefresh: PropTypes.bool,\n    getUserConfirmation: PropTypes.func,\n    keyLength: PropTypes.number\n  };\n\n  BrowserRouter.prototype.componentDidMount = function() {\n    warning(\n      !this.props.history,\n      \"<BrowserRouter> ignores the history prop. To use a custom history, \" +\n        \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n    );\n  };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a <Router> that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n  history = createHistory(this.props);\n\n  render() {\n    return <Router history={this.history} children={this.props.children} />;\n  }\n}\n\nif (__DEV__) {\n  HashRouter.propTypes = {\n    basename: PropTypes.string,\n    children: PropTypes.node,\n    getUserConfirmation: PropTypes.func,\n    hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n  };\n\n  HashRouter.prototype.componentDidMount = function() {\n    warning(\n      !this.props.history,\n      \"<HashRouter> ignores the history prop. To use a custom history, \" +\n        \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n    );\n  };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n  typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n  return typeof to === \"string\"\n    ? createLocation(to, null, null, currentLocation)\n    : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport { createPath } from 'history';\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport {\n  resolveToLocation,\n  normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n  forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n  return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n  (\n    {\n      innerRef, // TODO: deprecate\n      navigate,\n      onClick,\n      ...rest\n    },\n    forwardedRef\n  ) => {\n    const { target } = rest;\n\n    let props = {\n      ...rest,\n      onClick: event => {\n        try {\n          if (onClick) onClick(event);\n        } catch (ex) {\n          event.preventDefault();\n          throw ex;\n        }\n\n        if (\n          !event.defaultPrevented && // onClick prevented default\n          event.button === 0 && // ignore everything but left clicks\n          (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n          !isModifiedEvent(event) // ignore clicks with modifier keys\n        ) {\n          event.preventDefault();\n          navigate();\n        }\n      }\n    };\n\n    // React 15 compat\n    if (forwardRefShim !== forwardRef) {\n      props.ref = forwardedRef || innerRef;\n    } else {\n      props.ref = innerRef;\n    }\n\n    /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n    return <a {...props} />;\n  }\n);\n\nif (__DEV__) {\n  LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware <a>.\n */\nconst Link = forwardRef(\n  (\n    {\n      component = LinkAnchor,\n      replace,\n      to,\n      innerRef, // TODO: deprecate\n      ...rest\n    },\n    forwardedRef\n  ) => {\n    return (\n      <RouterContext.Consumer>\n        {context => {\n          invariant(context, \"You should not use <Link> outside a <Router>\");\n\n          const { history } = context;\n\n          const location = normalizeToLocation(\n            resolveToLocation(to, context.location),\n            context.location\n          );\n\n          const href = location ? history.createHref(location) : \"\";\n          const props = {\n            ...rest,\n            href,\n            navigate() {\n              const location = resolveToLocation(to, context.location);\n              const isDuplicateNavigation = createPath(context.location) === createPath(normalizeToLocation(location));\n              const method = (replace || isDuplicateNavigation) ? history.replace : history.push;\n\n              method(location);\n            }\n          };\n\n          // React 15 compat\n          if (forwardRefShim !== forwardRef) {\n            props.ref = forwardedRef || innerRef;\n          } else {\n            props.innerRef = innerRef;\n          }\n\n          return React.createElement(component, props);\n        }}\n      </RouterContext.Consumer>\n    );\n  }\n);\n\nif (__DEV__) {\n  const toType = PropTypes.oneOfType([\n    PropTypes.string,\n    PropTypes.object,\n    PropTypes.func\n  ]);\n  const refType = PropTypes.oneOfType([\n    PropTypes.string,\n    PropTypes.func,\n    PropTypes.shape({ current: PropTypes.any })\n  ]);\n\n  Link.displayName = \"Link\";\n\n  Link.propTypes = {\n    innerRef: refType,\n    onClick: PropTypes.func,\n    replace: PropTypes.bool,\n    target: PropTypes.string,\n    to: toType.isRequired\n  };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link.js\";\nimport {\n  resolveToLocation,\n  normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n  forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n  return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A <Link> wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n  (\n    {\n      \"aria-current\": ariaCurrent = \"page\",\n      activeClassName = \"active\", // TODO: deprecate\n      activeStyle, // TODO: deprecate\n      className: classNameProp,\n      exact,\n      isActive: isActiveProp,\n      location: locationProp,\n      sensitive,\n      strict,\n      style: styleProp,\n      to,\n      innerRef, // TODO: deprecate\n      ...rest\n    },\n    forwardedRef\n  ) => {\n    return (\n      <RouterContext.Consumer>\n        {context => {\n          invariant(context, \"You should not use <NavLink> outside a <Router>\");\n\n          const currentLocation = locationProp || context.location;\n          const toLocation = normalizeToLocation(\n            resolveToLocation(to, currentLocation),\n            currentLocation\n          );\n          const { pathname: path } = toLocation;\n          // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n          const escapedPath =\n            path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n          const match = escapedPath\n            ? matchPath(currentLocation.pathname, {\n                path: escapedPath,\n                exact,\n                sensitive,\n                strict\n              })\n            : null;\n          const isActive = !!(isActiveProp\n            ? isActiveProp(match, currentLocation)\n            : match);\n\n          let className =\n            typeof classNameProp === \"function\"\n              ? classNameProp(isActive)\n              : classNameProp;\n\n          let style =\n            typeof styleProp === \"function\" ? styleProp(isActive) : styleProp;\n\n          if (isActive) {\n            className = joinClassnames(className, activeClassName);\n            style = { ...style, ...activeStyle };\n          }\n\n          const props = {\n            \"aria-current\": (isActive && ariaCurrent) || null,\n            className,\n            style,\n            to: toLocation,\n            ...rest\n          };\n\n          // React 15 compat\n          if (forwardRefShim !== forwardRef) {\n            props.ref = forwardedRef || innerRef;\n          } else {\n            props.innerRef = innerRef;\n          }\n\n          return <Link {...props} />;\n        }}\n      </RouterContext.Consumer>\n    );\n  }\n);\n\nif (__DEV__) {\n  NavLink.displayName = \"NavLink\";\n\n  const ariaCurrentType = PropTypes.oneOf([\n    \"page\",\n    \"step\",\n    \"location\",\n    \"date\",\n    \"time\",\n    \"true\",\n    \"false\"\n  ]);\n\n  NavLink.propTypes = {\n    ...Link.propTypes,\n    \"aria-current\": ariaCurrentType,\n    activeClassName: PropTypes.string,\n    activeStyle: PropTypes.object,\n    className: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n    exact: PropTypes.bool,\n    isActive: PropTypes.func,\n    location: PropTypes.object,\n    sensitive: PropTypes.bool,\n    strict: PropTypes.bool,\n    style: PropTypes.oneOfType([PropTypes.object, PropTypes.func])\n  };\n}\n\nexport default NavLink;\n","import React, { useState, useEffect, useRef } from 'react';\r\nimport menuService from '../services/MenuService';\r\nimport IMenu from '../model/Menu'\r\nimport { NavLink } from 'react-router-dom';\r\n\r\nexport default function Menu() {\r\n  const mountedRef = useRef(true);\r\n  const [menuData, setMenuData] = useState<IMenu[]>([]); \r\n  useEffect(() => {\r\n    menuService.getData().then(response => {\r\n      setMenuData(response.data)\r\n    })\r\n    return () => { mountedRef.current = false }\r\n  }, []); \r\n\r\n  return (\r\n    <div className='main-tabs-overflow'>\r\n      <ul className=\"nav nav-tabs main-tabs mt-5\">\r\n        {\r\n          menuData.map((link, i) =>\r\n            <li className=\"nav-item\" key={i.toString()}>\r\n              <NavLink exact to={link.navigationURL} className=\"nav-link\" activeClassName=\"active\" key={link.sortIndex}>{link.displayText}</NavLink>\r\n            </li>\r\n          )\r\n        }\r\n      </ul>\r\n    </div>\r\n  )\r\n}\r\n\r\n","import { AxiosInstances as AxiosInstance} from './BaseService'\r\n\r\nexport default {\r\n    getBySchoolDBN: (locationCode: string) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Schools/${locationCode}/SchoolInfo`\r\n        })\r\n}","import React, { useState, useEffect, Component } from 'react';\r\nimport schoolInfoService from '../services/SchoolInfoService';\r\nimport ISchoolInfo from '../model/ISchoolInfo'\r\nimport PurchaseOrder from './PurchaseOrder';\r\n\r\ninterface ILocationCode\r\n{\r\n  id: string,\r\n}\r\n\r\nexport default function SchoolBanner(locationCode: ILocationCode) {\r\n  const [schoolData, getSchoolData] = useState<ISchoolInfo>({\r\n    locationName: 'string',\r\n    locationCode: 'string',\r\n    address: 'string',\r\n    principalFullName: 'string'\r\n  });\r\n  useEffect(() => {\r\n    schoolInfoService.getBySchoolDBN(locationCode.id).then(response => {\r\n      getSchoolData(response.data)\r\n      \r\n    })\r\n  }, [locationCode]);\r\n\r\n  return (\r\n    <section>\r\n            <div className=\"ml-0 ml-md-4 mt-2 mt-md-0 align-middle text-center text-md-left\">\r\n              <h1 className=\"h2 mb-0 d-inline-block\">{schoolData.locationName} ({schoolData.locationCode})</h1>\r\n              <div className=\"h6 mt-1 mb-0 text-muted font-weight-normal\">\r\n                <div className=\"d-md-inline\">DBN: {schoolData.locationCode}</div>\r\n                <div className=\"pl-1 pr-1 d-none d-md-inline\">&bull;</div>\r\n                <div className=\"d-md-inline\">{schoolData.address}</div>\r\n                {schoolData.principalFullName != \"\" ? (<div className=\"d-md-inline\"><div className=\"pl-1 pr-1 d-none d-md-inline\">&bull;</div>Principal: {schoolData.principalFullName}</div>) : \"\"}\r\n              </div>\r\n            </div>         \r\n      {/* <PurchaseOrder>{schoolData.locationCode}</PurchaseOrder> */}\r\n    </section>\r\n  )\r\n\r\n}","import React, { useState, useEffect } from 'react';\r\nimport IVendor from '../model/Vendor';\r\n\r\nexport default function VendorDetail(props: any) {\r\n    const [vendorDetailData, setvendorDetailData] = useState<IVendor>();\r\n    useEffect(() => {\r\n            setvendorDetailData(props.data)\r\n    }, []);\r\n\r\n    return (\r\n        <div className=\"card mb-4\">\r\n            <div className=\"card-header font-weight-bold bg-secondary-light\">\r\n                Vendor Details\r\n            </div>\r\n            <div className=\"card-body\">\r\n                <div>\r\n                    <div className=\"small text-primary\">Description:</div>\r\n                    <div>{vendorDetailData?.vendorDescription}</div>\r\n                </div>\r\n                <div className=\"row mt-3\">\r\n                    <div className=\"col\">\r\n                        <div className=\"small text-primary\">Type:</div>\r\n                        <div>{vendorDetailData?.licenseType}</div>\r\n                    </div>\r\n                    <div className=\"col\">\r\n                        <div className=\"small text-primary\">Usage:</div>\r\n                        <div>{vendorDetailData?.licenseModel}</div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    )\r\n}\r\n\r\n","import React, { useState, useEffect } from 'react';\r\nimport LicenseAllocationService from '../../services/LicenseAllocation';\r\nimport ICourseContent from '../../model/VendorContent';\r\nimport { Grid, GridColumn, GridToolbar } from '@progress/kendo-react-grid';\r\ninterface IContentDisplay {\r\n    locationCode: string,\r\n    vendorId: number\r\n}\r\nexport default function VendorContentDisplay(props: IContentDisplay) {\r\n    const [rowData, setCourseContentData] = useState<ICourseContent[]>([]);\r\n    useEffect(() => {\r\n        LicenseAllocationService.getAllocatedVendorDetailById(props.locationCode, props.vendorId).then(response => {\r\n            setCourseContentData(response.data)\r\n        })\r\n    }, []);\r\n\r\n    return (\r\n        <div className=\"card\">\r\n            <div className=\"card-header font-weight-bold bg-secondary-light\">\r\n                Vendor Content in use\r\n            </div>\r\n            <div className=\"card-body\">\r\n                <Grid data={rowData} filterable={false} pageable={true} sortable={true} scrollable=\"none\" >\r\n                    <GridColumn headerClassName=\"bg-light text-dark\" field=\"vendorCourseContentName\" title=\"Vendor Course Content Name\" />\r\n                </Grid>\r\n            </div>\r\n        </div>\r\n    )\r\n}\r\n\r\n","var __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};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { guid, classNames, dispatchEvent, getTabIndex, createPropsContext, usePropsContext } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\n/**\n * Represents the PropsContext of the `RadioButton` component.\n * Used for global configuration of all `RadioButton` instances.\n *\n * For more information, refer to the [Inputs Props Context]({% slug props-context_inputs %}) article.\n */\nexport var RadioButtonPropsContext = createPropsContext();\n/**\n * Represents the [KendoReact RadioButton component]({% slug overview_radiobutton %}).\n *\n * Accepts properties of type [RadioButtonProps]({% slug api_inputs_radiobuttonprops %}).\n * Obtaining the `ref` returns an object of type [RadioButtonHandle]({% slug api_inputs_radiobuttonhandle %}).\n */\nexport var RadioButton = React.forwardRef(function (directProps, target) {\n    validatePackage(packageMetadata);\n    var props = usePropsContext(RadioButtonPropsContext, directProps);\n    var ariaDescribedBy = props.ariaDescribedBy, checked = props.checked, children = props.children, className = props.className, disabled = props.disabled, id = props.id, label = props.label, labelPlacement = props.labelPlacement, name = props.name, style = props.style, tabIndex = props.tabIndex, value = props.value, valid = props.valid, onChange = props.onChange, onFocus = props.onFocus, onBlur = props.onBlur, others = __rest(props, [\"ariaDescribedBy\", \"checked\", \"children\", \"className\", \"disabled\", \"id\", \"label\", \"labelPlacement\", \"name\", \"style\", \"tabIndex\", \"value\", \"valid\", \"onChange\", \"onFocus\", \"onBlur\"]);\n    var elementRef = React.useRef(null);\n    var focusElement = React.useCallback(function () {\n        if (elementRef.current) {\n            elementRef.current.focus();\n        }\n    }, []);\n    var getImperativeHandle = React.useCallback(function () { return ({\n        element: elementRef.current,\n        focus: focusElement\n    }); }, [focusElement]);\n    React.useImperativeHandle(target, getImperativeHandle);\n    var calculatedId = React.useMemo(function () { return guid(); }, []);\n    var handleChange = React.useCallback(function (event) {\n        dispatchEvent(onChange, event, getImperativeHandle(), { value: value });\n    }, [onChange, value, disabled]);\n    var handleFocus = React.useCallback(function (event) {\n        if (onFocus && !disabled) {\n            dispatchEvent(onFocus, event, getImperativeHandle(), undefined);\n        }\n    }, [onFocus, disabled]);\n    var handleBlur = React.useCallback(function (event) {\n        if (onBlur && !disabled) {\n            dispatchEvent(onBlur, event, getImperativeHandle(), undefined);\n        }\n    }, [onBlur, disabled]);\n    var inputProps = __assign({ type: 'radio', id: id || calculatedId, name: name, className: classNames({\n            'k-radio': true,\n            'k-state-invalid': valid === false,\n            'k-invalid': valid === false\n        }, className), ref: elementRef, disabled: disabled, tabIndex: getTabIndex(tabIndex, disabled), checked: checked, style: style, 'aria-describedby': ariaDescribedBy, value: value, onChange: handleChange, onFocus: handleFocus, onBlur: handleBlur }, others);\n    var radioButtonLabel = (React.createElement(React.Fragment, null, label !== undefined ? (React.createElement(\"label\", { className: 'k-radio-label', htmlFor: id || calculatedId, style: { userSelect: 'none' }, \"aria-label\": label }, label)) : null));\n    var radio = React.createElement(\"input\", __assign({}, inputProps));\n    return (labelPlacement === 'before'\n        ? (React.createElement(React.Fragment, null,\n            radioButtonLabel,\n            radio,\n            children)) : (React.createElement(React.Fragment, null,\n        radio,\n        radioButtonLabel,\n        children)));\n});\nRadioButton.propTypes = {\n    ariaDescribedBy: PropTypes.string,\n    checked: PropTypes.bool,\n    className: PropTypes.string,\n    disabled: PropTypes.bool,\n    id: PropTypes.string,\n    label: PropTypes.string,\n    labelPlacement: PropTypes.string,\n    name: PropTypes.string,\n    style: PropTypes.object,\n    tabIndex: PropTypes.number,\n    value: PropTypes.any,\n    valid: PropTypes.bool,\n    onChange: PropTypes.func,\n    onFocus: PropTypes.func,\n    onBlur: PropTypes.func\n};\nRadioButton.displayName = 'KendoRadioButton';\n","import * as React from 'react';\n/**\n * @hidden\n */\nexport var DialogTitleBar = function (_a) {\n    var children = _a.children, onCloseButtonClick = _a.onCloseButtonClick, id = _a.id, closeIcon = _a.closeIcon;\n    return (React.createElement(\"div\", { className: \"k-window-titlebar k-dialog-titlebar k-header\", id: id },\n        React.createElement(\"div\", { className: \"k-window-title k-dialog-title\" }, children),\n        React.createElement(\"div\", { className: \"k-window-actions k-dialog-actions\" }, closeIcon &&\n            React.createElement(\"a\", { href: \"#\", role: \"button\", \"aria-label\": \"Close\", onClick: onCloseButtonClick, className: \"k-button k-flat k-button-icon k-window-action k-dialog-action k-dialog-close\" },\n                React.createElement(\"span\", { className: \"k-icon k-i-x\" })))));\n};\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * Returns the action bar of the Dialog.\n *\n * @returns React.ReactElement\n */\nexport var DialogActionsBar = function (props) {\n    var _a = props.layout, layout = _a === void 0 ? defaultProps.layout : _a, children = props.children;\n    var wrapperClasses = classNames('k-dialog-buttongroup', 'k-actions', 'k-hstack', {\n        'k-justify-content-start': layout === 'start',\n        'k-justify-content-center': layout === 'center',\n        'k-justify-content-end': layout === 'end',\n        'k-justify-content-stretch': layout === 'stretched'\n    });\n    return (React.createElement(\"div\", { className: wrapperClasses }, children));\n};\nDialogActionsBar.propTypes = {\n    children: PropTypes.any,\n    layout: PropTypes.oneOf(['start', 'center', 'end', 'stretched'])\n};\nvar defaultProps = {\n    layout: 'stretched'\n};\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n    name: '@progress/kendo-react-dialogs',\n    productName: 'KendoReact',\n    productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n    publishDate: 1642516467,\n    version: '',\n    licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","/** @hidden */\nexport var DATA_DIALOGS_ID = 'data-windowid';\n/** @hidden */\nexport var DEFAULT_DIALOGS_ZINDEX = 10002;\n/** @hidden */\nexport var ZINDEX_DIALOGS_STEP = 2;\n/** @hidden */\nexport var DIALOGS_SELECTOR = '.k-window:not(.k-dialog), .k-dialog-wrapper';\n","import { DATA_DIALOGS_ID, DIALOGS_SELECTOR, ZINDEX_DIALOGS_STEP } from './constants';\n/** @hidden */\nexport var getMaxZIndex = function (currentZIndex, currentDocument, currentWindowId) {\n    var maxZindex = currentZIndex;\n    if (currentDocument && currentDocument.defaultView) {\n        var allWindows = currentDocument.querySelectorAll(DIALOGS_SELECTOR);\n        var zIndexChanged_1 = false;\n        allWindows.forEach(function (KRwindow) {\n            var computedStyle = currentDocument.defaultView.getComputedStyle(KRwindow, null);\n            var dataId = KRwindow.getAttribute(DATA_DIALOGS_ID);\n            if (dataId !== currentWindowId && computedStyle.zIndex !== null) {\n                var zIndexValue = parseInt(computedStyle.zIndex, 10);\n                if (zIndexValue >= maxZindex) {\n                    maxZindex = zIndexValue;\n                    zIndexChanged_1 = true;\n                }\n            }\n        });\n        return zIndexChanged_1 ? (maxZindex + ZINDEX_DIALOGS_STEP) : maxZindex;\n    }\n    return maxZindex;\n};\n","var __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 __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};\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport * as PropTypes from 'prop-types';\nimport { DialogTitleBar } from './DialogTitleBar';\nimport { DialogActionsBar } from './DialogActionsBar';\nimport { guid, dispatchEvent, Keys, canUseDOM, ZIndexContext, createPropsContext, withPropsContext } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from './package-metadata';\nimport { getMaxZIndex } from './utils';\nimport { DATA_DIALOGS_ID, DEFAULT_DIALOGS_ZINDEX, ZINDEX_DIALOGS_STEP } from './constants';\n// tslint:enable:max-line-length\n/** @hidden */\nvar DialogWithoutContext = /** @class */ (function (_super) {\n    __extends(DialogWithoutContext, _super);\n    function DialogWithoutContext(props) {\n        var _this = _super.call(this, props) || this;\n        _this._id = guid();\n        _this.titleId = _this.generateTitleId();\n        /**\n         * @hidden\n         */\n        _this.onCloseDialog = function (event) {\n            event.preventDefault();\n            dispatchEvent(_this.props.onClose, event, _this, undefined);\n        };\n        /**\n         * @hidden\n         */\n        _this.onKeyDown = function (event) {\n            if (event.keyCode === Keys.esc && _this.props.onClose) {\n                event.preventDefault();\n                _this.onCloseDialog(event);\n            }\n            var kDialog = _this.element;\n            if (kDialog && (event.keyCode === Keys.tab)) {\n                var focusableElements = 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n                var focusableContent = kDialog.querySelectorAll(focusableElements);\n                var firstFocusableElement = focusableContent[0];\n                var lastFocusableElement = focusableContent[focusableContent.length - 1];\n                var currentDocument = _this.getDocument();\n                if (event.shiftKey) {\n                    if (currentDocument && currentDocument.activeElement === firstFocusableElement) {\n                        lastFocusableElement.focus();\n                        event.preventDefault();\n                    }\n                }\n                else {\n                    if (currentDocument && currentDocument.activeElement === lastFocusableElement) {\n                        firstFocusableElement.focus();\n                        event.preventDefault();\n                    }\n                }\n            }\n        };\n        _this.getCurrentZIndex = function () {\n            if (!_this.state) {\n                return _this.context ? _this.context : DEFAULT_DIALOGS_ZINDEX;\n            }\n            return _this.state.zIndex > (_this.context ? _this.context + ZINDEX_DIALOGS_STEP : 0) ? _this.state.zIndex : _this.context + ZINDEX_DIALOGS_STEP;\n        };\n        _this.getDocument = function () {\n            return _this.props.appendTo ? _this.props.appendTo.ownerDocument : document;\n        };\n        validatePackage(packageMetadata);\n        _this.state = {\n            zIndex: getMaxZIndex(_this.getCurrentZIndex(), _this.getDocument(), _this._id)\n        };\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    DialogWithoutContext.prototype.componentDidMount = function () {\n        if (this.element) {\n            if (this.props.autoFocus) {\n                this.element.focus();\n            }\n        }\n    };\n    /**\n     * @hidden\n     */\n    DialogWithoutContext.prototype.render = function () {\n        var _this = this;\n        var _a;\n        var id = this.props.id !== undefined ? this.props.id : this.titleId;\n        var _b = this.props, title = _b.title, width = _b.width, height = _b.height, children = _b.children, minWidth = _b.minWidth, dir = _b.dir, style = _b.style, contentStyle = _b.contentStyle;\n        var elementsArray = React.Children.toArray(children);\n        var content = this.getContent(elementsArray);\n        var actions = this.getActionBar(elementsArray);\n        var aria = title ? {\n            'aria-labelledby': id\n        } : null;\n        var closeIcon = this.props.closeIcon !== undefined ? this.props.closeIcon : true;\n        var currentZIndex = this.getCurrentZIndex();\n        var dialogElement = (React.createElement(ZIndexContext.Provider, { value: currentZIndex },\n            React.createElement(\"div\", __assign({}, (_a = {}, _a[DATA_DIALOGS_ID] = this._id, _a), { className: 'k-dialog-wrapper' + (this.props.className ? ' ' + this.props.className : ''), onKeyDown: this.onKeyDown, tabIndex: 0, dir: dir, style: __assign({ zIndex: currentZIndex }, style), ref: (function (el) { return _this.element = el; }) }),\n                React.createElement(\"div\", { className: \"k-overlay\" }),\n                React.createElement(\"div\", __assign({}, aria, { className: \"k-widget k-window k-dialog\", role: \"dialog\", style: { width: width, height: height, minWidth: minWidth } }),\n                    this.props.title &&\n                        React.createElement(DialogTitleBar, { closeIcon: closeIcon, onCloseButtonClick: this.onCloseDialog, id: id }, title),\n                    React.createElement(\"div\", { className: \"k-window-content k-dialog-content\", style: contentStyle }, content),\n                    actions))));\n        if (canUseDOM) {\n            return ReactDOM.createPortal(dialogElement, this.props.appendTo || document.body);\n        }\n        return null;\n    };\n    DialogWithoutContext.prototype.getActionBar = function (children) {\n        return children.filter(function (child) { return child && child.type === DialogActionsBar; });\n    };\n    DialogWithoutContext.prototype.getContent = function (children) {\n        return children.filter(function (child) {\n            return child && child.type !== DialogActionsBar;\n        });\n    };\n    DialogWithoutContext.prototype.generateTitleId = function () {\n        return 'dialog-title' + this._id;\n    };\n    DialogWithoutContext.displayName = 'Dialog';\n    /**\n     * @hidden\n     */\n    DialogWithoutContext.propTypes = {\n        title: PropTypes.any,\n        id: PropTypes.string,\n        dir: PropTypes.string,\n        style: PropTypes.object,\n        closeIcon: PropTypes.bool,\n        width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n        height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n        minWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n        autoFocus: PropTypes.bool\n    };\n    /**\n     * @hidden\n     */\n    DialogWithoutContext.defaultProps = {\n        autoFocus: false\n    };\n    /**\n     * @hidden\n     */\n    DialogWithoutContext.contextType = ZIndexContext;\n    return DialogWithoutContext;\n}(React.Component));\n/**\n * Represents the PropsContext of the `Dialog` component.\n * Used for global configuration of all `Dialog` instances.\n */\nexport var DialogPropsContext = createPropsContext();\n/* eslint-disable @typescript-eslint/no-redeclare -- intentionally naming the component the same as the type */\n/**\n * Represents the [KendoReact Dialog component]({% slug overview_dialog %}).\n *\n * Accepts properties of type [DialogProps]({% slug api_dialogs_dialogprops %}).\n * Obtaining the `ref` returns an object of type [DialogHandle]({% slug api_dialogs_dialoghandle %}).\n */\nexport var Dialog = withPropsContext(DialogPropsContext, DialogWithoutContext);\nDialog.displayName = 'KendoReactDialog';\n","import { AxiosInstances as AxiosInstance} from './BaseService'\r\n\r\nexport default {\r\n    getAllSetupSchool: () =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': '/SetupSchool'\r\n        })\r\n}","import React, { useState, useEffect, useRef } from 'react';\r\nimport { Button, Form} from 'react-bootstrap';\r\nimport { DropDownList, DropDownListChangeEvent } from '@progress/kendo-react-dropdowns';\r\nimport { FormMode,IDropDownValue } from '../../services/Utility'\r\nimport ILicenseAllocation from '../../model/ILicenseAllocation';\r\nimport { RadioButton } from '@progress/kendo-react-inputs';\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { filterBy, CompositeFilterDescriptor, } from \"@progress/kendo-data-query\";\r\nimport schoolListService from '../../services/SchoolListService'\r\n\r\ninterface IVendorFormContent {\r\n  id?: number\r\n  location:string\r\n  vendorlist:IDropDownValue[]\r\n  vendorAllocatedlist:IDropDownValue[]\r\n  formmode:FormMode\r\n  datasource: any\r\n  isEditable?: boolean | false\r\n  onSave: (event: React.MouseEvent<HTMLElement,MouseEvent>,actionType: FormMode, data:ILicenseAllocation) => void\r\n}\r\nexport default function VendorCrudContent(props:IVendorFormContent) {\r\n  const mountedRef = useRef(true);\r\n\r\n  const [originalSchoolList, setOriginalSchoolList] = useState<IDropDownValue[]>([]);\r\n  const [schoolListTo, setSchoolListTo] = useState<IDropDownValue[]>([]);\r\n  const [vendorList, setVendorList] = useState<IDropDownValue[]>([]);\r\n  const [vendorAllocatedList, setVendorAllocatedList] = useState<IDropDownValue[]>([]);\r\n  const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n  const [formValue, setFormValue] = useState<ILicenseAllocation>({\r\n    id:0,\r\n    locationCode:'',\r\n    fromLocationCode: '',\r\n    toLocationCode:'',\r\n    vendorId: 0,\r\n    vendorName: '',\r\n    quantityAllocated: 0,\r\n    quantityAssigned: 0,\r\n    quantityCap: 0\r\n  });\r\n\r\n  const getAllSchools = () =>{\r\n    schoolListService.getAllSetupSchool().then(res=>{\r\n      let dropDownData = res.data.map((sl: any) => ({\r\n        id: sl.locationCode,\r\n        text: sl.locationCode + ' -- ' + sl.schoolName\r\n    }));\r\n    setSchoolListTo(dropDownData)\r\n    setOriginalSchoolList(dropDownData)\r\n    })\r\n  }\r\n\r\n  useEffect(() => {\r\n    setFormMode(props.formmode)\r\n      getAllSchools()\r\n      setVendorList(props.vendorlist)\r\n      setVendorAllocatedList(props.vendorAllocatedlist)\r\n      setFormValue({ ...formValue, locationCode:props.location,fromLocationCode:props.location});\r\n\r\n    return () => { mountedRef.current = false }\r\n  }, []);\r\n\r\n  const handleChange = (event: any) => {\r\n    const target = event.target //as HTMLSelectElement\r\n\r\n    setFormValue({ ...formValue, [target.name]: target.value });\r\n\r\n  };\r\n  const schoolChange = (event: DropDownListChangeEvent) => {\r\n    const target = event.target //as HTMLSelectElement\r\n    setFormValue({ ...formValue, toLocationCode: target.value.id });\r\n\r\n  };\r\n  const vendorChange = (event: DropDownListChangeEvent) => {\r\n    const target = event.target //as HTMLSelectElement\r\n    setFormValue({ ...formValue, vendorName: target.value.text, vendorId: target.value.id });\r\n\r\n  };\r\n\r\n  const [errors, setErrors] = useState({\r\n    toLocationCodeError: '',\r\n    vendorNameError: '',\r\n    licenseQuantityError: '',\r\n  })\r\n  const validate = () => {\r\n    let error = {\r\n      toLocationCodeError: '',\r\n      vendorNameError: '',\r\n      licenseQuantityError: '',\r\n    };\r\n\r\n    if (formMode == FormMode.New) {\r\n      if (!formValue.vendorName) { error.vendorNameError = \"Vendor Name is required\"; }\r\n\r\n      if (!formValue.quantityAllocated) { error.licenseQuantityError = \"Enter Quantity Purchased\"; }\r\n\r\n      setErrors(error);\r\n      if (error.vendorNameError || error.licenseQuantityError) {\r\n        return false;\r\n      }\r\n    }\r\n    else if (formMode == FormMode.Transfer) {\r\n      if (!formValue.toLocationCode) { error.toLocationCodeError = \"Receiving school is required\"; }\r\n      if (!formValue.vendorName) { error.vendorNameError = \"Vendor Name is required\"; }\r\n\r\n      if (!formValue.quantityAllocated) { error.licenseQuantityError = \"Enter Quantity Purchased\"; }\r\n\r\n      setErrors(error);\r\n      if (error.vendorNameError ||error.licenseQuantityError||error.toLocationCodeError) {\r\n        return false;\r\n      }\r\n    }\r\n    return true;\r\n  };\r\n  const onFormAction = (Id: number, actionType: FormMode) => {\r\n    setErrors({\r\n      toLocationCodeError: '',\r\n      vendorNameError: '',\r\n      licenseQuantityError: '',\r\n    });\r\n    setFormValue({...formValue,\r\n    id:0,\r\n    toLocationCode:'',\r\n    vendorId: 0,\r\n    vendorName: '',\r\n    quantityAllocated: 0,\r\n    quantityAssigned: 0,\r\n    quantityCap: 0\r\n    });\r\n \r\n    switch (actionType) {\r\n\r\n      case FormMode.New:\r\n        setFormMode(FormMode.New)\r\n\r\n        //Clear Existing vlues\r\n        break;\r\n      case FormMode.Transfer:\r\n        setFormMode(FormMode.Transfer)\r\n        //Clear Existing vlues\r\n        break;\r\n      default: {\r\n        setFormMode(FormMode.None)\r\n        break;\r\n      }\r\n    }\r\n  }\r\n\r\n  const onSave = (event: React.MouseEvent<HTMLElement>, actionType: FormMode) => {\r\n    \r\n    let formData:ILicenseAllocation ={\r\n      id:Number(formValue.id),\r\n      locationCode:formValue.locationCode,\r\n      fromLocationCode: formValue.fromLocationCode,\r\n      toLocationCode:formValue.toLocationCode,\r\n      vendorId: Number(formValue.vendorId),\r\n      vendorName: formValue.vendorName,\r\n      quantityAllocated: Number(formValue.quantityAllocated),\r\n      quantityAssigned: 0,\r\n      quantityCap: Number(formValue.quantityCap)\r\n    };\r\n\r\n    switch (actionType) {\r\n      case FormMode.New:\r\n        // messageService.post(message).then(response => {\r\n        //   // Display Success message\r\n        // })\r\n        event.preventDefault();\r\n        if (validate()) {\r\n\r\n          props.onSave(event, FormMode.New,formData);\r\n         }\r\n        //Clear Existing vlues\r\n        break;\r\n        case FormMode.Transfer:\r\n        // messageService.post(message).then(response => {\r\n        //   // Display Success message\r\n        // })\r\n        event.preventDefault();\r\n        if (validate()) {\r\n\r\n          props.onSave(event, FormMode.Transfer,formData);\r\n         }\r\n        //Clear Existing vlues\r\n        break;\r\n      default: {\r\n        props.onSave(event, FormMode.None,formData);\r\n        break;\r\n      }\r\n    }\r\n  }\r\n  const filterData = (filter: any) => {\r\n    let data = originalSchoolList.slice();\r\n    return filterBy(data, filter);\r\n  }\r\n\r\n  const filterChange = (event: any) => {\r\n    let data = filterData(event.filter)\r\n    onSchoolSearch(event, data);\r\n  }\r\n\r\n  const onSchoolSearch = (event: any, data: IDropDownValue[]) => {\r\n    setSchoolListTo(data)\r\n}\r\n\r\n  return (\r\n    <div>\r\n      {formMode == FormMode.New &&(\r\n\r\n          <Dialog title={\"Manage Licenses\"} onClose={(e: any) => onSave(e, FormMode.None)}>\r\n\r\n          <Form.Group>\r\n            <Form.Label className=\"mr-2\"><RadioButton name=\"transferLicense\" checked={true} value='Add Licenses' onClick={(e) => { onFormAction(0, FormMode.New) }}> Add Licenses</RadioButton></Form.Label>\r\n            <Form.Label><RadioButton name=\"transferLicense\" checked={false} value='Transfer Licenses' onClick={(e) => { onFormAction(0, FormMode.Transfer) }}> Transfer Licenses</RadioButton></Form.Label>\r\n          </Form.Group>\r\n\r\n          <Form>\r\n            <Form.Group controlId=\"vendorName\">\r\n              <Form.Label>Vendor</Form.Label>\r\n              <DropDownList\r\n                style={{ width: '100%' }}\r\n                data={vendorList}\r\n                textField=\"text\"\r\n                onChange={vendorChange}\r\n              />\r\n              <Form.Text className=\"text-danger\">{errors.vendorNameError}</Form.Text>\r\n            </Form.Group>\r\n\r\n            <Form.Group controlId=\"quantityAllocated\">\r\n              <Form.Label>Number of Licenses</Form.Label>\r\n              <Form.Control type=\"number\" name=\"quantityAllocated\" value={formValue.quantityAllocated} onChange={handleChange} />\r\n              <Form.Text className=\"text-danger\">{errors.licenseQuantityError}</Form.Text>\r\n            </Form.Group>\r\n          </Form>\r\n        {/* </Modal.Body>\r\n        <Modal.Footer>\r\n          <Button variant=\"secondary\" onClick={(e) => onSave(e, FormMode.None)}>Close</Button>\r\n          <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Save</Button>\r\n        </Modal.Footer>\r\n      </Modal> */}\r\n      <DialogActionsBar>\r\n          <Button className=\"m-2\" variant=\"secondary\" onClick={(e) => onSave(e, FormMode.None)}>Close</Button>\r\n          <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Save</Button>\r\n        </DialogActionsBar>\r\n      </Dialog>\r\n    )}\r\n    {formMode== FormMode.Transfer&&(\r\n      <Dialog title={\"Manage Licenses\"} onClose={(e: any) => onSave(e, FormMode.None)}>\r\n      {/* <Modal backdrop=\"static\" keyboard={false} animation={false} show={formMode == FormMode.Transfer} onHide={(e:any) => onSave(e, FormMode.None)}>\r\n        <Modal.Header closeButton className=\"bg-primary text-white\">\r\n          <Modal.Title>Manage Licenses</Modal.Title>\r\n        </Modal.Header>\r\n        <Modal.Body> */}\r\n          <Form.Group>\r\n            <Form.Label className=\"mr-2\"><RadioButton name=\"transferLicense\" checked={false} value='Add Licenses' onClick={(e) => { onFormAction(0, FormMode.New) }}> Add Licenses</RadioButton></Form.Label>\r\n            <Form.Label><RadioButton name=\"transferLicense\" checked={true} value='Transfer Licenses' onClick={(e) => { onFormAction(0, FormMode.Transfer) }}> Transfer Licenses</RadioButton></Form.Label>\r\n          </Form.Group>\r\n          <Form>\r\n            <Form.Group controlId=\"schoolListTo\">\r\n              <Form.Label>Receiving School</Form.Label>\r\n              <DropDownList\r\n                style={{ width: '100%' }}\r\n                data={schoolListTo}\r\n                textField=\"text\"\r\n                filterable={true}\r\n                onFilterChange={filterChange}\r\n                onChange={schoolChange}\r\n              />\r\n              <Form.Text className=\"text-danger\">{errors.toLocationCodeError}</Form.Text>\r\n            </Form.Group>\r\n\r\n            <Form.Group controlId=\"vendorAllocatedList\">\r\n              <Form.Label>Vendor</Form.Label>\r\n              <DropDownList\r\n                style={{ width: '100%' }}\r\n                data={vendorAllocatedList}\r\n                textField=\"text\"\r\n                onChange={vendorChange}\r\n              />\r\n              <Form.Text className=\"text-danger\">{errors.vendorNameError}</Form.Text>\r\n            </Form.Group>\r\n            \r\n            <Form.Group controlId=\"quantityAllocated\">\r\n              <Form.Label>Number of Licenses</Form.Label>\r\n              <Form.Control type=\"number\" name=\"quantityAllocated\" value={formValue.quantityAllocated} onChange={handleChange} />\r\n              <Form.Text className=\"text-danger\">{errors.licenseQuantityError}</Form.Text>\r\n            </Form.Group>\r\n          </Form>\r\n        {/* </Modal.Body>\r\n        <Modal.Footer>\r\n          <Button variant=\"secondary\" onClick={(e) => onSave(e, FormMode.None)}>Close</Button>\r\n          <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Save</Button>\r\n        </Modal.Footer>\r\n      </Modal> */}\r\n              <DialogActionsBar>\r\n          <Button className=\"m-2\" variant=\"secondary\" onClick={(e) => onSave(e, FormMode.None)}>Close</Button>\r\n          <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Save</Button>\r\n        </DialogActionsBar>\r\n      </Dialog>\r\n      )}\r\n    </div>\r\n  )\r\n}\r\n\r\n","import React, { useState, useEffect, useRef } from 'react';\r\nimport { Modal, Button, Form, Dropdown } from 'react-bootstrap';\r\nimport { DropDownList, DropDownListChangeEvent } from '@progress/kendo-react-dropdowns';\r\nimport { FormMode,IDropDownValue } from '../../services/Utility'\r\nimport ILicenseAllocation from '../../model/ILicenseAllocation';\r\nimport IVendorLicenseContent from '../../model/IVendorLicenseContent';\r\n\r\ninterface IVendorFormContent {\r\n  id?: number\r\n  location:string\r\n  vendorlist:IDropDownValue[]\r\n  formmode:FormMode\r\n  datasource: IVendorLicenseContent\r\n  isEditable?: boolean | false\r\n  onVendorEditClose:(data:FormMode)=>void,\r\n  onSave: (event: React.MouseEvent<HTMLElement,MouseEvent>,actionType: FormMode,data:ILicenseAllocation) => void\r\n}\r\nexport default function VendorEditContent(props:IVendorFormContent) {\r\n  const mountedRef = useRef(true);\r\n  const [vendorList, setVendorList] = useState<IDropDownValue>({\r\n    id: props.datasource.vendorId.toString(),\r\n    text:props.datasource.vendorName\r\n  });\r\n  const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n  const [formValue, setFormValue] = useState<ILicenseAllocation>({\r\n    id:0,\r\n    locationCode:'',\r\n    fromLocationCode: '',\r\n    toLocationCode:'',\r\n    vendorId: 0,\r\n    vendorName: '',\r\n    quantityAllocated: 0,\r\n    quantityAssigned: 0,\r\n    quantityCap: 0\r\n  });\r\n\r\n  useEffect(() => {\r\n    setFormMode(props.formmode)\r\n      setFormValue({ ...formValue,\r\n        id:props.datasource.id,\r\n        locationCode:props.location,\r\n        vendorId: props.datasource.vendorId,\r\n        vendorName: props.datasource.vendorName,\r\n        quantityAllocated: props.datasource.totalLicenses,\r\n        quantityAssigned: 0,\r\n        quantityCap: props.datasource.totalLicenses\r\n       });\r\n    return () => { mountedRef.current = false }\r\n  }, []);\r\n\r\n  const handleChange = (event: any) => {\r\n    const target = event.target //as HTMLSelectElement\r\n\r\n    setFormValue({ ...formValue, [target.name]: [target.value] });\r\n  };\r\n  const vendorChange = (event: DropDownListChangeEvent) => {\r\n    const target = event.target //as HTMLSelectElement\r\n    setFormValue({ ...formValue, vendorName: target.value.text, vendorId: target.value.id });\r\n\r\n  };\r\n\r\n  const [errors, setErrors] = useState({\r\n    vendorNameError: '',\r\n    licenseQuantityError: '',\r\n  })\r\n  const validate = () => {\r\n    let error = {\r\n      vendorNameError: '',\r\n      licenseQuantityError: '',\r\n    };\r\n\r\n    if (formMode == FormMode.New||formMode == FormMode.Edit) {\r\n      if (!formValue.vendorName) { error.vendorNameError = \"Vendor Name is required\"; }\r\n\r\n      if (!formValue.quantityAllocated||formValue.quantityAllocated==null) { error.licenseQuantityError = \"Total Licenses is required\"; }\r\n\r\n      let assignedLicense = props.datasource.totalLicenses - props.datasource.availableLicenses\r\n\r\n      if (formValue.quantityAllocated - assignedLicense < 0) { error.licenseQuantityError = `Total License can't be less than ${assignedLicense}`; }\r\n      setErrors(error);\r\n      if (error.vendorNameError || error.licenseQuantityError) {\r\n        return false;\r\n      }\r\n    }\r\n    return true;\r\n  };\r\n\r\n  const onSave = (event: React.MouseEvent<HTMLElement>, actionType: FormMode) => {\r\n    \r\n    let formData: ILicenseAllocation = {\r\n      id:Number(formValue.id),\r\n      locationCode:formValue.locationCode,\r\n      fromLocationCode: '',\r\n      toLocationCode:'',\r\n      vendorId: Number(formValue.vendorId),\r\n      vendorName: formValue.vendorName,\r\n      quantityAllocated: Number(formValue.quantityAllocated),\r\n      quantityAssigned: props.datasource.totalLicenses - props.datasource.availableLicenses,\r\n      quantityCap: Number(formValue.quantityCap)\r\n    };\r\n\r\n    switch (actionType) {\r\n      case FormMode.Edit:\r\n        setFormMode(FormMode.Edit)\r\n        // messageService.edit(message).then(response => {\r\n        //   // Display Success message\r\n        // })\r\n        event.preventDefault();\r\n        if (validate()) {\r\n          props.onSave(event, FormMode.Edit,formData);\r\n         }\r\n        break;\r\n      default: {\r\n        props.onSave(event, FormMode.None,formData);\r\n        break;\r\n      }\r\n    }\r\n  }\r\n\r\n  return (\r\n    <div>\r\n      <Modal backdrop=\"static\" keyboard={false} animation={false} show={formMode == FormMode.Edit} onHide={() => props.onVendorEditClose(FormMode.None) }>\r\n        <Modal.Header closeButton className=\"bg-primary text-white\">\r\n          <Modal.Title>Edit Licenses</Modal.Title>\r\n        </Modal.Header>\r\n        <Modal.Body>\r\n          <Form>\r\n          <Form.Group controlId=\"vendorName\">\r\n            <Form.Label>Vendor</Form.Label>\r\n            <DropDownList\r\n              disabled={true}\r\n              style={{ width: '100%' }}\r\n              defaultValue={vendorList}              \r\n              textField=\"text\"\r\n              onChange={vendorChange}\r\n            />\r\n            <Form.Text className=\"text-danger\">{errors.vendorNameError}</Form.Text>\r\n          </Form.Group>\r\n          <Form.Group controlId=\"quantityAllocated\">\r\n              <Form.Label>Number of Licenses</Form.Label>\r\n              <Form.Control type=\"number\" name=\"quantityAllocated\" value={formValue.quantityAllocated} onChange={handleChange} />\r\n              <Form.Text className=\"text-danger\">{errors.licenseQuantityError}</Form.Text>\r\n          </Form.Group>\r\n          </Form>\r\n        </Modal.Body>\r\n        <Modal.Footer>\r\n          <Button variant=\"secondary\" onClick={(e) => onSave(e, FormMode.None)}>Close</Button>\r\n          <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Save</Button>\r\n        </Modal.Footer>\r\n      </Modal>\r\n    </div>\r\n  )\r\n}\r\n\r\n","export default function GridHierarchyExpand(props: any)\r\n{\r\n  let dataItem = props.dataItem\r\n  return(\r\n      <td className=\"k-hierarchy-cell\">\r\n        {dataItem.expanded \r\n        ? <a onClick={() => props.expandChange(dataItem)} className=\"k-icon k-minus\"></a> \r\n        : <a onClick={() => props.expandChange(dataItem)} className=\"k-icon k-plus\"></a>}\r\n      </td>\r\n    )\r\n}\r\n ","import React, { useState, useEffect, useRef } from 'react';\r\n\r\nexport default function IconGear() {\r\n\r\n  return (\r\n    <svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0px\" y=\"0px\" viewBox=\"0 0 90.3 64.9\">\r\n      <title>Browser Window with Gear</title>\r\n      <g transform=\"translate(-31.68 -738.224)\">\r\n          <path d=\"M31.7,795.9v-50.5c0.2-0.8,0.4-1.6,0.6-2.4c1.2-3,4.2-5,7.5-4.8c7,0,14,0,21,0c17.8,0,35.6,0,53.4,0c4.2,0.1,7.6,3.5,7.7,7.7c0,16.5,0,33,0,49.5c0,4.3-3.5,7.7-7.8,7.7c-24.9,0-49.9,0-74.8,0 c-3.1,0.1-5.9-1.8-7-4.6C32.1,797.6,31.8,796.8,31.7,795.9z M105.1,797.8L105.1,797.8c0.1,0.1,0.2,0.1,0.3,0.1c2.9,0,5.9,0,8.8,0 c0.5,0,1-0.2,1.4-0.5c0.8-0.6,1.3-1.5,1.2-2.5c0-12.2,0-24.3,0-36.5c0-1.1,0-1.1-1-1.1H37.9c-0.1,0-0.3,0-0.4,0 c-0.4,0-0.6,0.1-0.6,0.6c0,0.1,0,0.2,0,0.4v36.3c0,0.2,0,0.3,0,0.5c-0.1,1.5,1.1,2.8,2.6,2.8c0.1,0,0.2,0,0.3,0c3.4,0,6.8,0,10.2,0\r\n              h0.5c-0.2-0.2-0.5-0.4-0.7-0.5c-1.1-0.5-2.2-1-3.3-1.5c-0.9-0.4-1.5-1.3-1.4-2.3c0-0.5,0.1-1,0.3-1.4c0.9-2.3,1.9-4.6,2.8-6.9 c0.4-1.4,2-2.3,3.4-1.8c0.2,0,0.3,0.1,0.5,0.2c1.3,0.5,2.5,1,3.8,1.6c0.3,0.2,0.7,0.1,0.8-0.2c0,0,0,0,0,0c1.3-1.6,2.7-3.1,4.3-4.4 c0.6-0.5,0.6-0.5,0.3-1.2c-0.5-1.3-1.1-2.5-1.5-3.8c-0.6-1.3,0-2.9,1.4-3.5c0.1,0,0.1,0,0.2-0.1c2.4-1,4.7-2,7.1-2.9 c1.3-0.7,2.9-0.2,3.6,1.1c0.1,0.1,0.1,0.3,0.2,0.5c0.5,1.3,1,2.5,1.6,3.8c0.1,0.3,0.4,0.5,0.7,0.4c2.2-0.2,4.3-0.2,6.5,0 c0.3,0.1,0.7-0.1,0.7-0.4c0.5-1.3,1.1-2.5,1.6-3.8c0.4-1.4,2-2.2,3.4-1.8c0.2,0,0.3,0.1,0.4,0.2c2.4,1,4.7,2,7.1,2.9\r\n              c1.4,0.5,2.2,2,1.7,3.4c0,0.1-0.1,0.2-0.1,0.3c-0.5,1.2-1,2.5-1.5,3.7c-0.3,0.7-0.3,0.7,0.3,1.2c1.6,1.3,3.1,2.8,4.4,4.4 c0.2,0.3,0.5,0.4,0.8,0.2c0,0,0,0,0,0c1.3-0.6,2.7-1.1,4-1.7c1.4-0.6,2.9,0.1,3.5,1.4c0,0,0,0,0,0c1,2.5,2.1,4.9,3.1,7.4 c0.2,0.4,0.2,0.9,0.2,1.4c-0.1,1-0.7,1.8-1.6,2.2c-1,0.5-2,0.9-3,1.3C105.7,797.5,105.4,797.6,105.1,797.8z M77.8,797.9 c4.1,0,8.2,0,12.2,0c0.6,0,0.7-0.1,0.4-0.6c-2.5-6.7-9.8-10.4-16.6-8.3c-4,1.1-7.3,4.1-8.6,8.1c-0.3,0.8-0.3,0.8,0.6,0.8\r\n              L77.8,797.9z M90.8,749.1c0-2.4-1.9-4.4-4.3-4.4c-2.4,0-4.4,1.9-4.4,4.3l0,0c0,2.4,1.9,4.4,4.3,4.4 C88.8,753.5,90.7,751.5,90.8,749.1z M103.7,749.1c0,2.4,2,4.3,4.4,4.3c2.4,0,4.3-2,4.3-4.4c0-2.4-1.9-4.3-4.3-4.3 C105.7,744.7,103.7,746.6,103.7,749.1C103.7,749.1,103.7,749.1,103.7,749.1L103.7,749.1z M101.9,749.1c0-2.4-1.9-4.4-4.3-4.4 c-2.3,0-4.3,1.8-4.4,4.2c-0.1,2.4,1.7,4.5,4.1,4.6c2.4,0.1,4.5-1.7,4.6-4.1C101.9,749.3,101.9,749.2,101.9,749.1z\"/>\r\n      </g>\r\n  </svg>\r\n  )\r\n}\r\n\r\n","import React, { useState, useEffect, useReducer, useRef, useContext } from 'react'\r\nimport { Grid, GridColumn, GridToolbar } from '@progress/kendo-react-grid'\r\nimport IVendorLicenseContent from '../../model/IVendorLicenseContent'\r\nimport VendorDetail from '../../shared/VendorDetail'\r\nimport VendorContentDisplay from './VendorContentDisplay'\r\nimport VendorManageContent from './VendorManageContent'\r\nimport VendorEditContent from './VendorEditContent'\r\nimport GridHierarchyExpand from '../../shared/GridHierarchyExpand'\r\nimport { FormMode, IDropDownValue } from '../../services/Utility'\r\nimport { Dropdown, DropdownButton } from 'react-bootstrap'\r\nimport licenseAllocationService from '../../services/LicenseAllocation'\r\nimport ILicenseAllocation from '../../model/ILicenseAllocation'\r\nimport IconBrowserGear from '../../assets/icons/icon-window-gear'\r\nimport axios, { AxiosResponse } from 'axios'\r\nimport { AuthContextDefault, UserProfileType, Year } from '../../services/AppContext';\r\nimport LocalStorageService from '../../services/LocalStorage'\r\nimport { CheckIfNYCDOELicense } from '../../helpers/helper'\r\ninterface ILocationCode {\r\n    id: string,\r\n}\r\nexport default function VendorContent(locationCode: ILocationCode) {\r\n    const mountedRef = useRef(true);\r\n    const [userProfile, setUserProfile] = useState<UserProfileType>(AuthContextDefault.userProfile);\r\n    const { orginalSchoolYear } = useContext(Year);\r\n    //Page Load event - Get data from Service\r\n    const [data, setRowData] = useState<IVendorLicenseContent[]>([]);\r\n    const [editData, setEditData] = useState<IVendorLicenseContent>({\r\n        id: 0,\r\n        vendorId: 0,\r\n        vendorName: '',\r\n        vendorDescription: '',\r\n        licenseModel: '',\r\n        licenseType: '',\r\n        availableLicenses: 0,\r\n        totalLicenses: 0\r\n    });\r\n    const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n    //Force re-render the child component on Expand\r\n    const [ignored, forceUpdate] = useReducer(x => x + 1, 0);\r\n    const [vendorList, setVendorList] = useState<IDropDownValue[]>([]);\r\n    const [vendorAllocatedList, setVendorAllocatedList] = useState<IDropDownValue[]>([]);\r\n\r\n    const [formValue, setFormValue] = useState<ILicenseAllocation>({\r\n        id: 0,\r\n        locationCode: '',\r\n        fromLocationCode: '',\r\n        toLocationCode: '',\r\n        vendorId: 0,\r\n        vendorName: '',\r\n        quantityAllocated: 0,\r\n        quantityAssigned: 0,\r\n        quantityCap: 0\r\n    });\r\n\r\n    const getVendorDetail = () => {\r\n        licenseAllocationService.getAllocatedVendorsDetail(locationCode.id, +orginalSchoolYear.id).then(response => {\r\n            setRowData(response.data)\r\n            data.map((item: any) => {\r\n                item.expanded = false;\r\n                item.isSelected = false\r\n                return item;\r\n            })\r\n            let nonAllocatedVendor = vendorList\r\n            nonAllocatedVendor = nonAllocatedVendor.filter(x => !response.data.filter((y: IVendorLicenseContent) => y.vendorId === +x.id).length)\r\n            setVendorList(nonAllocatedVendor)\r\n        })\r\n    }\r\n    useEffect(() => {\r\n        if (locationCode.id && +orginalSchoolYear.id != 0) {\r\n            axios.all([\r\n                licenseAllocationService.getAllocatedVendorsDetail(locationCode.id, +orginalSchoolYear.id),\r\n                licenseAllocationService.getNonAllocatedVendors(locationCode.id, +orginalSchoolYear.id),\r\n                \r\n                licenseAllocationService.getAllocatedVendors(locationCode.id, +orginalSchoolYear.id)\r\n            ])\r\n                .then(responseArray => {\r\n                    setRowData(responseArray[0].data)\r\n                    responseArray[0].data.map((item: any) => {\r\n                        item.expanded = false;\r\n                        item.isSelected = false\r\n                        return item;\r\n                    })\r\n\r\n                    let nonAllocatedVendorDropDownData = responseArray[1].data.map((vl: any) => ({\r\n                        id: vl.id,\r\n                        text: vl.vendorName\r\n                    }));\r\n                    setVendorList(nonAllocatedVendorDropDownData)\r\n                    let allocatedVendorDropDownData = responseArray[2].data.map((vl: any) => ({\r\n                        id: vl.id,\r\n                        text: vl.vendorName\r\n                    }));\r\n                    setVendorAllocatedList(allocatedVendorDropDownData)\r\n                })\r\n            setUserProfile(LocalStorageService.getUserProfile())\r\n        }\r\n        return () => { mountedRef.current = false }\r\n    }, [locationCode.id, orginalSchoolYear.id]);\r\n\r\n    //On click of expand this function will call\r\n    const SubGridHost = (props: any) => {\r\n        // feed data to below components, Call the service Based on the prop.Id\r\n        return (\r\n            <div>\r\n                <VendorDetail data={props.dataItem} />\r\n                <VendorContentDisplay locationCode={locationCode.id} vendorId={props.dataItem?.vendorId} />\r\n            </div>\r\n        )\r\n    }\r\n\r\n    const GridColumnHierarchyExpand = (props: any) => <GridHierarchyExpand {...props} expandChange={onGridExpand} />\r\n    const onGridExpand = (dataItem: any) => {\r\n        dataItem.expanded = !dataItem.expanded;\r\n        forceUpdate();\r\n    }\r\n    const onFormAction = (vendor: any, actionType: FormMode) => {\r\n        switch (actionType) {\r\n            case FormMode.New:\r\n                setFormMode(FormMode.New)\r\n\r\n                break;\r\n            case FormMode.Edit:\r\n                setFormMode(FormMode.Edit)\r\n                setEditData(vendor)\r\n\r\n                break;\r\n            case FormMode.Transfer:\r\n                setFormMode(FormMode.Transfer)\r\n                setEditData(vendor)\r\n\r\n                break;\r\n            default: {\r\n                setFormMode(FormMode.None)\r\n                break;\r\n            }\r\n        }\r\n    }\r\n    const vendorFormClose = (data: FormMode) => {\r\n        setFormMode(data)\r\n    }\r\n\r\n    const onVendorSave = (event: any, actionType: FormMode, data: ILicenseAllocation) => {\r\n        switch (actionType) {\r\n            case FormMode.New:\r\n                event.preventDefault();\r\n                licenseAllocationService.post(data).then(response => {\r\n                    // Display Success message\r\n                    getVendorDetail();\r\n                    setFormMode(FormMode.None)\r\n                }\r\n                );\r\n                //Clear Existing vlues\r\n                break;\r\n            case FormMode.Edit:\r\n                event.preventDefault();\r\n                licenseAllocationService.put(data).then(response => {\r\n                    // Display Success message\r\n                    getVendorDetail();\r\n                    setFormMode(FormMode.None)\r\n                }\r\n\r\n                );\r\n                //Clear Existing vlues\r\n                break;\r\n            case FormMode.Transfer:\r\n                event.preventDefault();\r\n                licenseAllocationService.postTransfer(data).then(response => {\r\n                    // Display Success message\r\n                    getVendorDetail();\r\n                    setFormMode(FormMode.None)\r\n                }\r\n\r\n                );\r\n                //Clear Existing vlues\r\n                break;\r\n            default: {\r\n                setFormMode(FormMode.None)\r\n                break;\r\n            }\r\n        }\r\n    }\r\n\r\n    const MyCellComponent = (props : any) => {\r\n        // Extract the necessary data from props\r\n        const { dataItem } = props;\r\n      \r\n        // Use the extracted data to render the cell content\r\n        if(!CheckIfNYCDOELicense(dataItem.licenseModel)){\r\n            return (\r\n                <td className=\"text-right\" style={{ overflow: 'visible' }}>\r\n                  <DropdownButton\r\n                    menuAlign=\"right\"\r\n                    title={<i className='fas fa-bars'></i>}\r\n                    id=\"dropdown-menu-align-right\"\r\n                    size=\"sm\"\r\n                    variant=\"outline-primary\"\r\n                    className=\"menu-bars\"\r\n                  >\r\n                    <Dropdown.Item onClick={() => { onFormAction(dataItem, FormMode.Edit) }}>Edit Licenses</Dropdown.Item>\r\n                  </DropdownButton>\r\n                </td>\r\n              );\r\n        }\r\n\r\n        else {\r\n            return <td></td>\r\n        }\r\n        \r\n      };\r\n   \r\n    return (\r\n        <div>\r\n            {\r\n                (userProfile?.role?.roleName == 'System Administrator' && orginalSchoolYear.isCurrent != 0) ?\r\n                    <div className=\"text-right mb-2\">\r\n                        <button type=\"button\" className=\"btn btn-primary\" onClick={(e) => { onFormAction(0, FormMode.New) }}>\r\n                            <i className=\"fas fa-plus\"></i>\r\n                        </button>\r\n                    </div> : <div> </div>\r\n            }\r\n            {(formMode == FormMode.Transfer || formMode == FormMode.New) && <VendorManageContent location={locationCode.id}  vendorlist={vendorList} vendorAllocatedlist={vendorAllocatedList} formmode={formMode} datasource={data} isEditable={false}  onSave={onVendorSave} />} \r\n             Note: Any changes in the number of Vendor Licenses will affect the iLearnNYC License count.\r\n            <Grid\r\n                data={data}\r\n                detail={SubGridHost}\r\n                expandField={'expanded'}\r\n                scrollable={\"none\"}\r\n            >\r\n                <GridColumn field=\"expanded\" cell={GridColumnHierarchyExpand} title=' ' width={\"50px\"} />\r\n\r\n                <GridColumn field=\"VendorInfo\" title=\"Vendor\" cell={\r\n                    props => (\r\n                        <td>\r\n                            <div className=\"d-flex\">\r\n                                <div className=\"svg-app-icon text-blue-gray mr-3\" style={{ \"height\": \"30px\" }}>\r\n                                    <IconBrowserGear />\r\n                                </div>\r\n                                <div className=\"mb-0 h3\">{props.dataItem.vendorName}</div>\r\n                            </div>\r\n                        </td>\r\n                    )} />\r\n                <GridColumn field=\"AvailableLicense\" title=\"Available Licenses\"\r\n                    // Grid Header - center text\r\n                    headerCell={\r\n                        props => (\r\n                            <div className=\"text-center\">\r\n                                {props.title}\r\n                            </div>\r\n                        )}\r\n                    // Grid Cell - center text\r\n                    cell={\r\n                        props => (\r\n                            <td className=\"text-center\">\r\n                                <div>{!CheckIfNYCDOELicense(props.dataItem.licenseModel) ? props.dataItem.availableLicenses : 'unlimited'} </div>\r\n                            </td>\r\n                        )}\r\n                />\r\n                <GridColumn field=\"AvailableLicense\" title=\"Total Licenses\"\r\n                    // Grid Header - center text\r\n                    headerCell={\r\n                        props => (\r\n                            <div className=\"text-center\">\r\n                                {props.title}\r\n                            </div>\r\n                        )}\r\n                    // Grid Cell - center text\r\n                    cell={\r\n                        props => (\r\n                            <td className=\"text-center\">\r\n                                <div>{ props.dataItem.licenseModel != \"Unlimited use of catalog for unlimited users\" ? props.dataItem.totalLicenses : 'unlimited'}</div>\r\n                            </td>\r\n                        )}\r\n                />\r\n                {\r\n                    (userProfile?.role?.roleName == 'System Administrator' && orginalSchoolYear.isCurrent != 0  ) ?\r\n                        <GridColumn field=\"id\" title=\" \" cell={MyCellComponent\r\n                            } /> : <div></div>\r\n                }\r\n            </Grid>\r\n            {formMode == FormMode.Edit && <VendorEditContent location={locationCode.id} vendorlist={vendorList} formmode={formMode} datasource={editData} isEditable={true} onVendorEditClose={vendorFormClose} onSave={onVendorSave} />}\r\n        </div>\r\n    )\r\n}","import { useMemo, useRef } from 'react';\nimport useMounted from './useMounted';\nimport useWillUnmount from './useWillUnmount';\n\n/*\n * Browsers including Internet Explorer, Chrome, Safari, and Firefox store the\n * delay as a 32-bit signed integer internally. This causes an integer overflow\n * when using delays larger than 2,147,483,647 ms (about 24.8 days),\n * resulting in the timeout being executed immediately.\n *\n * via: https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout\n */\nconst MAX_DELAY_MS = 2 ** 31 - 1;\nfunction setChainedTimeout(handleRef, fn, timeoutAtMs) {\n  const delayMs = timeoutAtMs - Date.now();\n  handleRef.current = delayMs <= MAX_DELAY_MS ? setTimeout(fn, delayMs) : setTimeout(() => setChainedTimeout(handleRef, fn, timeoutAtMs), MAX_DELAY_MS);\n}\n\n/**\n * Returns a controller object for setting a timeout that is properly cleaned up\n * once the component unmounts. New timeouts cancel and replace existing ones.\n *\n *\n *\n * ```tsx\n * const { set, clear } = useTimeout();\n * const [hello, showHello] = useState(false);\n * //Display hello after 5 seconds\n * set(() => showHello(true), 5000);\n * return (\n *   <div className=\"App\">\n *     {hello ? <h3>Hello</h3> : null}\n *   </div>\n * );\n * ```\n */\nexport default function useTimeout() {\n  const isMounted = useMounted();\n\n  // types are confused between node and web here IDK\n  const handleRef = useRef();\n  useWillUnmount(() => clearTimeout(handleRef.current));\n  return useMemo(() => {\n    const clear = () => clearTimeout(handleRef.current);\n    function set(fn, delayMs = 0) {\n      if (!isMounted()) return;\n      clear();\n      if (delayMs <= MAX_DELAY_MS) {\n        // For simplicity, if the timeout is short, just set a normal timeout.\n        handleRef.current = setTimeout(fn, delayMs);\n      } else {\n        setChainedTimeout(handleRef, fn, Date.now() + delayMs);\n      }\n    }\n    return {\n      set,\n      clear,\n      handleRef\n    };\n  }, []);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport PropTypes from 'prop-types';\nimport React, { useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport useCallbackRef from '@restart/hooks/useCallbackRef';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport { placements } from './popper';\nimport usePopper from './usePopper';\nimport useRootClose from './useRootClose';\nimport useWaitForDOMRef from './useWaitForDOMRef';\nimport mergeOptionsWithPopperConfig from './mergeOptionsWithPopperConfig';\n\n/**\n * Built on top of `Popper.js`, the overlay component is\n * great for custom tooltip overlays.\n */\nvar Overlay = /*#__PURE__*/React.forwardRef(function (props, outerRef) {\n  var flip = props.flip,\n      offset = props.offset,\n      placement = props.placement,\n      _props$containerPaddi = props.containerPadding,\n      containerPadding = _props$containerPaddi === void 0 ? 5 : _props$containerPaddi,\n      _props$popperConfig = props.popperConfig,\n      popperConfig = _props$popperConfig === void 0 ? {} : _props$popperConfig,\n      Transition = props.transition;\n\n  var _useCallbackRef = useCallbackRef(),\n      rootElement = _useCallbackRef[0],\n      attachRef = _useCallbackRef[1];\n\n  var _useCallbackRef2 = useCallbackRef(),\n      arrowElement = _useCallbackRef2[0],\n      attachArrowRef = _useCallbackRef2[1];\n\n  var mergedRef = useMergedRefs(attachRef, outerRef);\n  var container = useWaitForDOMRef(props.container);\n  var target = useWaitForDOMRef(props.target);\n\n  var _useState = useState(!props.show),\n      exited = _useState[0],\n      setExited = _useState[1];\n\n  var _usePopper = usePopper(target, rootElement, mergeOptionsWithPopperConfig({\n    placement: placement,\n    enableEvents: !!props.show,\n    containerPadding: containerPadding || 5,\n    flip: flip,\n    offset: offset,\n    arrowElement: arrowElement,\n    popperConfig: popperConfig\n  })),\n      styles = _usePopper.styles,\n      attributes = _usePopper.attributes,\n      popper = _objectWithoutPropertiesLoose(_usePopper, [\"styles\", \"attributes\"]);\n\n  if (props.show) {\n    if (exited) setExited(false);\n  } else if (!props.transition && !exited) {\n    setExited(true);\n  }\n\n  var handleHidden = function handleHidden() {\n    setExited(true);\n\n    if (props.onExited) {\n      props.onExited.apply(props, arguments);\n    }\n  }; // Don't un-render the overlay while it's transitioning out.\n\n\n  var mountOverlay = props.show || Transition && !exited;\n  useRootClose(rootElement, props.onHide, {\n    disabled: !props.rootClose || props.rootCloseDisabled,\n    clickTrigger: props.rootCloseEvent\n  });\n\n  if (!mountOverlay) {\n    // Don't bother showing anything if we don't have to.\n    return null;\n  }\n\n  var child = props.children(_extends({}, popper, {\n    show: !!props.show,\n    props: _extends({}, attributes.popper, {\n      style: styles.popper,\n      ref: mergedRef\n    }),\n    arrowProps: _extends({}, attributes.arrow, {\n      style: styles.arrow,\n      ref: attachArrowRef\n    })\n  }));\n\n  if (Transition) {\n    var onExit = props.onExit,\n        onExiting = props.onExiting,\n        onEnter = props.onEnter,\n        onEntering = props.onEntering,\n        onEntered = props.onEntered;\n    child = /*#__PURE__*/React.createElement(Transition, {\n      \"in\": props.show,\n      appear: true,\n      onExit: onExit,\n      onExiting: onExiting,\n      onExited: handleHidden,\n      onEnter: onEnter,\n      onEntering: onEntering,\n      onEntered: onEntered\n    }, child);\n  }\n\n  return container ? /*#__PURE__*/ReactDOM.createPortal(child, container) : null;\n});\nOverlay.displayName = 'Overlay';\nOverlay.propTypes = {\n  /**\n   * Set the visibility of the Overlay\n   */\n  show: PropTypes.bool,\n\n  /** Specify where the overlay element is positioned in relation to the target element */\n  placement: PropTypes.oneOf(placements),\n\n  /**\n   * A DOM Element, Ref to an element, or function that returns either. The `target` element is where\n   * the overlay is positioned relative to.\n   */\n  target: PropTypes.any,\n\n  /**\n   * A DOM Element, Ref to an element, or function that returns either. The `container` will have the Portal children\n   * appended to it.\n   */\n  container: PropTypes.any,\n\n  /**\n   * Enables the Popper.js `flip` modifier, allowing the Overlay to\n   * automatically adjust it's placement in case of overlap with the viewport or toggle.\n   * Refer to the [flip docs](https://popper.js.org/popper-documentation.html#modifiers..flip.enabled) for more info\n   */\n  flip: PropTypes.bool,\n\n  /**\n   * A render prop that returns an element to overlay and position. See\n   * the [react-popper documentation](https://github.com/FezVrasta/react-popper#children) for more info.\n   *\n   * @type {Function ({\n   *   show: boolean,\n   *   placement: Placement,\n   *   update: () => void,\n   *   forceUpdate: () => void,\n   *   props: {\n   *     ref: (?HTMLElement) => void,\n   *     style: { [string]: string | number },\n   *     aria-labelledby: ?string\n   *     [string]: string | number,\n   *   },\n   *   arrowProps: {\n   *     ref: (?HTMLElement) => void,\n   *     style: { [string]: string | number },\n   *     [string]: string | number,\n   *   },\n   * }) => React.Element}\n   */\n  children: PropTypes.func.isRequired,\n\n  /**\n   * Control how much space there is between the edge of the boundary element and overlay.\n   * A convenience shortcut to setting `popperConfig.modfiers.preventOverflow.padding`\n   */\n  containerPadding: PropTypes.number,\n\n  /**\n   * A set of popper options and props passed directly to react-popper's Popper component.\n   */\n  popperConfig: PropTypes.object,\n\n  /**\n   * Specify whether the overlay should trigger `onHide` when the user clicks outside the overlay\n   */\n  rootClose: PropTypes.bool,\n\n  /**\n   * Specify event for toggling overlay\n   */\n  rootCloseEvent: PropTypes.oneOf(['click', 'mousedown']),\n\n  /**\n   * Specify disabled for disable RootCloseWrapper\n   */\n  rootCloseDisabled: PropTypes.bool,\n\n  /**\n   * A Callback fired by the Overlay when it wishes to be hidden.\n   *\n   * __required__ when `rootClose` is `true`.\n   *\n   * @type func\n   */\n  onHide: function onHide(props) {\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    if (props.rootClose) {\n      var _PropTypes$func;\n\n      return (_PropTypes$func = PropTypes.func).isRequired.apply(_PropTypes$func, [props].concat(args));\n    }\n\n    return PropTypes.func.apply(PropTypes, [props].concat(args));\n  },\n\n  /**\n   * A `react-transition-group@2.0.0` `<Transition/>` component\n   * used to animate the overlay as it changes visibility.\n   */\n  // @ts-ignore\n  transition: PropTypes.elementType,\n\n  /**\n   * Callback fired before the Overlay transitions in\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * Callback fired as the Overlay begins to transition in\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * Callback fired after the Overlay finishes transitioning in\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * Callback fired right before the Overlay transitions out\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * Callback fired as the Overlay begins to transition out\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * Callback fired after the Overlay finishes transitioning out\n   */\n  onExited: PropTypes.func\n};\nexport default Overlay;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"children\", \"transition\", \"popperConfig\"],\n    _excluded2 = [\"props\", \"arrowProps\", \"show\", \"update\", \"forceUpdate\", \"placement\", \"state\"];\nimport React, { useRef } from 'react';\nimport classNames from 'classnames';\nimport BaseOverlay from 'react-overlays/Overlay';\nimport safeFindDOMNode from 'react-overlays/safeFindDOMNode';\nimport usePopperMarginModifiers from './usePopperMarginModifiers';\nimport Fade from './Fade';\nvar defaultProps = {\n  transition: Fade,\n  rootClose: false,\n  show: false,\n  placement: 'top'\n};\n\nfunction wrapRefs(props, arrowProps) {\n  var ref = props.ref;\n  var aRef = arrowProps.ref;\n\n  props.ref = ref.__wrapped || (ref.__wrapped = function (r) {\n    return ref(safeFindDOMNode(r));\n  });\n\n  arrowProps.ref = aRef.__wrapped || (aRef.__wrapped = function (r) {\n    return aRef(safeFindDOMNode(r));\n  });\n}\n\nfunction Overlay(_ref) {\n  var overlay = _ref.children,\n      transition = _ref.transition,\n      _ref$popperConfig = _ref.popperConfig,\n      popperConfig = _ref$popperConfig === void 0 ? {} : _ref$popperConfig,\n      outerProps = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  var popperRef = useRef({});\n\n  var _usePopperMarginModif = usePopperMarginModifiers(),\n      ref = _usePopperMarginModif[0],\n      marginModifiers = _usePopperMarginModif[1];\n\n  var actualTransition = transition === true ? Fade : transition || null;\n  return /*#__PURE__*/React.createElement(BaseOverlay, _extends({}, outerProps, {\n    ref: ref,\n    popperConfig: _extends({}, popperConfig, {\n      modifiers: marginModifiers.concat(popperConfig.modifiers || [])\n    }),\n    transition: actualTransition\n  }), function (_ref2) {\n    var _state$modifiersData$;\n\n    var overlayProps = _ref2.props,\n        arrowProps = _ref2.arrowProps,\n        show = _ref2.show,\n        update = _ref2.update,\n        _ = _ref2.forceUpdate,\n        placement = _ref2.placement,\n        state = _ref2.state,\n        props = _objectWithoutPropertiesLoose(_ref2, _excluded2);\n\n    wrapRefs(overlayProps, arrowProps);\n    var popper = Object.assign(popperRef.current, {\n      state: state,\n      scheduleUpdate: update,\n      placement: placement,\n      outOfBoundaries: (state == null ? void 0 : (_state$modifiersData$ = state.modifiersData.hide) == null ? void 0 : _state$modifiersData$.isReferenceHidden) || false\n    });\n    if (typeof overlay === 'function') return overlay(_extends({}, props, overlayProps, {\n      placement: placement,\n      show: show\n    }, !transition && show && {\n      className: 'show'\n    }, {\n      popper: popper,\n      arrowProps: arrowProps\n    }));\n    return /*#__PURE__*/React.cloneElement(overlay, _extends({}, props, overlayProps, {\n      placement: placement,\n      arrowProps: arrowProps,\n      popper: popper,\n      className: classNames(overlay.props.className, !transition && show && 'show'),\n      style: _extends({}, overlay.props.style, overlayProps.style)\n    }));\n  });\n}\n\nOverlay.defaultProps = defaultProps;\nexport default Overlay;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nvar _excluded = [\"trigger\", \"overlay\", \"children\", \"popperConfig\", \"show\", \"defaultShow\", \"onToggle\", \"delay\", \"placement\", \"flip\"];\nimport contains from 'dom-helpers/contains';\nimport React, { cloneElement, useCallback, useRef } from 'react';\nimport useTimeout from '@restart/hooks/useTimeout';\nimport safeFindDOMNode from 'react-overlays/safeFindDOMNode';\nimport warning from 'warning';\nimport { useUncontrolledProp } from 'uncontrollable';\nimport Overlay from './Overlay';\n\nvar RefHolder = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(RefHolder, _React$Component);\n\n  function RefHolder() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = RefHolder.prototype;\n\n  _proto.render = function render() {\n    return this.props.children;\n  };\n\n  return RefHolder;\n}(React.Component);\n\nfunction normalizeDelay(delay) {\n  return delay && typeof delay === 'object' ? delay : {\n    show: delay,\n    hide: delay\n  };\n} // Simple implementation of mouseEnter and mouseLeave.\n// React's built version is broken: https://github.com/facebook/react/issues/4251\n// for cases when the trigger is disabled and mouseOut/Over can cause flicker\n// moving from one child element to another.\n\n\nfunction handleMouseOverOut( // eslint-disable-next-line @typescript-eslint/no-shadow\nhandler, args, relatedNative) {\n  var e = args[0];\n  var target = e.currentTarget;\n  var related = e.relatedTarget || e.nativeEvent[relatedNative];\n\n  if ((!related || related !== target) && !contains(target, related)) {\n    handler.apply(void 0, args);\n  }\n}\n\nvar defaultProps = {\n  defaultShow: false,\n  trigger: ['hover', 'focus']\n};\n\nfunction OverlayTrigger(_ref) {\n  var trigger = _ref.trigger,\n      overlay = _ref.overlay,\n      children = _ref.children,\n      _ref$popperConfig = _ref.popperConfig,\n      popperConfig = _ref$popperConfig === void 0 ? {} : _ref$popperConfig,\n      propsShow = _ref.show,\n      _ref$defaultShow = _ref.defaultShow,\n      defaultShow = _ref$defaultShow === void 0 ? false : _ref$defaultShow,\n      onToggle = _ref.onToggle,\n      propsDelay = _ref.delay,\n      placement = _ref.placement,\n      _ref$flip = _ref.flip,\n      flip = _ref$flip === void 0 ? placement && placement.indexOf('auto') !== -1 : _ref$flip,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  var triggerNodeRef = useRef(null);\n  var timeout = useTimeout();\n  var hoverStateRef = useRef('');\n\n  var _useUncontrolledProp = useUncontrolledProp(propsShow, defaultShow, onToggle),\n      show = _useUncontrolledProp[0],\n      setShow = _useUncontrolledProp[1];\n\n  var delay = normalizeDelay(propsDelay);\n\n  var _ref2 = typeof children !== 'function' ? React.Children.only(children).props : {},\n      onFocus = _ref2.onFocus,\n      onBlur = _ref2.onBlur,\n      onClick = _ref2.onClick;\n\n  var getTarget = useCallback(function () {\n    return safeFindDOMNode(triggerNodeRef.current);\n  }, []);\n  var handleShow = useCallback(function () {\n    timeout.clear();\n    hoverStateRef.current = 'show';\n\n    if (!delay.show) {\n      setShow(true);\n      return;\n    }\n\n    timeout.set(function () {\n      if (hoverStateRef.current === 'show') setShow(true);\n    }, delay.show);\n  }, [delay.show, setShow, timeout]);\n  var handleHide = useCallback(function () {\n    timeout.clear();\n    hoverStateRef.current = 'hide';\n\n    if (!delay.hide) {\n      setShow(false);\n      return;\n    }\n\n    timeout.set(function () {\n      if (hoverStateRef.current === 'hide') setShow(false);\n    }, delay.hide);\n  }, [delay.hide, setShow, timeout]);\n  var handleFocus = useCallback(function () {\n    handleShow();\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    onFocus == null ? void 0 : onFocus.apply(void 0, args);\n  }, [handleShow, onFocus]);\n  var handleBlur = useCallback(function () {\n    handleHide();\n\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    onBlur == null ? void 0 : onBlur.apply(void 0, args);\n  }, [handleHide, onBlur]);\n  var handleClick = useCallback(function () {\n    setShow(!show);\n    if (onClick) onClick.apply(void 0, arguments);\n  }, [onClick, setShow, show]);\n  var handleMouseOver = useCallback(function () {\n    for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n      args[_key3] = arguments[_key3];\n    }\n\n    handleMouseOverOut(handleShow, args, 'fromElement');\n  }, [handleShow]);\n  var handleMouseOut = useCallback(function () {\n    for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n      args[_key4] = arguments[_key4];\n    }\n\n    handleMouseOverOut(handleHide, args, 'toElement');\n  }, [handleHide]);\n  var triggers = trigger == null ? [] : [].concat(trigger);\n  var triggerProps = {};\n\n  if (triggers.indexOf('click') !== -1) {\n    triggerProps.onClick = handleClick;\n  }\n\n  if (triggers.indexOf('focus') !== -1) {\n    triggerProps.onFocus = handleFocus;\n    triggerProps.onBlur = handleBlur;\n  }\n\n  if (triggers.indexOf('hover') !== -1) {\n    process.env.NODE_ENV !== \"production\" ? warning(triggers.length > 1, '[react-bootstrap] Specifying only the `\"hover\"` trigger limits the visibility of the overlay to just mouse users. Consider also including the `\"focus\"` trigger so that touch and keyboard only users can see the overlay as well.') : void 0;\n    triggerProps.onMouseOver = handleMouseOver;\n    triggerProps.onMouseOut = handleMouseOut;\n  }\n\n  return /*#__PURE__*/React.createElement(React.Fragment, null, typeof children === 'function' ? children(_extends({}, triggerProps, {\n    ref: triggerNodeRef\n  })) : /*#__PURE__*/React.createElement(RefHolder, {\n    ref: triggerNodeRef\n  }, /*#__PURE__*/cloneElement(children, triggerProps)), /*#__PURE__*/React.createElement(Overlay, _extends({}, props, {\n    show: show,\n    onHide: handleHide,\n    flip: flip,\n    placement: placement,\n    popperConfig: popperConfig,\n    target: getTarget\n  }), overlay));\n}\n\nOverlayTrigger.defaultProps = defaultProps;\nexport default OverlayTrigger;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"placement\", \"className\", \"style\", \"children\", \"arrowProps\", \"popper\", \"show\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport isRequiredForA11y from 'prop-types-extra/lib/isRequiredForA11y';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n  placement: 'right'\n};\nvar Tooltip = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      placement = _ref.placement,\n      className = _ref.className,\n      style = _ref.style,\n      children = _ref.children,\n      arrowProps = _ref.arrowProps,\n      _ = _ref.popper,\n      _2 = _ref.show,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'tooltip');\n\n  var _ref2 = (placement == null ? void 0 : placement.split('-')) || [],\n      primaryPlacement = _ref2[0];\n\n  return /*#__PURE__*/React.createElement(\"div\", _extends({\n    ref: ref,\n    style: style,\n    role: \"tooltip\",\n    \"x-placement\": primaryPlacement,\n    className: classNames(className, bsPrefix, \"bs-tooltip-\" + primaryPlacement)\n  }, props), /*#__PURE__*/React.createElement(\"div\", _extends({\n    className: \"arrow\"\n  }, arrowProps)), /*#__PURE__*/React.createElement(\"div\", {\n    className: bsPrefix + \"-inner\"\n  }, children));\n});\nTooltip.defaultProps = defaultProps;\nTooltip.displayName = 'Tooltip';\nexport default Tooltip;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"variant\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n  variant: null\n};\nvar CardImg = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      variant = _ref.variant,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'img' : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'card-img');\n  return /*#__PURE__*/React.createElement(Component, _extends({\n    ref: ref,\n    className: classNames(variant ? prefix + \"-\" + variant : prefix, className)\n  }, props));\n});\nCardImg.displayName = 'CardImg';\nCardImg.defaultProps = defaultProps;\nexport default CardImg;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"bg\", \"text\", \"border\", \"body\", \"children\", \"as\"];\nimport classNames from 'classnames';\nimport React, { useMemo } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport divWithClassName from './divWithClassName';\nimport CardContext from './CardContext';\nimport CardImg from './CardImg';\nvar DivStyledAsH5 = divWithClassName('h5');\nvar DivStyledAsH6 = divWithClassName('h6');\nvar CardBody = createWithBsPrefix('card-body');\nvar CardTitle = createWithBsPrefix('card-title', {\n  Component: DivStyledAsH5\n});\nvar CardSubtitle = createWithBsPrefix('card-subtitle', {\n  Component: DivStyledAsH6\n});\nvar CardLink = createWithBsPrefix('card-link', {\n  Component: 'a'\n});\nvar CardText = createWithBsPrefix('card-text', {\n  Component: 'p'\n});\nvar CardHeader = createWithBsPrefix('card-header');\nvar CardFooter = createWithBsPrefix('card-footer');\nvar CardImgOverlay = createWithBsPrefix('card-img-overlay');\nvar defaultProps = {\n  body: false\n};\nvar Card = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      bg = _ref.bg,\n      text = _ref.text,\n      border = _ref.border,\n      body = _ref.body,\n      children = _ref.children,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'div' : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'card');\n  var cardContext = useMemo(function () {\n    return {\n      cardHeaderBsPrefix: prefix + \"-header\"\n    };\n  }, [prefix]);\n  return /*#__PURE__*/React.createElement(CardContext.Provider, {\n    value: cardContext\n  }, /*#__PURE__*/React.createElement(Component, _extends({\n    ref: ref\n  }, props, {\n    className: classNames(className, prefix, bg && \"bg-\" + bg, text && \"text-\" + text, border && \"border-\" + border)\n  }), body ?\n  /*#__PURE__*/\n  // @ts-ignore\n  React.createElement(CardBody, null, children) : children));\n});\nCard.displayName = 'Card';\nCard.defaultProps = defaultProps;\nCard.Img = CardImg;\nCard.Title = CardTitle;\nCard.Subtitle = CardSubtitle;\nCard.Body = CardBody;\nCard.Link = CardLink;\nCard.Text = CardText;\nCard.Header = CardHeader;\nCard.Footer = CardFooter;\nCard.ImgOverlay = CardImgOverlay;\nexport default Card;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _excluded = [\"bsPrefix\", \"size\", \"hasValidation\", \"className\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar InputGroupAppend = createWithBsPrefix('input-group-append');\nvar InputGroupPrepend = createWithBsPrefix('input-group-prepend');\nvar InputGroupText = createWithBsPrefix('input-group-text', {\n  Component: 'span'\n});\n\nvar InputGroupCheckbox = function InputGroupCheckbox(props) {\n  return /*#__PURE__*/React.createElement(InputGroupText, null, /*#__PURE__*/React.createElement(\"input\", _extends({\n    type: \"checkbox\"\n  }, props)));\n};\n\nvar InputGroupRadio = function InputGroupRadio(props) {\n  return /*#__PURE__*/React.createElement(InputGroupText, null, /*#__PURE__*/React.createElement(\"input\", _extends({\n    type: \"radio\"\n  }, props)));\n};\n\n/**\n *\n * @property {InputGroupAppend} Append\n * @property {InputGroupPrepend} Prepend\n * @property {InputGroupText} Text\n * @property {InputGroupRadio} Radio\n * @property {InputGroupCheckbox} Checkbox\n */\nvar InputGroup = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      size = _ref.size,\n      hasValidation = _ref.hasValidation,\n      className = _ref.className,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'div' : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'input-group');\n  return /*#__PURE__*/React.createElement(Component, _extends({\n    ref: ref\n  }, props, {\n    className: classNames(className, bsPrefix, size && bsPrefix + \"-\" + size, hasValidation && 'has-validation')\n  }));\n});\nInputGroup.displayName = 'InputGroup';\nInputGroup.Text = InputGroupText;\nInputGroup.Radio = InputGroupRadio;\nInputGroup.Checkbox = InputGroupCheckbox;\nInputGroup.Append = InputGroupAppend;\nInputGroup.Prepend = InputGroupPrepend;\nexport default InputGroup;","type CourseIconType = {\r\n  courseOrginType: string;\r\n  merge: Number;\r\n  courseType: string;\r\n};\r\n\r\nexport default function IconCourseEnvelop(props: CourseIconType) {\r\n  if (props.merge === 1) {\r\n    return (\r\n      <svg version=\"1.1\" id=\"iconmonstr\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0px\" y=\"0px\" viewBox=\"0 0 32 23\">\r\n        <path d=\"M29.1,0H2.8C1.2,0,0,1.2,0,2.8v17.4c0,1.5,1.2,2.8,2.8,2.8h26.3c1.5,0,2.8-1.2,2.8-2.8V2.8 C31.9,1.2,30.6,0,29.1,0z M30,20.1c0,0.5-0.4,0.9-0.9,0.9h-2.3v-1.8c0-0.5-0.4-0.9-0.9-0.9H14.5c-0.5,0-0.9,0.4-0.9,0.9v1.8H2.8 c-0.5,0-0.9-0.4-0.9-0.9V2.8c0-0.5,0.4-0.9,0.9-0.9h26.3c0.5,0,0.9,0.4,0.9,0.9V20.1z\" />\r\n        <path d=\"M13.4,5.2H5.5C5,5.3,4.7,5.6,4.7,6.1c0,0.5,0.4,0.8,0.8,0.8h7.9c0.5,0,0.8-0.4,0.8-0.9 C14.2,5.6,13.9,5.3,13.4,5.2z\" />\r\n        <path d=\"M13.4,8.6H5.5C5,8.6,4.7,9,4.7,9.5c0,0.5,0.4,0.8,0.8,0.8h7.9c0.5,0,0.8-0.4,0.8-0.9C14.2,9,13.9,8.6,13.4,8.6 z\" />\r\n        <path d=\"M13.4,12H5.5c-0.5,0-0.8,0.4-0.8,0.8s0.4,0.8,0.8,0.8h7.9c0.5,0,0.8-0.4,0.8-0.8S13.9,12,13.4,12z\" />\r\n        <g>\r\n          <path d=\"M19.3,8V6.9h6V8h1.5V6.9c0-0.8-0.7-1.5-1.5-1.5h-6c-0.8,0-1.5,0.7-1.5,1.5V8H19.3z\" />\r\n          <path d=\"M25.3,11v1.1h-6V11h-1.5v1.1c0,0.8,0.7,1.5,1.5,1.5h6c0.8,0,1.5-0.7,1.5-1.5V11H25.3z\" />\r\n          <path d=\"M17.8,9.9V9.1c0-0.1,0.1-0.2,0.2-0.2h1.7V8c0-0.2,0.2-0.3,0.4-0.1l1.5,1.5c0.1,0.1,0.1,0.2,0,0.3L20,11.1 c-0.1,0.1-0.4,0-0.4-0.1v-0.9H18C17.9,10.1,17.8,10,17.8,9.9z\" />\r\n          <path d=\"M26.8,9.1v0.8c0,0.1-0.1,0.2-0.2,0.2h-1.7V11c0,0.2-0.2,0.3-0.4,0.1L23,9.6c-0.1-0.1-0.1-0.2,0-0.3l1.5-1.5 c0.1-0.1,0.4,0,0.4,0.1v0.9h1.7C26.7,8.9,26.8,9,26.8,9.1z\" />\r\n        </g>\r\n      </svg>\r\n    )\r\n  }\r\n  else {\r\n\r\n    if (props.courseType && props.courseType.toLowerCase() === \"shared\") {\r\n      return (\r\n        <svg role=\"img\" aria-label=\"class board with s\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0px\" y=\"0px\" viewBox=\"0 0 32 23\">\r\n          <path d=\"M29.1,0H2.8C1.2,0,0,1.2,0,2.8v17.4C0,21.7,1.2,23,2.8,23h26.3c1.5,0,2.8-1.2,2.8-2.8V2.8C31.9,1.2,30.6,0,29.1,0z M30,20.1 c0,0.5-0.4,0.9-0.9,0.9h-2.3v-1.8c0-0.5-0.4-0.9-0.9-0.9H14.5c-0.5,0-0.9,0.4-0.9,0.9V21H2.8c-0.5,0-0.9-0.4-0.9-0.9V2.8 c0-0.5,0.4-0.9,0.9-0.9h26.3c0.5,0,0.9,0.4,0.9,0.9C30,2.8,30,20.1,30,20.1z\" />\r\n          <path d=\"M15.9,5.2H5.5C5,5.3,4.7,5.6,4.7,6.1s0.4,0.8,0.8,0.8h10.4c0.5,0,0.8-0.4,0.8-0.9C16.7,5.6,16.4,5.3,15.9,5.2z\" />\r\n          <path d=\"M15.9,8.6H5.5C5,8.6,4.7,9,4.7,9.5s0.4,0.8,0.8,0.8h10.4c0.5,0,0.8-0.4,0.8-0.9C16.7,9,16.4,8.6,15.9,8.6z\" />\r\n          <path d=\"M15.9,12H5.5c-0.5,0-0.8,0.4-0.8,0.8s0.4,0.8,0.8,0.8h10.4c0.5,0,0.8-0.4,0.8-0.8S16.4,12,15.9,12z\" />\r\n          <path d=\"M22.3,9.2c0,0.3,0.1,0.4,0.2,0.6c0.2,0.2,0.5,0.3,1,0.3c0.3,0,0.5,0,0.7-0.1c0.3-0.1,0.5-0.3,0.5-0.6 c0-0.2-0.1-0.3-0.2-0.4c-0.2-0.1-0.4-0.2-0.8-0.3l-0.6-0.1c-0.6-0.1-1-0.3-1.2-0.4c-0.4-0.3-0.6-0.6-0.6-1.2c0-0.5,0.2-0.9,0.5-1.2 c0.4-0.3,0.9-0.5,1.6-0.5c0.6,0,1.1,0.2,1.5,0.5C25.4,6,25.6,6.4,25.6,7h-1.1c0-0.3-0.2-0.6-0.4-0.7c-0.2-0.1-0.4-0.1-0.7-0.1 c-0.3,0-0.5,0.1-0.7,0.2c-0.2,0.1-0.3,0.3-0.3,0.5c0,0.2,0.1,0.3,0.3,0.4c0.1,0.1,0.4,0.1,0.7,0.2l1,0.2c0.4,0.1,0.7,0.2,1,0.4 c0.3,0.3,0.5,0.6,0.5,1.1c0,0.5-0.2,0.9-0.6,1.3c-0.4,0.3-0.9,0.5-1.6,0.5c-0.7,0-1.3-0.2-1.7-0.5c-0.4-0.3-0.6-0.8-0.6-1.3H22.3z\" />\r\n        </svg>\r\n\r\n      )\r\n    }\r\n\r\n    // Icon - when Course Created Manually\r\n    else if (props.courseOrginType && props.courseOrginType.toLowerCase() === \"lmi\") {\r\n      return (\r\n        <svg version=\"1.1\" id=\"iconmonstr\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0px\" y=\"0px\" viewBox=\"0 0 32 23\">\r\n          <title>Blackboard With M</title>\r\n          <path d=\"M29.1,0H2.8C1.2,0,0,1.2,0,2.8v17.4c0,1.5,1.2,2.8,2.8,2.8h26.3c1.5,0,2.8-1.2,2.8-2.8 V2.8C31.9,1.2,30.6,0,29.1,0z M30,20.1c0,0.5-0.4,0.9-0.9,0.9h-2.3v-1.8c0-0.5-0.4-0.9-0.9-0.9H14.5c-0.5,0-0.9,0.4-0.9,0.9v1.8H2.8 c-0.5,0-0.9-0.4-0.9-0.9V2.8c0-0.5,0.4-0.9,0.9-0.9h26.3c0.5,0,0.9,0.4,0.9,0.9V20.1z\" />\r\n          <path d=\"M15.9,5.2H5.5C5,5.3,4.7,5.6,4.7,6.1c0,0.5,0.4,0.8,0.8,0.8h10.4c0.5,0,0.8-0.4,0.8-0.9 C16.7,5.6,16.4,5.3,15.9,5.2z\" />\r\n          <path d=\"M15.9,8.6H5.5C5,8.6,4.7,9,4.7,9.5c0,0.5,0.4,0.8,0.8,0.8h10.4c0.5,0,0.8-0.4,0.8-0.9 C16.7,9,16.4,8.6,15.9,8.6z\" />\r\n          <path d=\"M15.9,12H5.5c-0.5,0-0.8,0.4-0.8,0.8s0.4,0.8,0.8,0.8h10.4c0.5,0,0.8-0.4,0.8-0.8 S16.4,12,15.9,12z\" />\r\n\r\n          <path d=\"M20.3,5.2h2.3l0.9,3.5l0.9-3.5h2.3V11h-1.4V6.6L24.2,11h-1.3l-1.1-4.4V11h-1.4V5.2z\" />\r\n        </svg>\r\n      )\r\n    }\r\n\r\n\r\n\r\n    else if (props.courseOrginType && props.courseOrginType.toLowerCase() === \"stars\") {\r\n      return (\r\n        <svg version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 32 23\">\r\n          <path d=\"M29.2,0H2.7C1.2,0-0.1,1.3-0.1,2.8v17.5c0,1.5,1.3,2.8,2.8,2.8h26.5 c1.5,0,2.8-1.3,2.8-2.8V2.8C32,1.3,30.7,0,29.2,0z M30.1,20.3c0,0.5-0.4,0.9-0.9,0.9h-2.3v-1.8c0-0.5-0.4-0.9-0.9-0.9H14.5 c-0.5,0-0.9,0.4-0.9,0.9v1.8H2.7c-0.5,0-0.9-0.4-0.9-0.9V2.8c0-0.5,0.4-0.9,0.9-0.9h26.5c0.5,0,0.9,0.4,0.9,0.9V20.3z\" />\r\n          <path d=\"M15.9,5.3H5.5C5,5.3,4.6,5.7,4.6,6.1C4.6,6.6,5,7,5.5,7h10.5c0.5,0,0.8-0.4,0.8-0.9 C16.7,5.7,16.4,5.3,15.9,5.3z\" />\r\n          <path d=\"M15.9,8.7H5.5C5,8.7,4.6,9.1,4.6,9.5c0,0.5,0.4,0.8,0.8,0.8h10.5c0.5,0,0.8-0.4,0.8-0.9 C16.7,9.1,16.4,8.7,15.9,8.7z\" />\r\n          <path d=\"M15.9,12.1H5.5c-0.5,0-0.9,0.4-0.9,0.9s0.4,0.9,0.9,0.9h10.5c0.5,0,0.9-0.4,0.9-0.9 S16.4,12.1,15.9,12.1z\" />\r\n          <path d=\"M22.7,5.5l-0.9,1.9l-2,0.3c-0.2,0-0.4,0.3-0.4,0.5c0,0.1,0.1,0.2,0.1,0.3 L21,9.9l-0.3,2c0,0.2,0.1,0.5,0.4,0.5c0.1,0,0.2,0,0.3,0l1.8-1l1.8,1c0.2,0.1,0.5,0,0.6-0.2c0-0.1,0.1-0.2,0-0.3l-0.3-2l1.5-1.4 c0.2-0.2,0.2-0.5,0-0.6c-0.1-0.1-0.2-0.1-0.3-0.1l-2-0.3l-0.9-1.9c-0.1-0.2-0.4-0.3-0.6-0.2C22.8,5.4,22.7,5.4,22.7,5.5z\" />\r\n        </svg>\r\n      )\r\n    }\r\n    // Icon - Same as above\r\n    else {\r\n      return (\r\n        <svg version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 32 23\">\r\n          <path d=\"M29.2,0H2.7C1.2,0-0.1,1.3-0.1,2.8v17.5c0,1.5,1.3,2.8,2.8,2.8h26.5 c1.5,0,2.8-1.3,2.8-2.8V2.8C32,1.3,30.7,0,29.2,0z M30.1,20.3c0,0.5-0.4,0.9-0.9,0.9h-2.3v-1.8c0-0.5-0.4-0.9-0.9-0.9H14.5 c-0.5,0-0.9,0.4-0.9,0.9v1.8H2.7c-0.5,0-0.9-0.4-0.9-0.9V2.8c0-0.5,0.4-0.9,0.9-0.9h26.5c0.5,0,0.9,0.4,0.9,0.9V20.3z\" />\r\n          <path d=\"M15.9,5.3H5.5C5,5.3,4.6,5.7,4.6,6.1C4.6,6.6,5,7,5.5,7h10.5c0.5,0,0.8-0.4,0.8-0.9 C16.7,5.7,16.4,5.3,15.9,5.3z\" />\r\n          <path d=\"M15.9,8.7H5.5C5,8.7,4.6,9.1,4.6,9.5c0,0.5,0.4,0.8,0.8,0.8h10.5c0.5,0,0.8-0.4,0.8-0.9 C16.7,9.1,16.4,8.7,15.9,8.7z\" />\r\n          <path d=\"M15.9,12.1H5.5c-0.5,0-0.9,0.4-0.9,0.9s0.4,0.9,0.9,0.9h10.5c0.5,0,0.9-0.4,0.9-0.9 S16.4,12.1,15.9,12.1z\" />\r\n          <path d=\"M22.7,5.5l-0.9,1.9l-2,0.3c-0.2,0-0.4,0.3-0.4,0.5c0,0.1,0.1,0.2,0.1,0.3 L21,9.9l-0.3,2c0,0.2,0.1,0.5,0.4,0.5c0.1,0,0.2,0,0.3,0l1.8-1l1.8,1c0.2,0.1,0.5,0,0.6-0.2c0-0.1,0.1-0.2,0-0.3l-0.3-2l1.5-1.4 c0.2-0.2,0.2-0.5,0-0.6c-0.1-0.1-0.2-0.1-0.3-0.1l-2-0.3l-0.9-1.9c-0.1-0.2-0.4-0.3-0.6-0.2C22.8,5.4,22.7,5.4,22.7,5.5z\" />\r\n        </svg>\r\n\r\n      )\r\n    }\r\n  }\r\n}","\r\nimport { Spinner } from 'react-bootstrap'\r\n\r\n\r\nexport default function SplashScreen() {\r\n    return (\r\n        <div>\r\n            <div className=\"k-loading-mask\">\r\n                <span className=\"k-loading-text\">Loading</span>\r\n                <div className=\"k-loading-image\"></div>\r\n                <div className=\"k-loading-color\"></div>\r\n            </div>\r\n        </div>\r\n    )\r\n}","\r\nimport { DropDownList, ListItemProps } from '@progress/kendo-react-dropdowns';\r\nimport React from 'react';\r\n\r\ninterface StringDropdownProps {\r\n    sharedCourses: string[];\r\n    width : string ;\r\n}\r\nexport default function SharedCoursesList(props: StringDropdownProps) {\r\n    const itemRender = (li: React.ReactElement<HTMLLIElement>, itemProps: ListItemProps) => {\r\n        const index = itemProps.index;\r\n        const itemChildren =\r\n            <div>\r\n                {index === 0 &&<small className=\"text-secondary mb-1\">This course is in {props.sharedCourses.length} Shared Instruction courses</small>}\r\n                <div style={{ color: \"black\" }}>{li.props.children}</div>\r\n            </div>\r\n\r\n        return React.cloneElement(li, li.props, itemChildren);\r\n    }\r\n    return (\r\n        <DropDownList\r\n            data={props.sharedCourses}\r\n            itemRender={itemRender}\r\n            value={<div style={{ color: 'blue' , fontWeight :'bold' }}>In {props.sharedCourses.length} SI Courses <i className=\" fas fa-solid fa-caret-down ml-1\"></i></div>}\r\n            style={{ width: props.width , padding : 0 }}\r\n            className='shared-courses'\r\n        \r\n        />\r\n    );\r\n}\r\n","import React, { useState, useEffect, useReducer, useContext } from 'react';\r\nimport { Button, Modal, InputGroup, FormControl, OverlayTrigger, Tooltip } from 'react-bootstrap';\r\nimport { Grid, GridColumn, GridNoRecords } from '@progress/kendo-react-grid';\r\nimport { filterBy } from \"@progress/kendo-data-query\";\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport { FormMode, IDropDownValue } from '../../services/Utility'\r\nimport schoolService from '../../services/SchoolService';\r\nimport { Year, UserProfileType, AuthContextDefault, AuthContextType, AuthContext } from '../../services/AppContext';\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport ICourses from '../../model/ICourses';\r\nimport IconCourseEnvelop from '../../assets/icons/icon-envelop-course';\r\nimport CoursesService from '../../services/CoursesService';\r\nimport IIndividualCourses from '../../model/IIndividualCourses';\r\nimport SplashScreen from '../../shared/SplashScreen';\r\nimport LocalStorageService from '../../services/LocalStorage';\r\nimport SharedCoursesList from '../../shared/SharedCoursesList';\r\n\r\ninterface Props {\r\n    courseId: number\r\n    courseStatus: string\r\n    locationCode: string\r\n    courseUniqueId: string\r\n    updateCourseInfo: (courseId: number, courseTeachers: any, studentCount: number, action: string) => void\r\n}\r\nconst initialDataState = {\r\n    skip: 0,\r\n    take: 10,\r\n};\r\n\r\n\r\nexport default function IndividualCourses(courseProps: Props) {\r\n\r\n    const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n    const [isLoading, setIsLoading] = useState(false);\r\n    const { orginalSchoolYear } = useContext(Year);\r\n    const [errorMsg, setErrorMsg] = useState<string>('');\r\n    const [assignedCourses, setAssignedCourses] = useState<IIndividualCourses[]>([]);\r\n    const [checkedCourses, setCheckedCourses] = useState<ICourses[]>([]);\r\n    const [starsCourses, setStarsCourses] = useState<ICourses[]>([]);\r\n    const [showAddIndividualCoursesDialog, setShowAddIndividualCoursesDialog] = useState<boolean>(false);\r\n    const [ignored, forceUpdate] = useReducer(x => x + 1, 0);\r\n    const [orginalSchoolList, setOrginalSchoolList] = useState<IDropDownValue[]>([]);\r\n    const [schoolList, setSchoolList] = useState<IDropDownValue[]>([]);\r\n    const [selectedSchool, setSelectedSchool] = useState<IDropDownValue>();\r\n    const [deletedCourse, setDeletedCourse] = useState<string>();\r\n    const [page, setPage] = React.useState(initialDataState);\r\n    const [userProfile, setUserProfile] = useState<UserProfileType>(AuthContextDefault.userProfile);\r\n\r\n\r\n\r\n    const pageChange = (event: any) => {\r\n        setPage(event.page);\r\n        let currentPage = (event.page.skip / event.page.take) + 1\r\n        getStarsCourses(currentPage, event.page.take, selectedSchool?.id ?? courseProps.locationCode)\r\n    };\r\n\r\n    const GetStatusBadgeCssClass = (status: string) => {\r\n\r\n        if (status.toLowerCase() === \"new\") {\r\n            return \"text-gray\"\r\n        }\r\n        else if (status.toLowerCase() === \"edited\") {\r\n            return \"text-secondary\"\r\n        }\r\n        else if (status.toLowerCase() === \"published\") {\r\n            return \"text-success\"\r\n        }\r\n        else if (status.toLowerCase() === \"closed\") {\r\n            return \"text-danger\"\r\n        }\r\n        \r\n    }\r\n\r\n    const getStarsCourses = (page: number, limit: number, locationCode: string) => {\r\n        setIsLoading(true)\r\n        CoursesService.getStarsCourses(courseProps.courseUniqueId, locationCode, +orginalSchoolYear.id, page, limit).then(response => {\r\n            setIsLoading(false)\r\n            setStarsCourses(response.data)\r\n            if (checkedCourses && checkedCourses.length > 0) {\r\n                if (response.data.length > 0) {\r\n                    checkedCourses.forEach((c: any) => {\r\n\r\n                        let selectedCourse = response.data.find((s: any) => s.courseId == c.courseId)\r\n\r\n                        if (selectedCourse) {\r\n                            selectedCourse.isSelected = true\r\n                            forceUpdate()\r\n                        }\r\n                    })\r\n                }\r\n            }\r\n        })\r\n\r\n    }\r\n\r\n\r\n    const removeIndividualCourse = (sectionUniqueId: string) => {\r\n        setDeletedCourse(sectionUniqueId)\r\n        setFormMode(FormMode.Delete)\r\n    }\r\n\r\n    const getSchoolLocations = () => {\r\n\r\n        if (userProfile?.role?.roleName == 'System Administrator' || userProfile.role.roleName == \"Central Staff\") {\r\n            schoolService.getData().then(response => {\r\n                let dropDownData = response.data.map((sl: any) => ({\r\n                    id: sl.locationCode,\r\n                    text: sl.locationCode + ' -- ' + sl.schoolName\r\n                }));\r\n                setSchoolList(dropDownData)\r\n                setOrginalSchoolList(dropDownData)\r\n            });\r\n        } else {\r\n\r\n            let data = userProfile?.role?.locations?.map(s => ({ id: s.LocationCode, text: s.LocationCode + ' -- ' + s.LocationName }))\r\n            if (data) {\r\n                setSchoolList(data)\r\n                setOrginalSchoolList(data)\r\n            }\r\n\r\n        }\r\n    }\r\n    const filterData = (filter: any) => {\r\n        let data = orginalSchoolList.slice();\r\n        return filterBy(data, filter);\r\n    }\r\n\r\n    const filterChange = (event: any) => {\r\n        let data = filterData(event.filter)\r\n        setSchoolList(data)\r\n    }\r\n\r\n    const handleChange = (event: any) => {\r\n        let selectedSchool = event.target.value;\r\n        setSelectedSchool(selectedSchool)\r\n        setPage(initialDataState)\r\n        let currentPage = (initialDataState.skip / initialDataState.take) + 1\r\n        getStarsCourses(currentPage, initialDataState.take, selectedSchool.id)\r\n    }\r\n\r\n    const getDefaultValue = (schoolList: any) => {\r\n        let school = schoolList.find((s: any) => s.id == courseProps.locationCode)\r\n        if (school) {\r\n            return school\r\n        }\r\n    }\r\n\r\n    const getAssignedCourses = (courseId: number) => {\r\n        CoursesService.getIndividualCoursesBySharedCourseId(courseId).then(response => {\r\n            setAssignedCourses(response.data)\r\n        });\r\n    }\r\n\r\n    useEffect(() => {\r\n        setCheckedCourses([])\r\n        getAssignedCourses(courseProps.courseId);\r\n        setUserProfile(LocalStorageService.getUserProfile())\r\n    }, [courseProps.courseId]);\r\n\r\n\r\n    const toggleDialog = () => {\r\n        setCheckedCourses([])\r\n        setShowAddIndividualCoursesDialog(!showAddIndividualCoursesDialog)\r\n    }\r\n\r\n    const addIndividualCourses = () => {\r\n        setShowAddIndividualCoursesDialog(true)\r\n        getSchoolLocations()\r\n        setFormMode(FormMode.New)\r\n        setPage(initialDataState)\r\n        let currentPage = (initialDataState.skip / initialDataState.take) + 1\r\n        getStarsCourses(currentPage, initialDataState.take, courseProps.locationCode)\r\n    }\r\n\r\n    const onGridCheckBoxClick = (dataItem: any) => {\r\n        dataItem.isSelected = !dataItem.isSelected;\r\n        let selectedCourses = checkedCourses\r\n        if (dataItem.isSelected) {\r\n            selectedCourses.push(dataItem)\r\n\r\n            setCheckedCourses(selectedCourses)\r\n        } else {\r\n            selectedCourses = checkedCourses.filter(item => item.courseId !== dataItem.courseId);\r\n\r\n            setCheckedCourses(selectedCourses)\r\n        }\r\n\r\n        forceUpdate();\r\n    }\r\n\r\n\r\n    const TeacherBadge = (props: any) => {\r\n\r\n        return (\r\n            <td>\r\n                <div>Assigned Teachers</div>\r\n                {props.dataItem.courseTeachers.map((item: any) =>\r\n\r\n                (\r\n\r\n                    <OverlayTrigger\r\n                        key={item.teacherId}\r\n                        placement='top'\r\n                        trigger={['hover', 'focus']}\r\n                        overlay={\r\n                            <Tooltip id={`tooltip-${item.teacherId}`} style={{zIndex:1000000}}>\r\n                                {item.firstName + item.lastName}\r\n                            </Tooltip>\r\n                        }\r\n                    >\r\n                        <Button key={item.teacherId} className={\"btn badge badge-warning border-0 mr-1\"}>{item.teacherInitial ? item.teacherInitial : item.firstName?.charAt(0) + item.lastName?.charAt(0)}</Button>\r\n                    </OverlayTrigger>\r\n                ))}\r\n            </td>\r\n\r\n\r\n\r\n        );\r\n    }\r\n\r\n    const [searchCourseName, setSearchCourseName] = useState<string>();\r\n    const searchByCourseName = (event: any) => {\r\n        const target = event.target\r\n        if (!target.value || target.value == 0) {\r\n            setErrorMsg('')\r\n            setPage(initialDataState);\r\n            let currentPage = (initialDataState.skip / initialDataState.take) + 1\r\n            getStarsCourses(currentPage, initialDataState.take, selectedSchool?.id ?? courseProps.locationCode)\r\n        }\r\n        setSearchCourseName(target.value)\r\n    };\r\n    const getCourseByCourseName = () => {\r\n        setErrorMsg('')\r\n        if (!searchCourseName) {\r\n            setErrorMsg(\"Please enter course name \")\r\n            return\r\n        }\r\n        setStarsCourses([])\r\n        setIsLoading(true)\r\n        setPage(initialDataState);\r\n        let currentPage = (initialDataState.skip / initialDataState.take) + 1\r\n        CoursesService.searchStarsCourseByName(courseProps.courseUniqueId, selectedSchool?.id ?? courseProps.locationCode, +orginalSchoolYear.id, currentPage, initialDataState.take, searchCourseName).then(response => {\r\n            setIsLoading(false)\r\n            setStarsCourses(response.data)\r\n        })\r\n    }\r\n\r\n\r\n\r\n    const onSave = (event: any, actionType: FormMode) => {\r\n        switch (actionType) {\r\n            case FormMode.New:\r\n                let addIndividualCourse: any = {\r\n                    sharedCourseUniqueId: courseProps.courseUniqueId,\r\n                    individualCoursesUniqueId: checkedCourses.map(i => i.courseUniqueId)\r\n                }\r\n\r\n\r\n                if (addIndividualCourse.individualCoursesUniqueId?.length == 0) {\r\n                    setErrorMsg('Please select courses to add.');\r\n                    return;\r\n                }\r\n                let courseTeachers = checkedCourses.map(i => i.courseTeachers)\r\n                let studentCount = checkedCourses.map(i => i.totalStudentEnrolled)\r\n                let result = studentCount.reduce((a, b) => {\r\n                    return a + b;\r\n                });\r\n\r\n                CoursesService.addIndividualCourses(addIndividualCourse).then(res => {\r\n                    setFormMode(FormMode.None)\r\n                    toggleDialog()\r\n                    courseProps.updateCourseInfo(courseProps.courseId, courseTeachers.flat(), result, \"add\")\r\n                })\r\n\r\n                break;\r\n            case FormMode.Delete:\r\n\r\n                let deleteIndividualCourse: any = {\r\n                    sharedCourseUniqueId: courseProps.courseUniqueId,\r\n                    individualCourseUniqueId: deletedCourse\r\n                }\r\n                CoursesService.deleteIndividualCourses(deleteIndividualCourse).then(res => {\r\n                    setFormMode(FormMode.None)\r\n                    courseProps.updateCourseInfo(courseProps.courseId, res.data.result.newCourseTeachers, res.data.result.studentCount, \"delete\")\r\n\r\n                })\r\n                break;\r\n            default: {\r\n                setFormMode(FormMode.None)\r\n                break;\r\n\r\n            }\r\n        }\r\n    }\r\n\r\n\r\n    return (\r\n        <div>\r\n            {showAddIndividualCoursesDialog && <Dialog title={\"Add Shared Instruction Course\"} width={1000} onClose={toggleDialog} style={{ width: \"80%\", position: \"fixed\", left: \"10%\", top: \"20%\", height: \"350px\" }} >\r\n                <div id=\"dropDownParent\">\r\n                    <div hidden={errorMsg.length == 0}>\r\n                        <div className=\"alert alert-danger alert-dismissible fade show\" role=\"alert\">\r\n                            {errorMsg}\r\n                            <button type=\"button\" className=\"close\" data-dismiss=\"alert\" aria-label=\"Close\">\r\n                                <span aria-hidden=\"true\">&times;</span>\r\n                            </button>\r\n                        </div>\r\n                    </div>\r\n                    <div className=\"d-flex justify-content-between align-items-center\" >\r\n                        <div className=\"text-sm-left text-left\">\r\n                            <InputGroup >\r\n                                <FormControl\r\n                                    placeholder=\"Course Name\"\r\n                                    onChange={searchByCourseName}\r\n                                />\r\n                                <Button variant=\"outline-secondary\" id=\"button-addon1\" onClick={getCourseByCourseName}\r\n                                >\r\n                                    Search\r\n                                </Button>\r\n                            </InputGroup>\r\n                        </div>\r\n                        <div className=\"text-sm-right text-left\"  >\r\n                            <DropDownList\r\n                                data={schoolList}\r\n                                defaultValue={getDefaultValue(schoolList)}\r\n                                textField=\"text\"\r\n                                filterable={true}\r\n                                onChange={handleChange}\r\n                                onFilterChange={filterChange}\r\n                                popupSettings={{ appendTo: document.getElementById(\"dropDownParent\") as HTMLElement }}\r\n                                style={{ maxWidth: '300px', width: '100%' }}\r\n                            />\r\n                        </div>\r\n                    </div>\r\n                    {isLoading && <div className=\"d-flex justify-content-center\"><SplashScreen /></div>}\r\n                    <div className=\"mt-3\" style={{ height: \"400px\" }}>\r\n                        <Grid\r\n                            data={starsCourses.slice(0, page.take)}\r\n\r\n                            skip={page.skip}\r\n                            take={page.take}\r\n                            total={starsCourses && starsCourses.length ? starsCourses[0].totalPages : 0}\r\n                            className=\"k-grid-no-header\"\r\n                            pageable={true}\r\n                            scrollable={\"none\"}\r\n                            onPageChange={pageChange}\r\n                        >\r\n                            <GridColumn field=\"isSelected\" width=\"40px\" filterable={false} cell={props => (\r\n                                <td>\r\n                                    <input type=\"checkbox\" checked={props.dataItem.isSelected} onChange={() => onGridCheckBoxClick(props.dataItem)} />\r\n                                </td>\r\n                            )} />\r\n\r\n                            <GridColumn field=\"UserIcon\" title=\" \" filterable={false} width=\"50px\" cell={\r\n                                props => (\r\n                                    <td className=\"pr-0\">\r\n                                        <div className=\"d-flex\">\r\n                                            <div className={`svg-app-icon ${props.dataItem.courseStatus.toLowerCase() === \"published\" ? \" text-success\" : \" text-blue-gray\"} mr-3\"`} style={{ height: \"50px\" }}>\r\n                                                <IconCourseEnvelop courseType={props.dataItem.courseType} courseOrginType=\"stars\" merge={0}></IconCourseEnvelop>\r\n                                            </div>\r\n                                        </div>\r\n                                    </td>\r\n                                )} />\r\n                            <GridColumn field=\"Name\" cell={\r\n                                props => (\r\n                                    <td>\r\n                                        <div>{props.dataItem.courseName}</div>\r\n                                        <div className=\"small\">Course Code:{props.dataItem.courseCode}</div>\r\n                                        \r\n                                            <div ><span className={GetStatusBadgeCssClass(props.dataItem.courseStatus)}> {props.dataItem.courseStatus} </span>\r\n                                             {props.dataItem.starsSharedCourses.length != 0 &&\r\n                                                <SharedCoursesList\r\n                                                sharedCourses={props.dataItem.starsSharedCourses}\r\n                                                width='80%'\r\n                                                />\r\n                                            }</div>\r\n\r\n                                        \r\n                                    </td>\r\n                                )} />\r\n                            <GridColumn field=\"Teachers\" cell={TeacherBadge} />\r\n\r\n                            <GridColumn field=\"Students\" cell={\r\n                                props => (\r\n                                    <td>\r\n                                        <div>Enrolled Students</div>\r\n                                        <div >{props.dataItem.totalStudentEnrolled}</div>\r\n                                    </td>\r\n                                )} />\r\n                            <GridColumn field=\"Location\" cell={\r\n                                props => (\r\n                                    <td>\r\n                                        <div>Associated Location</div>\r\n                                        <div >{props.dataItem.locationCode}</div>\r\n                                    </td>\r\n                                )} />\r\n\r\n                        </Grid>\r\n\r\n                    </div>\r\n\r\n                </div>\r\n                <DialogActionsBar>\r\n                    <Button className=\"m-3\" variant=\"secondary\" onClick={toggleDialog}>Close</Button>\r\n                    <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Add Courses</Button>\r\n                </DialogActionsBar>\r\n            </Dialog>}\r\n            <Modal\r\n                show={formMode == FormMode.Delete}\r\n                onHide={() => { setFormMode(FormMode.None) }}\r\n                animation={false}\r\n                backdrop=\"static\"\r\n                keyboard={false}>\r\n\r\n                <Modal.Header closeButton className=\"bg-primary text-white\">\r\n                    <Modal.Title>Remove Course</Modal.Title>\r\n                </Modal.Header>\r\n                <Modal.Body>\r\n                    Are you sure you want to remove course ?\r\n                </Modal.Body>\r\n                <Modal.Footer>\r\n                    <Button variant=\"secondary\" onClick={(e) => { setFormMode(FormMode.None) }}>Cancel</Button>\r\n                    <Button variant=\"primary\" type=\"button\" onClick={(e) => { onSave(e, formMode) }}>Delete</Button>\r\n                </Modal.Footer>\r\n            </Modal>\r\n\r\n            <div className=\"card mt-4\">\r\n                <div className=\"card-header font-weight-bold bg-secondary-light\">\r\n                    <div className=\"row align-items-center\">\r\n                        <div className=\"col-10\">Shared Instruction Courses ({assignedCourses.length})</div>\r\n                        {courseProps.courseStatus.toLowerCase() == 'closed' ? '' :\r\n                            <div className=\"col-2  text-right\">\r\n                                {orginalSchoolYear.isCurrent != 0 &&\r\n                                    <button type=\"button\" className=\"btn btn-sm btn-primary\" onClick={(e) => { addIndividualCourses() }}\r\n                                    >\r\n                                        <i className=\"fas fa-plus\"></i>\r\n                                    </button>}\r\n                            </div>\r\n                        }\r\n                    </div>\r\n                </div>\r\n                <div className=\"card-body\">\r\n                    <Grid\r\n                        data={assignedCourses}\r\n                        scrollable={\"none\"}\r\n                        className=\"k-grid-no-header\"\r\n                    >\r\n                        {/* <GridColumn field=\"expanded\" width=\"80px\" title=' ' /> */}\r\n                        <GridNoRecords>\r\n                            No Enrolled Courses\r\n                        </GridNoRecords>\r\n                        <GridColumn field=\"CourseIcon\" title=\" \" width=\"80px\" cell={\r\n                            props => (\r\n                                <td>\r\n                                    <div className=\"d-flex\">\r\n                                        <div className={`svg-app-icon text-blue-gray mr-3\"`} style={{ height: \"60px\" }}>\r\n                                            <IconCourseEnvelop courseType={props.dataItem.courseType} courseOrginType=\"stars\" merge={0}></IconCourseEnvelop>\r\n                                        </div>\r\n                                    </div>\r\n                                </td>\r\n                            )} />\r\n                        <GridColumn field=\"Name\" title=\"\" cell={\r\n                            props => (\r\n                                <td>\r\n                                    <div> {props.dataItem.courseName}</div>\r\n                                    <div className=\"small\">Course Code:{props.dataItem.courseCode}</div>\r\n                                </td>\r\n                            )} />\r\n\r\n                        <GridColumn field=\"schoolDBN\" title=\"Associated Location\" cell={\r\n                            props => (\r\n                                <td>\r\n                                    <div className=\"small\">Associated Location:</div>\r\n                                    <div>{props.dataItem.locationCode}</div>\r\n                                </td>\r\n                            )} />\r\n                        <GridColumn field=\"\" title=\" \" cell={\r\n                            props => (\r\n                                <td className=\"text-right menu-btn\">\r\n                                    {\r\n                                        courseProps.courseStatus?.toLowerCase() === 'closed'\r\n                                            ? '' :\r\n                                            <button type=\"button\" className=\"btn btn-sm btn-outline-secondary\" onClick={(e) => { removeIndividualCourse(props.dataItem.sectionUniqueId) }}\r\n                                            >\r\n                                                <i className=\"fas fa-minus\"></i>\r\n                                            </button>\r\n                                    }\r\n                                </td>\r\n                            )} />\r\n                    </Grid>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    )\r\n}","import {IAssignedTeachers} from '../model/IAssignedTeachers'\r\nimport IAddCourseTeachers from '../model/IAddCourseTeachers'\r\nimport { AxiosInstances as AxiosInstance} from './BaseService'\r\nimport ITeacherManageSection from '../model/ITeacherManageSection'\r\n\r\nexport default {\r\n    GetUnassignedTeachersBySchoolDBN: (locationCode : string , courseUniqueId : string) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Schools/${locationCode}/Teachers/${courseUniqueId}`\r\n        }),\r\n        getTeachersBySchoolDBN: (locationCode : string) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Schools/${locationCode}/Teachers`\r\n        }),\r\n        getByCourseId: (courseId : number) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Courses/${courseId}/Teachers`\r\n        }),\r\n        getSharedCourseAssignedTeachers: (courseId : number) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/SharedCourse/${courseId}/Teachers`\r\n        }),\r\n        GetUnassignedTeacherById: (teacherId : string, courseUniqueId : string) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Teachers/${teacherId}/${courseUniqueId}`\r\n        }),\r\n        getTeacherById: (teacherId : string) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Teachers/${teacherId}`\r\n        }),\r\n        post: (requestdata: IAddCourseTeachers) =>\r\n        AxiosInstance({\r\n            'method': 'POST',\r\n            'url': `/Courses/Teachers`,\r\n            'data': requestdata\r\n        }), \r\n        enableTeacherToManageCourse: (requestdata: ITeacherManageSection) =>\r\n        AxiosInstance({\r\n            'method': 'POST',\r\n            'url': `/ManageSection/Teachers`,\r\n            'data': requestdata\r\n        }), \r\n        removeTeaccherFromCourse: (requestdata: ITeacherManageSection) =>\r\n        AxiosInstance({\r\n            'method': 'POST',\r\n            'url': `/UnManageSection/Teachers`,\r\n            'data': requestdata\r\n        }), \r\n        delete: (courseId : number, teacherId : string) =>\r\n        AxiosInstance({\r\n            'method': 'DELETE',\r\n            'url': `/Courses/${courseId}/Teacher/${teacherId}`\r\n        }), \r\n}","import React, { useState, useEffect, useRef } from 'react';\r\nimport { NavLink } from 'react-router-dom';\r\n\r\nexport default function IconPersonCircle() {\r\n\r\n  return (\r\n    <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0px\" y=\"0px\" viewBox=\"0 0 32 32\">\r\n      <title>Person</title>\r\n      <path d=\"M22.5,23.5c-0.5-0.2-1.1-0.4-1.6-0.6c-0.7-0.3-0.8-0.4-0.8-0.5c0,0,0-0.2,0-0.3v-2.4c1.6-2,2.6-5,2.6-8.2 c0-3.3-3-5.9-6.7-5.9c-3.7,0-6.7,2.6-6.7,5.9c0,3,1,6.1,2.6,8.1v2.6c0,0.1,0,0.3,0,0.3c0,0-0.1,0.2-0.8,0.5c-0.5,0.2-1,0.4-1.6,0.6 c-1.2,0.4-1.8,0.6-2.1,1c-0.3,0.3-0.3,0.8,0,1.1c0.2,0.1,0.3,0.2,0.5,0.2c0.2,0,0.4-0.1,0.6-0.2c0.2-0.1,1-0.4,1.5-0.6 c0.5-0.2,1.1-0.4,1.6-0.6c1.6-0.6,1.8-1.2,1.8-2.3v-1.1c0.1,0.1,0.2,0.1,0.3,0.2c0.4,0.2,0.9,0.1,1.1-0.3s0.1-0.9-0.3-1.1\r\n        c-2.1-1.2-3.7-4.8-3.7-8.4c0-2.4,2.3-4.3,5.2-4.3c2.8,0,5.1,1.9,5.2,4.3c-0.9-0.3-1.8-1.3-2.1-1.7c-0.2-0.2-0.4-0.4-0.7-0.3 c-0.2,0-0.5,0.2-0.6,0.4c0,0.1-0.3,0.4-1.3,1.2c-0.9,0.8-2.8,0.7-3.5,0.7c-0.4-0.1-0.8,0.3-0.9,0.7s0.3,0.8,0.7,0.9 c0.1,0,0.4,0,0.9,0c1,0,2.7-0.2,3.8-1.1c0.4-0.3,0.6-0.6,0.8-0.8c0.6,0.6,1.6,1.5,2.7,1.7c-0.4,3.1-1.7,5.8-3.6,6.9 c-0.4,0.2-0.5,0.7-0.3,1.1c0.1,0.2,0.4,0.4,0.7,0.4c0.1,0,0.3,0,0.4-0.1c0.1,0,0.1-0.1,0.2-0.1v1c0,1,0.3,1.6,1.8,2.3 c0.5,0.2,1.1,0.4,1.6,0.6c0.6,0.2,1.3,0.5,1.5,0.6c0.2,0.2,0.4,0.3,0.6,0.3c0.2,0,0.4-0.1,0.5-0.2c0.3-0.3,0.3-0.8,0-1.1 C24.3,24.2,23.7,23.9,22.5,23.5z\"/>\r\n      <path d=\"M16,0C7.2,0,0,7.2,0,16c0,8.8,7.2,16,16,16s16-7.2,16-16C32,7.2,24.8,0,16,0z M16,30.4C8,30.4,1.6,24,1.6,16 S8,1.6,16,1.6S30.4,8,30.4,16S24,30.4,16,30.4z\"/>\r\n    </svg>\r\n  )\r\n}\r\n\r\n","import React, { useState, useEffect, useReducer, useRef, useContext, useCallback } from 'react';\r\nimport { Button, Modal, InputGroup, FormControl, Form } from 'react-bootstrap';\r\nimport { Grid, GridColumn,  GridExpandChangeEvent, GridFilterChangeEvent, GridNoRecords } from '@progress/kendo-react-grid';\r\nimport { filterBy, CompositeFilterDescriptor } from \"@progress/kendo-data-query\";\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport { IAssignedTeachers, ManageCourses } from '../../model/IAssignedTeachers';\r\nimport TeacherService from '../../services/TeacherService';\r\nimport { FormMode, IDropDownValue } from '../../services/Utility';\r\nimport schoolService from '../../services/SchoolService';\r\nimport IAddCourseTeachers from '../../model/IAddCourseTeachers';\r\nimport IconPersonCircle from '../../assets/icons/icon-person-circle';\r\nimport LocalStorageService from '../../services/LocalStorage';\r\nimport { AuthContextDefault, UserProfileType, Year } from '../../services/AppContext';\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport IAssignedAdditionalStaff from '../../model/IAssignedAdditionalStaff';\r\nimport ITeacherManageSection from '../../model/ITeacherManageSection';\r\n\r\ninterface IAssignedTeacherProps {\r\n    courseId: any\r\n    courseStatus: string\r\n    courseSource: string\r\n    isEditable?: boolean | false\r\n    locationCode: string\r\n    onAssignTeachers: any\r\n    onDeleteTeacher: any\r\n    updateCourseStatus: any\r\n    isSharedCourse: boolean\r\n    courseUniqueId : string\r\n    \r\n}\r\nconst initialDataState = {\r\n    skip: 0,\r\n    take: 10,\r\n};\r\n\r\n\r\nexport default function AssignedTeachers(props: IAssignedTeacherProps) {\r\n    const mountedRef = useRef(true);\r\n    const [userProfile, setUserProfile] = useState<UserProfileType>(AuthContextDefault.userProfile);\r\n    const { orginalSchoolYear } = useContext(Year);\r\n    const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n    const [courseTeachers, setCourseTeachers] = useState<IAssignedTeachers[]>([]);\r\n    const [courseAdditionalStaff, setCourseAdditionalStaff] = useState<IAssignedAdditionalStaff[]>([]);\r\n    const [data, setRowData] = useState<IAssignedTeachers[]>([]);\r\n    const [dataCopy, setRowCopyData] = useState<IAssignedTeachers[]>([]);\r\n    const [deleteTeacherId, setDeleteTecherId] = useState<string>('');\r\n    const [errorMsg, setErrorMsg] = useState<string>('');\r\n    const [ignored, forceUpdate] = useReducer(x => x + 1, 0);\r\n    const [orginalSchoolList, setOrginalSchoolList] = useState<IDropDownValue[]>([]);\r\n    const [schoolList, setSchoolList] = useState<IDropDownValue[]>([]);\r\n    const initialFilter: CompositeFilterDescriptor = {\r\n        logic: \"and\",\r\n        filters: [],\r\n    };\r\n    const [filter, setFilter] = useState(initialFilter);\r\n    const [page, setPage] = React.useState(initialDataState);\r\n\r\n    const pageChange = (event: any) => {\r\n        setPage(event.page);\r\n    };\r\n\r\n    const getTeachers =  (locationCode: string) => {\r\n         TeacherService.GetUnassignedTeachersBySchoolDBN(locationCode , props.courseUniqueId).then(response => {\r\n            setRowData(response.data)\r\n            setRowCopyData(response.data)\r\n        })\r\n    }\r\n    \r\n    const getAssignedTeachers = (CourseId: number) => {\r\n        if (props.isSharedCourse) {\r\n            TeacherService.getSharedCourseAssignedTeachers(CourseId).then(response => {\r\n                let teacherData = response.data as IAssignedTeachers[];\r\n                teacherData.forEach(x => x.courseSource = props.courseSource);\r\n                teacherData.forEach(x => x.courseStatus = props.courseStatus);\r\n                setCourseTeachers(teacherData)\r\n            })\r\n        } else {\r\n            TeacherService.getByCourseId(CourseId).then(response => {\r\n                let teacherData = response.data as IAssignedTeachers[];\r\n                teacherData.forEach(x => x.courseSource = props.courseSource);\r\n                teacherData.forEach(x => x.courseStatus = props.courseStatus);\r\n                setCourseTeachers(teacherData)\r\n            })\r\n        }\r\n\r\n        return () => { mountedRef.current = false }\r\n    }\r\n    const getSchoolLocations = () => {\r\n        schoolService.getData().then(response => {\r\n            let dropDownData = response.data.map((sl: any) => ({\r\n                id: sl.locationCode,\r\n                text: sl.locationCode + ' -- ' + sl.schoolName\r\n            }));\r\n            setSchoolList(dropDownData)\r\n            setOrginalSchoolList(dropDownData)\r\n        });\r\n    }\r\n    const filterData = (filter: any) => {\r\n        let data = orginalSchoolList.slice();\r\n        return filterBy(data, filter);\r\n    }\r\n\r\n    const filterChange = (event: any) => {\r\n        let data = filterData(event.filter)\r\n        setSchoolList(data)\r\n    }\r\n\r\n    const handleChange = (event: any) => {\r\n        let selectedSchool = event.target.value;\r\n        getTeachers(selectedSchool.id);\r\n    }\r\n\r\n    const getDefaultValue = (schoolList: any) => {\r\n        let school = schoolList.find((s: any) => s.id == props.locationCode)\r\n        if (school) {\r\n            return school\r\n        }\r\n    }\r\n\r\n    useEffect(() => {\r\n        getAssignedTeachers(props.courseId);\r\n        setUserProfile(LocalStorageService.getUserProfile())\r\n        return () => { mountedRef.current = false }\r\n    }, [props.locationCode]);\r\n\r\n\r\n    const [assignedTeachersVisible, setAssignedTeachersVisible] = useState<boolean>(false);\r\n    const toggleAssignedTeachersDialog = () => {\r\n        setAssignedTeachersVisible(!assignedTeachersVisible)\r\n        let data = orginalSchoolList.slice();\r\n        setSchoolList(data)\r\n        setHeaderCheckBox(false);\r\n    }\r\n\r\n    const addTeacher = () => {\r\n        setErrorMsg('');\r\n        getSchoolLocations();\r\n        getTeachers(props.locationCode);\r\n        setFormMode(FormMode.New)\r\n        toggleAssignedTeachersDialog()\r\n    }\r\n\r\n    const onGridCheckBoxClick = (dataItem: any) => {\r\n        dataItem.isSelected = !dataItem.isSelected;\r\n        forceUpdate();\r\n    }\r\n\r\n    const [headerCheckBoxValue, setHeaderCheckBox] = useState(false);\r\n    const onHeaderCheckBoxClick = (event: any, products?: any) => {\r\n        let checked = event.target.checked;\r\n        if (checked == true) {\r\n            data.map((t: any) => t.isSelected = true)\r\n        } else {\r\n            data.map((t: any) => t.isSelected = false)\r\n        }\r\n        setHeaderCheckBox(checked)\r\n    }\r\n    const removeTeacher = (teacherId: string) => {\r\n        setDeleteTecherId(teacherId)\r\n        setFormMode(FormMode.Delete)\r\n    }\r\n    const [searchTeacherEin, setSearchTeacherEin] = useState(\"\");\r\n    const searchTeacherChange = (event: any) => {\r\n        const target = event.target\r\n        if (!target.value || target.value == \"\") {\r\n            setErrorMsg('')\r\n            setRowData(dataCopy)\r\n        }\r\n        setSearchTeacherEin(target.value)\r\n    };\r\n    const getTeacherById = () => {\r\n        setErrorMsg('')\r\n        if (searchTeacherEin == \"\") {\r\n            setErrorMsg(\"Please enter teacher EIN\")\r\n            return\r\n        }\r\n        setRowData([])\r\n        TeacherService.GetUnassignedTeacherById(searchTeacherEin , props.courseUniqueId).then(response => {\r\n            if (response.data.isValidResponse) {\r\n                let teacher = response.data.result as IAssignedTeachers\r\n                let teachers = []\r\n                teachers.push(teacher)\r\n                setRowData(teachers)\r\n                setPage(initialDataState)\r\n            } \r\n        }).catch((ex)=>{\r\n            setErrorMsg(ex.response.data.errors.join())\r\n        })\r\n    }\r\n    const onSave = (event: any, actionType: FormMode) => {\r\n        switch (actionType) {\r\n            case FormMode.New:\r\n\r\n                let addCourseTeachers: IAddCourseTeachers = {\r\n                    courseId: props.courseId,\r\n                    schoolYear: +orginalSchoolYear.id,\r\n                    teachers: []\r\n                }\r\n                addCourseTeachers.teachers = data.filter(x => x.isSelected);\r\n                if (addCourseTeachers.teachers?.length == 0) {\r\n                    setErrorMsg('Please select atleast one teacher to add.');\r\n                    return;\r\n                }\r\n                let teacherIds = courseTeachers.map(a => a.teacherId);\r\n                let addedTeachers = addCourseTeachers.teachers.filter((x) => !teacherIds.includes(x.teacherId));;\r\n                addCourseTeachers.teachers = addedTeachers;\r\n\r\n                if (addedTeachers?.length == 0) {\r\n                    setErrorMsg('Selected teachers are already added.');\r\n                    return;\r\n                }\r\n                addedTeachers.forEach(x => x.role = \"Teacher\");\r\n                var currentTeacherList = courseTeachers;\r\n                currentTeacherList = currentTeacherList.concat(addedTeachers);\r\n                TeacherService.post(addCourseTeachers).then(response => {\r\n                    setCourseTeachers(currentTeacherList);\r\n                    props.onAssignTeachers(addedTeachers, props.courseId)\r\n                    props.updateCourseStatus(props.courseId)\r\n                    setAssignedTeachersVisible(!assignedTeachersVisible)\r\n                    setFormMode(FormMode.None)\r\n                    setHeaderCheckBox(false);\r\n                });\r\n                break;\r\n            case FormMode.Delete:\r\n                TeacherService.delete(props.courseId, deleteTeacherId).then(response => {\r\n                    let courseteacherList = courseTeachers.filter(x => x.teacherId != deleteTeacherId);\r\n                    props.onDeleteTeacher(courseteacherList, props.courseId)\r\n                    props.updateCourseStatus(props.courseId)\r\n                    setCourseTeachers(courseteacherList);\r\n                    setFormMode(FormMode.None)\r\n                });\r\n                break;\r\n            default: {\r\n                setFormMode(FormMode.None)\r\n                break;\r\n\r\n            }\r\n        }\r\n    }\r\n\r\n    const changeTeacherCanManage = (e: any, element: ManageCourses, teacherId: string) => {\r\n        let teacher: IAssignedTeachers | undefined = courseTeachers.find(item=>item.teacherId == teacherId)\r\n        let checked = e.target.checked\r\n        let teacherManageSection: ITeacherManageSection = {\r\n            sharedCourseUniqueId : teacher?.courseUniqueId,\r\n            courseId: props.courseId,\r\n            courseStatus: props.courseStatus,\r\n            teacherId: teacherId,\r\n            locationCode: teacher?.schoolDBN,\r\n            sectionUniqueId: element.sectionUniqueId\r\n        }\r\n        let newData = courseTeachers.map((item: IAssignedTeachers) => {\r\n            if (item.teacherId === teacherId) {\r\n                teacher = item\r\n                item.manageCourses?.map((i: ManageCourses) => {\r\n                    if (i.sectionUniqueId === element.sectionUniqueId) {\r\n                        i.canManage = checked\r\n                    }\r\n                })\r\n            }\r\n            return item; \r\n        })\r\n        setCourseTeachers(newData);\r\n        if (checked) {\r\n            \r\n            TeacherService.enableTeacherToManageCourse(teacherManageSection).then(res => {\r\n                if(res.data.isValidResponse){\r\n                    props.updateCourseStatus(props.courseId)\r\n                }\r\n                \r\n            })\r\n        }else{\r\n            TeacherService.removeTeaccherFromCourse(teacherManageSection).then(res => {\r\n                if(res.data.isValidResponse){\r\n                    props.updateCourseStatus(props.courseId)\r\n                }\r\n            })\r\n        }\r\n\r\n    }\r\n\r\n    const DetailComponent = (item: any) => {\r\n        const dataItem = item.dataItem;\r\n\r\n        return (\r\n            <div className=\"card\">\r\n                <div className=\"card-body\">\r\n                    <div className=\"row\">\r\n                        <div className=\"col-md-5\">\r\n                            <div className='text-primary small mb-1'>Teaches Course:</div>\r\n                            {dataItem.mainCourses && dataItem.mainCourses.length &&\r\n                                dataItem.mainCourses?.map((element: any, index: number) => {\r\n                                    return <div key={index}>{element.teacherCourse}</div>\r\n                                })}\r\n                        </div>\r\n                        <div className=\"col-md-7 mt-3 mt-md-0\">\r\n                            <div className='text-primary small mb-1'>Allowed to Manage:</div>\r\n                            {dataItem.manageCourses && dataItem.manageCourses.length > 0 &&\r\n                                dataItem.manageCourses?.map((element: any, index: number) => {\r\n                                    return (\r\n                                        <>\r\n                                            <Form>\r\n                                                <Form.Group className='mb-0'>\r\n                                                    <Form.Check\r\n                                                        type=\"switch\"\r\n                                                        id={`canManage${index}`}\r\n                                                        label={element.sectionName}\r\n                                                        name=\"canManage\"\r\n                                                        onChange={(e: any) => changeTeacherCanManage(e, element, dataItem.teacherId)}\r\n                                                        checked={element.canManage}\r\n                                                        key={index}\r\n                                                        disabled={props.courseStatus.toLowerCase() == 'closed'}\r\n                                                    />\r\n                                                </Form.Group>\r\n                                            </Form></>)\r\n                                })}\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        );\r\n    }\r\n\r\n    const expandChange = (event: GridExpandChangeEvent) => {\r\n        let newData = courseTeachers.map((item: IAssignedTeachers) => {\r\n            if (item.teacherId === event.dataItem.teacherId) {\r\n                item.expanded = !event.dataItem.expanded;\r\n            } else {\r\n                item.expanded = false\r\n            }\r\n            return item;\r\n        })\r\n        setCourseTeachers(newData);\r\n    }\r\n\r\n    return (\r\n        <div>\r\n            {assignedTeachersVisible && <Dialog title={\"Add New Teachers\"} onClose={toggleAssignedTeachersDialog} width={1000} height={600}>\r\n                <div id=\"dropDownParent\">\r\n                    <div hidden={errorMsg.length == 0}>\r\n                        <div className=\"alert alert-danger alert-dismissible fade show\" role=\"alert\">\r\n                            {errorMsg}\r\n                            <button type=\"button\" className=\"close\" data-dismiss=\"alert\" aria-label=\"Close\">\r\n                                <span aria-hidden=\"true\">&times;</span>\r\n                            </button>\r\n                        </div>\r\n                    </div>\r\n                    <div className=\"d-flex justify-content-between align-items-center\" >\r\n                        <div className=\"text-sm-left text-left\">\r\n\r\n                            <InputGroup >\r\n                                <FormControl\r\n                                    placeholder=\"Teacher EIN\"\r\n                                    onChange={searchTeacherChange}\r\n                                />\r\n                                <Button variant=\"outline-secondary\" id=\"button-addon1\" onClick={getTeacherById} >\r\n                                    Search\r\n                                </Button>\r\n                            </InputGroup>\r\n                        </div>\r\n                        <div className=\"text-sm-right text-right\">\r\n                            <DropDownList\r\n                                data={schoolList}\r\n                                defaultValue={getDefaultValue(schoolList)}\r\n                                textField=\"text\"\r\n                                filterable={true}\r\n                                onChange={handleChange}\r\n                                onFilterChange={filterChange}\r\n                                style={{ maxWidth: '350px', width: \"100%\" }}\r\n                                popupSettings={{ appendTo: document.getElementById(\"dropDownParent\") as HTMLElement }}\r\n                            />\r\n                        </div>\r\n                    </div>\r\n                    <div className=\"mt-3\" style={{ height: '500px' }}>\r\n                        <Grid\r\n                            data={filterBy(data, filter).slice(page.skip, page.take + page.skip)}\r\n                            filter={filter}\r\n                            filterable={true}\r\n                            skip={page.skip}\r\n                            take={page.take}\r\n                            total={data.length}\r\n                            pageable={true}\r\n                            scrollable={\"none\"}\r\n                            className=\"mb-3\"\r\n                            onPageChange={pageChange}\r\n                            onFilterChange={(e: GridFilterChangeEvent) => setFilter(e.filter)}\r\n                        >\r\n                            <GridColumn field=\"isSelected\" width=\"40px\" filterable={false} headerCell={props => (<input type=\"checkbox\" checked={headerCheckBoxValue} onChange={(e) => onHeaderCheckBoxClick(e, props)} />)} cell={props => (\r\n                                <td>\r\n                                    <input type=\"checkbox\" checked={props.dataItem.isSelected} onChange={() => onGridCheckBoxClick(props.dataItem)} />\r\n                                </td>\r\n                            )} />\r\n\r\n                            <GridColumn field=\"UserIcon\" title=\" \" filterable={false} width=\"80px\" cell={\r\n                                props => (\r\n                                    <td>\r\n                                        <div className=\"d-flex\">\r\n                                            <div className=\"svg-app-icon text-rust mr-3\" style={{ height: \"30px\" }}>\r\n                                                <IconPersonCircle />\r\n                                            </div>\r\n                                        </div>\r\n                                    </td>\r\n                                )} />\r\n                            <GridColumn field=\"fullName\" title=\"Name\" cell={\r\n                                props => (\r\n                                    <td>\r\n                                        <div>{props.dataItem.fullName}</div>\r\n                                    </td>\r\n                                )} />\r\n                            <GridColumn field=\"teacherId\" title=\"EIN\" />\r\n                            <GridColumn field=\"userName\" title=\"Username\" />\r\n                            <GridColumn field=\"schoolDBN\" title=\"Associated Location\" filterable={false} />\r\n                        </Grid>\r\n                    </div>\r\n                </div>\r\n                <DialogActionsBar>\r\n                    <Button className=\"m-3\" variant=\"secondary\" onClick={toggleAssignedTeachersDialog}>Close</Button>\r\n                    <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Add Teachers</Button>\r\n                </DialogActionsBar>\r\n            </Dialog>}\r\n\r\n            <Modal\r\n                show={formMode == FormMode.Delete}\r\n                onHide={() => { setFormMode(FormMode.None) }}\r\n                animation={false}\r\n                backdrop=\"static\"\r\n                keyboard={false}>\r\n\r\n                <Modal.Header closeButton className=\"bg-primary text-white\">\r\n                    <Modal.Title>Remove Teacher</Modal.Title>\r\n                </Modal.Header>\r\n                <Modal.Body>\r\n                    Are you sure you want to remove teacher ?\r\n                </Modal.Body>\r\n                <Modal.Footer>\r\n                    <Button variant=\"secondary\" onClick={(e) => { setFormMode(FormMode.None) }}>Cancel</Button>\r\n                    <Button variant=\"primary\" type=\"button\" onClick={(e) => { onSave(e, formMode) }}>Delete</Button>\r\n                </Modal.Footer>\r\n            </Modal>\r\n\r\n            <div className=\"card mt-4\">\r\n                <div className=\"card-header font-weight-bold bg-secondary-light\">\r\n                    <div className=\"row align-items-center\">\r\n                        <div className=\"col-8 font-weight-bold\">Assigned Teachers</div>\r\n                        {(props.courseSource.toLowerCase() == 'stars' || props.courseStatus.toLowerCase() == 'closed') ? '' :\r\n                            <div className=\"col-4 text-right\">\r\n                                {userProfile?.role?.roleName != 'Central Staff' && orginalSchoolYear.isCurrent != 0 && !props.isSharedCourse ? <button type=\"button\" className=\"btn btn-sm btn-primary\" onClick={(e) => { addTeacher() }}>\r\n                                    <i className=\"fas fa-plus\"></i>\r\n                                </button> : props.isSharedCourse && <span className='small'> (auto-synced from the courses above) </span>}\r\n\r\n                            </div>}\r\n                    </div>\r\n                </div>\r\n                <div className=\"card-body\">\r\n\r\n                    <Grid\r\n                        data={courseTeachers}\r\n                        scrollable={\"none\"}\r\n                        className={props.isSharedCourse ? \"k-grid-no-header hierarchy-grid\" : \"k-grid-no-header\"}\r\n                        detail={props.isSharedCourse ? DetailComponent : null}\r\n                        expandField=\"expanded\"\r\n                        onExpandChange={expandChange}\r\n                    >\r\n                        {/* <GridColumn field=\"expanded\" width=\"80px\" title=' ' /> */}\r\n                        <GridNoRecords>\r\n                            No Assigned Teachers\r\n                        </GridNoRecords>\r\n                        <GridColumn field=\"UserIcon\" title=\" \" width=\"80px\" cell={\r\n                            props => (\r\n                                <td>\r\n                                    <div className=\"d-flex\">\r\n                                        <div className=\"svg-app-icon text-rust mr-3\" style={{ height: \"40px\" }}>\r\n                                            <IconPersonCircle />\r\n                                        </div>\r\n                                    </div>\r\n                                </td>\r\n                            )} />\r\n                        <GridColumn field=\"Name\" title=\"\" cell={\r\n                            props => (\r\n                                <td>\r\n                                    <div> {props.dataItem.lastName} {props.dataItem.firstName} </div>\r\n                                    <div className=\"small\">EIN:{props.dataItem.teacherId}</div>\r\n                                </td>\r\n                            )} />\r\n                        <GridColumn field=\"\" title=\"Title\" cell={\r\n                            props => (\r\n                                <td>\r\n                                    <div className=\"small\">Title:</div>\r\n                                    <div>{props.dataItem.role}</div>\r\n                                </td>\r\n                            )} />\r\n                        <GridColumn field=\"\" title=\"Username\" cell={\r\n                            props => (\r\n                                <td>\r\n                                    <div className=\"small\">Username:</div>\r\n                                    <div>{props.dataItem.userName}</div>\r\n                                </td>\r\n                            )} />\r\n                        <GridColumn field=\"schoolDBN\" title=\"Associated Location\" cell={\r\n                            props => (\r\n                                <td>\r\n                                    <div className=\"small\">Associated Location:</div>\r\n                                    <div>{props.dataItem.schoolDBN}</div>\r\n                                </td>\r\n                            )} />\r\n                        <GridColumn field=\"\" title=\" \" cell={\r\n                            prop => (\r\n                                <td className=\"text-right menu-btn\">\r\n                                    {(userProfile?.role?.roleName == 'Central Staff' || prop.dataItem?.role === \"Teacher Of Record\" || orginalSchoolYear.isCurrent == 0\r\n                                        || prop.dataItem?.courseStatus?.toLowerCase() === 'closed' || prop.dataItem?.courseSource?.toLowerCase() === 'stars') || props.isSharedCourse\r\n                                        ? '' :\r\n                                        <button type=\"button\" className=\"btn btn-sm btn-outline-secondary\" onClick={(e) => { removeTeacher(prop.dataItem.teacherId) }}>\r\n                                            <i className=\"fas fa-minus\"></i>\r\n                                        </button>\r\n                                    }\r\n                                </td>\r\n                            )} />\r\n\r\n                    </Grid>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    )\r\n}","\r\nimport IAddCourseAdditionalStaff from '../model/IAddCourseAdditionalStaff'\r\nimport { AxiosInstances as AxiosInstance} from './BaseService'\r\n\r\nexport default {\r\n    GetUnassignedStaffBySchoolDBN: (locationCode : string , courseUniqueId : string) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Schools/${locationCode}/AdditionalStaff/${courseUniqueId}`\r\n        }),\r\n        getByCourseId: (courseId : number) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Courses/${courseId}/AdditionalStaff`\r\n        }),\r\n        post: (requestdata: IAddCourseAdditionalStaff) =>\r\n        AxiosInstance({\r\n            'method': 'POST',\r\n            'url': `/Courses/AdditionalStaff`,\r\n            'data': requestdata\r\n        }), \r\n        delete: (courseId : number, additionalStaffId : string) =>\r\n        AxiosInstance({\r\n            'method': 'DELETE',\r\n            'url': `/Courses/${courseId}/AdditionalStaff/${additionalStaffId}`\r\n        }), \r\n}","import React, { useState, useEffect, useReducer, useRef, useContext } from 'react';\r\nimport { Button, Modal, InputGroup, FormControl } from 'react-bootstrap';\r\nimport { Grid, GridColumn, GridFilterChangeEvent, GridNoRecords } from '@progress/kendo-react-grid';\r\nimport { filterBy, CompositeFilterDescriptor } from \"@progress/kendo-data-query\";\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport IAssignedAdditionalStaff from '../../model/IAssignedAdditionalStaff';\r\nimport AdditionalStaffService from '../../services/AdditionalStaffService';\r\nimport { FormMode, IDropDownValue } from '../../services/Utility'\r\nimport schoolService from '../../services/SchoolService';\r\nimport IAddCourseAdditionalStaff from '../../model/IAddCourseAdditionalStaff';\r\nimport IconPersonCircle from '../../assets/icons/icon-person-circle';\r\nimport LocalStorageService from '../../services/LocalStorage';\r\nimport { AuthContextDefault, UserProfileType, Year } from '../../services/AppContext';\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport TeacherService from '../../services/TeacherService';\r\n\r\n\r\ninterface IAssignedAdditionalStaffProps {\r\n    courseId: number\r\n    courseStatus: string\r\n    courseSource: string\r\n    isEditable?: boolean | false\r\n    locationCode: string\r\n    updateCourseStatus: (courseId : number) => void\r\n    courseUniqueId : string\r\n\r\n}\r\nconst initialDataState = {\r\n    skip: 0,\r\n    take: 10,\r\n};\r\n\r\nconst initialFilter: CompositeFilterDescriptor = {\r\n    logic: \"and\",\r\n    filters: [],\r\n};\r\n\r\nexport default function AssingedAdditionalStaff(props: IAssignedAdditionalStaffProps) {\r\n    const mountedRef = useRef(true);\r\n    const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n    const [courseAdditionalStaff, setCourseAdditionalStaff] = useState<IAssignedAdditionalStaff[]>([]);\r\n    const [userProfile, setUserProfile] = useState<UserProfileType>(AuthContextDefault.userProfile);\r\n    const [data, setRowData] = useState<IAssignedAdditionalStaff[]>([]);\r\n    const [dataCopy, setRowCopyData] = useState<IAssignedAdditionalStaff[]>([]);\r\n    const [deleteAdditionalStaffId, setDeleteTecherId] = useState<string>('');\r\n    const [errorMsg, setErrorMsg] = useState<string>('');\r\n    const [ignored, forceUpdate] = useReducer(x => x + 1, 0);\r\n    const [orginalSchoolList, setOrginalSchoolList] = useState<IDropDownValue[]>([]);\r\n    const { orginalSchoolYear } = useContext(Year);\r\n    const [schoolList, setSchoolList] = useState<IDropDownValue[]>([]);\r\n    const [filter, setFilter] = useState(initialFilter);\r\n    const [page, setPage] = React.useState(initialDataState);\r\n\r\n\r\n    const pageChange = (event: any) => {\r\n        setPage(event.page);\r\n    };\r\n\r\n    const getAdditionalStaffBySchoolDBN = (locationCode: string) => {\r\n      AdditionalStaffService.GetUnassignedStaffBySchoolDBN(locationCode , props.courseUniqueId).then(response => {\r\n            setRowData(response.data)\r\n            setRowCopyData(response.data)\r\n        })\r\n    }\r\n\r\n    const getAssignedAdditionalStaff = (CourseId: number) => {\r\n        AdditionalStaffService.getByCourseId(CourseId).then(response => {\r\n            const additionalStaffData = response.data.map((x:IAssignedAdditionalStaff) => ({\r\n                ...x,\r\n                courseSource: props.courseSource,\r\n                courseStatus: props.courseStatus\r\n              })) as IAssignedAdditionalStaff[];\r\n            setCourseAdditionalStaff(additionalStaffData)\r\n        })\r\n        return () => { mountedRef.current = false }\r\n    }\r\n    const getSchoolLocations = () => {\r\n        schoolService.getData().then(response => {\r\n            let dropDownData = response.data.map((sl: any) => ({\r\n                id: sl.locationCode,\r\n                text: sl.locationCode + ' -- ' + sl.schoolName\r\n            }));\r\n            setSchoolList(dropDownData)\r\n            setOrginalSchoolList(dropDownData)\r\n        });\r\n    }\r\n    const filterData = (filter: any) => {\r\n        let data = orginalSchoolList.slice();\r\n        return filterBy(data, filter);\r\n    }\r\n\r\n    const filterChange = (event: any) => {\r\n        let data = filterData(event.filter)\r\n        setSchoolList(data)\r\n    }\r\n\r\n    const handleChange = (event: any) => {\r\n        let selectedSchool = event.target.value;\r\n        getAdditionalStaffBySchoolDBN(selectedSchool.id);\r\n    }\r\n\r\n\r\n    const getDefaultValue = (schoolList: any) => {\r\n        let school = schoolList.find((s: any) => s.id == props.locationCode)\r\n        if (school) {\r\n            return school\r\n        }\r\n    }\r\n\r\n    useEffect(() => {\r\n        getAssignedAdditionalStaff(props.courseId);\r\n        setUserProfile(LocalStorageService.getUserProfile())\r\n        return () => { mountedRef.current = false }\r\n    }, [props.locationCode]);\r\n\r\n\r\n\r\n    const [additionalStaffVisible, setAdditionalStaffVisible] = useState<boolean>(false);\r\n    const toggleAssignedTeachersDialog = () => {\r\n        setAdditionalStaffVisible(!additionalStaffVisible)\r\n        let data = orginalSchoolList.slice();\r\n        setSchoolList(data)\r\n        setHeaderCheckBox(false);\r\n    }\r\n\r\n    const addAdditionalStaff = () => {\r\n        setErrorMsg('');\r\n        getSchoolLocations();\r\n        getAdditionalStaffBySchoolDBN(props.locationCode);\r\n        setFormMode(FormMode.New)\r\n        toggleAssignedTeachersDialog()\r\n    }\r\n\r\n    const onGridCheckBoxClick = (dataItem: any) => {\r\n        dataItem.isSelected = !dataItem.isSelected;\r\n        forceUpdate();\r\n    }\r\n\r\n    const [headerCheckBoxValue, setHeaderCheckBox] = useState(false);\r\n    const onHeaderCheckBoxClick = (event: any) => {\r\n        let checked = event.target.checked;\r\n        if (checked == true) {\r\n            data.map((t: any) => t.isSelected = true)\r\n        } else {\r\n            data.map((t: any) => t.isSelected = false)\r\n        }\r\n        setHeaderCheckBox(checked)\r\n    }\r\n    const removeAdditionalStaff = (additionalStaffId: string) => {\r\n        setDeleteTecherId(additionalStaffId)\r\n        setFormMode(FormMode.Delete)\r\n    }\r\n\r\n    const [searchTeacherEin, setSearchTeacherEin] = useState(\"\");\r\n    const searchTeacherChange = (event: any) => {\r\n        const target = event.target\r\n        if (!target.value || target.value == \"\") {\r\n            setErrorMsg('')\r\n            setRowData(dataCopy)\r\n        }\r\n        setSearchTeacherEin(target.value)\r\n    };\r\n    const getTeacherById = () => {\r\n        setErrorMsg('')\r\n        if (searchTeacherEin == \"\") {\r\n            setErrorMsg(\"Please enter teacher EIN\")\r\n            return\r\n        }\r\n        setRowData([])\r\n        TeacherService.GetUnassignedTeacherById(searchTeacherEin  , props.courseUniqueId).then(response => {\r\n            if (response.data.isValidResponse) {\r\n                let teacher = response.data.result\r\n                teacher.additionalStaffId = response.data.result.teacherId\r\n                let teachers: IAssignedAdditionalStaff[] = []\r\n                teachers.push(teacher)\r\n                setRowData(teachers)\r\n                setPage(initialDataState)\r\n            } \r\n        }).catch((ex)=>{\r\n           setErrorMsg(ex.response.data.errors.join())\r\n        })\r\n    }\r\n\r\n    const onSave = (event: any, actionType: FormMode) => {\r\n        switch (actionType) {\r\n            case FormMode.New:\r\n\r\n                let addCourseAdditionalStaff: IAddCourseAdditionalStaff = {\r\n                    courseId: props.courseId,\r\n                    schoolYear :+orginalSchoolYear.id,\r\n                    additionalStaff: []\r\n                }\r\n                addCourseAdditionalStaff.additionalStaff = data.filter(x => x.isSelected);\r\n                if (addCourseAdditionalStaff.additionalStaff.length == 0) {\r\n                    setErrorMsg('Please select atleast one additional Staff to add.');\r\n                    return;\r\n                }\r\n                let additionalStaffIds = courseAdditionalStaff.map(a => a.additionalStaffId);\r\n                let addedAdditionalStaff = addCourseAdditionalStaff.additionalStaff.filter((x) => !additionalStaffIds.includes(x.additionalStaffId));;\r\n                addCourseAdditionalStaff.additionalStaff = addedAdditionalStaff;\r\n\r\n                if (addCourseAdditionalStaff.additionalStaff.length == 0) {\r\n                    setErrorMsg('Selected Additional Staff are already added.');\r\n                    return;\r\n                }\r\n                var currentAdditionalStaffList = courseAdditionalStaff;\r\n                currentAdditionalStaffList = currentAdditionalStaffList.concat(addedAdditionalStaff);\r\n\r\n                AdditionalStaffService.post(addCourseAdditionalStaff).then(response => {\r\n                    setCourseAdditionalStaff(currentAdditionalStaffList);\r\n                    setAdditionalStaffVisible(!additionalStaffVisible)\r\n                    props.updateCourseStatus(props.courseId)\r\n                    setFormMode(FormMode.None)\r\n                    setHeaderCheckBox(false);\r\n                });\r\n                break;\r\n            case FormMode.Delete:\r\n                AdditionalStaffService.delete(props.courseId, deleteAdditionalStaffId).then(response => {\r\n                    let courseAdditionalStaffList = courseAdditionalStaff.filter(x => x.additionalStaffId != deleteAdditionalStaffId);\r\n                    setCourseAdditionalStaff(courseAdditionalStaffList);\r\n                    props.updateCourseStatus(props.courseId)\r\n                    setFormMode(FormMode.None)\r\n                });\r\n                break;\r\n            default: {\r\n                setFormMode(FormMode.None)\r\n                break;\r\n\r\n            }\r\n        }\r\n    }\r\n\r\n\r\n    return (\r\n        <div >\r\n            {additionalStaffVisible && <Dialog title={\"Add AdditionalStaff\"} onClose={toggleAssignedTeachersDialog} style={{ width: \"75%\", position: \"fixed\", left: \"15%\", top: \"20%\", height: \"350px\" }} >\r\n                <div id=\"dropDownParent\"  >\r\n                    <div hidden={errorMsg.length == 0}>\r\n                        <div className=\"alert alert-danger alert-dismissible fade show\" role=\"alert\">\r\n                            {errorMsg}\r\n                            <button type=\"button\" className=\"close\" data-dismiss=\"alert\" aria-label=\"Close\">\r\n                                <span aria-hidden=\"true\">&times;</span>\r\n                            </button>\r\n                        </div>\r\n                    </div>\r\n                    <div className=\"d-flex justify-content-between align-items-center\" >\r\n                        <div className=\"text-sm-left text-left\">\r\n\r\n                            <InputGroup >\r\n                                <FormControl\r\n                                    placeholder=\"Teacher EIN\"\r\n                                    onChange={searchTeacherChange}\r\n                                />\r\n                                <Button variant=\"outline-secondary\" id=\"button-addon1\" onClick={getTeacherById} >\r\n                                    Search\r\n                                </Button>\r\n                            </InputGroup>\r\n                        </div>\r\n                        <div className=\"text-sm-right text-left\">\r\n                            <DropDownList\r\n                                data={schoolList}\r\n                                defaultValue={getDefaultValue(schoolList)}\r\n                                textField=\"text\"\r\n                                filterable={true}\r\n                                onChange={handleChange}\r\n                                onFilterChange={filterChange}\r\n                                popupSettings={{ appendTo: document.getElementById(\"dropDownParent\") as HTMLElement }}\r\n                                style={{ maxWidth: '350px', width: \"100%\" }}\r\n                            />\r\n                        </div>\r\n                    </div>\r\n                    <div className=\"mt-3\">\r\n                        <Grid\r\n                            data={filterBy(data, filter).slice(page.skip, page.take + page.skip)}\r\n                            filter={filter}\r\n                            filterable={true}\r\n                            skip={page.skip}\r\n                            take={page.take}\r\n                            total={data.length}\r\n                            pageable={true}\r\n                            onPageChange={pageChange}\r\n                            scrollable={\"none\"}\r\n                            style={{ height: '400px' }}\r\n                            onFilterChange={(e: GridFilterChangeEvent) => setFilter(e.filter)}>\r\n                            <GridColumn field=\"isSelected\" width=\"40px\" filterable={false} headerCell={props => (<input type=\"checkbox\" checked={headerCheckBoxValue} onChange={(e) => onHeaderCheckBoxClick(e)} />)} cell={props => (\r\n                                <td>\r\n                                    <input type=\"checkbox\" checked={props.dataItem.isSelected} onChange={() => onGridCheckBoxClick(props.dataItem)} />\r\n                                </td>\r\n                            )} />\r\n\r\n                            <GridColumn field=\"UserIcon\" title=\" \" filterable={false} width=\"80px\" cell={\r\n                                props => (\r\n                                    <td>\r\n                                        <div className=\"d-flex\">\r\n                                            <div className=\"svg-app-icon text-secondary mr-3\" style={{ height: \"30px\" }}>\r\n                                                <IconPersonCircle />\r\n                                            </div>\r\n                                        </div>\r\n                                    </td>\r\n                                )} />\r\n                            <GridColumn field=\"fullName\" title=\"Name\" cell={\r\n                                props => (\r\n                                    <td>\r\n                                        <div>{props.dataItem.fullName}</div>\r\n                                    </td>\r\n                                )} />\r\n                            <GridColumn field=\"additionalStaffId\" title=\"EIN\" />\r\n                            <GridColumn field=\"userName\" title=\"Username\" />\r\n                            <GridColumn field=\"schoolDBN\" title=\"Associated Location\" filterable={false} />\r\n                        </Grid>\r\n                    </div>\r\n                </div>\r\n                <DialogActionsBar>\r\n                    <Button className=\"m-3\" variant=\"secondary\" onClick={toggleAssignedTeachersDialog}>Close</Button>\r\n                    <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Add Additional Staff</Button>\r\n                </DialogActionsBar>\r\n            </Dialog>}\r\n            <Modal\r\n                show={formMode == FormMode.Delete}\r\n                onHide={() => { setFormMode(FormMode.None) }}\r\n                animation={false}\r\n                backdrop=\"static\"\r\n                keyboard={false}>\r\n\r\n                <Modal.Header closeButton className=\"bg-primary text-white\">\r\n                    <Modal.Title>Remove Additional Staff</Modal.Title>\r\n                </Modal.Header>\r\n                <Modal.Body>\r\n                    Are you sure you want to remove additional staff ?\r\n                </Modal.Body>\r\n                <Modal.Footer>\r\n                    <Button variant=\"secondary\" onClick={(e) => { setFormMode(FormMode.None) }}>Cancel</Button>\r\n                    <Button variant=\"primary\" type=\"button\" onClick={(e) => { onSave(e, formMode) }}>Delete</Button>\r\n                </Modal.Footer>\r\n            </Modal>\r\n\r\n            <div className=\"card mt-4\">\r\n                <div className=\"card-header font-weight-bold bg-secondary-light\">\r\n                    <div className=\"row align-items-center\">\r\n                        <div className=\"col-8 font-weight-bold\">Additional Staff</div>\r\n                        {props.courseStatus.toLowerCase() == 'closed' ? '' :\r\n                            <div className=\"col-4 text-right\">\r\n                                {userProfile?.role?.roleName != 'Central Staff' && orginalSchoolYear.isCurrent != 0 &&\r\n                                    <button type=\"button\" className=\"btn btn-sm btn-primary\" onClick={(e) => { addAdditionalStaff() }}>\r\n                                        <i className=\"fas fa-plus\"></i>\r\n                                    </button>}\r\n                            </div>}\r\n                    </div>\r\n                </div>\r\n                <div className=\"card-body\">\r\n                    <Grid\r\n                        data={courseAdditionalStaff}\r\n                        scrollable={\"none\"}\r\n                        className=\"k-grid-no-header\"\r\n                    >\r\n                        {/* <GridColumn field=\"expanded\" width=\"80px\" title=' ' /> */}\r\n                        <GridNoRecords>\r\n                            No Additional Staff\r\n                        </GridNoRecords>\r\n                        <GridColumn field=\"UserIcon\" title=\" \" width=\"80\" cell={\r\n                            props => (\r\n                                <td>\r\n                                    <div className=\"d-flex\">\r\n                                        <div className=\"svg-app-icon text-secondary mr-3\" style={{ height: \"40px\" }}>\r\n                                            <IconPersonCircle />\r\n                                        </div>\r\n                                    </div>\r\n                                </td>\r\n                            )} />\r\n                        <GridColumn field=\"Name\" title=\"\" cell={\r\n                            props => (\r\n                                <td>\r\n                                    <div> {props.dataItem.lastName} {props.dataItem.firstName}</div>\r\n                                    <div className=\"small\">EIN:{props.dataItem.additionalStaffId}</div>\r\n                                </td>\r\n                            )} />\r\n\r\n                        <GridColumn field=\"\" title=\"Username\" cell={\r\n                            props => (\r\n                                <td>\r\n                                    <div className=\"small\">Username:</div>\r\n                                    <div>{props.dataItem.userName}</div>\r\n                                </td>\r\n                            )} />\r\n                        <GridColumn field=\"schoolDBN\" title=\"Associated Location\" cell={\r\n                            props => (\r\n                                <td>\r\n                                    <div className=\"small\">Associated Location:</div>\r\n                                    <div>{props.dataItem.schoolDBN}</div>\r\n                                </td>\r\n                            )} />\r\n                        <GridColumn field=\"\" title=\" \" cell={\r\n                            props => (\r\n                                <td className=\"text-right menu-btn\">\r\n                                    {(userProfile?.role?.roleName == 'Central Staff'\r\n                                        || props.dataItem?.courseStatus?.toLowerCase() === 'closed') || orginalSchoolYear.isCurrent == 0\r\n                                        ? '' :\r\n                                        <button type=\"button\" className=\"btn btn-sm btn-outline-secondary\" onClick={(e) => { removeAdditionalStaff(props.dataItem.additionalStaffId) }}>\r\n                                            <i className=\"fas fa-minus\"></i>\r\n                                        </button>\r\n                                    }\r\n                                </td>\r\n                            )} />\r\n                    </Grid>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    )\r\n}","import React, { useState, useEffect, useReducer, useRef } from 'react';\r\nimport coursesService from '../../services/CoursesService';\r\nimport { Grid, GridColumn, GridFilterChangeEvent, } from '@progress/kendo-react-grid';\r\nimport { filterBy, CompositeFilterDescriptor } from \"@progress/kendo-data-query\";\r\nimport ICourseVendorContent from '../../model/ICourseVendorContent';\r\nimport { CheckIfNYCDOELicense } from '../../helpers/helper';\r\n\r\ninterface IAddVendorContent {\r\n    courseId: number,\r\n    schoolDBN: string,\r\n    closeCourseVendorContentModal: (error: string) => void\r\n    updateCourseStatus: any\r\n}\r\nconst initialDataState = {\r\n    skip: 0,\r\n    take: 10,\r\n};\r\nexport default function AddVendorContent(props: IAddVendorContent) {\r\n    const mountedRef = useRef(true);\r\n    const [page, setPage] = React.useState(initialDataState);\r\n\r\n    const pageChange = (event: any) => {\r\n        setPage(event.page);\r\n    };\r\n\r\n    const [data, setRowData] = useState<ICourseVendorContent[]>([]);\r\n    const initialFilter: CompositeFilterDescriptor = {\r\n        logic: \"and\",\r\n        filters: [],\r\n    };\r\n    const [filter, setFilter] = useState(initialFilter);\r\n\r\n    const getUnassignedVendorContentData = () => {\r\n        coursesService.getUnassignedVendorContentData(props.courseId, props.schoolDBN).then(response => {\r\n            setRowData(response.data)\r\n        })\r\n        return () => { mountedRef.current = false }\r\n    }\r\n\r\n    useEffect(() => {\r\n        getUnassignedVendorContentData();\r\n        return () => { mountedRef.current = false }\r\n    }, []);\r\n\r\n    const addVendorCourseContentRecords = (vendorConentId: number, vendorId: number) => {\r\n        let courseVendorContent: ICourseVendorContent = {\r\n            courseId: props.courseId,\r\n            schoolDBN: props.schoolDBN,\r\n            vendorContentId: vendorConentId,\r\n            vendorId: vendorId,\r\n            vendorContentName: '',\r\n            vendorName: '',\r\n            availableLicenses: 0,\r\n            totalLicenses: 0,\r\n            statusCode: ''\r\n        };\r\n        coursesService.post(courseVendorContent).then(response => {\r\n\r\n\r\n            props.updateCourseStatus(props.courseId)\r\n            props.closeCourseVendorContentModal(!response.data.isValidResponse ? response.data.errors.join() : \"\");\r\n        });\r\n    }\r\n    return (\r\n        <div>\r\n            <Grid\r\n                data={filterBy(data, filter).slice(page.skip, page.take + page.skip)}\r\n                filter={filter}\r\n                filterable={true}\r\n                skip={page.skip}\r\n                take={page.take}\r\n                total={data.length}\r\n                scrollable={\"none\"}\r\n                pageable={true}\r\n                onPageChange={pageChange}\r\n                onFilterChange={(e: GridFilterChangeEvent) => setFilter(e.filter)}\r\n            >\r\n                <GridColumn field=\"vendorContentName\" title=\"Vendor Course Name\" />\r\n                <GridColumn field=\"vendorName\" title=\"Vendor\" />\r\n                <GridColumn field=\"AvailableLicense\" title=\"Available Licenses\" filterable={false}\r\n                    // Grid Header - center text\r\n                    headerCell={\r\n                        props => (\r\n                            <div className=\"text-center\">\r\n                                {props.title}\r\n                            </div>\r\n                        )}\r\n                    // Grid Cell - center text\r\n                    cell={\r\n                        props => (\r\n                            <td className=\"text-center\">\r\n                                {CheckIfNYCDOELicense(props.dataItem.vendorModel) ?\r\n                                    <div>Unlimited of Unlimited</div>\r\n                                    : <div>{props.dataItem.availableLicenses} of {props.dataItem.totalLicenses}</div>}\r\n\r\n                            </td>\r\n                        )}\r\n                />\r\n                <GridColumn field=\"Add\" title=\" \" filterable={false}\r\n                    cell={\r\n                        props => (\r\n                            <td className=\"text-right\">\r\n                                <div>\r\n                                    <button type=\"button\" className=\"btn btn-sm btn-primary\" onClick={(e) => { addVendorCourseContentRecords(props.dataItem.vendorContentId, props.dataItem.vendorId) }}>\r\n                                        <i className=\"fas fa-plus\"></i>\r\n                                    </button>\r\n                                </div>\r\n                            </td>\r\n                        )}\r\n                />\r\n            </Grid>\r\n        </div>\r\n    )\r\n}","import IEnrolledStudent from '../model/IEnrolledStudent'\r\nimport IAddCourseStudent from '../model/IAddCourseStudent'\r\nimport { AxiosInstances as AxiosInstance } from './BaseService'\r\n\r\nexport default {\r\n    getBySchoolDBN: (locationCode: string) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Schools/${locationCode}/Student`\r\n        }),\r\n    getByCourseId: (courseId: number) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Courses/${courseId}/Student`\r\n        }),\r\n\r\n    getStudentById: (studentId: number) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Students/${studentId}`\r\n        }),\r\n    post: (requestdata: IAddCourseStudent) =>\r\n        AxiosInstance({\r\n            'method': 'POST',\r\n            'url': `/Courses/Student`,\r\n            'data': requestdata\r\n        }),\r\n    delete: (courseId: number, StudentId: number) =>\r\n        AxiosInstance({\r\n            'method': 'DELETE',\r\n            'url': `/Courses/${courseId}/Student/${StudentId}`\r\n        }),\r\n}","import React, { useState, useEffect, useRef } from 'react';\r\nimport { NavLink } from 'react-router-dom';\r\n\r\nexport default function IconStudentOutline() {\r\n\r\n  return (\r\n    <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0px\" y=\"0px\" viewBox=\"0 0 32 32\">\r\n      <title>Student</title>\r\n      <path d=\"M16,0C7.2,0,0,7.2,0,16s7.2,16,16,16s16-7.2,16-16S24.8,0,16,0z M9.3,28.6c1.1-1.8,3.7-2.3,3.7-2.3 c0.4-0.1,0.7-0.4,0.7-0.8v-2c0-0.3-0.2-0.6-0.4-0.7C12,22,11,21,10.4,19.8c-0.1-0.2-0.2-0.3-0.4-0.4c-1-0.5-1.6-1.5-1.6-2.6 c0-0.9,0.4-1.9,1.1-2c0.4,0,0.8-0.4,0.8-0.8c0.2-3.6,2.5-6.1,6.2-7c-0.1,0.4-0.1,0.7,0,1.1c0.2,0.8,0.8,1.2,1.4,1.4\r\n        c2.1,0.6,3.6,2.4,3.7,4.5c0,0.4,0.3,0.8,0.7,0.8c0.8,0.1,1.2,0.8,1.2,2c0,1.2-0.6,2.2-1.6,2.6c-0.2,0.1-0.3,0.2-0.4,0.4 c-0.6,1.1-1.5,2.1-2.7,2.8c-0.3,0.2-0.4,0.4-0.4,0.7v2c0,0.4,0.3,0.8,0.7,0.8c0,0,2.3,0.4,3.6,2.4c-2,1.1-4.3,1.7-6.8,1.7 C13.6,30.3,11.3,29.7,9.3,28.6z M24.2,27.7c-1.2-1.8-3-2.7-4-3v-0.9c1.2-0.8,2.1-1.8,2.8-3c1.4-0.8,2.4-2.3,2.4-4c0-1.8-0.7-3-2-3.5 c-0.4-2.6-2.3-4.8-4.9-5.5c0,0-0.2-0.1-0.2-0.2c-0.1-0.2,0.1-0.6,0.6-1.2c0.2-0.3,0.3-0.6,0.1-1C18.8,5.1,18.5,5,18.1,5 c-5.4,0.6-8.9,3.7-9.4,8.3c-1.2,0.4-2,1.8-2,3.5c0,1.7,0.9,3.2,2.3,4c0.7,1.2,1.7,2.3,3,3.1v0.9c-1.1,0.3-3.1,1.1-4.1,2.9 C4.1,25.2,1.7,20.9,1.7,16C1.7,8.1,8.1,1.7,16,1.7c7.9,0,14.3,6.4,14.3,14.3C30.3,20.8,27.9,25.1,24.2,27.7z\"/>\r\n    </svg>\r\n  )\r\n}\r\n\r\n","var __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};\n// Gets and sets the children. Returns the children or the re-created item with the new children.\nfunction children(item, subItemsField, subItems) {\n    var _a;\n    if (subItems) {\n        return __assign({}, item, (_a = {}, _a[subItemsField] = subItems.length ? subItems.slice() : undefined, _a));\n    }\n    else {\n        return item && item[subItemsField] ? item[subItemsField].slice() : [];\n    }\n}\nfunction mapItem(dataItem, subItemsField, callbackfn) {\n    if (dataItem[subItemsField]) {\n        var subItems = children(dataItem, subItemsField).map(function (child) { return mapItem(child, subItemsField, callbackfn); });\n        return callbackfn(children(dataItem, subItemsField, subItems));\n    }\n    return callbackfn(dataItem);\n}\n/**\n * Creates a new array with the results of calling the provided callback function\n * on every element in the provided data tree.\n *\n * @param {any[]} tree - The data tree.\n * @param {string} subItemsField - The field which points to the subitems collection of each data item.\n * @param {(value: any) => any} callback - The callback function.\n * @returns {any[]} - The new data tree.\n */\nexport var mapTree = function (tree, subItemsField, callback) {\n    return tree.map(function (item) { return mapItem(item, subItemsField, callback); }).slice();\n};\n/**\n * Creates a new array with the results of calling the provided callback function\n * on the element which match the `level` in the provided data tree.\n *\n * @param {any[]} tree - The data tree.\n * @param {number[]} level - An array of indexes of each parent and current item in the data tree.\n * @param {string} subItemsField - The field which points to the subitems collection of each data item.\n * @param {(value: any) => any} callback - The callback function.\n * @returns {any[]} - The new data tree.\n */\nexport var mapTreeItem = function (tree, level, subItemsField, callback) {\n    var curData = tree;\n    var parentNodes = [];\n    for (var i = 0; i < level.length; i++) {\n        curData = curData[level[i]];\n        curData = Array.isArray(curData) ? curData : curData[subItemsField];\n        parentNodes.push(curData);\n    }\n    var parent = parentNodes.length > 1 ? parentNodes[parentNodes.length - 2] : tree;\n    var newItemIndex = level[level.length - 1];\n    var newItem = callback(parent[newItemIndex]);\n    parent.splice(newItemIndex, 1, newItem);\n};\n/**\n * Similar to the `Object.assign` function. Additionally, creates a new array for the subitems.\n *\n * @param {object} item - The source data item.\n * @param {string} subItemsField - The field which points to the subitems collection of each data item.\n * @param {object} propsToExtend - The props with which the source data item will be extended.\n * @returns {object} - The target data item.\n */\nexport var extendDataItem = function (item, subItemsField, propsToExtend) {\n    var _a;\n    return Object.assign({}, item, item[subItemsField] ? (_a = {}, _a[subItemsField] = item[subItemsField].slice(), _a) : {}, propsToExtend || {});\n};\n/**\n * Returns the data item path in the tree based on the level parameter.\n *\n * @param {any[]} tree - The data tree.\n * @param {number[]} level - The level of the target tree item.\n * @param {string} subItemsField - The field which points to the subitems collection of each data item.\n * @returns {any[]} - The path of the data item.\n */\nexport var getItemPath = function (tree, level, subItemsField) {\n    var nodes = [];\n    var itemLevel = level.slice();\n    if (itemLevel.length) {\n        var element = tree[itemLevel.shift() || 0];\n        nodes.push(element);\n        while (itemLevel.length && subItemsField) {\n            element = element[subItemsField][itemLevel.shift() || 0];\n            nodes.push(element);\n        }\n    }\n    return nodes;\n};\n","import { extendDataItem, mapTree } from '@progress/kendo-react-common';\nvar GROUP_ID_FIELD = 'groupId';\nvar GROUP_SUBITEMS_COLLECTION = 'items';\n/**\n * @hidden\n */\nvar setGroupId = function (group, depth, parentValue) {\n    if (group.items) {\n        group[GROUP_ID_FIELD] = \"\" + parentValue + (parentValue && '_') + group.value + group.field;\n        if (depth > 1) {\n            group.items.forEach(function (item) { return setGroupId(item, depth - 1, group[GROUP_ID_FIELD]); });\n        }\n    }\n};\n/**\n * Add unique ids to the group items inside data.\n *\n * @param {{data: any[], group: GroupDescriptor[]}} options - The options to be processed.\n */\nexport var setGroupIds = function (options) {\n    var group = options.group;\n    if (group && group.length && options.data) {\n        return options.data.forEach(function (item) { return setGroupId(item, group.length, ''); });\n    }\n};\n/**\n * Get all group ids from the data.\n *\n * @param {{data: any[]}} options - The options to be processed.\n * @returns {string[]} - Collection of all group ids from the data.\n */\nexport var getGroupIds = function (options) {\n    var groupIds = [];\n    mapTree(options.data, GROUP_SUBITEMS_COLLECTION, function (item) {\n        if (item[GROUP_ID_FIELD]) {\n            groupIds.push(item[GROUP_ID_FIELD]);\n        }\n    });\n    return groupIds;\n};\n/**\n * Apply the `expanded` prop to the group items in data based on the provided collection of group ids.\n *\n * @param {{data: any[], collapsedIds: string[]}} options - The options to be processed.\n * @returns {string[]} - Collection of all group ids from the data.\n */\nexport var setExpandedState = function (options) {\n    // TODO: no need to traverse whole tree, only group levels\n    return mapTree(options.data, GROUP_SUBITEMS_COLLECTION, function (item) {\n        return extendDataItem(item, GROUP_SUBITEMS_COLLECTION, {\n            expanded: !options.collapsedIds.some(function (groupId) { return groupId === item[GROUP_ID_FIELD]; })\n        });\n    });\n};\n","import React, { useState, useEffect, useReducer, useRef, useContext } from 'react';\r\nimport { Button, Nav, NavItem, Modal, InputGroup, FormControl } from 'react-bootstrap';\r\nimport { Grid, GridColumn, GridFilterChangeEvent, GridNoRecords, GridDataStateChangeEvent, GridExpandChangeEvent, GridToolbar } from '@progress/kendo-react-grid';\r\nimport { filterBy, CompositeFilterDescriptor } from \"@progress/kendo-data-query\";\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport IEnrolledStudent from '../../model/IEnrolledStudent';\r\nimport StudentService from '../../services/StudentService';\r\nimport { FormMode, IDropDownValue } from '../../services/Utility'\r\nimport schoolService from '../../services/SchoolService';\r\nimport IAddCourseStudent from '../../model/IAddCourseStudent';\r\nimport IconStudnetOutline from '../../assets/icons/icon-student-outline';\r\nimport LocalStorageService from '../../services/LocalStorage';\r\nimport { AuthContextDefault, UserProfileType, Year } from '../../services/AppContext';\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { DataResult, process, State } from '@progress/kendo-data-query';\r\nimport { setGroupIds, getGroupIds, setExpandedState } from '@progress/kendo-react-data-tools';\r\ninterface IAssignedStudent {\r\n    courseId: any\r\n    courseStatus: string\r\n    courseSource: string\r\n    coursePurpose: string\r\n    isEditable?: boolean | false\r\n    locationCode: string\r\n    onChangeStudentCount: any\r\n    updateCourseStatus: any\r\n    isSharedCourse: boolean\r\n}\r\nconst initialDataState = {\r\n    skip: 0,\r\n    take: 10,\r\n};\r\n\r\nconst initialState: State = {\r\n    group: [{ field: 'sectionId' }]\r\n};\r\n\r\nconst processWithGroups = (data: IEnrolledStudent[], dataState: State) => {\r\n    let newDataState = process(data, dataState);\r\n    setGroupIds({ data: newDataState.data, group: dataState.group });\r\n    newDataState.data = newDataState.data.map((group) => {\r\n        if (group.value && group.items && group.items.length > 0) {\r\n            group.value = (\r\n\r\n                <div style={{ width: \"100%\", display: 'flex', justifyContent: 'space-between' }}> <span>{group.items[0].sectionName}</span> <span style={{\r\n                    display: 'inline-block',\r\n                    backgroundColor: '#007bff',\r\n                    color: '#fff',\r\n                    padding: '2px 8px',\r\n                    borderRadius: '4px',\r\n                }}>{group.items.length}</span></div>\r\n\r\n            );\r\n        }\r\n        return group;\r\n    });\r\n    return newDataState;\r\n};\r\n\r\n\r\nexport default function EnrolledStudent(studentProps: IAssignedStudent) {\r\n    const mountedRef = useRef(true);\r\n    const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n    const [courseStudent, setCourseStudent] = useState<IEnrolledStudent[]>([]);\r\n    const [userProfile, setUserProfile] = useState<UserProfileType>(AuthContextDefault.userProfile);\r\n    const { orginalSchoolYear } = useContext(Year);\r\n    const [errorMsg, setErrorMsg] = useState<string>('');\r\n    const [data, setRowData] = useState<IEnrolledStudent[]>([]);\r\n    const [dataCopy, setRowCopyData] = useState<IEnrolledStudent[]>([]);\r\n    const [deleteStudentId, setDeleteStudent] = useState<number>(0);\r\n    const [ignored, forceUpdate] = useReducer(x => x + 1, 0);\r\n    const [orginalSchoolList, setOrginalSchoolList] = useState<IDropDownValue[]>([]);\r\n    const [schoolList, setSchoolList] = useState<IDropDownValue[]>([]);\r\n    const [resultState, setResultState] = React.useState<DataResult>();\r\n    const [collapsedState, setCollapsedState] = React.useState<string[]>([]);\r\n    const [gridData, setGridData] = React.useState<any>();\r\n    const initialFilter: CompositeFilterDescriptor = {\r\n        logic: \"and\",\r\n        filters: [],\r\n    };\r\n    const [filter, setFilter] = useState(initialFilter);\r\n    const [page, setPage] = React.useState(initialDataState);\r\n\r\n    const pageChange = (event: any) => {\r\n        setPage(event.page);\r\n    };\r\n\r\n    const getStudent = (locationCode: string) => {\r\n        StudentService.getBySchoolDBN(locationCode).then(response => {\r\n            let students = response.data.map((s: any) => ({\r\n                studentId: s.studentId,\r\n                firstName: s.firstName,\r\n                lastName: s.lastName,\r\n                fullName: s.lastName + ' ' + s.firstName,\r\n                userName: s.userName,\r\n                locationName: s.locationName,\r\n                schoolDBN: s.schoolDBN,\r\n                role: s.role,\r\n                gradeLevelCode: s.gradeLevelCode,\r\n            }))\r\n            students = students.filter((el: any) => !courseStudent.find((e: any) => e.studentId == el.studentId))\r\n            setRowData(students)\r\n            setRowCopyData(students)\r\n        })\r\n    }\r\n    const getAssignedStudent = (CourseId: number) => {\r\n        StudentService.getByCourseId(CourseId).then(response => {\r\n            let studentData = response.data as IEnrolledStudent[];\r\n            studentData.forEach(x => x.courseSource = studentProps.courseSource);\r\n            studentData.forEach(x => x.courseStatus = studentProps.courseStatus);\r\n            setCourseStudent(studentData)\r\n            var dataResult = processWithGroups(studentData, initialState)\r\n            setResultState(dataResult)\r\n            setCollapsedState(collapsedState.length ? [] : getGroupIds({ data: dataResult.data }));\r\n            const newData = setExpandedState({\r\n                data: dataResult.data,\r\n                collapsedIds: getGroupIds({ data: dataResult.data })\r\n            });\r\n            setGridData(newData)\r\n        })\r\n\r\n    }\r\n    const getSchoolLocations = () => {\r\n        schoolService.getData().then(response => {\r\n            let dropDownData = response.data.map((sl: any) => ({\r\n                id: sl.locationCode,\r\n                text: sl.locationCode + ' -- ' + sl.schoolName\r\n            }));\r\n            setSchoolList(dropDownData)\r\n            setOrginalSchoolList(dropDownData)\r\n        });\r\n    }\r\n    const filterData = (filter: any) => {\r\n        let data = orginalSchoolList.slice();\r\n        return filterBy(data, filter);\r\n    }\r\n\r\n    const filterChange = (event: any) => {\r\n        let data = filterData(event.filter)\r\n        setSchoolList(data)\r\n    }\r\n\r\n    const handleChange = (event: any) => {\r\n        let selectedSchool = event.target.value;\r\n        getStudent(selectedSchool.id);\r\n    }\r\n\r\n    const getDefaultValue = (schoolList: any) => {\r\n        let school = schoolList.find((s: any) => s.id == studentProps.locationCode)\r\n        if (school) {\r\n            return school\r\n        }\r\n    }\r\n\r\n    useEffect(() => {\r\n\r\n        getAssignedStudent(studentProps.courseId);\r\n        setUserProfile(LocalStorageService.getUserProfile())\r\n        return () => { mountedRef.current = false }\r\n    }, [studentProps.locationCode]);\r\n\r\n    const [studentVisible, setStudentVisible] = useState<boolean>(false);\r\n    const toggleStudentDialog = () => {\r\n        setStudentVisible(!studentVisible)\r\n        let data = orginalSchoolList.slice();\r\n        setSchoolList(data)\r\n        setHeaderCheckBox(false);\r\n    }\r\n    const addStudent = () => {\r\n        setErrorMsg('');\r\n        getSchoolLocations();\r\n        getStudent(studentProps.locationCode);\r\n        setFormMode(FormMode.New)\r\n        toggleStudentDialog()\r\n    }\r\n\r\n    const onGridCheckBoxClick = (dataItem: any) => {\r\n        dataItem.isSelected = !dataItem.isSelected;\r\n        forceUpdate();\r\n    }\r\n\r\n    const [headerCheckBoxValue, setHeaderCheckBox] = useState(false);\r\n    const onHeaderCheckBoxClick = (event: any, products?: any) => {\r\n        let checked = event.target.checked;\r\n        if (checked == true) {\r\n            data.map((t: any) => t.isSelected = true)\r\n        } else {\r\n            data.map((t: any) => t.isSelected = false)\r\n        }\r\n        setHeaderCheckBox(checked)\r\n    }\r\n    const removeStudent = (studentId: number) => {\r\n        setDeleteStudent(studentId)\r\n        setFormMode(FormMode.Delete)\r\n    }\r\n\r\n\r\n    const [searchStudentId, setSearchStudentId] = useState(0);\r\n    const searchStudentChange = (event: any) => {\r\n        const target = event.target\r\n        if (!target.value || target.value == 0) {\r\n            setErrorMsg('')\r\n            setRowData(dataCopy)\r\n        }\r\n        setSearchStudentId(target.value)\r\n    };\r\n    const getStudentById = () => {\r\n        setErrorMsg('')\r\n        if (searchStudentId == 0) {\r\n            setErrorMsg(\"Please enter student ID \")\r\n            return\r\n        }\r\n        setRowData([])\r\n        StudentService.getStudentById(searchStudentId).then(response => {\r\n            if (response.data) {\r\n                let student = response.data as IEnrolledStudent\r\n                student.fullName = student.lastName + ' ' + student.firstName\r\n                let students = []\r\n                students.push(student)\r\n                setRowData(students)\r\n                setPage(initialDataState)\r\n            } else {\r\n                setErrorMsg(\"Student is not exist\")\r\n            }\r\n        })\r\n    }\r\n\r\n    const onSave = (event: any, actionType: FormMode) => {\r\n        switch (actionType) {\r\n            case FormMode.New:\r\n                let addCourseStudent: IAddCourseStudent = {\r\n                    courseId: studentProps.courseId,\r\n                    courseSchoolDBN: studentProps.locationCode,\r\n                    schoolYear: +orginalSchoolYear.id,\r\n                    student: []\r\n                }\r\n                addCourseStudent.student = data.filter(x => x.isSelected);\r\n\r\n                if (addCourseStudent.student.length == 0) {\r\n                    setErrorMsg('Please select atleast one student to add.');\r\n                    return;\r\n                }\r\n                let studentIds = courseStudent.map(a => a.studentId);\r\n                let addedStudent = addCourseStudent.student.filter((x) => !studentIds.includes(x.studentId));;\r\n                addCourseStudent.student = addedStudent;\r\n\r\n                if (addedStudent?.length == 0) {\r\n                    setErrorMsg('Selected students are already added.');\r\n                    return;\r\n                }\r\n                var currentStudentList = courseStudent;\r\n                currentStudentList = currentStudentList.concat(addedStudent);\r\n                StudentService.post(addCourseStudent).then(response => {\r\n                    studentProps.onChangeStudentCount(addedStudent.length, studentProps.courseId)\r\n                    studentProps.updateCourseStatus(studentProps.courseId)\r\n                    setCourseStudent(currentStudentList);\r\n                    setStudentVisible(!studentVisible)\r\n                    setFormMode(FormMode.None)\r\n                    setHeaderCheckBox(false);\r\n                });\r\n                break;\r\n            case FormMode.Delete:\r\n                StudentService.delete(studentProps.courseId, deleteStudentId).then(response => {\r\n                    let courseStudentList = courseStudent.filter(x => x.studentId != deleteStudentId);\r\n                    studentProps.onChangeStudentCount(-1, studentProps.courseId)\r\n                    studentProps.updateCourseStatus(studentProps.courseId)\r\n                    setCourseStudent(courseStudentList);\r\n                    setFormMode(FormMode.None)\r\n                });\r\n                break;\r\n            default: {\r\n                setFormMode(FormMode.None)\r\n                break;\r\n\r\n            }\r\n        }\r\n    }\r\n\r\n    const studentNameCell = (props: any) => {\r\n        if (props.rowType === \"groupHeader\") {\r\n            return null;\r\n        } else {\r\n            return (\r\n                <td>\r\n                    <div> {props.dataItem.lastName} {props.dataItem.firstName}</div>\r\n                    <div className=\"small\">OSIS:{props.dataItem.studentId}</div>\r\n                </td>\r\n            );\r\n        }\r\n    }\r\n\r\n    const locationCell = (props: any) => {\r\n        if (props.rowType === \"groupHeader\") {\r\n            return null;\r\n        } else {\r\n            return (\r\n                <td>\r\n                    <div className=\"small\">Associated Location:</div>\r\n                    <div>{props.dataItem.schoolDBN}</div>\r\n                </td>\r\n            );\r\n        }\r\n    }\r\n    const enrolledInCourseCell = (props: any) => {\r\n        if (props.rowType === \"groupHeader\") {\r\n            return null;\r\n        } else {\r\n            return (\r\n                <td>\r\n                    <div className=\"small\">Enrolled in Course:</div>\r\n                    <div>{props.dataItem.sectionName}</div>\r\n                </td>\r\n            );\r\n        }\r\n    }\r\n\r\n\r\n\r\n    const studentIconCell = (props: any) => {\r\n        if (props.rowType === \"groupHeader\") {\r\n            return null;\r\n        } else {\r\n            return (\r\n                <td>\r\n                    <div className=\"d-flex\">\r\n                        <div className=\"svg-app-icon text-secondary mr-3\" style={{ height: \"40px\" }}>\r\n                            <IconStudnetOutline />\r\n                        </div>\r\n                    </div>\r\n                </td>\r\n            );\r\n        }\r\n\r\n\r\n    };\r\n    const onExpandChange = React.useCallback(\r\n        (event: GridExpandChangeEvent) => {\r\n\r\n            const item = event.dataItem;\r\n\r\n            if (item.groupId) {\r\n                const collapsedIds = !event.value ?\r\n                    [...collapsedState, item.groupId] :\r\n                    collapsedState.filter(groupId => groupId !== item.groupId);\r\n                setCollapsedState(collapsedIds);\r\n                var dataResult = processWithGroups(courseStudent, initialState)\r\n\r\n                const newData = setExpandedState({\r\n                    data: dataResult?.data,\r\n                    collapsedIds: collapsedIds\r\n                });\r\n                setGridData(newData)\r\n            }\r\n        },\r\n        [collapsedState]\r\n    );\r\n\r\n    return (\r\n        <div>\r\n            {studentVisible && <Dialog title={\"Add Students\"} onClose={toggleStudentDialog} style={{ width: \"75%\", position: \"fixed\", left: \"15%\", top: \"20%\", height: \"350px\" }} >\r\n                <div id=\"dropDownParent\">\r\n                    <div hidden={errorMsg.length == 0}>\r\n                        <div className=\"alert alert-danger alert-dismissible fade show\" role=\"alert\">\r\n                            {errorMsg}\r\n                            <button type=\"button\" className=\"close\" data-dismiss=\"alert\" aria-label=\"Close\">\r\n                                <span aria-hidden=\"true\">&times;</span>\r\n                            </button>\r\n                        </div>\r\n                    </div>\r\n                    <div className=\"d-flex justify-content-between align-items-center\" >\r\n                        <div className=\"text-sm-left text-left\">\r\n                            <InputGroup >\r\n                                <FormControl\r\n                                    placeholder=\"Student Id\"\r\n                                    onChange={searchStudentChange}\r\n                                />\r\n                                <Button variant=\"outline-secondary\" id=\"button-addon1\" onClick={getStudentById} >\r\n                                    Search\r\n                                </Button>\r\n                            </InputGroup>\r\n                        </div>\r\n                        <div className=\"text-sm-right text-left\"  >\r\n                            <DropDownList\r\n                                data={schoolList}\r\n                                defaultValue={getDefaultValue(schoolList)}\r\n                                textField=\"text\"\r\n                                filterable={true}\r\n                                onChange={handleChange}\r\n                                onFilterChange={filterChange}\r\n                                popupSettings={{ appendTo: document.getElementById(\"dropDownParent\") as HTMLElement }}\r\n                                style={{ maxWidth: '400px', width: '100%' }}\r\n                            />\r\n                        </div>\r\n                    </div>\r\n                    <div className=\"mt-3\" style={{ height: \"400px\" }}>\r\n                        <Grid\r\n                            data={filterBy(data, filter).slice(page.skip, page.take + page.skip)}\r\n                            filter={filter}\r\n                            filterable={true}\r\n                            skip={page.skip}\r\n                            take={page.take}\r\n                            total={data.length}\r\n                            pageable={true}\r\n                            scrollable={\"none\"}\r\n                            onPageChange={pageChange}\r\n                            onFilterChange={(e: GridFilterChangeEvent) => setFilter(e.filter)}>\r\n                            <GridColumn field=\"isSelected\" width=\"40px\" filterable={false} headerCell={props => (<input type=\"checkbox\" checked={headerCheckBoxValue} onChange={(e) => onHeaderCheckBoxClick(e)} />)} cell={props => (\r\n                                <td>\r\n                                    <input type=\"checkbox\" checked={props.dataItem.isSelected} onChange={() => onGridCheckBoxClick(props.dataItem)} />\r\n                                </td>\r\n                            )} />\r\n\r\n                            <GridColumn field=\"UserIcon\" title=\" \" filterable={false} width=\"50px\" cell={\r\n                                props => (\r\n                                    <td>\r\n                                        <div className=\"d-flex\">\r\n                                            <div className=\"svg-app-icon text-secondary mr-3\" style={{ height: \"30px\" }}>\r\n                                                <IconStudnetOutline />\r\n                                            </div>\r\n                                        </div>\r\n                                    </td>\r\n                                )} />\r\n                            <GridColumn field=\"fullName\" title=\"Name\" cell={\r\n                                props => (\r\n                                    <td>\r\n                                        <div>{props.dataItem.fullName}</div>\r\n                                    </td>\r\n                                )} />\r\n                            <GridColumn field=\"studentId\" title=\"OSIS\" width=\"200px\" />\r\n                            <GridColumn field=\"userName\" title=\"Username\" width=\"200px\" />\r\n                            <GridColumn field=\"gradeLevelCode\" title=\"Grade\" width=\"200px\" />\r\n                            <GridColumn field=\"schoolDBN\" title=\"Associated Location\" filterable={false} />\r\n                        </Grid>\r\n\r\n                    </div>\r\n\r\n                </div>\r\n                <DialogActionsBar>\r\n                    <Button className=\"m-3\" variant=\"secondary\" onClick={toggleStudentDialog}>Close</Button>\r\n                    <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Add Students</Button>\r\n                </DialogActionsBar>\r\n            </Dialog>}\r\n            <Modal\r\n                show={formMode == FormMode.Delete}\r\n                onHide={() => { setFormMode(FormMode.None) }}\r\n                animation={false}\r\n                backdrop=\"static\"\r\n                keyboard={false}>\r\n\r\n                <Modal.Header closeButton className=\"bg-primary text-white\">\r\n                    <Modal.Title>Remove Student</Modal.Title>\r\n                </Modal.Header>\r\n                <Modal.Body>\r\n                    Are you sure you want to remove student ?\r\n                </Modal.Body>\r\n                <Modal.Footer>\r\n                    <Button variant=\"secondary\" onClick={(e) => { setFormMode(FormMode.None) }}>Cancel</Button>\r\n                    <Button variant=\"primary\" type=\"button\" onClick={(e) => { onSave(e, formMode) }}>Delete</Button>\r\n                </Modal.Footer>\r\n            </Modal>\r\n\r\n            <div className=\"card mt-4\">\r\n                <div className=\"card-header font-weight-bold bg-secondary-light\">\r\n                    <div className=\"row align-items-center\">\r\n                        <div className=\"col-9\">Enrolled Students ({courseStudent.length})</div>\r\n                        {studentProps.courseSource.toLowerCase() == 'stars' || studentProps.coursePurpose == 'Demo' || studentProps.courseStatus.toLowerCase() == 'closed' ? '' :\r\n                            <div className=\"col-3  text-right\">\r\n                                {userProfile?.role?.roleName != 'Central Staff' && orginalSchoolYear.isCurrent != 0 && !studentProps.isSharedCourse ?\r\n                                    <button type=\"button\" className=\"btn btn-sm btn-primary\" onClick={(e) => { addStudent() }}>\r\n                                        <i className=\"fas fa-plus\"></i>\r\n                                    </button> : studentProps.isSharedCourse && <span className='small'> (auto-synced from the courses above) </span>}\r\n                            </div>\r\n                        }\r\n\r\n                    </div>\r\n                </div>\r\n                <div className=\"card-body\">\r\n                    <Grid\r\n                        data={studentProps.isSharedCourse ? gridData : courseStudent}\r\n                        // scrollable={\"none\"}\r\n                        className=\"k-grid-no-header group-section\"\r\n                        groupable={{ enabled: studentProps.isSharedCourse, footer: 'none' }}\r\n                        group={initialState.group}\r\n                        onExpandChange={onExpandChange}\r\n                        expandField=\"expanded\"\r\n\r\n                    >\r\n                        {/* <GridColumn field=\"expanded\" width=\"80px\" title=' ' /> */}\r\n                        <GridNoRecords>\r\n                            No Enrolled Students\r\n                        </GridNoRecords>\r\n                        <GridColumn field=\"UserIcon\" title=\" \" width=\"80px\" cell={\r\n                            studentIconCell} />\r\n                        <GridColumn field=\"Name\" title=\"tiltle\" cell={\r\n                            studentNameCell} />\r\n                        {!studentProps.isSharedCourse &&\r\n                            <GridColumn field=\"\" title=\"Title\" cell={\r\n                                props => (\r\n                                    <td>\r\n                                        <div className=\"small\">Title:</div>\r\n                                        <div>Student</div>\r\n                                    </td>\r\n                                )} />}\r\n                        <GridColumn field=\"\" title=\"Username\" cell={\r\n                                props => (\r\n                                    <td>\r\n                                        <div className=\"small\">Username:</div>\r\n                                        <div>{props.dataItem.userName}</div>\r\n                                    </td>\r\n                                )} />\r\n                        {studentProps.isSharedCourse && <GridColumn field=\"EnrolledInCourse\" title=\"Enrolled in Course\" cell={enrolledInCourseCell} />}\r\n                        <GridColumn field=\"schoolDBN\" title=\"Associated Location\" cell={locationCell} />\r\n                        {!studentProps.isSharedCourse &&\r\n                            <GridColumn field=\"\" title=\" \" cell={\r\n                                props => (\r\n                                    <td className=\"text-right menu-btn\">\r\n                                        {(userProfile?.role?.roleName == 'Central Staff'\r\n                                            || props.dataItem?.courseStatus?.toLowerCase() === 'closed'\r\n                                            || props.dataItem?.courseSource?.toLowerCase() === 'stars') || studentProps.isSharedCourse\r\n                                            ? '' :\r\n                                            <button type=\"button\" className=\"btn btn-sm btn-outline-secondary\" onClick={(e) => { removeStudent(props.dataItem.studentId) }}>\r\n                                                <i className=\"fas fa-minus\"></i>\r\n                                            </button>\r\n                                        }\r\n                                    </td>\r\n                                )} />\r\n                        }\r\n                    </Grid>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    )\r\n}","import React, { useState, useEffect, useRef } from 'react';\r\nimport {  Button, Form,  Row, Col, InputGroup} from 'react-bootstrap';\r\nimport { DropDownList, DropDownListChangeEvent } from '@progress/kendo-react-dropdowns';\r\nimport { FormMode, IDropDownValue } from '../../services/Utility'\r\nimport { RadioButton} from '@progress/kendo-react-inputs';\r\nimport ICodeSet from '../../model/Codeset'\r\nimport ICourseDetail from '../../model/ICourseDetail';\r\nimport Moment from 'moment';\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { filterBy} from \"@progress/kendo-data-query\";\r\n\r\n\r\ninterface ICourseContent {\r\n  courseDetail: ICourseDetail\r\n  purpose: ICodeSet[],\r\n  location: string,\r\n  schoolYear: Number,\r\n  contentType: IDropDownValue[],\r\n  originalTeacherList: IDropDownValue[],\r\n  defaultTeacher: IDropDownValue,\r\n  courseSaveErrorMessage: string,\r\n  teacher: IDropDownValue[],\r\n  setCourseSaveErrorMessage: any,\r\n  formmode: FormMode,\r\n  teacherById: (event: React.MouseEvent<HTMLElement, MouseEvent>, data: string) => void,\r\n  onSearch: (event: React.MouseEvent<HTMLElement, MouseEvent>, data: IDropDownValue[]) => void,\r\n  onSave: (event: React.MouseEvent<HTMLElement, MouseEvent>, actionType: FormMode, data: ICourseDetail) => void\r\n\r\n}\r\n\r\nexport default function AddNewCourse(props: ICourseContent) {\r\n  const mountedRef = useRef(true);\r\n  const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n  const [formValue, setFormValue] = useState<ICourseDetail>(props.courseDetail);\r\n  const [selectedValue, setSelectedValue] = useState(\"Demo\");\r\n  const [searchTeacherEin, setSearchTeacherEin] = useState(\"\");\r\n  const [courseType, setCourseType] = useState<string>();\r\n  const [courseTypes ] = useState([\r\n    { key: 1, value: 'manual', text: 'Manual Course', isDefaultSelected: props.formmode == FormMode.New || (props.courseDetail.courseType && props.courseDetail.courseType.toLowerCase() == \"manual\") },\r\n    { key: 2, value: 'shared', text: 'Shared Instruction Course', isDefaultSelected: props.courseDetail.courseType && props.courseDetail.courseType.toLowerCase() == \"shared\"  },\r\n  ])\r\n  const [purposeList, setPurposeList] = useState<ICodeSet[]>(props.purpose);\r\n  const [contentTypeList, setContentTypeList] = useState<IDropDownValue[]>([]);\r\n \r\n\r\n  const handleRadioChange = React.useCallback(\r\n    (e: any) => {\r\n      setSelectedValue(e.value);\r\n    },\r\n    [setSelectedValue]\r\n  );\r\n\r\n  const excludeDemoPurpos = () =>{\r\n    return  props.purpose.filter(p=>p.displayText!=\"Demo\")\r\n  }\r\n\r\n  useEffect(() => {\r\n    setFormMode(props.formmode)\r\n    if(props.courseDetail.courseType && props.courseDetail.courseType.toLowerCase() == \"shared\"){\r\n      let purposList = excludeDemoPurpos()\r\n      setPurposeList(purposList)\r\n    }else{\r\n      setPurposeList(props.purpose)\r\n    }\r\n    \r\n    \r\n    if (props.courseDetail.purpose) {\r\n      setSelectedValue(props.courseDetail.purpose)\r\n    }\r\n    setContentTypeList(props.contentType)\r\n    setFormValue(props.courseDetail)\r\n    setFormValue({ ...formValue, purpose: selectedValue });\r\n    let type = props.courseDetail.courseType ? props.courseDetail.courseType.toLowerCase() : \"manual\"\r\n    \r\n    \r\n    setCourseType(type)\r\n    if (props.formmode == FormMode.New) {\r\n      setFormValue({ ...formValue, schoolDBN: props.location, schoolYear: +props.schoolYear });\r\n    }\r\n\r\n    return () => { mountedRef.current = false }\r\n  }, [props.courseDetail.purpose , props.purpose]);\r\n\r\n  useEffect(() => {\r\n\r\n    if (props.defaultTeacher.id) {\r\n      setFormValue({ ...formValue, teacherOfRecord: props.defaultTeacher.id });\r\n    }\r\n    return () => { mountedRef.current = false }\r\n  }, [props.defaultTeacher]);\r\n\r\n  useEffect(() => {\r\n    let error = {\r\n      courseTitleError: '',\r\n      purposeError: '',\r\n      courseContentTypeError: '',\r\n      teacherOfRecordError: '',\r\n      startDateError: '',\r\n      endDateError: '',\r\n      courseNameDublicateError: ''\r\n\r\n    };\r\n    error.courseNameDublicateError = props.courseSaveErrorMessage\r\n    setErrors(error);\r\n\r\n  }, [props.courseSaveErrorMessage]);\r\n\r\n  const handleChange = (event: any) => {\r\n    const target = event.target //as HTMLSelectElement\r\n    setFormValue({ ...formValue, [target.name]: target.value });\r\n\r\n  };\r\n  const contentTypeChange = (event: DropDownListChangeEvent) => {\r\n    const target = event.target //as HTMLSelectElement\r\n    setFormValue({ ...formValue, courseContentType: target.value.text });\r\n\r\n  };\r\n  const teacherChange = (event: DropDownListChangeEvent) => {\r\n    const target = event.target //as HTMLSelectElement\r\n    setFormValue({ ...formValue, teacherOfRecord: target.value.id });\r\n  };\r\n\r\n  const [errors, setErrors] = useState({\r\n    courseTitleError: '',\r\n    purposeError: '',\r\n    courseContentTypeError: '',\r\n    teacherOfRecordError: '',\r\n    startDateError: '',\r\n    endDateError: '',\r\n    courseNameDublicateError: ''\r\n  })\r\n\r\n  const validate = () => {\r\n    let error = {\r\n      courseTitleError: '',\r\n      purposeError: '',\r\n      courseContentTypeError: '',\r\n      teacherOfRecordError: '',\r\n      startDateError: '',\r\n      endDateError: '',\r\n      courseNameDublicateError: ''\r\n\r\n    };\r\n    if (!formValue.courseName) { error.courseTitleError = \"Course Title is required\"; }\r\n    const regex = /[!@#$%^&*~`\\\\]+/;\r\n    if (formValue.courseName && regex.test(formValue.courseName)) { error.courseTitleError = \"Some characters are not allowed in course title for example : !@#$%^&*\\\\~` \"; }\r\n    if (!formValue.courseContentType) { error.courseContentTypeError = \"Course Content is required\"; }\r\n\r\n    if (!formValue.teacherOfRecord) { error.teacherOfRecordError = \"Teacher is required\"; }\r\n    if (!formValue.endDate){ error.endDateError = \"Course End date is required.\"}\r\n    if (!formValue.startDate){ error.startDateError = \"Course Start date is required.\"}\r\n    if (Moment(formValue.endDate).format('YYYY-MM-DD') < Moment(formValue.startDate).format('YYYY-MM-DD')) { error.endDateError = \"End date must not be less than start date.\" }\r\n    if (Moment(formValue.endDate).format('YYYY-MM-DD') <= Moment(Date.now()).format('YYYY-MM-DD')) { error.endDateError = \"End date must be greater than today's date.\" }\r\n\r\n\r\n    setErrors(error);\r\n    if (error.courseTitleError || error.purposeError || error.courseContentTypeError || error.teacherOfRecordError || error.startDateError || error.endDateError) {\r\n      return false;\r\n    }\r\n\r\n    return true;\r\n  };\r\n\r\n  const onSave = (event: React.MouseEvent<HTMLElement>, actionType: FormMode) => {\r\n    let formData: ICourseDetail = {\r\n      courseId: Number(formValue.courseId),\r\n      schoolDBN: formValue.schoolDBN,\r\n      schoolYear: formValue.schoolYear,\r\n      courseName: formValue.courseName,\r\n      courseSource: formValue.courseSource,\r\n      isMerged: Number(formValue.isMerged),\r\n      purpose: selectedValue,\r\n      mergeCourses: formValue.mergeCourses,\r\n      courseContentType: formValue.courseContentType,\r\n      teacherOfRecord: formValue.teacherOfRecord,\r\n      courseType : courseType,\r\n      startDate: formValue.startDate,\r\n      endDate: formValue.endDate,\r\n      createdBy: formValue.createdBy,\r\n      createdOn: formValue.createdOn,\r\n      courseStatus: formValue.courseStatus,\r\n      oldTeacherId: formValue.oldTeacherId,\r\n      courseUniqueId: props.courseDetail.courseUniqueId,\r\n      mergedOn: new Date(),\r\n      mergedBy: ''\r\n    };\r\n    let error = {\r\n      courseTitleError: '',\r\n      purposeError: '',\r\n      courseContentTypeError: '',\r\n      teacherOfRecordError: '',\r\n      startDateError: '',\r\n      endDateError: '',\r\n      courseNameDublicateError: ''\r\n\r\n    };\r\n    switch (actionType) {\r\n      case FormMode.New:\r\n        setFormMode(FormMode.New)\r\n        // messageService.edit(message).then(response => {\r\n        //   // Display Success message\r\n        // })\r\n        event.preventDefault();\r\n        if (validate()) {\r\n          props.onSave(event, FormMode.New, formData);\r\n          error.courseNameDublicateError = props.courseSaveErrorMessage\r\n          setErrors(error);\r\n        }\r\n        break;\r\n      case FormMode.Edit:\r\n        setFormMode(FormMode.Edit)\r\n        // messageService.edit(message).then(response => {\r\n        //   // Display Success message\r\n        // })\r\n        event.preventDefault();\r\n        if (validate()) {\r\n          props.onSave(event, FormMode.Edit, formData);\r\n          error.courseNameDublicateError = props.courseSaveErrorMessage\r\n          setErrors(error);\r\n\r\n        }\r\n        break;\r\n      default:\r\n        props.onSave(event, FormMode.None, formData);\r\n        error.courseNameDublicateError = \"\"\r\n        props.setCourseSaveErrorMessage(\"\")\r\n        setErrors(error);\r\n        break;\r\n\r\n    }\r\n  }\r\n  const defaultItem = {\r\n    text: props.courseDetail.courseContentType\r\n  };\r\n\r\n  const filterData = (filter: any) => {\r\n    let data = props.originalTeacherList.slice();\r\n    return filterBy(data, filter);\r\n  }\r\n\r\n  const filterChange = (event: any) => {\r\n    let data = filterData(event.filter)\r\n    props.onSearch(event, data);\r\n  }\r\n\r\n  const searchTeacherChange = (event: any) => {\r\n    const target = event.target\r\n    setSearchTeacherEin(target.value)\r\n  };\r\n\r\n  const onTeacherSearch = (event: any) => {\r\n    if (searchTeacherEin != '') {\r\n      props.teacherById(event, searchTeacherEin)\r\n    }\r\n  }\r\n\r\n  const changeCourseType = (e: any) => {\r\n    \r\n    if(e.value == \"shared\"){\r\n      let purposList = excludeDemoPurpos()\r\n      setPurposeList(purposList)\r\n    }else{\r\n      setPurposeList(props.purpose)\r\n    }\r\n    setSelectedValue(\"Credit Bearing\")\r\n    setCourseType(e.value)\r\n  }\r\n\r\n  return (\r\n    <div>\r\n      <Dialog title={formMode == FormMode.Edit ? \"Edit Course\" : \"Add Course\"} onClose={(e: any) => onSave(e, FormMode.None)} height={600}>\r\n        <Form>\r\n          {!(formMode == FormMode.Edit  && props.courseDetail.courseSource.toLowerCase() == 'stars') &&\r\n          <div style={{ backgroundColor: \"white\", padding: \"10px\" }}>\r\n            <Form.Group controlId=\"courseType\">\r\n              {courseTypes.map((item) => (\r\n                <Form.Label className=\"mr-2\" key={item.key}>\r\n                  <RadioButton hidden={false} disabled={formMode == FormMode.Edit ? true : false} key={item.key} defaultChecked={item.isDefaultSelected? item.isDefaultSelected :  false} name=\"courseType\" value={item.value} label={item.text.toString()} onChange={changeCourseType} ></RadioButton>\r\n                </Form.Label>\r\n              ))}\r\n              <p style={{ color: \"#707782\", fontSize: \"13px\" , margin:\"2px\"}}>\r\n                {courseType == 'manual' ? \"Enroll students manually. Student enrollments will not be auto-synced.\" : \"Enroll students from school courses. Student enrollments will be auto-synced.\"}\r\n              </p>\r\n            </Form.Group>\r\n          </div> }\r\n          <Form.Group controlId=\"courseName\">\r\n            <Form.Label>Course Title</Form.Label>\r\n            <Form.Control type=\"text\" name=\"courseName\" value={formValue.courseName ?? ''} onChange={handleChange} />\r\n            <Form.Text className=\"text-danger\">{errors.courseTitleError}</Form.Text>\r\n            <Form.Text className=\"text-danger\">{errors.courseNameDublicateError}</Form.Text>\r\n          </Form.Group>\r\n          <Form.Label>Purpose</Form.Label>\r\n          <Form.Group>\r\n            {purposeList.map((purposeOptions) => (\r\n              <Form.Label className=\"mr-2\" key={purposeOptions.id}>\r\n                <RadioButton hidden={false} disabled={(formMode == FormMode.Edit && props.courseDetail.courseSource.toLowerCase() == 'stars') ? true : false} key={purposeOptions.id} defaultChecked={true} name=\"purpose\" checked={selectedValue === purposeOptions.displayText} value={purposeOptions.displayText} label={purposeOptions.displayText.toString()} onChange={handleRadioChange}></RadioButton>\r\n              </Form.Label>\r\n            ))}\r\n          </Form.Group>\r\n          <Form.Group controlId=\"contentType\">\r\n            <Form.Label>Course Content Type</Form.Label>\r\n            <DropDownList\r\n              style={{ width: '100%' }}\r\n              defaultValue={defaultItem}\r\n              disabled={(formMode == FormMode.Edit && props.courseDetail.courseSource.toLowerCase() == 'stars') ? true : false}\r\n              data={props.contentType}\r\n              textField=\"text\"\r\n              onChange={contentTypeChange}\r\n            />\r\n            <Form.Text className=\"text-danger\">{errors.courseContentTypeError}</Form.Text>\r\n          </Form.Group>\r\n          <Form.Group controlId=\"teacherOfRecord\">\r\n            <Form.Label>Teacher Of Record</Form.Label>\r\n            <DropDownList\r\n              style={{ width: '100%' }}\r\n              defaultValue={props.defaultTeacher}\r\n              disabled={(formMode == FormMode.Edit && props.courseDetail.courseSource.toLowerCase() == 'stars') ? true : false}\r\n              data={props.teacher}\r\n              textField=\"text\"\r\n              value={props.teacher.find(x => x.id == formValue.teacherOfRecord)}\r\n              filterable={true}\r\n              onFilterChange={filterChange}\r\n              onChange={teacherChange}\r\n            />\r\n            <Form.Text className=\"text-danger\">{errors.teacherOfRecordError}</Form.Text>\r\n          </Form.Group>\r\n          <InputGroup className=\"mb-3\">\r\n            <Form.Control\r\n              aria-label=\"Example text with button addon\"\r\n              aria-describedby=\"basic-addon1\"\r\n              disabled={(formMode == FormMode.Edit && props.courseDetail.courseSource.toLowerCase() == 'stars') ? true : false}\r\n              placeholder=\"Teacher EIN\"\r\n              onChange={searchTeacherChange}\r\n            />\r\n            <Button variant=\"outline-secondary\" id=\"button-addon1\" onClick={(e) => onTeacherSearch(e)} >\r\n              Search\r\n            </Button>\r\n          </InputGroup>\r\n          <Row>\r\n            <Col>\r\n              <Form.Group controlId=\"startDate\">\r\n                <Form.Label>Start Date</Form.Label>\r\n                <Form.Control type=\"date\" name=\"startDate\" value={Moment(formValue.startDate).format('YYYY-MM-DD')} onChange={handleChange}></Form.Control>\r\n                <Form.Text className=\"text-danger\">{errors.startDateError}</Form.Text>\r\n              </Form.Group>\r\n            </Col>\r\n            <Col>\r\n              <Form.Group controlId=\"endDate\">\r\n                <Form.Label>End Date</Form.Label>\r\n                <Form.Control type=\"date\" name=\"endDate\" value={Moment(formValue.endDate).format('YYYY-MM-DD')} onChange={handleChange}></Form.Control>\r\n                <Form.Text className=\"text-danger\">{errors.endDateError}</Form.Text>\r\n              </Form.Group>\r\n            </Col>\r\n          </Row>\r\n        </Form>\r\n        <DialogActionsBar>\r\n          <Button className=\"m-2\" variant=\"secondary\" onClick={(e) => onSave(e, FormMode.None)}>Close</Button>\r\n          <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Save</Button>\r\n        </DialogActionsBar>\r\n      </Dialog>\r\n\r\n    </div>\r\n  )\r\n}","import React, { useState, useEffect, useRef } from 'react';\r\nimport { Modal, Button, Form, Dropdown, } from 'react-bootstrap';\r\nimport { Grid, GridColumn, GridToolbar } from '@progress/kendo-react-grid';\r\nimport { FormMode, IDropDownValue } from '../../services/Utility'\r\nimport { RadioButton, RadioButtonChangeEvent } from '@progress/kendo-react-inputs';\r\nimport ICourses from '../../model/ICourses';\r\nimport IMergeCourses from '../../model/IMergeCourses';\r\nimport {IAssignedTeachers} from '../../model/IAssignedTeachers';\r\nimport IMergeCourseSpec from \"../../model/IMergeCourseSpec\";\r\n\r\ninterface ICourseMergeContent {\r\n  mergeData: IMergeCourseSpec[]\r\n  courses: ICourses[],\r\n  formmode: FormMode,\r\n  courseCount: Number,\r\n  onMergeClose: (data: FormMode) => void,\r\n  onMerge: (event: React.MouseEvent<HTMLElement, MouseEvent>, actionType: FormMode, data: IMergeCourseSpec[]) => void\r\n\r\n}\r\n\r\nexport default function MergeCourses(props: ICourseMergeContent) {\r\n  const mountedRef = useRef(true);\r\n  const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n  const [mergeData, setMergeData] = useState<ICourses[]>([]);\r\n  const [mergeCourseData, setMergeCourseData] = useState<IMergeCourseSpec[]>([]);\r\n  const [selectedValue, setSelectedValue] = useState(props.courses[0].courseId);\r\n\r\n  const handleRadioChange = React.useCallback(\r\n    (e: any) => {\r\n      setSelectedValue(e.value)\r\n    },\r\n    [setSelectedValue]\r\n  );\r\n  useEffect(() => {\r\n    setFormMode(props.formmode)\r\n    setMergeData(props.courses)\r\n    setMergeCourseData(props.mergeData)\r\n    return () => { mountedRef.current = false }\r\n  }, []);\r\n\r\n\r\n  const GridColumnCourses = (props: any) => {\r\n    return (\r\n      <td>\r\n        <h5 className=\"mb-0\">{props.dataItem.courseName}</h5>\r\n        <div className=\"text-secondary\">\r\n          <div>Course Code: {props.dataItem.courseCode}</div>\r\n          <div>Assigned Teachers: {props.dataItem.courseTeachers.map((item: IAssignedTeachers) => { return item.teacherInitial }).join(',')}</div>\r\n          <div>Students: {props.dataItem.totalStudentEnrolled}</div>\r\n        </div>\r\n      </td>\r\n    )\r\n  }\r\n\r\n  const GridColumnButton = (props: any) => {\r\n    return (\r\n      <td className=\"text-right\" style={{ overflow: 'visible' }}>\r\n\r\n        <RadioButton type=\"radio\" label=\"Merge into this course\" key={props.dataItem.courseId} value={props.dataItem.courseId} checked={selectedValue === props.dataItem.courseId} onChange={handleRadioChange}></RadioButton>\r\n      </td>\r\n    )\r\n  }\r\n\r\n  const onMerge = (event: React.MouseEvent<HTMLElement>, actionType: FormMode) => {\r\n    mergeCourseData.forEach(element => {\r\n      if (element.courseId != selectedValue) {\r\n        element.isPrimary = false\r\n      }\r\n      else {\r\n        element.isPrimary = true\r\n      }\r\n    });\r\n\r\n    switch (actionType) {\r\n      case FormMode.Merge:\r\n        setFormMode(FormMode.Merge)\r\n        event.preventDefault();\r\n        if (validate()) {\r\n          props.onMerge(event, FormMode.Merge, mergeCourseData);\r\n        }\r\n        break;\r\n      default:\r\n        props.onMerge(event, FormMode.None, []);\r\n        break;\r\n\r\n    }\r\n  }\r\n\r\n  const [errors, setErrors] = useState({\r\n    mergeError: ''\r\n  })\r\n  const validate = () => {\r\n    let error = {\r\n      mergeError: '',\r\n    };\r\n    if (props.courseCount < 2) { error.mergeError = \"Choose 2 or more courses\"; }\r\n    if (props.courseCount > 10) { error.mergeError = \"Choose  less than 10 courses\"; }\r\n    setErrors(error);\r\n    if (error.mergeError) {\r\n      return false;\r\n    }\r\n\r\n    return true;\r\n  };\r\n  return (\r\n    <div>\r\n      <Modal size=\"lg\" backdrop=\"static\" keyboard={false} animation={false} show={formMode == FormMode.Merge} onHide={() => props.onMergeClose(FormMode.None)}>\r\n        <Modal.Header closeButton className=\"bg-primary text-white\">\r\n          <Modal.Title>Merge Courses</Modal.Title>\r\n        </Modal.Header>\r\n        <Modal.Body>\r\n          <Form>\r\n            <label>Merge Following {props.courseCount} Courses</label>\r\n            <Grid\r\n              data={mergeData}\r\n              scrollable={\"none\"}\r\n            >\r\n              <GridColumn field=\"courseName\" title=\"Courses\" cell={GridColumnCourses} />\r\n              <GridColumn field=\"\" title=\"\" className=\"text-right\" cell={GridColumnButton} />\r\n            </Grid>\r\n            <Form.Text className=\"text-danger\">{errors.mergeError}</Form.Text>\r\n          </Form>\r\n        </Modal.Body>\r\n        <Modal.Footer>\r\n          <Button variant=\"secondary\" onClick={(e) => onMerge(e, FormMode.None)}>Close</Button>\r\n          <Button variant=\"primary\" type=\"button\" onClick={(e) => onMerge(e, formMode)}>Merge Courses</Button>\r\n        </Modal.Footer>\r\n      </Modal>\r\n    </div>\r\n  )\r\n}","import React, { useState, useEffect, useRef } from 'react';\r\nimport { Modal, Button, Form } from 'react-bootstrap';\r\nimport { FormMode } from '../../services/Utility'\r\nimport IMergeCourseSpec from \"../../model/IMergeCourseSpec\";\r\n\r\ninterface IMergeErrorMessage {\r\n\r\n  mergeMessage:string,\r\n  formmode: FormMode,\r\n  onMergeClose:(data:FormMode)=>void,\r\n  onMerge: (event: React.MouseEvent<HTMLElement, MouseEvent>, actionType: FormMode, data: IMergeCourseSpec[]) => void\r\n\r\n}\r\n\r\nexport default function MergeError(props: IMergeErrorMessage) {\r\n  const mountedRef = useRef(true);\r\n  const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n\r\n  useEffect(() => {\r\n    setFormMode(props.formmode)\r\n    return () => { mountedRef.current = false }\r\n  }, []);\r\n\r\n\r\n\r\n\r\n  const onMerge = (event: React.MouseEvent<HTMLElement>, actionType: FormMode) => {\r\n\r\n\r\n    switch (actionType) {\r\n      case FormMode.Merge:\r\n        setFormMode(FormMode.Merge)\r\n        // messageService.edit(message).then(response => {\r\n        //   // Display Success message\r\n        // })\r\n        event.preventDefault();\r\n\r\n        break;\r\n      default:\r\n        props.onMerge(event, FormMode.None, []);\r\n        break;\r\n\r\n    }\r\n  }\r\n\r\n  const [errors, setErrors] = useState({\r\n    mergeError: ''\r\n  })\r\n  return (\r\n    <div>\r\n      <Modal backdrop=\"static\" keyboard={false} animation={false} show={formMode == FormMode.Error} onHide={() => props.onMergeClose(FormMode.None)}>\r\n        <Modal.Header closeButton className=\"bg-primary text-white\">\r\n          <Modal.Title>Merge Error</Modal.Title>\r\n        </Modal.Header>\r\n        <Modal.Body>\r\n          <Form>\r\n            <label>{props.mergeMessage}</label>\r\n          </Form>\r\n        </Modal.Body>\r\n        <Modal.Footer>\r\n          <Button variant=\"secondary\" onClick={(e) => onMerge(e, FormMode.None)}>Close</Button>\r\n        </Modal.Footer>\r\n      </Modal>\r\n    </div>\r\n  )\r\n}","import React, { useState, useEffect, useRef } from 'react';\r\nimport { Grid, GridColumn, GridNoRecords } from '@progress/kendo-react-grid';\r\nimport ILicenseSummary from '../../model/ILicenseummary';\r\nimport coursesService from '../../services/CoursesService'\r\nimport { CheckIfNYCDOELicense } from '../../helpers/helper';\r\n\r\ninterface ILicenseCourseSummary {\r\n    courseId: number\r\n}\r\n\r\nexport default function LicenseSummary(props: ILicenseCourseSummary) {\r\n    const mountedRef = useRef(true);\r\n    const [data, setRowData] = useState<ILicenseSummary[]>([]);\r\n\r\n    const getLicenseSummary = (courseId: number) => {\r\n        coursesService.getLicenseSummary(courseId).then((response)=>{\r\n            setRowData(response.data)\r\n        })        \r\n    }\r\n\r\n\r\n    useEffect(() => {\r\n        getLicenseSummary(props.courseId);\r\n        return () => { mountedRef.current = false }\r\n    }, [props.courseId]);\r\n\r\n    const GridCellRender = (props: any) => {\r\n        const licenseModel = props.dataItem.licenseModel;\r\n        const availableLicense = props.dataItem.availableLicense;\r\n      \r\n        // Set the available license text based on the license model\r\n        const cellContent = CheckIfNYCDOELicense(licenseModel) ? \"Unlimited\" : availableLicense;\r\n      \r\n        return <td>{cellContent}</td>;\r\n      };\r\n\r\n    const rowRender = (trElement:any, props:any) => {\r\n    \r\n        const hasNotEnoughLicense  = props.dataItem.hasNotEnoughLicense \r\n       \r\n        const red = {\r\n          backgroundColor: \"rgb(243, 23, 0, 0.32)\"\r\n        };\r\n\r\n        const white= {\r\n            backgroundColor: \"rgb(255,255,255)\"\r\n        }\r\n\r\n        const gray ={\r\n            backgroundColor: \"rgba(0, 0, 0, 0.08)\"\r\n        }\r\n        const trProps = {\r\n          style: hasNotEnoughLicense  ?  red : props.isAltRow ? gray : white\r\n        };\r\n        return React.cloneElement(trElement, { ...trProps\r\n        }, trElement.props.children);\r\n      };\r\n\r\n\r\n    return (\r\n        <div>\r\n            <div className=\"mt-3\">\r\n                <div className=\"card mt-4\">\r\n                    <div className=\"card-header font-weight-bold bg-secondary-light\">\r\n                        <div className=\"row align-items-center\">\r\n                            <div className=\"col-10\">License Summary</div>\r\n                        </div>\r\n                    </div>\r\n                    <div className=\"card-body\">\r\n                        <Grid\r\n                            data={data}\r\n                            rowRender={rowRender}\r\n                        >\r\n                            <GridNoRecords>\r\n                                No License Available\r\n                            </GridNoRecords>\r\n                            <GridColumn field=\"locationCode\" title=\"Location Code\" />\r\n                            <GridColumn field=\"vendorName\" title=\"Vendor\" />\r\n                            <GridColumn field=\"availableLicense\" title=\"Available Licenses\" cell={GridCellRender}/>\r\n                            <GridColumn field=\"requiredLicense\" title=\"License Required\" />\r\n                        </Grid>\r\n                    </div>\r\n                </div>\r\n\r\n            </div>\r\n        </div>\r\n    )\r\n}","import { AxiosInstances as AxiosInstance} from './BaseService'\r\n\r\nexport default {\r\n    getData: () =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': '/codeset',\r\n        })\r\n\r\n}","import React, { useState, useEffect, useRef, useContext } from 'react';\r\nimport ICourseDetail from '../../model/ICourseDetail';\r\nimport coursesService from '../../services/CoursesService'\r\nimport { FormMode } from '../../services/Utility';\r\nimport Moment from 'react-moment';\r\nimport LocalStorageService from '../../services/LocalStorage';\r\nimport { AuthContextDefault, UserProfileType, Year } from '../../services/AppContext';\r\n\r\n\r\ninterface ICourseContent {\r\n    dataSource: number\r\n    sharedCourses : string []\r\n    location: string\r\n    courseStatus : string\r\n    onFormAction: (e: any, data: ICourseDetail, actionType: FormMode,) => void\r\n}\r\n\r\nexport default function CourseDetail(props: ICourseContent) {\r\n    const mountedRef = useRef(true);\r\n    const [userProfile, setUserProfile] = useState<UserProfileType>(AuthContextDefault.userProfile);\r\n    const { orginalSchoolYear } = useContext(Year);\r\n    useEffect(() => {\r\n        coursesService.getCourseDetail(props.dataSource, props.location).then(response => {\r\n            setCourseDetailData(response.data)\r\n            setUserProfile(LocalStorageService.getUserProfile())\r\n        })\r\n        return () => { mountedRef.current = false }\r\n    }, [props.dataSource]);\r\n\r\n    useEffect(() => {\r\n        \r\n    }, [props.courseStatus]);\r\n\r\n    const [courseDetailData, setCourseDetailData] = useState<ICourseDetail>({\r\n        courseId: 0,\r\n        schoolDBN: '',\r\n        schoolYear: 0,\r\n        courseName: '',\r\n        courseSource: '',\r\n        isMerged: 0,\r\n        purpose: '',\r\n        mergeCourses: [],\r\n        courseContentType: '',\r\n        teacherOfRecord: '',\r\n        startDate: new Date(),\r\n        endDate: new Date(),\r\n        createdBy: '',\r\n        createdOn: new Date(),\r\n        courseStatus: '',\r\n        mergedOn: new Date(),\r\n        mergedBy : ''\r\n    });\r\n    const onFormAction = (e: any, course: ICourseDetail, actionType: FormMode) => {\r\n        switch (actionType) {\r\n            case FormMode.Edit:\r\n                let courseinfo: ICourseDetail = {\r\n                    courseId: course.courseId,\r\n                    schoolDBN: course.schoolDBN,\r\n                    schoolYear: course.schoolYear,\r\n                    courseName: course.courseName,\r\n                    courseSource: course.courseSource,\r\n                    isMerged: course.isMerged,\r\n                    purpose: course.purpose,\r\n                    mergeCourses: course.mergeCourses,\r\n                    courseContentType: course.courseContentType,\r\n                    teacherOfRecord: course.teacherOfRecord,\r\n                    startDate: course.startDate,\r\n                    endDate: course.endDate,\r\n                    createdBy: course.createdBy,\r\n                    createdOn: course.createdOn,\r\n                    courseStatus: course.courseStatus,\r\n                    oldTeacherId: course.teacherOfRecord,\r\n                    mergedOn: course.mergedOn,\r\n                    mergedBy : course.mergedBy,\r\n                    courseType : course.courseType\r\n                }\r\n                props.onFormAction(e, courseinfo, FormMode.Edit)\r\n                break;\r\n            default: {\r\n                break;\r\n            }\r\n        }\r\n        e.preventDefault();\r\n    }\r\n    return (\r\n        <div className=\"card\">\r\n            <div className=\"card-header font-weight-bold bg-secondary-light\">\r\n                <div className=\"row align-items-center\">\r\n                    <div className=\"col-7\">Course Detail </div>\r\n                    {((props.courseStatus && props.courseStatus == \"Closed\") || userProfile?.role?.roleName == 'Central Staff' || orginalSchoolYear.isCurrent == 0) ? \" \" : <div className=\"col-5 text-right\"><button className=\"btn btn-sm btn-primary\" onClick={(e) => { onFormAction(e, courseDetailData, FormMode.Edit) }}>Edit</button></div>}\r\n\r\n                </div>\r\n            </div>\r\n\r\n            <div className=\"card-body\">\r\n                <div className=\"row\">\r\n                    <div className=\"col-lg-4 mb-3 mb-lg-0\">\r\n                        <div className=\"small text-primary\">Title:</div>\r\n                        <div>{courseDetailData.courseName}</div>\r\n                    </div>\r\n                    <div className=\"col-lg-4 col-6\">\r\n                        <div className=\"small text-primary\">Purpose:</div>\r\n                        <div>{courseDetailData.purpose}</div>\r\n                    </div>\r\n                    <div className=\"col-lg-4 col-6\">\r\n                        <div className=\"small text-primary\">Content Type:</div>\r\n                        <div>{courseDetailData.courseContentType}</div>\r\n                    </div>\r\n                </div>\r\n                <div className=\"row mt-3\">\r\n                    <div className=\"col-lg-4 col-6\">\r\n                        <div className=\"small text-primary\">Start Date:</div>\r\n                        <div>\r\n                            <Moment format=\"MM/DD/YYYY\">\r\n                                {courseDetailData.startDate}\r\n                            </Moment>\r\n                        </div>\r\n                    </div>\r\n                    <div className=\"col-lg-4 col-6\">\r\n                        <div className=\"small text-primary\">End Date:</div>\r\n                        <div>\r\n                            <Moment format=\"MM/DD/YYYY\">\r\n                                {courseDetailData.endDate}\r\n                            </Moment>\r\n                        </div>\r\n                    </div>                 \r\n                    <div className=\"col-lg-4 col-sm-6 mt-3 mt-lg-0\">\r\n                        <div className=\"small text-primary\">Added By:</div>\r\n                        <div>{courseDetailData?.createdBy}\r\n                            <span> on </span>\r\n                            <Moment format=\"MM/DD/YYYY\">\r\n                                {courseDetailData.createdOn}\r\n                            </Moment>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div className=\"row mt-3\">\r\n                    <div className=\"col-lg-4 col-6\">\r\n                        <div className=\"small text-primary\">Course Source:</div>\r\n                        <div>\r\n                            {courseDetailData?.courseSource}\r\n                        </div>\r\n                    </div>\r\n                    { courseDetailData.lastSubmittedOnLMS ? \r\n                        <div className=\"col-lg-4 col-6\">\r\n                            <div className=\"small text-primary\">Last Published On:</div>\r\n                            <div>\r\n                                {courseDetailData.lastSubmittedOnLMS &&\r\n                                    <Moment format=\"MM/DD/YYYY\">\r\n                                        {courseDetailData.lastSubmittedOnLMS}\r\n                                    </Moment>\r\n                                }\r\n                            </div>\r\n                        </div> \r\n                        : ''\r\n                    }\r\n                    \r\n                    {(courseDetailData.isMerged===1) ?\r\n                        <div className=\"col-lg-4 mt-3 mt-lg-0\">\r\n                            <div className=\"small text-primary\">Merged By:</div>\r\n                            <div>{courseDetailData?.mergedBy}\r\n                                <span> on </span>\r\n                                <Moment format=\"MM/DD/YYYY\">\r\n                                    {courseDetailData.mergedOn}\r\n                                </Moment>\r\n                            </div>\r\n                        </div>\r\n                        : \"\"\r\n                    }\r\n                    { courseDetailData?.mergeCourses.length === 0 ? \r\n                      \"\" :  <div className=\"col-12 mt-3\">\r\n                                <div className=\"small text-primary\">Merged Courses:</div>\r\n                                <div>\r\n                                    {courseDetailData?.mergeCourses?.map((value: any, index: number) =>\r\n                                        courseDetailData?.mergeCourses?.length > 1 && index != courseDetailData?.mergeCourses?.length - 1 ? value.mergedCourse + ' ' + ',' + ' ' : value.mergedCourse\r\n                                    )}\r\n                                </div>\r\n                            </div>\r\n                    }  \r\n                    { props.sharedCourses.length === 0 ? \r\n                      \"\" :  <div className=\"col-12 mt-3\">\r\n                                <div className=\"small text-primary\">In {props.sharedCourses.length} SI Courses:</div>\r\n                                <div>\r\n                                    {props.sharedCourses?.map((value: any, index: number) =>\r\n                                        props.sharedCourses?.length > 1 && index != props.sharedCourses?.length - 1 ? value + ' ' + ',' + ' ' : value\r\n                                    )}\r\n                                </div>\r\n                            </div>\r\n                    }               \r\n                </div>\r\n            </div>\r\n        </div>\r\n    )\r\n}\r\n\r\n","import { AxiosInstances as AxiosInstance} from './BaseService'\r\nimport ICourseContent from '../model/VendorContent';\r\nimport IVendor from '../model/VendorContent';\r\n\r\nexport default {\r\n    getData: () =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': '/VendorContent',\r\n        }),\r\n        getByLocationCode: (locationCode:string, vendorId : number) =>\r\n            AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/VendorContent/${locationCode}/${vendorId}`,                      \r\n        }),\r\n        getVendorContentByLocationCode: (schoolDBN:string) =>\r\n            AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/VendorContentBySchool/${schoolDBN}`,                      \r\n        }),\r\n        getByVendorId: (vendorId:number) =>\r\n            AxiosInstance({\r\n            'method': 'GET',\r\n            'url': '/vendorcontentbyvendorId/' + vendorId,\r\n        }),\r\n        getById: (id:number) =>\r\n            AxiosInstance({\r\n            'method': 'GET',\r\n            'url': '/VendorContent/' + id,\r\n        }),\r\n    post: (requestdata: ICourseContent) =>\r\n        AxiosInstance({\r\n            'method': 'POST',\r\n            'url': '/VendorContent',\r\n            'data': requestdata\r\n        }),\r\n    edit: (requestdata: ICourseContent) =>\r\n        AxiosInstance({\r\n            'method': 'PUT',\r\n            'url': '/VendorContent?id=' + requestdata.id,\r\n            'data': requestdata\r\n        }),\r\n    delete: (id: number) =>\r\n        AxiosInstance({\r\n            'method': 'DELETE',\r\n            'url': '/VendorContent?id=' + id,\r\n        })\r\n}\r\n","import React, { useState, useEffect,useRef, useContext } from 'react';\r\nimport { Button} from 'react-bootstrap';\r\nimport { Grid, GridColumn, GridNoRecords,GridFilterChangeEvent } from '@progress/kendo-react-grid';\r\nimport { FormMode } from '../../services/Utility'\r\nimport { Year} from '../../services/AppContext';\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { filterBy, CompositeFilterDescriptor } from \"@progress/kendo-data-query\";\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport IconCourseEnvelop from '../../assets/icons/icon-envelop-course';\r\nimport vendorContentService from '../../services/VendorContentService';\r\nimport CoursesService from '../../services/CoursesService';\r\nimport IAddMultipleCoursesVendorContent from '../../model/IAddMultipleCoursesVendorContent';\r\nimport IMultipleCoursesVendorContent from '../../model/IMultipleCoursesVendorContent';\r\nimport IVendorContent from '../../model/VendorContent';\r\nimport IUnassignedCoursesForVendorContent from '../../model/IUnassignedCoursesForVendorContent';\r\nimport ICourses from '../../model/ICourses';\r\n\r\ninterface Props {\r\n    schoolDBN: string\r\n    closeCourseForVendorContentModal: (error:string, courseForVendorContentModal: IMultipleCoursesVendorContent) => void\r\n}\r\ninterface IDropDownVendorContentValue {\r\n    id: number;\r\n    vendorId: number;\r\n    text: string;\r\n  }\r\nconst initialDataState = {\r\n    skip: 0,\r\n    take: 10,\r\n};\r\n\r\n\r\nexport default function AddCoursesForVendorContent(courseProps: Props) {\r\n    const mountedRef = useRef(true);\r\n    const { orginalSchoolYear } = useContext(Year);\r\n    const [errorMsg, setErrorMsg] = useState<string>('');\r\n    const [vendorContentDefault, setVendorContentDefault] = useState<IDropDownVendorContentValue>();\r\n    const [unassignedCourses, setUnassignedCourses] = useState<IUnassignedCoursesForVendorContent[]>([]);\r\n    const [checkedCourses, setCheckedCourses] = useState<ICourses[]>([]);\r\n    const [selectedVendorContent, setSelectedVendorContent] = useState<IVendorContent>();\r\n    const [vendorContentList, setVendorContentList] = useState<IDropDownVendorContentValue[]>([]);\r\n    const [originalVendorContentList, setOriginalVendorContentList] = useState<IDropDownVendorContentValue[]>([]);\r\n    const [page, setPage] = React.useState(initialDataState);\r\n    const initialFilter: CompositeFilterDescriptor = {\r\n        logic: \"and\",\r\n        filters: [],\r\n    };\r\n    const [filter, setFilter] = useState(initialFilter);\r\n\r\n\r\n\r\n    const pageChange = (event: any) => {\r\n        setPage(event.page);\r\n    };\r\n\r\n    const GetStatusBadgeCssClass = (status: string) => {\r\n\r\n        if (status.toLowerCase() === \"new\") {\r\n            return \"text-gray\"\r\n        }\r\n        else if (status.toLowerCase() === \"edited\") {\r\n            return \"text-secondary\"\r\n        }\r\n        else if (status.toLowerCase() === \"published\") {\r\n            return \"text-success\"\r\n        }\r\n        else if (status.toLowerCase() === \"closed\") {\r\n            return \"text-danger\"\r\n        }\r\n        \r\n    }\r\n\r\n    const getVendorContentData = (school:any) => {\r\n        vendorContentService.getVendorContentByLocationCode(school).then(response => {\r\n            let dropDownData = response.data.map((sl: any) => ({\r\n                id: sl.vendorContentId,\r\n                vendorId: sl.vendorId,\r\n                text: sl.vendorContentName + ' -- ' + sl.vendorName\r\n            }));\r\n            if(dropDownData){\r\n            setVendorContentDefault(dropDownData[0])\r\n            }\r\n            setVendorContentList(dropDownData)\r\n            setOriginalVendorContentList(dropDownData)\r\n        });\r\n    }\r\n\r\n    const filterData = (filter: any) => {\r\n        let data = originalVendorContentList.slice();\r\n        return filterBy(data, filter);\r\n    }\r\n    const filterChange = (event: any) => {\r\n        let data = filterData(event.filter)\r\n        setVendorContentList(data)\r\n    }\r\n\r\n    const handleChange = (event: any) => {\r\n        let selectedVendorContent = event.target.value;\r\n        let vendorcontent:IVendorContent={\r\n            id: selectedVendorContent.id,\r\n            vendorCourseCode: '',\r\n            vendorCourseContentName: '',\r\n            vendorId: selectedVendorContent.vendorId,\r\n            vendorName: '',\r\n            TotalCourses: 0,\r\n            TotalStudents : 0,\r\n            isActive: false,\r\n            modifiedBy: ''\r\n        }\r\n        setCheckedCourses([]);\r\n        setSelectedVendorContent(vendorcontent)\r\n        getVendorContentUnassignedCourses(courseProps.schoolDBN,selectedVendorContent.id,selectedVendorContent.vendorId);\r\n    }\r\n\r\n    const getVendorContentUnassignedCourses = (locationCode:string,vendorContentId:number,vendorId:number) => {\r\n        CoursesService.getVendorContentUnassignedCourses(locationCode,vendorContentId,vendorId).then(response => {\r\n            setUnassignedCourses(response.data)\r\n        });\r\n    }\r\n\r\n    useEffect(() => {\r\n        setCheckedCourses([]);\r\n        getVendorContentData(courseProps.schoolDBN);\r\n        addIndividualCourses();\r\n        return () => { mountedRef.current = false }\r\n    }, [courseProps.schoolDBN]);\r\n\r\n    useEffect(() => {\r\n        setCheckedCourses([]);\r\n        if(vendorContentDefault){\r\n        getVendorContentUnassignedCourses(courseProps.schoolDBN,vendorContentDefault.id,vendorContentDefault?.vendorId)\r\n        let vendorcontent:IVendorContent={\r\n            id: vendorContentDefault.id,\r\n            vendorCourseCode: '',\r\n            vendorCourseContentName: '',\r\n            vendorId: vendorContentDefault.vendorId,\r\n            vendorName: '',\r\n            TotalCourses: 0,\r\n            TotalStudents : 0,\r\n            isActive: false,\r\n            modifiedBy: ''\r\n        }\r\n        setSelectedVendorContent(vendorcontent)\r\n    }\r\n    }, [vendorContentDefault,courseProps.schoolDBN]);\r\n\r\n\r\n\r\n    const addIndividualCourses = () => {\r\n        setPage(initialDataState)\r\n    }\r\n\r\n    const onGridCheckBoxClick = (dataItem: any) => {\r\n        dataItem.isSelected = !dataItem.isSelected;\r\n        let selectedCourses = checkedCourses\r\n        if (dataItem.isSelected) {\r\n            selectedCourses.push(dataItem)\r\n\r\n            setCheckedCourses(selectedCourses)\r\n        } else {\r\n            selectedCourses = checkedCourses.filter(item => item.courseId !== dataItem.courseId);\r\n\r\n            setCheckedCourses(selectedCourses)\r\n        }\r\n    }\r\n\r\n    const onSave = (event: any, actionType: FormMode) => {\r\n        switch (actionType) {\r\n            case FormMode.New:\r\n                let addMultipleCoursesVendorContent: IAddMultipleCoursesVendorContent = {\r\n                    //sharedCourseUniqueId: courseProps.courseId,\r\n                    courseId: checkedCourses.map(i => i.courseId\r\n                        ),\r\n                    schoolDBN: courseProps.schoolDBN,\r\n                    vendorContentId: selectedVendorContent?.id,\r\n                    vendorId: selectedVendorContent?.vendorId,\r\n                    schoolYear :+orginalSchoolYear.id,\r\n                }\r\n\r\n                let multipleCoursesVendorContent: IMultipleCoursesVendorContent = {\r\n                    //sharedCourseUniqueId: courseProps.courseId,\r\n                    courseId: addMultipleCoursesVendorContent.courseId,\r\n                    schoolDBN: addMultipleCoursesVendorContent.schoolDBN,\r\n                    vendorContentId: addMultipleCoursesVendorContent.vendorContentId,\r\n                    vendorId: addMultipleCoursesVendorContent.vendorId,\r\n                    vendorContentName: '',\r\n                    vendorName: '',\r\n                    availableLicenses: 0,\r\n                    totalLicenses: 0,\r\n                    statusCode : ''\r\n                    \r\n                }\r\n\r\n                if (addMultipleCoursesVendorContent.courseId?.length === 0) {\r\n                    setErrorMsg('Please select courses to add.');\r\n                    return;\r\n                }\r\n\r\n                CoursesService.postMultipleCoursesVendorContent(addMultipleCoursesVendorContent).then(res => {\r\n                    courseProps.closeCourseForVendorContentModal('',multipleCoursesVendorContent)\r\n                    //setFormMode(FormMode.None);\r\n                   // courseProps.updateCourseInfo(courseProps.courseId, courseTeachers.flat(), result, \"add\")\r\n                })\r\n\r\n                break;\r\n            default: {\r\n                let multipleCoursesVendorContent: IMultipleCoursesVendorContent = {\r\n                    //sharedCourseUniqueId: courseProps.courseId,\r\n                    courseId: [],\r\n                    schoolDBN: '',\r\n                    vendorContentId: 0,\r\n                    vendorId: 0,\r\n                    vendorContentName: '',\r\n                    vendorName: '',\r\n                    availableLicenses: 0,\r\n                    totalLicenses: 0,\r\n                    statusCode : ''\r\n                    \r\n                }\r\n                setCheckedCourses([]);\r\n                courseProps.closeCourseForVendorContentModal('',multipleCoursesVendorContent)\r\n                break;\r\n\r\n            }\r\n        }\r\n    }\r\n\r\n\r\n    return (\r\n        <div>\r\n             <Dialog title={\"Add Vendor Content To Courses\"} onClose={(e) => onSave(e, FormMode.None)}  style={{ width: \"75%\", position: \"fixed\", left: \"15%\", top: \"20%\", height: \"350px\" }} >\r\n                <div id=\"dropDownParent\">\r\n                <div hidden={errorMsg.length === 0}>\r\n                        <div className=\"alert alert-danger alert-dismissible fade show\" role=\"alert\">\r\n                            {errorMsg}\r\n                            <button type=\"button\" className=\"close\" data-dismiss=\"alert\" aria-label=\"Close\">\r\n                                <span aria-hidden=\"true\">&times;</span>\r\n                            </button>\r\n                        </div>\r\n                    </div>\r\n                    <div className=\"d-flex justify-content-between align-items-center\" >\r\n                        <div className=\"text-sm-right text-left\">\r\n                            <DropDownList\r\n                                data={vendorContentList}\r\n                                defaultValue={vendorContentDefault}\r\n                                textField=\"text\"\r\n                                filterable={true}\r\n                                onChange={handleChange}\r\n                                onFilterChange={filterChange}\r\n                                popupSettings={{ appendTo: document.getElementById(\"dropDownParent\") as HTMLElement }}\r\n                                style={{ maxWidth: '500px', width: \"100%\" }}\r\n                            />\r\n                        </div>\r\n                    </div>\r\n                    <div className=\"mt-3\" style={{ height: \"400px\" }}>\r\n                        <Grid\r\n                            data={filterBy(unassignedCourses,filter).slice(page.skip, page.take + page.skip)}\r\n                            filter={filter}\r\n                            filterable={true}\r\n                            skip={page.skip}\r\n                            take={page.take}\r\n                            total={unassignedCourses.length}\r\n                            pageable={true}\r\n                            scrollable={\"none\"}\r\n                            onPageChange={pageChange}\r\n                            onFilterChange={(e: GridFilterChangeEvent) => setFilter(e.filter)}\r\n                        >\r\n                            <GridColumn field=\"isSelected\" title=\" \" width=\"40px\" filterable={false} cell={props => (\r\n                                <td>\r\n                                    <input type=\"checkbox\" checked={props.dataItem.isSelected} onChange={() => onGridCheckBoxClick(props.dataItem)} />\r\n                                </td>\r\n                            )} />\r\n\r\n                            <GridColumn field=\"UserIcon\" title=\" \" filterable={false} width=\"50px\" cell={\r\n                                props => (\r\n                                    <td className=\"pr-0\">\r\n                                        <div className=\"d-flex\">\r\n                                            <div className={`svg-app-icon ${props.dataItem.courseStatus.toLowerCase() === \"published\" ? \" text-success\" : \" text-blue-gray\"} mr-3\"`} style={{ height: \"50px\" }}>\r\n                                                <IconCourseEnvelop courseType={props.dataItem.courseType} courseOrginType={props.dataItem.courseSource} merge={0}></IconCourseEnvelop>\r\n                                            </div>\r\n                                        </div>\r\n                                    </td>\r\n                                )} />\r\n                            <GridColumn field=\"courseName\" title='Course Name' />\r\n                            <GridColumn field=\"courseStatus\" title='Course Status'filterable={true} cell={\r\n                                props => (\r\n                                    <td>\r\n                                        <div ><span className={GetStatusBadgeCssClass(props.dataItem.courseStatus)}> {props.dataItem.courseStatus} </span></div>\r\n                                    </td>\r\n                                )} />\r\n                            <GridNoRecords>\r\n                                         There are no courses available to assign to the selected vendor's content.\r\n                            </GridNoRecords>\r\n                        </Grid>\r\n                    </div>\r\n                </div>\r\n                <DialogActionsBar>\r\n                    <Button className=\"m-3\" variant=\"secondary\" onClick={(e) => onSave(e, FormMode.None)}>Close</Button>\r\n                    <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, FormMode.New)}>Add Vendor Content  </Button>\r\n                </DialogActionsBar>\r\n            </Dialog>\r\n        </div>\r\n    )\r\n}","var __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};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Keys, classNames, guid, useDir, getTabIndex, dispatchEvent, createPropsContext, usePropsContext } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nimport { useLocalization } from '@progress/kendo-react-intl';\nimport { messages, checkboxValidation, checkboxOptionalText } from './../messages';\n/**\n * Represents the PropsContext of the `Checkbox` component.\n * Used for global configuration of all `Checkbox` instances.\n *\n * For more information, refer to the [Inputs Props Context]({% slug props-context_inputs %}) article.\n */\nexport var CheckboxPropsContext = createPropsContext();\n/**\n * Represents the [KendoReact Checkbox component]({% slug overview_checkbox %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n *     render() {\n *         return <Checkbox />;\n *     }\n * }\n * ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nexport var Checkbox = React.forwardRef(function (directProps, target) {\n    validatePackage(packageMetadata);\n    var props = usePropsContext(CheckboxPropsContext, directProps);\n    var _a = props, ariaDescribedBy = _a.ariaDescribedBy, ariaLabelledBy = _a.ariaLabelledBy, checked = _a.checked, className = _a.className, children = _a.children, defaultChecked = _a.defaultChecked, disabled = _a.disabled, defaultValue = _a.defaultValue, id = _a.id, label = _a.label, labelPlacement = _a.labelPlacement, name = _a.name, labelOptional = _a.labelOptional, onChange = _a.onChange, onFocus = _a.onFocus, onBlur = _a.onBlur, tabIndex = _a.tabIndex, value = _a.value, required = _a.required, valid = _a.valid, validationMessage = _a.validationMessage, validityStyles = _a.validityStyles, \n    // Removed to support direct use in Form Field component\n    visited = _a.visited, touched = _a.touched, modified = _a.modified, others = __rest(_a, [\"ariaDescribedBy\", \"ariaLabelledBy\", \"checked\", \"className\", \"children\", \"defaultChecked\", \"disabled\", \"defaultValue\", \"id\", \"label\", \"labelPlacement\", \"name\", \"labelOptional\", \"onChange\", \"onFocus\", \"onBlur\", \"tabIndex\", \"value\", \"required\", \"valid\", \"validationMessage\", \"validityStyles\", \"visited\", \"touched\", \"modified\"]);\n    var elementRef = React.useRef(null);\n    var focusElement = React.useCallback(function () {\n        if (elementRef.current) {\n            elementRef.current.focus();\n        }\n    }, []);\n    var getImperativeHandle = React.useCallback(function () { return ({\n        element: elementRef.current,\n        focus: focusElement,\n        get name() { return elementRef.current && elementRef.current.name; }\n    }); }, [focusElement]);\n    React.useImperativeHandle(target, getImperativeHandle);\n    var _b = React.useState(defaultChecked), stateChecked = _b[0], setStateChecked = _b[1];\n    var _c = React.useState(defaultValue), stateValue = _c[0], setStateValue = _c[1];\n    var valueIsBoolean = (typeof value === 'boolean' || value === null);\n    var isCheckedControlled = checked !== undefined;\n    var isValueControlled = valueIsBoolean;\n    var currentValue = isValueControlled ? value : stateValue;\n    var currentChecked = isCheckedControlled ? checked : isValueControlled ? undefined : stateChecked;\n    var useValueAsChecked = currentChecked === undefined && currentValue;\n    var checkedProp = useValueAsChecked ? currentValue : currentChecked;\n    var valueProp = (useValueAsChecked || isValueControlled) ? (value === null ? value : undefined) : value || currentValue;\n    var indeterminateProp = checkedProp === null || valueProp === null;\n    var calculatedId = React.useMemo(function () { return guid(); }, []);\n    var localizationService = useLocalization();\n    var localizeMessage = function (message) {\n        return localizationService.toLanguageString(message, messages[message]);\n    };\n    var defaultValidationMessage = localizeMessage(checkboxValidation);\n    var optionalMessage = localizeMessage(checkboxOptionalText);\n    var isValid = valid !== undefined ?\n        valid :\n        !required ?\n            true :\n            currentChecked ? true : false;\n    React.useEffect(function () {\n        if (elementRef.current && elementRef.current.setCustomValidity) {\n            elementRef.current.setCustomValidity(isValid\n                ? ''\n                : (validationMessage || defaultValidationMessage));\n        }\n    }, [isValid, validationMessage, defaultValidationMessage]);\n    var setValue = React.useCallback(function (e, val) {\n        if (!isValueControlled && !disabled) {\n            setStateValue(val);\n            if (!isCheckedControlled && !disabled) {\n                setStateChecked(val);\n            }\n        }\n        if (onChange && !disabled) {\n            dispatchEvent(onChange, e, __assign({}, getImperativeHandle(), { value: val }), { value: val });\n        }\n    }, [isCheckedControlled, disabled, onChange, isValueControlled, getImperativeHandle]);\n    var handleChange = React.useCallback(function (e) {\n        var newValue = e.target.checked;\n        setValue(e, newValue);\n    }, [setValue, value]);\n    var handleKeyDown = React.useCallback(function (e) {\n        if (disabled) {\n            return;\n        }\n        var keyCode = e.keyCode;\n        var currentVal = e.currentTarget.checked;\n        if (keyCode === Keys.space) {\n            e.preventDefault();\n            e.stopPropagation();\n            setValue(e, !currentVal);\n        }\n    }, [disabled, setValue]);\n    var handleKeyUp = React.useCallback(function (e) {\n        if (disabled) {\n            return;\n        }\n        var keyCode = e.keyCode;\n        if (keyCode === Keys.space) {\n            e.preventDefault();\n        }\n    }, [disabled]);\n    var handleFocus = React.useCallback(function (e) {\n        if (onFocus && !disabled) {\n            dispatchEvent(onFocus, e, getImperativeHandle(), undefined);\n        }\n    }, [onFocus, disabled, getImperativeHandle]);\n    var handleBlur = React.useCallback(function (e) {\n        if (onBlur && !disabled) {\n            dispatchEvent(onBlur, e, getImperativeHandle(), undefined);\n        }\n    }, [onBlur, disabled, getImperativeHandle]);\n    var dir = useDir(elementRef, props.dir);\n    var checkboxClasses = classNames({ 'k-state-disabled': disabled }, className);\n    var inputProps = __assign({ type: 'checkbox', className: classNames({\n            'k-checkbox': true,\n            'k-state-indeterminate': indeterminateProp,\n            'k-state-invalid k-invalid': !(isValid || validityStyles !== undefined || validityStyles === true)\n        }), ref: elementRef, name: name, id: id || calculatedId, 'aria-labelledby': ariaLabelledBy, 'aria-describedby': ariaDescribedBy, checked: Boolean(checkedProp), disabled: disabled, tabIndex: getTabIndex(tabIndex, disabled), role: 'checkbox', required: required !== undefined ? required : false, 'aria-checked': currentChecked || checkedProp ?\n            true :\n            indeterminateProp ?\n                'mixed' :\n                false, 'aria-disabled': disabled || undefined }, others, { onChange: handleChange, onKeyDown: handleKeyDown, onKeyUp: handleKeyUp, onFocus: handleFocus, onBlur: handleBlur });\n    var checkboxInput = (React.createElement(React.Fragment, null, \n    // removing value prop is required due to bug in react where\n    // value set to undefined override default submit value\n    valueProp === undefined ? (React.createElement(\"input\", __assign({}, inputProps))) : (React.createElement(\"input\", __assign({}, inputProps, { value: valueIsBoolean ? undefined : valueProp === null ? '' : valueProp })))));\n    var checkboxLabel = (React.createElement(React.Fragment, null, label !== undefined ? (React.createElement(\"label\", { className: 'k-checkbox-label', htmlFor: id || calculatedId, style: { userSelect: 'none' } },\n        label,\n        labelOptional && React.createElement(\"span\", { className: \"k-label-optional\" }, optionalMessage))) : null));\n    return (React.createElement(React.Fragment, null, (labelPlacement === 'before') ? (React.createElement(\"span\", { className: checkboxClasses, dir: 'rtl' },\n        checkboxInput,\n        checkboxLabel,\n        children)) : (React.createElement(\"span\", { className: checkboxClasses, dir: dir },\n        checkboxInput,\n        checkboxLabel,\n        children))));\n});\nCheckbox.propTypes = {\n    checked: PropTypes.bool,\n    className: PropTypes.string,\n    defaultChecked: PropTypes.bool,\n    defaultValue: PropTypes.any,\n    dir: PropTypes.string,\n    disabled: PropTypes.bool,\n    id: PropTypes.string,\n    ariaLabelledBy: PropTypes.string,\n    ariaDescribedBy: PropTypes.string,\n    label: PropTypes.any,\n    labelPlacement: PropTypes.string,\n    labelOptional: PropTypes.bool,\n    name: PropTypes.string,\n    tabIndex: PropTypes.number,\n    value: PropTypes.any,\n    validationMessage: PropTypes.string,\n    required: PropTypes.bool,\n    validate: PropTypes.bool,\n    valid: PropTypes.bool,\n    onChange: PropTypes.func,\n    onFocus: PropTypes.func,\n    onBlur: PropTypes.func\n};\nCheckbox.displayName = 'KendoCheckbox';\n","import * as React from 'react';\n/**\n * @hidden\n */\nexport function useDir(elementRef, initialDir, args) {\n    // Dir prop is read only on initial rendering due to specifics of getComputedStyles - see below\n    var _a = React.useState(initialDir), dir = _a[0], setDir = _a[1];\n    React.useEffect(function () {\n        if (!dir && window && elementRef.current) {\n            // Note: getComputedStyle forces reflow\n            var rtlCandidate = window.getComputedStyle(elementRef.current).direction;\n            if (rtlCandidate) {\n                // rerender is needed as DOM is read after first render\n                setDir(rtlCandidate);\n            }\n        }\n    }, args);\n    return dir;\n}\n","import React, { useState, useEffect, useReducer, useRef, useContext, useCallback } from 'react';\r\nimport {\r\n    Grid, GridColumn\r\n} from '@progress/kendo-react-grid';\r\nimport GridHierarchyExpand from '../../shared/GridHierarchyExpand'\r\nimport { Modal, Button, Dropdown, Card, Tooltip, DropdownButton, OverlayTrigger, InputGroup, FormControl, Row, Col } from 'react-bootstrap';\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport { FormMode, IDropDownValue } from '../../services/Utility'\r\nimport IndividualCourses from './IndividualCourses'\r\nimport AssignedTeachers from './AssingedTeachers'\r\nimport AssignedAdditionalStaff from './AssignedAdditionalStaff'\r\nimport AddVendorContent from './CourseVendorContent'\r\nimport EnrolledStudent from './EnrolledStudent'\r\nimport AddNewCourse from './AddNewCourse'\r\nimport MergeCourses from './MergeCourses'\r\nimport MergeError from './MergeError'\r\nimport LicenseSummary from './LicenseSummary'\r\nimport codesetService from '../../services/CodesetService';\r\nimport CourseService from '../../services/CoursesService'\r\nimport TeacherService from '../../services/TeacherService'\r\nimport ICodeSet from '../../model/Codeset'\r\nimport ICourses from '../../model/ICourses';\r\nimport ICourseVendorContent from '../../model/ICourseVendorContent';\r\nimport { IAssignedTeachers } from '../../model/IAssignedTeachers';\r\nimport CourseDetail from './CourseDetail';\r\nimport ICourseDetail from '../../model/ICourseDetail';\r\nimport IconCourseEnvelop from '../../assets/icons/icon-envelop-course';\r\nimport IMergeCourses from '../../model/IMergeCourses';\r\nimport IMergeCourseSpec from \"../../model/IMergeCourseSpec\";\r\nimport LocalStorageService from '../../services/LocalStorage';\r\nimport { AuthContextDefault, UserProfileType, Year } from '../../services/AppContext';\r\nimport SplashScreen from '../../shared/SplashScreen'\r\nimport SharedCoursesList from '../../shared/SharedCoursesList';\r\nimport IMultipleCoursesVendorContent from '../../model/IMultipleCoursesVendorContent';\r\nimport AddCoursesForVendorContent from './AddCoursesForVendorContent';\r\nimport { Checkbox } from '@progress/kendo-react-inputs';\r\nimport { filter } from '@progress/kendo-data-query/dist/npm/transducers';\r\n\r\ninterface ILocationCode {\r\n    id: string,\r\n}\r\n\r\nconst initialDataState = {\r\n    skip: 0,\r\n    take: 10,\r\n};\r\n\r\ninterface CourseFilters {\r\n    pageNumber: number,\r\n    pageSize: number,\r\n    orderBy: string,\r\n    searchCourseStatus: string,\r\n    searchCourseType: string,\r\n    searchCourseName: string,\r\n    searchUnpublishedStudents:string,\r\n}\r\n\r\ninterface DataSort {\r\n    sort: string,\r\n    value: string,\r\n}\r\n\r\ninterface CourseTypes {\r\n    courseType: string,\r\n    value: string,\r\n}\r\n\r\ninterface CourseStatus {\r\n    courseStatus: string,\r\n    value: string,\r\n}\r\n\r\nconst initialDataSort: DataSort[] = [\r\n    { sort: 'Sort by Date (Newest)', value: 'DateDesc' },\r\n    { sort: 'Sort by Date (Oldest)', value: 'DateAsc' },\r\n    { sort: 'Sort by Name (A-Z)', value: 'NameAsc' },\r\n    { sort: 'Sort by Name (Z-A)', value: 'NameDesc' },\r\n]\r\n\r\nconst initialCourseTypes: CourseTypes[] = [\r\n    { courseType: 'Filter By Course Type', value: \"\" },\r\n    { courseType: 'Manual Courses', value: 'Manual' },\r\n    { courseType: 'Shared Instruction Courses', value: 'Shared' },\r\n    { courseType: 'STARS Courses', value: 'STARS' },\r\n]\r\n\r\nconst initialCourseFilters: CourseFilters =\r\n{\r\n    pageNumber: 1,\r\n    pageSize: initialDataState.take,\r\n    orderBy: \"DateDesc\",\r\n    searchCourseStatus: \"\",\r\n    searchCourseType: \"\",\r\n    searchCourseName: \"\",\r\n    searchUnpublishedStudents:\"\"\r\n}\r\n\r\n\r\nexport default function Courses(locationCode: ILocationCode) {\r\n    const mountedRef = useRef(true);\r\n    const [userProfile, setUserProfile] = useState<UserProfileType>(AuthContextDefault.userProfile);\r\n    //Page Load event - Get data from Service\r\n    const [data, setDefaultExpand] = useState<ICourses[]>([]);\r\n    const [sortValue] = useState<DataSort[]>(initialDataSort);\r\n    const [filterCourseTypes] = useState<CourseTypes[]>(initialCourseTypes);\r\n    const [filterCourseStatus, setFilterCourseStatus] = useState<CourseStatus[]>([]);\r\n\r\n    const [defaultSortValue] = useState<DataSort>({ sort: 'Sort by Date (Newest)', value: 'DateDesc' });\r\n    const [page, setPage] = React.useState(initialDataState);\r\n    const [courseFilters, setCourseFilters] = useState<CourseFilters>(initialCourseFilters);\r\n    const [isLoading, setIsLoading] = useState(true);\r\n    const [isPublishedSelected, setIsPublishedSelected] = useState(false);\r\n    const [isUnpublishedStudentsChecked, setIsUnpublishedStudentsChecked] = useState<boolean>(false);\r\n    const isUnpublishedStudentsValue ='UnpublishedStudents'\r\n    //Force re-render the child component on Expand\r\n    const [ignored, forceUpdate] = useReducer(x => x + 1, 0);\r\n    const { orginalSchoolYear } = useContext(Year);\r\n    const [courseIdSelected, setCourseId] = useState<number>(0);\r\n    const [vendorContentIdSelected, setVendorContentId] = useState<number>(0);\r\n    const [checkedCourses, setCheckedCourses] = useState<ICourses[]>([]);\r\n    const [mergeCourseData, setMergeCourseData] = useState<IMergeCourseSpec[]>([]);\r\n    const today = new Date()\r\n    const [refreshSubGrid, setRefreshSubGrid] = useState<boolean>(false)\r\n    const tomorrow = new Date(today)\r\n    tomorrow.setDate(tomorrow.getDate() + 1)\r\n    const [courseDetail, setCourseDetail] = useState<ICourseDetail>({\r\n        courseId: 0,\r\n        schoolDBN: '',\r\n        schoolYear: 0,\r\n        courseName: '',\r\n        courseSource: '',\r\n        isMerged: 0,\r\n        courseStatus: '',\r\n        purpose: '',\r\n        mergeCourses: [],\r\n        courseContentType: '',\r\n        teacherOfRecord: '',\r\n        startDate: new Date(),\r\n        endDate: orginalSchoolYear.schoolYearEndDate,\r\n        createdBy: '',\r\n        createdOn: new Date(),\r\n        mergedOn: new Date(),\r\n        mergedBy: ''\r\n    });\r\n\r\n    const [pageAlert, setPageAlert] = useState<string>('');\r\n    const [courseSaveErrorMessage, setCourseSaveErrorMessage] = useState<string>('');\r\n    const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n    const [purposeList, setPurposeList] = useState<ICodeSet[]>([]);\r\n    const [contentTypeList, setContentTypeList] = useState<IDropDownValue[]>([]);\r\n    const [originalTeacherOfRecordList, setOriginalTeacherOfRecordList] = useState<IDropDownValue[]>([]);\r\n    const [teacherOfRecordList, setTeacherOfRecordList] = useState<IDropDownValue[]>([]);\r\n    const [defaultTeacher, setDefaultTeacher] = useState<IDropDownValue>({\r\n        id: '',\r\n        text: ''\r\n    });\r\n\r\n    const getCourses = () => {\r\n        setIsLoading(true);\r\n        CourseService.getCourses(locationCode.id, +orginalSchoolYear.id, 1, page.take, defaultSortValue.value).then(response => {\r\n            setDefaultExpand(response.data)\r\n            setRefreshSubGrid(!refreshSubGrid)\r\n            setCheckedCourses([])\r\n            setMergeCourseData([])\r\n            setPageAlert('')\r\n        }).catch((ex) => {\r\n            setIsLoading(false);\r\n            setPageAlert('Oops!, Something went wrong. Please try again.')\r\n        }).finally(() => {\r\n            setIsLoading(false);\r\n        })\r\n        return () => { mountedRef.current = false }\r\n    }\r\n\r\n    const deleteCourseSaveErrorMessage = () => {\r\n        setCourseSaveErrorMessage(\"\")\r\n    }\r\n    const [courseNameSearch, setCourseNameSearch] = useState<string>(\"\");\r\n\r\n\r\n    const onSortValueChange = (e: any) => {\r\n        let filters = courseFilters\r\n        filters.orderBy = e.target.value.value\r\n        setCourseFilters(filters)\r\n        filterCourses()\r\n\r\n    }\r\n    const onUnpublishedStudentChecked=(e:any)=>{\r\n        setIsUnpublishedStudentsChecked(e.value)\r\n        let filters =courseFilters\r\n        filters.searchUnpublishedStudents=''\r\n        if(e.value==true)\r\n        {filters.searchUnpublishedStudents=isUnpublishedStudentsValue}\r\n        else\r\n        {filters.searchUnpublishedStudents=''}\r\n        filters.pageNumber = 1\r\n        setPage({ skip: 0, take: page.take })\r\n        setCourseFilters(filters)\r\n        filterCourses()\r\n    }\r\n    const pageChange = (event: any) => {\r\n        setPage(event.page);\r\n        let currentPage = (event.page.skip / event.page.take) + 1\r\n        let filters = courseFilters\r\n        filters.pageNumber = currentPage\r\n        filters.pageSize = event.page.take\r\n        setCourseFilters(filters)\r\n        filterCourses()\r\n    }\r\n\r\n    const onChangeCourseNameSearch = (e: any) => {\r\n        if (e.target.value && e.target.value != \"\") {\r\n            let filters = courseFilters\r\n            filters.searchCourseName = e.target.value\r\n            setCourseFilters(filters)\r\n            setCourseNameSearch(e.target.value)\r\n        } else {\r\n            clearCourseNameSearch()\r\n        }\r\n    }\r\n    const clearCourseNameSearch = () => {\r\n        let filters = courseFilters\r\n        filters.searchCourseName = \"\"\r\n        filters.pageNumber = 1\r\n        setPage({ skip: 0, take: page.take })\r\n        setCourseFilters(filters)\r\n        setCourseNameSearch(\"\")\r\n        filterCourses();\r\n    }\r\n\r\n    const searchByCourseName = () => {\r\n        if (courseFilters.searchCourseName && courseFilters.searchCourseName != \"\") {\r\n            filterCourses();\r\n        }\r\n    }\r\n\r\n    const onSearchClickEnter = (e: any) => {\r\n        if (courseNameSearch && courseNameSearch != \"\" && e.charCode == 13) {\r\n            searchByCourseName()\r\n        }\r\n    }\r\n\r\n    const getCourseStatus = () => {\r\n        if (filterCourseStatus.length == 0) {\r\n            CourseService.getCourseStatus().then((res: any) => {\r\n                let status: string[] = res.data\r\n                let courseStatusFilter = status.map((element) => ({\r\n                    courseStatus: element + ' ' + \"Courses\",\r\n                    value: element,\r\n\r\n                }));\r\n\r\n                courseStatusFilter.unshift({\r\n                    courseStatus: \"Filter By Course Status\",\r\n                    value: \"\",\r\n\r\n                });\r\n                setFilterCourseStatus(courseStatusFilter)\r\n            })\r\n        }\r\n    }\r\n\r\n    const onStatusFilterChange = (e: any) => {\r\n        setIsPublishedSelected(false)\r\n        setIsUnpublishedStudentsChecked(false)\r\n        let filters = courseFilters\r\n        filters.searchCourseStatus = e.target.value.value\r\n        filters.pageNumber = 1\r\n        setPage({ skip: 0, take: page.take })\r\n\r\n        if(filters.searchCourseStatus=='Published')\r\n        {\r\n            setIsPublishedSelected(true)\r\n        }\r\n        else{\r\n            setIsPublishedSelected(false)\r\n            filters.searchUnpublishedStudents=''\r\n        }\r\n        setCourseFilters(filters)\r\n        filterCourses();\r\n\r\n    }\r\n    const onCourseTypeFilterChange = (e: any) => {\r\n        let filters = courseFilters\r\n        filters.searchCourseType = e.target.value.value\r\n        filters.pageNumber = 1\r\n        setPage({ skip: 0, take: page.take })\r\n        setCourseFilters(filters)\r\n        filterCourses();\r\n\r\n    }\r\n\r\n    const filterCourses = () => {\r\n        setIsLoading(true);\r\n        CourseService.filterCourses(locationCode.id, +orginalSchoolYear.id, courseFilters.pageNumber, courseFilters.pageSize, courseFilters.orderBy, courseFilters.searchCourseName, courseFilters.searchCourseStatus, courseFilters.searchCourseType,courseFilters.searchUnpublishedStudents).then(response => {\r\n            setDefaultExpand(response.data)\r\n            setRefreshSubGrid(!refreshSubGrid)\r\n            setPageAlert('')\r\n        }).catch((ex) => {\r\n            setIsLoading(false);\r\n            setPageAlert('Oops!, Something went wrong. Please try again.')\r\n        }).finally(() => {\r\n            setIsLoading(false);\r\n        })\r\n\r\n\r\n        return () => { mountedRef.current = false }\r\n    }\r\n\r\n\r\n    useEffect(() => {\r\n        setDefaultExpand([])\r\n        if (locationCode.id != \"\" && orginalSchoolYear.id != \"\") {\r\n            getCourses();\r\n        }\r\n        getCourseStatus()\r\n        setUserProfile(LocalStorageService.getUserProfile())\r\n        setCourseNameSearch(\"\")\r\n        setCourseFilters({\r\n            pageNumber: 1,\r\n            pageSize: initialDataState.take,\r\n            orderBy: \"DateDesc\",\r\n            searchCourseStatus: \"\",\r\n            searchCourseType: \"\",\r\n            searchCourseName: \"\",\r\n            searchUnpublishedStudents:\"\"\r\n        })\r\n        setPage(initialDataState)\r\n        setIsPublishedSelected(false)\r\n        setIsUnpublishedStudentsChecked(false)\r\n\r\n\r\n    }, [locationCode.id, orginalSchoolYear]);\r\n\r\n\r\n\r\n\r\n\r\n    const onChangeStudentCount = (count: number, courseId: number) => {\r\n        let courseArray = data;\r\n        let courseIndex = courseArray.findIndex(o => o.courseId == courseId);\r\n        courseArray[courseIndex].totalStudentEnrolled = courseArray[courseIndex].totalStudentEnrolled + count\r\n        setDefaultExpand([...courseArray.slice(0, courseIndex), courseArray[courseIndex], ...courseArray.slice(courseIndex + 1)])\r\n        setRefreshSubGrid(!refreshSubGrid)\r\n\r\n    }\r\n\r\n    const onAssignTeachers = (teachers: IAssignedTeachers[], courseId: number) => {\r\n        let courseArray = data;\r\n        let courseIndex = courseArray.findIndex(o => o.courseId == courseId);\r\n        courseArray[courseIndex].courseTeachers = courseArray[courseIndex].courseTeachers.concat(teachers)\r\n        setDefaultExpand([...courseArray.slice(0, courseIndex), courseArray[courseIndex], ...courseArray.slice(courseIndex + 1)])\r\n\r\n    }\r\n\r\n    const onDeleteTeacher = (teacher: IAssignedTeachers[], courseId: number) => {\r\n        let courseArray = data;\r\n        let courseIndex = courseArray.findIndex(o => o.courseId == courseId);\r\n        courseArray[courseIndex].courseTeachers = teacher\r\n        setDefaultExpand([...courseArray.slice(0, courseIndex), courseArray[courseIndex], ...courseArray.slice(courseIndex + 1)])\r\n\r\n    }\r\n    const updateCourseStatus = (courseId: number) => {\r\n        let courseArray = data;\r\n        let courseIndex = courseArray.findIndex(o => o.courseId == courseId);\r\n        if (courseArray[courseIndex].courseStatus != \"New\") {\r\n            courseArray[courseIndex].courseStatus = \"Edited\"\r\n        }\r\n\r\n        setDefaultExpand([...courseArray.slice(0, courseIndex), courseArray[courseIndex], ...courseArray.slice(courseIndex + 1)])\r\n    }\r\n\r\n    const getNewCourseTeachers = (courseTeachers: any[], newCourseTeachers: any[], action: string) => {\r\n        if (action == \"add\") {\r\n            let newTeachers = [...courseTeachers, ...newCourseTeachers].reduce((courseTeachers, teacher) => {\r\n                const duplicateTeacher = courseTeachers.find((courseTeacher: any) => courseTeacher.teacherId === teacher.teacherId);\r\n                if (!duplicateTeacher) {\r\n                    courseTeachers.push(teacher);\r\n                }\r\n                return courseTeachers;\r\n            }, []);\r\n            return newTeachers\r\n        } else {\r\n            let newTeachers = courseTeachers.filter(oldTeacher =>\r\n                newCourseTeachers.some(newTeacher => newTeacher === oldTeacher.teacherId)\r\n            );\r\n            return newTeachers;\r\n        }\r\n    }\r\n\r\n    const updateCourseInfo = (courseId: number, courseTeachers: any[], studentCount: number, action: string) => {\r\n        let courseArray = data;\r\n        let courseIndex = courseArray.findIndex(o => o.courseId == courseId);\r\n        if (courseArray[courseIndex].courseStatus != \"New\") {\r\n            courseArray[courseIndex].courseStatus = \"Edited\"\r\n        }\r\n\r\n        let newCourseTeachers = getNewCourseTeachers(courseArray[courseIndex].courseTeachers, courseTeachers, action)\r\n        courseArray[courseIndex].courseTeachers = newCourseTeachers;\r\n        courseArray[courseIndex].totalStudentEnrolled = action == \"add\" ? studentCount + courseArray[courseIndex].totalStudentEnrolled : studentCount\r\n        setRefreshSubGrid(!refreshSubGrid)\r\n        setDefaultExpand([...courseArray.slice(0, courseIndex), courseArray[courseIndex], ...courseArray.slice(courseIndex + 1)])\r\n    }\r\n\r\n\r\n    //On click of expand this function will call\r\n    const SubGridHost =\r\n        //useMemo(() =>\r\n        useCallback((props: any) => {\r\n\r\n            return (\r\n                <div>\r\n                    <CourseDetail sharedCourses={props.dataItem.starsSharedCourses} courseStatus={props.dataItem.courseStatus} dataSource={props.dataItem.courseId} location={locationCode.id} onFormAction={onFormAction} />\r\n                    {props.dataItem.courseType && props.dataItem.courseType.toLowerCase() == \"shared\" && <IndividualCourses courseUniqueId={props.dataItem.courseUniqueId} courseStatus={props.dataItem.courseStatus} updateCourseInfo={updateCourseInfo} courseId={props.dataItem.courseId} locationCode={locationCode.id} />}\r\n                    <AssignedTeachers courseUniqueId={props.dataItem.courseUniqueId} isSharedCourse={props.dataItem.courseType && props.dataItem.courseType.toLowerCase() == \"shared\" ? true : false} courseStatus={props.dataItem.courseStatus} courseId={props.dataItem.courseId} courseSource={props.dataItem.courseOrginType} isEditable={true}\r\n                        locationCode={locationCode.id} onAssignTeachers={onAssignTeachers} onDeleteTeacher={onDeleteTeacher} updateCourseStatus={updateCourseStatus} />\r\n                    {(!props.dataItem.courseType || (props.dataItem.courseType && props.dataItem.courseType.toLowerCase() != \"shared\")) &&\r\n                        <AssignedAdditionalStaff courseUniqueId={props.dataItem.courseUniqueId} courseStatus={props.dataItem.courseStatus} courseId={props.dataItem.courseId}\r\n                            courseSource={props.dataItem.courseOrginType} isEditable={true} locationCode={locationCode.id} updateCourseStatus={updateCourseStatus} />}\r\n                    <EnrolledStudent isSharedCourse={props.dataItem.courseType && props.dataItem.courseType.toLowerCase() == \"shared\" ? true : false} coursePurpose={props.dataItem.coursePurpose} courseStatus={props.dataItem.courseStatus} courseId={props.dataItem.courseId} courseSource={props.dataItem.courseOrginType}\r\n                        isEditable={true} locationCode={locationCode.id}\r\n                        onChangeStudentCount={onChangeStudentCount}\r\n\r\n                        updateCourseStatus={updateCourseStatus}\r\n                    />\r\n                    <LicenseSummary courseId={props.dataItem.courseId} />\r\n                </div>\r\n            )\r\n        }\r\n            , [refreshSubGrid]\r\n        )\r\n\r\n    //const onEnrolledStudentSave = () => { }\r\n    const GridColumnHierarchyExpand = (props: any) => <GridHierarchyExpand {...props} />\r\n    const GridColumnCourses = (props: any) => {\r\n        const [editable, setIsEditable] = useState({ 'isEditable': false, 'buttonText': 'Edit' });\r\n        const [name, setOnChangeName] = useState(props.dataItem.courseName);\r\n        const onChangeName = (event: any) => {\r\n            const target = event.target\r\n            const regex = /[!@#$%^&*~`\\\\]+/;\r\n            if (target.value != '' && !regex.test(target.value)) {\r\n                courseNameChangeError.courseNameError = ''\r\n                setOnChangeName(target.value);\r\n            } else if (regex.test(target.value)) {\r\n                setOnChangeName(target.value)\r\n                courseNameChangeError.courseNameError = \"Some characters are not allowed in course title for example : !@#$%^&*\\\\~` \"\r\n            }\r\n            else {\r\n                courseNameChangeError.courseNameError = \"Course name is required.\"\r\n                setOnChangeName(target.value);\r\n            }\r\n        }\r\n        const [courseNameChangeError, setCourseNameChangeError] = useState({\r\n            courseNameError: ''\r\n        })\r\n        const courseNameValidate = () => {\r\n\r\n            if (courseNameChangeError.courseNameError) {\r\n                return false;\r\n            }\r\n\r\n            return true;\r\n        };\r\n\r\n        const onEditClose = () => {\r\n            courseNameChangeError.courseNameError = '';\r\n            setOnChangeName(props.dataItem.courseName)\r\n            setIsEditable({ 'isEditable': false, 'buttonText': 'Edit' })\r\n        }\r\n\r\n        const onEditClick = () => {\r\n            if (editable.isEditable) {\r\n                let editCourseName: ICourses = {\r\n                    courseId: props.dataItem.courseId,\r\n                    schoolDBN: locationCode.id,\r\n                    schoolYear: +orginalSchoolYear.id,\r\n                    courseName: name,\r\n                    coursePurpose: '',\r\n                    courseCode: '',\r\n                    isMerged: 0,\r\n                    courseOrginType: '',\r\n                    courseContentType: '',\r\n                    courseStatus: '',\r\n                    totalStudentEnrolled: 0,\r\n                    totalStudentUnpublished: 0,\r\n                    courseTeachers: [],\r\n                    vendorContents: []\r\n                }\r\n                if (courseNameValidate()) {\r\n\r\n                    CourseService.edit(editCourseName).then(response => {\r\n                        if (!response.data.isValidResponse) {\r\n                            //TODO: Display error message in proper format\r\n                            courseNameChangeError.courseNameError = response.data.errors.join();\r\n                            // setOnChangeName(props.dataItem.courseName)\r\n                            // setTimeout(() => { setPageAlert('') }, 8000);\r\n                            setIsEditable({ 'isEditable': true, 'buttonText': 'Save' })\r\n                        }\r\n                        else {\r\n                            // Display Success message \r\n                            setOnChangeName(editCourseName.courseName);\r\n                            let courseArray = data;\r\n                            let courseIndex = courseArray.findIndex(o => o.courseId == editCourseName.courseId);\r\n                            courseArray[courseIndex].courseName = editCourseName.courseName\r\n                            if (courseArray[courseIndex].courseStatus != \"New\") {\r\n                                courseArray[courseIndex].courseStatus = \"Edited\"\r\n                            }\r\n                            setDefaultExpand([...courseArray.slice(0, courseIndex), courseArray[courseIndex], ...courseArray.slice(courseIndex + 1)])\r\n                            setRefreshSubGrid(!refreshSubGrid)\r\n                            setIsEditable({ 'isEditable': false, 'buttonText': 'Edit' })\r\n                        }\r\n                    })\r\n                }\r\n\r\n            }\r\n            else {\r\n                setIsEditable({ 'isEditable': true, 'buttonText': 'Save' })\r\n            }\r\n        }\r\n\r\n        function CourseNameBadge(props: ICourses) {\r\n\r\n            return (\r\n\r\n                <>\r\n                    {\r\n                        <OverlayTrigger\r\n                            key={props.courseId}\r\n                            placement='top'\r\n                            overlay={\r\n                                <Tooltip id={`tooltip-${props.courseId}`}>\r\n                                    {props.courseName}\r\n                                </Tooltip>\r\n                            }\r\n                        >\r\n                            {(userProfile?.role?.roleName != 'Central Staff' && orginalSchoolYear.isCurrent != 0 && props.courseStatus != \"Closed\") ? <Button key={props.courseId} className=\"text-dark mb-0 h4 p-0 font-weight-bold btn-lg title-edit text-left\" variant=\"link\" style={{ display: editable.isEditable ? \"none\" : \"block\" }} onClick={() => onEditClick()}>{props.courseName}</Button> :\r\n                                <Button key={props.courseId} className=\"text-dark mb-0 h4 p-0 font-weight-bold btn-lg  text-left\" variant=\"link\" >{props.courseName}</Button>}\r\n                        </OverlayTrigger>\r\n                    }\r\n                </>\r\n            );\r\n        }\r\n\r\n        function TeacherBadge() {\r\n\r\n            return (\r\n\r\n                <>\r\n                    {props.dataItem.courseTeachers.map((item: IAssignedTeachers) => (\r\n                        <OverlayTrigger\r\n                            key={item.teacherId}\r\n                            placement='top'\r\n                            overlay={\r\n                                <Tooltip id={`tooltip-${item.teacherId}`}>\r\n                                    {item.firstName + item.lastName + '(' + item.role + ')'}\r\n                                </Tooltip>\r\n                            }\r\n                        >\r\n                            <Button key={item.teacherId} className={item.role.toLowerCase() == \"teacher of record\" ? \"btn badge badge-warning badge-teacher-record border-0 mr-1\" : \"btn badge badge-warning border-0 mr-1\"}>{item.teacherInitial ? item.teacherInitial : item.firstName?.charAt(0) + item.lastName?.charAt(0)}</Button>\r\n                        </OverlayTrigger>\r\n                    ))}\r\n                </>\r\n            );\r\n        }\r\n\r\n\r\n\r\n        return (\r\n            <td className='td-course-title'>\r\n                <div>\r\n                    <div className=\"input-group\" style={{ display: editable.isEditable ? \"flex\" : \"none\" }}>\r\n                        <input type=\"text\" name=\"description\" className=\"form form-control form-control-sm text-ellipse\" value={name} onChange={onChangeName} maxLength={128} />\r\n                        <button type=\"button\" onClick={(e) => onEditClose()} className=\"close\" aria-label=\"Close\">\r\n                            <span aria-hidden=\"true\">&times;</span>\r\n                        </button>\r\n                        <div className=\"input-group-append\">\r\n                            <Button className=\"btn btn-primary btn-sm\" onClick={(e) => onEditClick()}>{editable.buttonText}</Button>\r\n                        </div>\r\n                    </div>\r\n                    <div className=\"text-danger small\">{courseNameChangeError.courseNameError}</div>\r\n                    <CourseNameBadge {...props.dataItem} />\r\n                    <div className=\"text-secondary\">\r\n                        {props.dataItem.courseOrginType.toLowerCase() === 'lmi' ? '' :\r\n                            <div>Course Code: {props.dataItem.courseCode}</div>}\r\n                        <div>Assigned Teachers: <TeacherBadge /> </div>\r\n                        {/* <div className=\"d-flex flex-row\"> */}\r\n                        <div className='mr-1'><span >Students: {props.dataItem.totalStudentEnrolled}</span>\r\n                            {props.dataItem.starsSharedCourses.length != 0 &&\r\n                                <SharedCoursesList\r\n                                    sharedCourses={props.dataItem.starsSharedCourses}\r\n                                    width='70%'\r\n\r\n                                />\r\n                            }</div>\r\n                            {props.dataItem.courseStatus=='Published' && props.dataItem.totalStudentUnpublished>0 &&\r\n\r\n                        <div className='mr-1 text-danger'>\r\n\r\n                        <OverlayTrigger\r\n                              placement='bottom'\r\n                              overlay={\r\n                                  <Tooltip id={`tooltip}`}>\r\n                                    Unpublished students were not sent to LMS due to missing username.\r\n                                    Republish course once available.\r\n                                  </Tooltip>\r\n                              }\r\n                          >\r\n                             <span><i className='fas fa-exclamation-triangle mr-1'></i>Unpublished Students:</span></OverlayTrigger>\r\n                            \r\n                           {props.dataItem.totalStudentUnpublished}\r\n                         </div>\r\n                        }\r\n                        {/* </div> */}\r\n\r\n                    </div>\r\n                </div>\r\n            </td>\r\n        )\r\n    }\r\n\r\n    const GridColumnButton = (props: any) => {\r\n        let propsData = props.dataItem as ICourseDetail\r\n        const overlayTarget = useRef(null);\r\n        const [showConfirmation, setShowConfirmation] = useState({\r\n            canShow: false,\r\n            title: '',\r\n            action: ''\r\n        });\r\n\r\n        const onConfirmation = (e: any, title: string, action: string) => {\r\n            setShowConfirmation({ canShow: true, title: title, action: action })\r\n            e.preventDefault();\r\n        }\r\n\r\n        const onCourseAction = (e: any, action: string) => {\r\n            setIsLoading(true);\r\n            let courseDetail = props.dataItem as ICourseDetail\r\n            courseDetail.schoolDBN = locationCode.id\r\n            switch (action) {\r\n                case 'Publish':\r\n                    CourseService.publishCourse(courseDetail).then(response => {\r\n\r\n                        if (!response.data.isValidResponse) {\r\n                            //TODO: Display error message in proper format\r\n                            setPageAlert(response.data.errors.join())\r\n                            // setTimeout(() => { setPageAlert('') }, 8000);\r\n\r\n                        }\r\n                        else {\r\n\r\n                            filterCourses()\r\n                            setPageAlert('')\r\n                        }\r\n                    }).finally(() => {\r\n                        setIsLoading(false);\r\n                        setTimeout(() => { setPageAlert('') }, 8000);\r\n                    })\r\n                    break;\r\n                case 'Delete':\r\n                    CourseService.deleteCourse(courseDetail).then(response => {\r\n\r\n                        filterCourses()\r\n                    }).finally(() => {\r\n                        setIsLoading(false);\r\n                        setPageAlert('')\r\n                    })\r\n                    break;\r\n                case 'Close':\r\n                    setIsLoading(true)\r\n                    CourseService.closeCourse(courseDetail).then(response => {\r\n                        let courseArray = data;\r\n                        let courseIndex = courseArray.findIndex(o => o.courseId == courseDetail.courseId);\r\n                        courseArray[courseIndex].courseStatus = 'Closed'\r\n                        setDefaultExpand([...courseArray.slice(0, courseIndex), courseArray[courseIndex], ...courseArray.slice(courseIndex + 1)])\r\n                    }).finally(() => {\r\n                        setIsLoading(false);\r\n                        setPageAlert('')\r\n                    })\r\n                    break;\r\n                case 'Reopen':\r\n                    CourseService.reOpenCourse(courseDetail).then(response => {\r\n                        let courseArray = data;\r\n                        let courseIndex = courseArray.findIndex(o => o.courseId == courseDetail.courseId);\r\n                        courseArray[courseIndex].courseStatus = 'Published'\r\n                        setDefaultExpand([...courseArray.slice(0, courseIndex), courseArray[courseIndex], ...courseArray.slice(courseIndex + 1)])\r\n                    }).finally(() => {\r\n                        setIsLoading(false)\r\n                        setPageAlert('')\r\n                    })\r\n\r\n                    break;\r\n                default:\r\n                    break;\r\n            }\r\n            e.preventDefault();\r\n        }\r\n\r\n        const getVendorContent = (props: any) => (\r\n            props.dataItem.vendorContents?.map((value: any, i: number) => (\r\n                <span>test</span>\r\n            ))\r\n        )\r\n\r\n        const hasIlearnNYCContent = (props: any) => {\r\n            return (showConfirmation.action == \"Publish\" && (props.dataItem.totalStudentEnrolled > 0   && !(props.dataItem as ICourses).vendorContents.some(x => x.vendorContentName ==='iLearnNYC Student License')))\r\n        }\r\n        return (\r\n            <>\r\n                {/* <Confirmation showConfirmation={showConfirmation}  ref={overlayTarget}></Confirmation>  */}\r\n                <Modal size=\"lg\"\r\n                    show={showConfirmation.canShow}\r\n                    onHide={() => { setShowConfirmation({ canShow: false, title: '', action: '' }) }}\r\n                    animation={false}\r\n                    backdrop=\"static\"\r\n                    keyboard={false}>\r\n                    <Modal.Header closeButton className=\"bg-primary text-white\">\r\n                        <Modal.Title>\r\n                            {showConfirmation.action == 'Close' && \"Close course\"}\r\n                            {showConfirmation.action == 'Delete' && \"Delete course\"}\r\n                            {showConfirmation.action == 'Reopen' && \"Reopen course\"}\r\n                            {(showConfirmation.action != 'Close' && showConfirmation.action != 'Delete' && showConfirmation.action != 'Reopen') && \"Publish to iLearn\"}\r\n                        </Modal.Title>\r\n                    </Modal.Header>\r\n                    <Modal.Body>\r\n\r\n                        <b> {showConfirmation.action != 'Publish' && showConfirmation.title} </b>\r\n                        {(showConfirmation.action == 'Publish' && props.dataItem.vendorContents.length == 0 && props.dataItem.starsSharedCourses.length == 0) ?\r\n                            <div>\r\n                                You are publishing <b> {showConfirmation.title} </b> course. Are you sure you want to proceed?\r\n\r\n                            </div> : (showConfirmation.action == 'Publish' && props.dataItem.vendorContents.length != 0 && props.dataItem.starsSharedCourses.length == 0) ?\r\n                                <div>\r\n                                    You are publishing <b> {showConfirmation.title} </b> course with the following vendor content.\r\n                                    <Card className=\"mt-3 mb-3\">\r\n                                        <Card.Body>\r\n                                            {props.dataItem.vendorContents.length != 0 &&\r\n                                                <div>\r\n                                                    <div className=\"text-muted small\">Vendor Content:</div>\r\n                                                    <div className=\"font-weight-bold\">\r\n                                                        {props.dataItem.vendorContents?.map((value: any, i: number) => (\r\n                                                            <span>{value.vendorContentName}  {i != props.dataItem.vendorContents.length - 1 ? ',' : ' '} </span>\r\n                                                        ))}\r\n                                                    </div></div>}\r\n\r\n                                        </Card.Body>\r\n                                    </Card>\r\n                                    <div className=\"font-weight-normal\">Are you sure you want to proceed? You will not be able to change this.</div>\r\n                                </div> : (showConfirmation.action == 'Publish' && props.dataItem.vendorContents.length == 0 && props.dataItem.starsSharedCourses.length != 0) ?\r\n                                    <div>\r\n                                        You are publishing <b> {showConfirmation.title} </b> course that is part of these shared instruction courses\r\n                                        <Card className=\"mt-3 mb-3\">\r\n                                            <Card.Body>\r\n                                                {props.dataItem.starsSharedCourses.length != 0 &&\r\n                                                    <div>\r\n                                                        <div className=\"text-muted small\">Shared Instruction Courses:</div>\r\n                                                        <div className=\"font-weight-bold\">\r\n                                                            {props.dataItem.starsSharedCourses?.map((value: any, i: number) => (\r\n                                                                <span>{value}  {i != props.dataItem.starsSharedCourses.length - 1 ? ',' : ' '} </span>\r\n                                                            ))}\r\n                                                        </div></div>}\r\n\r\n                                            </Card.Body>\r\n                                        </Card>\r\n                                        <div className=\"font-weight-normal\">Are you sure you want to proceed?</div>\r\n                                    </div> : (showConfirmation.action == 'Publish' && props.dataItem.vendorContents.length != 0 && props.dataItem.starsSharedCourses.length != 0) &&\r\n                                    <div>\r\n                                        You are publishing <b> {showConfirmation.title} </b> course with the following vendor content.\r\n                                        <Card className=\"mt-3 mb-3\">\r\n                                            <Card.Body>\r\n                                                {props.dataItem.vendorContents.length != 0 &&\r\n                                                    <div>\r\n                                                        <div className=\"text-muted small\">Vendor Content:</div>\r\n                                                        <div className=\"font-weight-bold\">\r\n                                                            {props.dataItem.vendorContents?.map((value: any, i: number) => (\r\n                                                                <span>{value.vendorContentName}  {i != props.dataItem.vendorContents.length - 1 ? ',' : ' '} </span>\r\n                                                            ))}\r\n                                                        </div></div>}\r\n\r\n                                            </Card.Body>\r\n                                        </Card>\r\n                                        And part of these shared instruction courses\r\n                                        <Card className=\"mt-3 mb-3\">\r\n                                            <Card.Body>\r\n                                                {props.dataItem.starsSharedCourses.length != 0 &&\r\n                                                    <div>\r\n                                                        <div className=\"text-muted small\">Shared Instruction Courses:</div>\r\n                                                        <div className=\"font-weight-bold\">\r\n                                                            {props.dataItem.starsSharedCourses?.map((value: any, i: number) => (\r\n                                                                <span>{value}  {i != props.dataItem.starsSharedCourses.length - 1 ? ',' : ' '} </span>\r\n                                                            ))}\r\n                                                        </div></div>}\r\n\r\n                                            </Card.Body>\r\n                                        </Card>\r\n                                        <div className=\"font-weight-normal\">Are you sure you want to proceed? You will not be able to change this.</div>\r\n                                    </div>\r\n                        }\r\n\r\n                    </Modal.Body>\r\n                    <Modal.Footer>\r\n\r\n                        <Button variant=\"secondary\" onClick={(e) => { setShowConfirmation({ canShow: false, title: '', action: '' }) }}>Cancel</Button>\r\n                        {\r\n                            ((props.dataItem.courseStatus == \"Edited\" && (showConfirmation.action == \"Delete\" || showConfirmation.action == \"Close\")) )\r\n                                ? ''\r\n                                : <Button variant=\"primary\" onClick={(e) => { onCourseAction(e, showConfirmation.action) }}>{showConfirmation.action}</Button>\r\n                        }\r\n \r\n                        {/* {(props.dataItem.courseStatus == \"Edited\" && (showConfirmation.action == \"Delete\" || showConfirmation.action == \"Close\")) ? '' : <Button variant=\"primary\" onClick={(e) => { onCourseAction(e, showConfirmation.action) }}>{showConfirmation.action}</Button>} */}\r\n                    </Modal.Footer>\r\n                </Modal>\r\n\r\n\r\n                <td className=\"text-right td-course-btn\" style={{ overflow: 'visible' }}>\r\n                    {(isLoading && overlayTarget?.current) ? <SplashScreen /> :\r\n                        <DropdownButton\r\n                            menuAlign=\"right\"\r\n                            title={<i className='fas fa-bars'></i>}\r\n                            id=\"dropdown-menu-align-right\"\r\n                            size=\"sm\"\r\n                            variant=\"outline-primary\"\r\n                            className=\"menu-bars\"\r\n                        >\r\n                            {(props.dataItem.courseStatus != \"Closed\" && props.dataItem.courseStatus != \"Published\") &&\r\n                                <Dropdown.Item onClick={(e) => {\r\n                                    onConfirmation(e, \"\" + propsData.courseName + \"\"\r\n                                        , 'Publish')\r\n                                }}>Publish</Dropdown.Item>}\r\n                            {(props.dataItem.courseStatus == \"Closed\" || (props.dataItem.courseStatus == \"New\" || (props.dataItem.courseOrginType == \"STARS\" && props.dataItem.courseStatus != \"Published\" && props.dataItem.courseStatus != \"Edited\"))) ? '' : <Dropdown.Item onClick={(e) => { onConfirmation(e, props.dataItem.courseStatus == \"Edited\" ? ` Course has been modified. Please publish to iLearn, before the course ${propsData.courseName} can be closed.` : `Are you sure  you want to Close the course ${propsData.courseName} ?`, 'Close') }}>Close</Dropdown.Item>}\r\n                            {/* {(props.dataItem.courseStatus == \"New\" && props.dataItem.courseOrginType == \"STARS\") && <Dropdown.Item onClick={(e) => { mergeCourses() }}>Merge {checkedCourses.length === 0 ? '' : checkedCourses.length} Courses </Dropdown.Item>} */}\r\n                            {(props.dataItem.courseOrginType == \"STARS\" || (props.dataItem.courseType && props.dataItem.courseType.toLowerCase() == \"shared\" && props.dataItem.courseStatus != \"Closed\")) ? '' : <Dropdown.Item onClick={(e) => { onConfirmation(e, props.dataItem.courseStatus == \"Edited\" ? ` Course has been modified. Please publish to iLearn, before the course ${propsData.courseName} can be deleted. ` : `Are you sure  you want to Delete the course ${propsData.courseName} ?`, 'Delete') }}>Delete</Dropdown.Item>}\r\n                            {props.dataItem.courseStatus == \"Closed\" && <Dropdown.Item onClick={(e) => { onConfirmation(e, `Are you sure  you want to Reopen the course ${propsData.courseName} ?`, 'Reopen') }}>Reopen</Dropdown.Item>}\r\n                        </DropdownButton>\r\n\r\n                    }\r\n                </td >\r\n            </>\r\n        )\r\n    }\r\n\r\n    const [showVendorContent, setShowVendorContent] = useState(FormMode.None);\r\n    const [showCoursesForSelectedVendorContent, setShowCoursesForSelectedVendorContent] = useState(FormMode.None);\r\n\r\n\r\n    const GetStatusBadgeCssClass = (status: string) => {\r\n\r\n        if (status.toLowerCase() === \"new\") {\r\n            return \"badge badge-blue-gray\"\r\n        }\r\n        else if (status.toLowerCase() === \"edited\") {\r\n            return \"badge badge-secondary\"\r\n        }\r\n        else if (status.toLowerCase() === \"published\") {\r\n            return \"badge badge-success\"\r\n        }\r\n        else if (status.toLowerCase() === \"closed\") {\r\n            return \"badge badge-danger\"\r\n        }\r\n        else if (status.toLowerCase() === \"reopened\") {\r\n            return \"badge badge-info\"\r\n        }\r\n    }\r\n\r\n    const GridColumnVendorContent = (props: any) => {\r\n        let vendorContents: Array<ICourseVendorContent> = props.dataItem.vendorContents;\r\n        let onDeleteVendorContent = (VendorContentId: number) => {\r\n            setCourseId(props.dataItem.courseId)\r\n            setVendorContentId(VendorContentId)\r\n            setShowVendorContent(FormMode.Delete)\r\n        }\r\n        let onAddVendorContent = () => {\r\n            setCourseId(props.dataItem.courseId)\r\n            setShowVendorContent(FormMode.New)\r\n        }\r\n\r\n        function VendorContentBadge(props: ICourseVendorContent) {\r\n\r\n            return (\r\n\r\n                <>\r\n                    <OverlayTrigger\r\n                        key={props.vendorContentId}\r\n                        placement='top'\r\n                        overlay={\r\n                            <Tooltip id={`tooltip-${props.vendorContentId}`}>\r\n                                {props.vendorContentName}\r\n                            </Tooltip>\r\n                        }\r\n                    >\r\n                        <div className=\"form form-control form-control-sm\" key={props.vendorContentId}>{props.vendorContentName}</div>\r\n                    </OverlayTrigger>\r\n\r\n                </>\r\n            );\r\n        }\r\n\r\n        let vendorList = vendorContents.map((value, i) =>\r\n\r\n            <div className=\"input-group\" key={i}>\r\n                <VendorContentBadge {...value} />\r\n                {userProfile?.role?.roleName != 'Central Staff' && orginalSchoolYear.isCurrent != 0 && props.dataItem.courseContentType != 'Content to be Teacher-Created' &&\r\n                    <div className=\"input-group-append\">\r\n                        {value?.statusCode?.toLowerCase() == 's' || props.dataItem.courseStatus.toLowerCase() === 'closed' || props.dataItem.courseStatus.toLowerCase() === 'published' || props.dataItem.courseStatus.toLowerCase() === 'reopened' ? ' ' :\r\n                            <Button size=\"sm\" variant=\"outline-secondary\" onClick={(e) => { onDeleteVendorContent(value.vendorContentId) }}><i className=\"fas fa-trash-alt\"></i></Button>\r\n                        }\r\n                        {(vendorContents.length - 1 == i && userProfile?.role?.roleName != 'Central Staff' && orginalSchoolYear.isCurrent != 0 && props.dataItem.courseStatus.toLowerCase() != 'closed') && (\r\n                            <Button size=\"sm\" variant=\"outline-primary\" onClick={(e) => { onAddVendorContent() }}><i className=\"fas fa-plus\"></i></Button>\r\n                        )}\r\n                    </div>\r\n                }\r\n            </div>\r\n        );\r\n        return (\r\n            <td className=\"td-vendor-content\">\r\n                <div className=\"input-group-space\">\r\n                    {vendorList}\r\n                    <div style={{ display: vendorContents.length == 0 ? \"flex\" : \"none\" }} >\r\n                        {userProfile?.role?.roleName != 'Central Staff' && orginalSchoolYear.isCurrent != 0 && props.dataItem.courseStatus.toLowerCase() != 'closed' && props.dataItem.courseContentType != 'Content to be Teacher-Created' && <Button size=\"sm\" variant=\"outline-primary\" onClick={(e) => { onAddVendorContent() }}><i className=\"fas fa-plus\"></i></Button>}\r\n                    </div>\r\n                </div>\r\n            </td>)\r\n    }\r\n\r\n    const GridStatusCell = (props: any) => {\r\n        return (\r\n            <td className='td-course-status'>\r\n                <div className={GetStatusBadgeCssClass(props.dataItem.courseStatus)}>{props.dataItem.courseStatus}</div>\r\n            </td>\r\n        )\r\n    }\r\n\r\n    const onGridCheckBoxClick = (dataItem: any) => {\r\n        dataItem.isSelected = !dataItem.isSelected;\r\n        if (dataItem.isSelected) {\r\n            let items: ICourses = {\r\n                courseId: dataItem.courseId,\r\n                schoolDBN: dataItem.schoolDBN,\r\n                schoolYear: +orginalSchoolYear.id,\r\n                courseName: dataItem.courseName,\r\n                coursePurpose: dataItem.coursePurpose,\r\n                courseCode: dataItem.courseCode,\r\n                isMerged: dataItem.isMerged,\r\n                courseOrginType: dataItem.courseOrginType,\r\n                courseContentType: dataItem.courseContentType,\r\n                courseStatus: dataItem.courseStatus,\r\n                totalStudentEnrolled: dataItem.totalStudentEnrolled,\r\n                totalStudentUnpublished: dataItem.totalStudentUnpublished,\r\n                courseTeachers: dataItem.courseTeachers,\r\n                vendorContents: dataItem.vendorContents\r\n            }\r\n            let mergeData: IMergeCourseSpec = {\r\n                courseId: dataItem.courseId,\r\n                isPrimary: false\r\n            }\r\n\r\n            setCheckedCourses([...checkedCourses, items])\r\n            setMergeCourseData([...mergeCourseData, mergeData]\r\n            )\r\n        }\r\n        else {\r\n            const items = checkedCourses.filter(item => item.courseId !== dataItem.courseId);\r\n            const mergeItems = mergeCourseData.filter(item => item.courseId !== dataItem.courseId);\r\n            setCheckedCourses(items)\r\n            setMergeCourseData(mergeItems)\r\n        }\r\n        forceUpdate();\r\n    }\r\n\r\n    const [courseNameChangeError, setCourseNameChangeError] = useState({\r\n        courseNameError: ''\r\n    })\r\n\r\n    const [errors, setErrors] = useState({\r\n        mergeError: ''\r\n    })\r\n    const validate = () => {\r\n        let vendorCheck: any = checkedCourses.filter(item => { return item.vendorContents.length > 0 });\r\n        let newCourseCheck: any = checkedCourses.filter(item => item.courseStatus.toLowerCase() !== 'new');\r\n        let mergeCourseCheck: any = checkedCourses.filter(item => item.isMerged === 1);\r\n        let coursesOriginCheck: any = checkedCourses.filter(item => item.courseOrginType.toLowerCase() !== 'stars');\r\n        let error = {\r\n            mergeError: '',\r\n        };\r\n        if (vendorCheck.length > 0) { error.mergeError = \"Please remove all vendor contents before merging the course.\"; }\r\n        if (coursesOriginCheck != '') { error.mergeError = \"Only Stars course can be merged.\"; }\r\n        if (newCourseCheck != '') { error.mergeError = \"Only New courses can be merged. Deselect Published courses.\"; }\r\n        if (checkedCourses.length < 2) { error.mergeError = \"Please choose 2 or more courses in order to merge\"; }\r\n        if (checkedCourses.length > 10) { error.mergeError = \"Cannot merge more than 10 courses. Please deselect.\"; }\r\n        if (mergeCourseCheck != '') { error.mergeError = \"Merged courses can't be merged again\"; }\r\n        setErrors(error);\r\n        if (error.mergeError) {\r\n            setFormMode(FormMode.Error)\r\n            return false;\r\n        }\r\n\r\n        return true;\r\n    };\r\n    // Header Checkbox Template.. Binds the CheckBox in the Header\r\n    const [headerCheckBoxValue, setHeaderCheckBox] = useState(false);\r\n    const onHeaderCheckBoxClick = (event: any, products?: any) => {\r\n        let checked = event.target.checked;\r\n        setHeaderCheckBox(checked)\r\n    }\r\n\r\n    const closeCourseVendorContentModal = (error: string) => {\r\n        if (error != \"\") {\r\n            //TODO: Display error message in proper format\r\n            setPageAlert(error)\r\n            setTimeout(() => { setPageAlert('') }, 8000);\r\n\r\n        }\r\n        CourseService.getVendorContentData(courseIdSelected, locationCode.id).then(response => {\r\n            let vendorContents = response.data as ICourseVendorContent[];\r\n            let courseArray = data;\r\n            let courseIndex = courseArray.findIndex(o => o.courseId == courseIdSelected);\r\n            courseArray[courseIndex].vendorContents = vendorContents;\r\n            setDefaultExpand(courseArray);\r\n            let courses = checkedCourses\r\n            if (courses.length > 0) {\r\n                let index = courses.findIndex(o => o.courseId == courseIdSelected);\r\n                courses[index].vendorContents = vendorContents;\r\n                setCheckedCourses(courses);\r\n            }\r\n            setRefreshSubGrid(!refreshSubGrid)\r\n            setShowVendorContent(FormMode.None)\r\n\r\n        });\r\n    }\r\n\r\n\r\n    const closeCourseForVendorContentModal = (error: string, vendorInfo: IMultipleCoursesVendorContent) => {\r\n        if (error != \"\") {\r\n            //TODO: Display error message in proper format\r\n            setPageAlert(error)\r\n            setTimeout(() => { setPageAlert('') }, 8000);\r\n\r\n        };\r\n        if (vendorInfo.courseId.length !== 0) {\r\n            getCourses();\r\n        }\r\n        setShowCoursesForSelectedVendorContent(FormMode.None);\r\n    }\r\n    const deleteVendorContent = () => {\r\n        let deleteCourseVendorContent: ICourseVendorContent = {\r\n            courseId: courseIdSelected,\r\n            schoolDBN: locationCode.id,\r\n            vendorContentId: vendorContentIdSelected,\r\n            vendorId: 0,\r\n            vendorContentName: '',\r\n            vendorName: '',\r\n            availableLicenses: 0,\r\n            totalLicenses: 0,\r\n            statusCode: ''\r\n        }\r\n        CourseService.delete(deleteCourseVendorContent).then(response => {\r\n            // Display Success message          \r\n            let courseArray = data;\r\n            let courseIndex = courseArray.findIndex(o => o.courseId == courseIdSelected);\r\n            var vendorContentArray = courseArray[courseIndex].vendorContents\r\n            let vendorContentIndex = vendorContentArray.findIndex(o => o.vendorContentId == vendorContentIdSelected);\r\n            vendorContentArray.splice(vendorContentIndex, 1);\r\n            courseArray[courseIndex].vendorContents = vendorContentArray\r\n            if (courseArray[courseIndex].courseStatus != \"New\") {\r\n                courseArray[courseIndex].courseStatus = \"Edited\"\r\n            }\r\n            setDefaultExpand(courseArray);\r\n\r\n            let courses = checkedCourses\r\n            if (courses.length > 0) {\r\n                let index = courses.findIndex(o => o.courseId == courseIdSelected);\r\n                var ContentArray = courses[index].vendorContents\r\n                let ContentIndex = ContentArray.findIndex(o => o.vendorContentId == vendorContentIdSelected);\r\n                ContentArray.splice(ContentIndex, 1);\r\n                courses[index].vendorContents = ContentArray\r\n                setCheckedCourses(courses);\r\n            }\r\n            setRefreshSubGrid(!refreshSubGrid)\r\n            setShowVendorContent(FormMode.None)\r\n        })\r\n\r\n    }\r\n    const onGridExpand = (event: any) => {\r\n        //  dataItem.expanded = !dataItem.expanded;\r\n        let courseArray = data;\r\n        courseArray.map((item: any) => {\r\n            if (event.dataItem.courseId === item.courseId) {\r\n                item.expanded = !event.dataItem.expanded;\r\n            } else {\r\n                item.expanded = false;\r\n            }\r\n        })\r\n        setDefaultExpand(courseArray);\r\n        forceUpdate();\r\n    }\r\n\r\n    const onLicensesClick = () => {\r\n        setShowCoursesForSelectedVendorContent(FormMode.New)\r\n    }\r\n\r\n    const onFormAction = (e: any, course: ICourseDetail, actionType: FormMode) => {\r\n\r\n        switch (actionType) {\r\n            case FormMode.New:\r\n                setFormMode(FormMode.New)\r\n                setDefaultTeacher({ id: '', text: '' })\r\n                setCourseDetail({\r\n                    courseId: 0,\r\n                    schoolDBN: '',\r\n                    schoolYear: 0,\r\n                    courseName: '',\r\n                    courseSource: '',\r\n                    isMerged: 0,\r\n                    courseStatus: '',\r\n                    purpose: '',\r\n                    mergeCourses: [],\r\n                    courseContentType: '',\r\n                    teacherOfRecord: '',\r\n                    startDate: new Date(),\r\n                    endDate: orginalSchoolYear.schoolYearEndDate,\r\n                    createdBy: '',\r\n                    createdOn: new Date(),\r\n                    mergedOn: new Date(),\r\n                    mergedBy: ''\r\n                });\r\n                TeacherService.getTeachersBySchoolDBN(locationCode.id).then(response => {\r\n                    let data = response.data as IAssignedTeachers[]\r\n                    let teacherList = data.map((tl: any) => ({\r\n                        id: tl.teacherId,\r\n                        text: tl.teacherId + ' | ' + tl.firstName + '  ' + tl.lastName\r\n                    }));\r\n                    setTeacherOfRecordList(teacherList)\r\n                    setOriginalTeacherOfRecordList(teacherList)\r\n\r\n                });\r\n                codesetService.getData().then(response => {\r\n                    let data = response.data as ICodeSet[];\r\n                    let purposeList = data.filter(x => x.codeSetName.toLowerCase().includes('coursepurpose'));\r\n                    let contentTypeList = data.filter(x => x.codeSetName.toLowerCase().includes('coursecontenttype')).map((cl: any) => ({\r\n                        id: cl.id,\r\n                        text: cl.displayText\r\n                    }));\r\n                    setPurposeList(purposeList);\r\n                    setContentTypeList(contentTypeList);\r\n                });\r\n                break;\r\n            case FormMode.Edit:\r\n                setDefaultTeacher({ id: '', text: '' })\r\n                let courseUniqueId = data.find(c => c.courseId == course.courseId);\r\n                if (courseUniqueId) {\r\n                    course.courseUniqueId = courseUniqueId.courseUniqueId\r\n                }\r\n\r\n                setCourseDetail(course)\r\n                TeacherService.getTeachersBySchoolDBN(locationCode.id).then(response => {\r\n                    let data = response.data as IAssignedTeachers[]\r\n                    let teacherList = data.map((tl: any) => ({\r\n                        id: tl.teacherId,\r\n                        text: tl.teacherId + ' | ' + tl.firstName + '  ' + tl.lastName\r\n                    }));\r\n                    setTeacherOfRecordList(teacherList)\r\n                    setOriginalTeacherOfRecordList(teacherList)\r\n                    let teacher = teacherList.find(x => (x.id) === course.teacherOfRecord) as IDropDownValue\r\n                    if (teacher != null) {\r\n                        setDefaultTeacher(teacher)\r\n                    }\r\n                    else {\r\n                        TeacherService.getTeacherById(course.teacherOfRecord).then(response => {\r\n                            let teacher = {\r\n                                id: response.data.teacherId,\r\n                                text: response.data.teacherId + ' | ' + response.data.firstName + '  ' + response.data.lastName\r\n                            }\r\n                            setDefaultTeacher(teacher)\r\n                        })\r\n                    }\r\n                });\r\n\r\n                codesetService.getData().then(response => {\r\n                    let data = response.data as ICodeSet[];\r\n                    let purposeList = data.filter(x => x.codeSetName.toLowerCase().includes('coursepurpose'));\r\n\r\n                    let contentTypeList = data.filter(x => x.codeSetName.toLowerCase().includes('coursecontenttype')).map((cl: any) => ({\r\n                        id: cl.id,\r\n                        text: cl.displayText\r\n                    }));\r\n                    setPurposeList(purposeList);\r\n                    setContentTypeList(contentTypeList);\r\n                });\r\n                setFormMode(FormMode.Edit)\r\n\r\n                break;\r\n            default: {\r\n\r\n                break;\r\n            }\r\n        }\r\n        e.preventDefault();\r\n    }\r\n    const onCourseSave = (event: any, actionType: FormMode, data: ICourseDetail) => {\r\n        //  let courseUniqueId = data.find(c=>c.)\r\n        switch (actionType) {\r\n            case FormMode.New:\r\n                event.preventDefault();\r\n                CourseService.postCourse(data).then(response => {\r\n                    // Display Success message\r\n                    if (!response.data.isValidResponse) {\r\n                        //TODO: Display error message in proper format\r\n                        // setPageAlert(response.data.errors.join())\r\n                        setCourseSaveErrorMessage(response.data.errors.join())\r\n                        // setTimeout(() => { setPageAlert('') }, 8000);\r\n\r\n                    } else {\r\n                        getCourses();\r\n                        setCourseSaveErrorMessage(\"\")\r\n                        setFormMode(FormMode.None)\r\n                    }\r\n                }\r\n                );\r\n                //Clear Existing vlues\r\n                break;\r\n            case FormMode.Edit:\r\n                event.preventDefault();\r\n                CourseService.editCourse(data).then(response => {\r\n                    // Display Success message\r\n                    if (!response.data.isValidResponse) {\r\n                        //TODO: Display error message in proper format\r\n                        //   setPageAlert(response.data.errors.join())\r\n                        setCourseSaveErrorMessage(response.data.errors.join())\r\n                        // setTimeout(() => { setPageAlert('') }, 8000);\r\n\r\n                    }\r\n                    else {\r\n                        getCourses();\r\n                        setCourseSaveErrorMessage(\"\")\r\n                        setFormMode(FormMode.None)\r\n                    }\r\n                }\r\n                );\r\n                //Clear Existing vlues\r\n                break;\r\n            default: {\r\n                setCourseSaveErrorMessage(\"\")\r\n                setFormMode(FormMode.None)\r\n                break;\r\n            }\r\n        }\r\n    }\r\n    const onTeacherSearch = (event: any, data: IDropDownValue[]) => {\r\n        setTeacherOfRecordList(data)\r\n    }\r\n\r\n    const onTeacherById = (event: any, teacherEin: string) => {\r\n        TeacherService.getTeacherById(teacherEin).then(response => {\r\n            let teacher = {\r\n                id: response.data.teacherId,\r\n                text: response.data.teacherId + ' | ' + response.data.firstName + '  ' + response.data.lastName\r\n            }\r\n            if (teacher.id != null) {\r\n                let teacherExist = originalTeacherOfRecordList.find(x => x.id === teacher.id)\r\n                if (!teacherExist) {\r\n                    setTeacherOfRecordList(\r\n                        teacherOfRecordList.concat(teacher))\r\n                    setOriginalTeacherOfRecordList(\r\n                        originalTeacherOfRecordList.concat(teacher))\r\n                }\r\n                setDefaultTeacher(teacher)\r\n            }\r\n        })\r\n    }\r\n\r\n    const onMergeClose = (data: FormMode) => {\r\n        setFormMode(data)\r\n\r\n    }\r\n\r\n    const onMergeSave = (event: any, actionType: FormMode, data: IMergeCourseSpec[]) => {\r\n        let mergeCourses: IMergeCourses = { mergeCourses: data };\r\n        switch (actionType) {\r\n            case FormMode.Merge:\r\n                event.preventDefault();\r\n                CourseService.merge(mergeCourses).then(response => {\r\n                    // Display Success message\r\n                    getCourses();\r\n                    setFormMode(FormMode.None)\r\n                }\r\n                );\r\n                break;\r\n            default: {\r\n                setFormMode(FormMode.None)\r\n                break;\r\n            }\r\n        }\r\n    }\r\n    const mergeCourses = () => {\r\n        if (validate()) {\r\n            setFormMode(FormMode.Merge)\r\n        }\r\n        else {\r\n            setFormMode(FormMode.Error)\r\n        }\r\n    }\r\n\r\n    const el = document.querySelector(\".loader-container\");\r\n\r\n    return (\r\n        <div>\r\n            <div style={{ display: 'inline', color: \"red\" }} ></div>\r\n            <Modal\r\n                size=\"lg\"\r\n                show={showVendorContent == FormMode.New}\r\n                onHide={() => { setShowVendorContent(FormMode.None) }}\r\n                animation={false}\r\n                backdrop=\"static\"\r\n                keyboard={false}>\r\n                <Modal.Header closeButton className=\"bg-primary text-white\">\r\n                    <Modal.Title>Vendor Content</Modal.Title>\r\n                </Modal.Header>\r\n                <Modal.Body>\r\n                    <AddVendorContent updateCourseStatus={updateCourseStatus} courseId={courseIdSelected} schoolDBN={locationCode.id} closeCourseVendorContentModal={closeCourseVendorContentModal} />\r\n                </Modal.Body>\r\n            </Modal>\r\n            <Modal\r\n                show={showVendorContent == FormMode.Delete}\r\n                onHide={() => { setShowVendorContent(FormMode.None) }}\r\n                animation={false}\r\n                backdrop=\"static\"\r\n                keyboard={false}>\r\n                <Modal.Header closeButton className=\"bg-primary text-white\">\r\n                    <Modal.Title>Delete Vendor Content</Modal.Title>\r\n                </Modal.Header>\r\n                <Modal.Body>\r\n                    Are you sure you want to delete the Vendor Content ?\r\n                </Modal.Body>\r\n                <Modal.Footer>\r\n                    <Button variant=\"secondary\" onClick={(e) => { setShowVendorContent(FormMode.None) }}>Cancel</Button>\r\n                    <Button variant=\"primary\" type=\"button\" onClick={(e) => { deleteVendorContent() }}>Delete</Button>\r\n                </Modal.Footer>\r\n            </Modal>\r\n            {showCoursesForSelectedVendorContent == FormMode.New && <AddCoursesForVendorContent schoolDBN={locationCode.id} closeCourseForVendorContentModal={closeCourseForVendorContentModal} />}\r\n            {formMode == FormMode.New && <AddNewCourse courseDetail={courseDetail} schoolYear={+orginalSchoolYear.id} location={locationCode.id} formmode={formMode} purpose={purposeList} contentType={contentTypeList} originalTeacherList={originalTeacherOfRecordList} defaultTeacher={defaultTeacher} teacher={teacherOfRecordList} teacherById={onTeacherById} onSearch={onTeacherSearch} onSave={onCourseSave} courseSaveErrorMessage={courseSaveErrorMessage} setCourseSaveErrorMessage={deleteCourseSaveErrorMessage} />}\r\n            {formMode == FormMode.Edit && <AddNewCourse courseDetail={courseDetail} schoolYear={+orginalSchoolYear.id} location={locationCode.id} formmode={formMode} purpose={purposeList} contentType={contentTypeList} originalTeacherList={originalTeacherOfRecordList} defaultTeacher={defaultTeacher} teacher={teacherOfRecordList} teacherById={onTeacherById} onSearch={onTeacherSearch} onSave={onCourseSave} courseSaveErrorMessage={courseSaveErrorMessage} setCourseSaveErrorMessage={deleteCourseSaveErrorMessage} />}\r\n            {formMode == FormMode.Merge && <MergeCourses mergeData={mergeCourseData} courses={checkedCourses} courseCount={checkedCourses.length} formmode={formMode} onMergeClose={onMergeClose} onMerge={onMergeSave} />}\r\n            {formMode == FormMode.Error && <MergeError mergeMessage={errors.mergeError} formmode={formMode} onMergeClose={onMergeClose} onMerge={onMergeSave} />}\r\n            {pageAlert && pageAlert != \"\" && <div className=\"alert alert-danger\" role=\"alert\">\r\n                {pageAlert}\r\n            </div>}\r\n            <Row className=\"mb-3\">\r\n                <Col></Col>\r\n                <Col sm=\"12\" xl=\"5\" xs=\"12\" className='text-right order-first order-xl-last mb-3 mb-xl-0 mt-n5 mt-xl-0'>\r\n                    {userProfile?.role?.roleName != 'Central Staff' && orginalSchoolYear.isCurrent != 0 &&\r\n                        <button type=\"button\" className=\"btn btn-primary ml-2\" onClick={(e) => { onFormAction(e, courseDetail, FormMode.New) }}>\r\n                            <i className=\"fas fa-plus\">  </i>\r\n                            <a> Courses</a>\r\n                        </button>\r\n                    }\r\n\r\n                    {userProfile?.role?.roleName != 'Central Staff' && orginalSchoolYear.isCurrent != 0 &&\r\n                        <OverlayTrigger\r\n                            placement='top'\r\n                            overlay={\r\n                                <Tooltip id={`tooltip}`}>\r\n                                    Add the same vendor content to multiple courses at once.\r\n                                </Tooltip>\r\n                            }\r\n                        >\r\n                            <button type=\"button\" className=\"btn btn-primary ml-1\" onClick={(e) => { onLicensesClick() }}>\r\n                                <i className=\"fas fa-plus\"> </i>\r\n                                <a> Vendor Content to Courses</a>\r\n                            </button>\r\n                        </OverlayTrigger>\r\n                    }</Col>\r\n            </Row>\r\n            <Row className=\"mb-3\">\r\n                <Col xl=\"3\" xs=\"10\" style={{ zIndex: 1 }}>\r\n                    <InputGroup className=\"input-group\">\r\n                        <FormControl\r\n                            placeholder=\"Course name\"\r\n                            onChange={onChangeCourseNameSearch}\r\n                            className=\"form form-control form-control-md text-ellipse\"\r\n                            maxLength={128}\r\n                            value={courseNameSearch}\r\n                            onKeyPress={onSearchClickEnter}\r\n                        />\r\n                        {courseFilters.searchCourseName && courseFilters.searchCourseName != \"\" &&\r\n                            <button type=\"button\" className=\"close mr-3\" onClick={clearCourseNameSearch} aria-label=\"Close\">\r\n                                <span aria-hidden=\"false\">&times;</span>\r\n                            </button>\r\n                        }\r\n                        <div className=\"input-group-append\">\r\n                            <Button className=\"btn btn-primary btn-md \" onClick={searchByCourseName} >\r\n                                Search\r\n                            </Button>\r\n                        </div>\r\n                    </InputGroup>\r\n                </Col>\r\n                <Col xl=\"9\" className='text-right'>\r\n                    <Row>\r\n                        <Col md=\"4\" xl=\"4\" className='text-right mb-1 mb-md-0'>\r\n                            <DropDownList\r\n                                data={sortValue}\r\n                                value={sortValue.find(i => i.value == courseFilters.orderBy)}\r\n                                textField=\"sort\"\r\n                                onChange={onSortValueChange}\r\n                                style={{ width: \"100%\" }}\r\n                            /></Col>\r\n                        <Col md=\"4\" xl=\"4\" className='text-right'>\r\n                            <DropDownList\r\n                                data={filterCourseStatus}\r\n                                textField=\"courseStatus\"\r\n                                value={filterCourseStatus.find(i => i.value == courseFilters.searchCourseStatus)}\r\n                                onChange={onStatusFilterChange}\r\n                                style={{ width: \"100%\" }}\r\n                            />\r\n                            </Col>\r\n                        <Col md=\"4\" xl=\"4\" className='text-right'>\r\n                            <DropDownList\r\n                                data={filterCourseTypes}\r\n                                textField=\"courseType\"\r\n                                onChange={onCourseTypeFilterChange}\r\n                                value={filterCourseTypes.find(i => i.value == courseFilters.searchCourseType)}\r\n                                style={{ width: \"100%\" }}\r\n                            /></Col>\r\n\r\n                    </Row>\r\n                </Col>\r\n            </Row>\r\n            <Row className=\"mb-3 text-right\">\r\n            <Col></Col>\r\n            <Col>\r\n            {isPublishedSelected&&    \r\n                <Checkbox className='text-danger'  value={isUnpublishedStudentsValue}checked={isUnpublishedStudentsChecked} onChange={onUnpublishedStudentChecked} labelPlacement={'after'}>  Show Courses with Unpublished Students Only</Checkbox>}\r\n            </Col>         \r\n            </Row>\r\n            {isLoading && <div className=\"d-flex justify-content-center\"><SplashScreen /></div>}\r\n            <Grid\r\n                data={data.slice(0, page.take)}\r\n                detail={SubGridHost}\r\n                expandField={'expanded'}\r\n                scrollable={\"none\"}\r\n                onExpandChange={onGridExpand}\r\n                skip={page.skip}\r\n                take={page.take}\r\n                total={(data.length > 0 && data[0].totalPages) ? data[0].totalPages : 0}\r\n                pageSize={page.take}\r\n                pageable={{ pageSizes: [10, 25, 50], info: true }}\r\n                onPageChange={pageChange}\r\n                className=\"courses-grid\"\r\n            >\r\n\r\n                {/* <GridColumn field=\"isSelected\" filterable={false} width=\"40px\" title=\" \" cell={props => (\r\n                    <td className=\"pl-0 pr-lg-0 text-center\">\r\n                        {userProfile?.role?.roleName != 'Central Staff' && orginalSchoolYear.isCurrent != 0 &&\r\n                            <input type=\"checkbox\" checked={props.dataItem.isSelected} onChange={() => onGridCheckBoxClick(props.dataItem)} />\r\n                        }</td>\r\n                )} /> */}\r\n\r\n                <GridColumn filterable={false} field=\"expanded\" title=' ' cell={props => (\r\n                    <td className=\"pr-0 td-course-icon\">\r\n                        <div className={`svg-app-icon ${props.dataItem.courseStatus.toLowerCase() === \"published\" ? \" text-success\" : \" text-blue-gray\"} mr-3\"`}>\r\n                            <IconCourseEnvelop courseType={props.dataItem.courseType} courseOrginType={props.dataItem.courseOrginType} merge={props.dataItem.isMerged}></IconCourseEnvelop>\r\n                        </div>\r\n                    </td>\r\n                )} />\r\n                <GridColumn field=\"courseName\" title=\"Courses\" cell={GridColumnCourses} className=\"align-top\" />\r\n                <GridColumn field=\"vendorContent\" title=\"Vendor Content\" cell={GridColumnVendorContent} filterable={false} />\r\n                <GridColumn field=\"courseStatus\" title=\"Status\" cell={GridStatusCell} />\r\n                {userProfile?.role?.roleName != 'Central Staff' && orginalSchoolYear.isCurrent != 0 && <GridColumn field=\"buttons\" title=\" \" filterable={false} className=\"text-right pl-0\" cell={GridColumnButton} />}\r\n            </Grid>\r\n        </div>\r\n    )\r\n}","import { AxiosInstances as AxiosInstance} from './BaseService'\r\n\r\nexport default {\r\n    getBySchoolDBN: (locationCode: string , schoolYear : number) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Schools/${locationCode}/PurchaseOrders/${schoolYear}`\r\n        }),\r\n        getByProductId: (id:number) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/PurchaseOrder/Product/${id}`\r\n        }),\r\n        post: (requestdata: any) =>\r\n        AxiosInstance({\r\n            'method': 'POST',\r\n            'url': `PurchaseOrder/create`,\r\n            'data': requestdata\r\n        })\r\n}","import axios from 'axios'\r\nimport IVendor from '../model/Vendor';\r\nimport { AxiosInstances as AxiosInstance} from './BaseService'\r\n\r\nexport default {\r\n    getData: () =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': '/Vendor',\r\n        }),\r\n    getAllByLocationCode: function (locationCode: string) {\r\n        return AxiosInstance({\r\n            'method': 'GET',\r\n            'url': '/getallbylocationcode/' + locationCode,\r\n        });\r\n    },\r\n    getStates: function () {\r\n        return AxiosInstance({\r\n            'method': 'GET',\r\n            'url': '/States',\r\n        });\r\n    },\r\n    getById: (id: number) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': '/vendor/' + id,\r\n        }),\r\n    post: (requestdata: IVendor) =>\r\n        AxiosInstance({\r\n            'method': 'POST',\r\n            'url': '/Vendor',\r\n            'data': requestdata\r\n        }),\r\n    edit: (requestdata: IVendor) =>\r\n        AxiosInstance({\r\n            'method': 'PUT',\r\n            'url': '/Vendor?id=' + requestdata.id,\r\n            'data': requestdata\r\n        }),\r\n    delete: (id: number) =>\r\n        AxiosInstance({\r\n            'method': 'DELETE',\r\n            'url': '/Vendor?id=' + id,\r\n        })\r\n}\r\n","import IProduct from '../model/Product';\r\nimport { AxiosInstances as AxiosInstance} from './BaseService'\r\n\r\nexport default {\r\n    getData: () =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': '/product',\r\n        }),\r\n    getById: (id: number) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': '/product/' + id,\r\n        }),\r\n    getByVendorId: (vendorId: number) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': '/productByVendorId/' + vendorId,\r\n        }),\r\n    post: (requestdata: IProduct) =>\r\n        AxiosInstance({\r\n            'method': 'POST',\r\n            'url': '/product',\r\n            'data': requestdata\r\n        }),\r\n    edit: (requestdata: IProduct) =>\r\n        AxiosInstance({\r\n            'method': 'PUT',\r\n            'url': '/product?id=' + requestdata.id,\r\n            'data': requestdata\r\n        }),\r\n    delete: (id: number) =>\r\n        AxiosInstance({\r\n            'method': 'DELETE',\r\n            'url': '/product?id=' + id,\r\n        })\r\n}\r\n","import React, { useState, useEffect, useRef, useContext } from 'react';\r\nimport purchaseOrderService from '../services/PurchaseOrderService';\r\nimport IPurchaseOrder from '../model/IPurchaseOrder'\r\nimport IPurchaseOrderProduct from '../model/IPurchaseOrderProduct'\r\nimport { Modal, Button, Row, Form, Col } from 'react-bootstrap';\r\nimport { Grid, GridColumn } from '@progress/kendo-react-grid'\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport schoolListService from '../services/SchoolListService';\r\nimport vendorService from '../services/VendorService'\r\nimport productService from '../services/ProductService'\r\nimport licenseAllocationService from '../services/LicenseAllocation'\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport { FormMode, IDropDownValue } from '../services/Utility'\r\nimport Moment from 'moment';\r\nimport { AuthContextDefault, UserProfileType, Year } from '../services/AppContext';\r\nimport LocalStorageService from '../services/LocalStorage'\r\n\r\ninterface ILocation {\r\n  id: string\r\n}\r\nconst initialDataState = {\r\n  skip: 0,\r\n  take: 25,\r\n};\r\n\r\nexport default function PurchaseOrder(location: ILocation) {\r\n\r\n  const mountedRef = useRef(true);\r\n  const [page, setPage] = React.useState(initialDataState);\r\n  const pageChange = (event: any) => {\r\n    setPage(event.page);\r\n  };\r\n  const { orginalSchoolYear } = useContext(Year);\r\n  const [userProfile, setUserProfile] = useState<UserProfileType>(AuthContextDefault.userProfile);\r\n  const [orginalVendorList, setOrginalVendorList] = useState<IDropDownValue[]>([]);\r\n  const [vendorList, setVendorList] = useState<IDropDownValue[]>([]);\r\n  const [vendorListCopy, setVendorListCopy] = useState<IDropDownValue[]>([]);\r\n  const [productList, setProductList] = useState<IDropDownValue[]>([]);\r\n  const [product, setProduct] = useState<IPurchaseOrderProduct>({\r\n    locationCode: '',\r\n    productSKU: '',\r\n    price: 0,\r\n    note: '',\r\n    priceType: '',\r\n    productName: '',\r\n    vendorName: '',\r\n    id: 0,\r\n    vendorId: 0\r\n  });\r\n  const [formCascade, setFormCascade] = useState({\r\n    vendors: vendorList,\r\n    products: productList,\r\n    vendor: null,\r\n    product: null\r\n  })\r\n\r\n  useEffect(() => {\r\n    vendorService.getData().then(response => {\r\n      let vendorDropDownData = response.data.map((vl: any) => ({\r\n        id: vl.id,\r\n        text: vl.vendorName\r\n      }));\r\n      setVendorList(vendorDropDownData)\r\n      setVendorListCopy(vendorDropDownData)\r\n    })\r\n    setUserProfile(LocalStorageService.getUserProfile())\r\n    return () => { mountedRef.current = false }\r\n\r\n  }, []);\r\n\r\n  const vendorChange = (event: any) => {\r\n    setFormCascade({\r\n      vendors: [],\r\n      products: [],\r\n      vendor: null,\r\n      product: null\r\n    });\r\n    const vendor = event.target.value;\r\n\r\n    const target = event.target //as HTMLSelectElement\r\n\r\n    setFormValue({ ...formValue, [target.name]: target.value.text });\r\n    const vendorId = Number(vendor.id)\r\n\r\n    productService.getByVendorId(vendorId).then(response => {\r\n      let productDropDownData = response.data.map((pl: any) => ({\r\n        id: pl.id,\r\n        text: pl.productName\r\n      }));\r\n      setProductList(productDropDownData)\r\n    })\r\n\r\n    setProduct({\r\n      locationCode: '',\r\n      productSKU: '',\r\n      price: 0,\r\n      note: '',\r\n      priceType: '',\r\n      productName: '',\r\n      vendorName: '',\r\n      id: 0,\r\n      vendorId: 0\r\n    });\r\n    setFormCascade({\r\n      vendors: vendorList,\r\n      products: productList,\r\n      vendor: vendor,\r\n      product: null\r\n    });\r\n  }\r\n\r\n  const productChange = (event: any) => {\r\n    setProduct({\r\n      locationCode: '',\r\n      productSKU: '',\r\n      price: 0,\r\n      note: '',\r\n      priceType: '',\r\n      productName: '',\r\n      vendorName: '',\r\n      id: 0,\r\n      vendorId: 0\r\n    });\r\n    const product = event.target.value;\r\n    const target = event.target //as HTMLSelectElement\r\n    setFormValue({ ...formValue, [target.name]: target.value.text });\r\n\r\n    const productId = Number(product.id)\r\n    purchaseOrderService.getByProductId(productId).then(response => {\r\n      setProduct(response.data)\r\n    })\r\n\r\n    setFormCascade({\r\n      vendors: vendorList,\r\n      products: productList,\r\n      vendor: formCascade.vendor,\r\n      product: product\r\n    })\r\n  }\r\n\r\n\r\n  const [rowData, setRowData] = useState<IPurchaseOrder[]>([]);\r\n  const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n  const [formValue, setFormValue] = useState({\r\n    locationCode: '',\r\n    productSKU: '',\r\n    quantityPurchased: 0,\r\n    unitPrice: 0,\r\n    purchaseOrderNumber: '',\r\n    productName: '',\r\n    vendorId: 0,\r\n    vendorName: ''\r\n  });\r\n\r\n  const [errors, setErrors] = useState({\r\n    vendorNameError: '',\r\n    productNameError: '',\r\n    quantityPurchasedError: '',\r\n    purchaseOrderNumberError: '',\r\n    serverSideError: ''\r\n  })\r\n  const validate = () => {\r\n    let error = {\r\n      vendorNameError: '',\r\n      productNameError: '',\r\n      quantityPurchasedError: '',\r\n      purchaseOrderNumberError: '',\r\n      serverSideError: ''\r\n    };\r\n\r\n    if (formMode == FormMode.New) {\r\n      if (!formCascade.vendor) { error.vendorNameError = \"Vendor Name is required\"; }\r\n\r\n      if (!formCascade.product) { error.productNameError = \"Product is required\"; }\r\n\r\n      if (!formValue.quantityPurchased || formValue.quantityPurchased <= 0) { error.quantityPurchasedError = \"Enter Quantity Purchased\"; }\r\n      if (!formValue.purchaseOrderNumber) { error.purchaseOrderNumberError = \"Purchase Order is required\"; }\r\n      setErrors(error);\r\n      if (error.vendorNameError || error.productNameError || error.quantityPurchasedError || error.purchaseOrderNumberError) {\r\n        return false;\r\n      }\r\n    }\r\n    return true;\r\n\r\n  };\r\n\r\n  const handleChange = (event: any) => {\r\n    const target = event.target //as HTMLSelectElement\r\n    setFormValue({ ...formValue, [target.name]: target.value });\r\n  };\r\n\r\n\r\n  const onFormAction = (purchaseOrderId: number, actionType: FormMode) => {\r\n    setErrors({\r\n      vendorNameError: '',\r\n      productNameError: '',\r\n      quantityPurchasedError: '',\r\n      purchaseOrderNumberError: '',\r\n      serverSideError: ''\r\n    });\r\n    setFormValue({\r\n      locationCode: '',\r\n      productSKU: '',\r\n      quantityPurchased: 0,\r\n      unitPrice: 0,\r\n      purchaseOrderNumber: '',\r\n      productName: '',\r\n      vendorId: 0,\r\n      vendorName: ''\r\n    });\r\n    setFormCascade({\r\n      vendors: vendorList,\r\n      products: productList,\r\n      vendor: null,\r\n      product: null\r\n    });\r\n\r\n    setProduct({\r\n      locationCode: '',\r\n      productSKU: '',\r\n      price: 0,\r\n      note: '',\r\n      priceType: '',\r\n      productName: '',\r\n      vendorName: '',\r\n      id: 0,\r\n      vendorId: 0\r\n    });\r\n    switch (actionType) {\r\n\r\n      case FormMode.New:\r\n        setFormMode(FormMode.New)\r\n\r\n        vendorService.getData().then(response => {\r\n          let vendorDropDownData = response.data.map((vl: any) => ({\r\n            id: vl.id,\r\n            text: vl.vendorName\r\n          }));\r\n          setVendorList(vendorDropDownData)\r\n          setVendorListCopy(vendorDropDownData)\r\n          return () => { mountedRef.current = false }\r\n        })\r\n\r\n        //Clear Existing vlues\r\n        break;\r\n      default: {\r\n        setFormMode(FormMode.None)\r\n        break;\r\n      }\r\n    }\r\n  }\r\n\r\n  const onSave = (event: any, actionType: FormMode) => {\r\n    let purchaseOrder = {\r\n      productSKU: product.productSKU,\r\n      vendorId: product.vendorId,\r\n      vendorName: formValue.vendorName,\r\n      locationCode: location.id,\r\n      productName: formValue.productName,\r\n      quantityPurchased: Number(formValue.quantityPurchased),\r\n      unitPrice: Number(product.price),\r\n      purchaseOrderNumber: formValue.purchaseOrderNumber,\r\n      schoolYear: +orginalSchoolYear.id\r\n    };\r\n    switch (actionType) {\r\n      case FormMode.New:\r\n        event.preventDefault();\r\n\r\n        if (validate()) {\r\n\r\n          purchaseOrderService.post(purchaseOrder).then(response => {\r\n            if (response.data.isValidResponse) {\r\n              getPurchaseOrder()\r\n              // Display Success purchaseOrder\r\n              setFormMode(FormMode.None)\r\n            } else {\r\n              let error = {\r\n                vendorNameError: '',\r\n                productNameError: '',\r\n                quantityPurchasedError: '',\r\n                purchaseOrderNumberError: '',\r\n                serverSideError: response.data.errors[0]\r\n              };\r\n              setErrors(error)\r\n            }\r\n\r\n\r\n          })\r\n\r\n\r\n        }\r\n        //Clear Existing vlues\r\n        break;\r\n      default: {\r\n        setFormMode(FormMode.None)\r\n        break;\r\n      }\r\n    }\r\n  }\r\n\r\n  const filterData = (filter: any) => {\r\n    let data = vendorListCopy.slice();\r\n    return filterBy(data, filter);\r\n  }\r\n\r\n  const filterChange = (event: any) => {\r\n    let data = filterData(event.filter)\r\n    setVendorList(data)\r\n  }\r\n\r\n  useEffect(() => {\r\n    purchaseOrderService.getBySchoolDBN(location.id, +orginalSchoolYear.id).then(response => {\r\n      setRowData(response.data)\r\n    })\r\n  }, [location.id, orginalSchoolYear.id]);\r\n\r\n  const getPurchaseOrder = () => {\r\n    purchaseOrderService.getBySchoolDBN(location.id, +orginalSchoolYear.id).then(response => {\r\n      setRowData(response.data)\r\n    })\r\n  }\r\n\r\n  const format_purchaseOrder = (props: any) => {\r\n    return (\r\n      <td>\r\n        <div className=\"d-flex align-items-center\">\r\n          <i className=\"fas fa-shopping-cart mr-2 text-blue-gray\" style={{ \"fontSize\": \"30px\" }}></i>\r\n          <div>\r\n            <div className=\"text-dark mb-0 h4 p-0 font-weight-bold\">{props.dataItem.orderID}</div>\r\n          </div>\r\n        </div>\r\n      </td>\r\n    )\r\n  }\r\n\r\n  const format_Price = (props: any) => {\r\n    return (\r\n      <td>\r\n        ${props.dataItem.unitPrice.toLocaleString()}\r\n      </td>\r\n    )\r\n  }\r\n\r\n  const format_Date = (props: any) => {\r\n    { Moment.locale('en') }\r\n    return (\r\n      <td>\r\n        {Moment(props.dataItem.purchaseDate).format('MMM D, YYYY')}\r\n      </td>\r\n    )\r\n  }\r\n\r\n  return (\r\n    <div>\r\n      {formMode != FormMode.None && <Dialog title={\"Add Purchase Order\"} onClose={() => { setFormMode(FormMode.None) }} style={{ width: \"75%\", position: \"fixed\", left: \"15%\", top: \"20%\", height: \"350px\" }} >\r\n        <div id=\"dropDownParent\">\r\n        {errors.serverSideError && <div className=\"alert alert-danger\">{errors.serverSideError}</div>}\r\n          <Form>\r\n            \r\n            <Form.Group controlId=\"vendorName\">\r\n              <Form.Label>Vendor</Form.Label>\r\n              <DropDownList\r\n                style={{ width: '100%' }}\r\n                defaultValue={null}\r\n                data={vendorList}\r\n                name='vendorName'\r\n                textField=\"text\"\r\n                value={formCascade.vendor ?? ''}\r\n                onChange={vendorChange}\r\n                filterable={true}\r\n                onFilterChange={filterChange}\r\n                popupSettings={{ appendTo: document.getElementById(\"dropDownParent\") as HTMLElement }}\r\n              />\r\n              <Form.Text className=\"text-danger\">{errors.vendorNameError}</Form.Text>\r\n            </Form.Group>\r\n            <Form.Group controlId=\"productName\">\r\n              <Form.Label>Product</Form.Label>\r\n              <DropDownList\r\n                style={{ width: '100%' }}\r\n                defaultValue={null}\r\n                data={productList}\r\n                name='productName'\r\n                textField=\"text\"\r\n                value={formCascade.product ?? ''}\r\n                onChange={productChange}\r\n              />\r\n              <Form.Text className=\"text-danger\">{errors.productNameError}</Form.Text>\r\n            </Form.Group>\r\n\r\n            <Form.Group controlId=\"purchaseOrderNumber\">\r\n              <Form.Label>PO #</Form.Label>\r\n              <Form.Control type=\"text\" name=\"purchaseOrderNumber\" value={formValue.purchaseOrderNumber?.toString() ?? ''} onChange={handleChange} />\r\n              <Form.Text className=\"text-danger\">{errors.purchaseOrderNumberError}</Form.Text>\r\n            </Form.Group>\r\n            <Row>\r\n              <Col sm=\"6\">\r\n                <Form.Group controlId=\"quantityPurchased\">\r\n                  <Form.Label>Quantity Purchased</Form.Label>\r\n                  <Form.Control type=\"number\" name=\"quantityPurchased\" value={formValue.quantityPurchased ?? 0} onChange={handleChange} />\r\n                  <Form.Text className=\"text-danger\">{errors.quantityPurchasedError}</Form.Text>\r\n                </Form.Group>\r\n              </Col>\r\n              <Col sm=\"6\">\r\n                <Form.Group controlId=\"unitPrice\">\r\n                  <Form.Label>Unit Price</Form.Label>\r\n                  <Form.Text>${product?.price}  {product?.priceType}</Form.Text>\r\n                </Form.Group>\r\n              </Col>\r\n            </Row>\r\n\r\n          </Form>\r\n\r\n        </div>\r\n        <DialogActionsBar>\r\n          <Button className=\"m-3\" variant=\"secondary\" onClick={() => { setFormMode(FormMode.None) }}>Close</Button>\r\n          <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Save</Button>\r\n        </DialogActionsBar>\r\n      </Dialog>}\r\n      {\r\n        (userProfile?.role?.roleName == 'System Administrator' && orginalSchoolYear.isCurrent != 0) ?\r\n          <div className=\"text-right mb-2\">\r\n            <button type=\"button\" className=\"btn btn-primary\" onClick={(e) => { onFormAction(0, FormMode.New) }}>\r\n              <i className=\"fas fa-plus\"></i>\r\n            </button>\r\n          </div> : <div></div>\r\n      }\r\n      <Grid\r\n        data={rowData.slice(page.skip, page.take + page.skip)}\r\n        skip={page.skip}\r\n        take={page.take}\r\n        total={rowData.length}\r\n        pageable={true}\r\n        scrollable={\"none\"}\r\n        onPageChange={pageChange}>\r\n        <GridColumn field=\"orderID\" title=\"Purchase Order #\" cell={format_purchaseOrder}></GridColumn>\r\n        <GridColumn field=\"recordSource\" title=\"Type\"></GridColumn>\r\n        <GridColumn field=\"vendorName\" title=\"Vendor\"></GridColumn>\r\n        <GridColumn field=\"quantityPurchased\" title=\"Quantity\"></GridColumn>\r\n        <GridColumn field=\"unitPrice\" title=\"Price\" cell={format_Price}></GridColumn>\r\n        <GridColumn field=\"purchaseDate\" title=\"Date\" cell={format_Date}></GridColumn>\r\n      </Grid>\r\n\r\n    </div>\r\n  )\r\n}","import axios from 'axios'\r\nimport { AxiosInstances as AxiosInstance } from './BaseService'\r\n\r\nexport default {\r\n    GetStatusWiseReport: (schoolYear: number) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Reports/${schoolYear}/StatusWiseReport`,\r\n        }),\r\n\r\n    GetLicenseUsageReport: (schoolYear: number, licenseType: string) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Reports/${schoolYear}/LicenseUsageReport/${licenseType}`,\r\n        }),\r\n\r\n\r\n    GetPublishedCoursesReport: (schoolYear: number) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Reports/${schoolYear}/PublishedCoursesReport`,\r\n        }),\r\n    GetCourseEnrollmentSummaryReport: (schoolYear: number) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Reports/${schoolYear}/StudentsCountReport`,\r\n        }),\r\n\r\n    GetSharedInstructionCoursesReport: (schoolYear: number) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Reports/${schoolYear}/SharedInstructionCoursesReport`,\r\n        }),\r\n\r\n    GetLicenseTransferHistoryReport: (schoolYear: number) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Reports/${schoolYear}/LicenseTransferReport`,\r\n        }),\r\n\r\n    GetTotalCountsReport: (schoolYear: number) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Reports/${schoolYear}/TotalCountsReport`,\r\n        }),\r\n\r\n    GetTeacherCreatedCourseReport: (schoolYear: number) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Reports/${schoolYear}/TeacherCreatedCourse`,\r\n        }),\r\n\r\n    GetDailyReport: () =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Reports/DailyReport`,\r\n        }),\r\n\r\n    GetAllReports: () =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Reports`,\r\n        }),\r\n\r\n    GetMissingTORReport: (schoolYear: number) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Reports/${schoolYear}/MissingTORReport`,\r\n        }),\r\n}","export function saveAs(data, fileName, options) {\n  if ( options === void 0 ) options = {};\n\n  var save = postToProxy;\n\n  if (options.forceProxy && !options.proxyURL) {\n    throw new Error('No proxyURL is set, but forceProxy is true');\n  }\n\n  if (!options.forceProxy) {\n    if (canDownload()) {\n      save = saveAsDataURI;\n    }\n\n    if (navigator.msSaveBlob) {\n      save = saveAsBlob;\n    }\n  }\n\n  save(data, fileName, options);\n}\n\nvar anchor = function () { return document.createElement('a'); };\nvar canDownload = function () { return 'download' in anchor(); };\n\nfunction saveAsBlob(data, fileName) {\n  var blob = data; // could be a Blob object\n\n  if (typeof data === 'string') {\n    var parts = data.split(';base64,');\n    var contentType = parts[0];\n    var base64 = atob(parts[1]);\n    var array = new Uint8Array(base64.length);\n\n    for (var idx = 0; idx < base64.length; idx++) {\n      array[idx] = base64.charCodeAt(idx);\n    }\n\n    blob = new Blob([ array.buffer ], { type: contentType });\n  }\n\n  navigator.msSaveBlob(blob, fileName);\n}\n\nfunction saveAsDataURI(data, fileName) {\n  var dataURI = data;\n  if (window.Blob && data instanceof Blob) {\n    dataURI = URL.createObjectURL(data);\n  }\n\n  var fileSaver = anchor();\n  fileSaver.download = fileName;\n  fileSaver.href = dataURI;\n\n  var e = document.createEvent('MouseEvents');\n  e.initMouseEvent('click', true, false, window,\n    0, 0, 0, 0, 0, false, false, false, false, 0, null);\n\n  fileSaver.dispatchEvent(e);\n  setTimeout(function () { return URL.revokeObjectURL(dataURI); });\n}\n\nfunction postToProxy(dataURI, fileName, options) {\n  if (!options.proxyURL) {\n    return;\n  }\n\n  var form = document.createElement('form');\n  form.setAttribute('action', options.proxyURL);\n  form.setAttribute('method', 'POST');\n  form.setAttribute('target', options.proxyTarget || '_self');\n\n  var formData = options.proxyData || {};\n  formData.fileName = fileName;\n\n  var parts = dataURI.split(\";base64,\");\n  formData.contentType = parts[0].replace(\"data:\", \"\");\n  formData.base64 = parts[1];\n\n  for (var name in formData) {\n    if (formData.hasOwnProperty(name)) {\n      var input = document.createElement('input');\n      input.setAttribute('type', 'hidden');\n      input.setAttribute('name', name);\n      input.setAttribute('value', formData[name]);\n\n      form.appendChild(input);\n    }\n  }\n\n  document.body.appendChild(form);\n  form.submit();\n  document.body.removeChild(form);\n}\n\n","var KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nvar fromCharCode = String.fromCharCode;\n\nexport function encodeBase64(plainText) {\n  var input = encodeUTF8(plainText);\n  var output = \"\";\n  var chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n  var i = 0;\n\n  while (i < input.length) {\n    chr1 = input.charCodeAt(i++);\n    chr2 = input.charCodeAt(i++);\n    chr3 = input.charCodeAt(i++);\n\n    enc1 = chr1 >> 2;\n    enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n    enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n    enc4 = chr3 & 63;\n\n    if (isNaN(chr2)) {\n      enc3 = enc4 = 64;\n    } else if (isNaN(chr3)) {\n      enc4 = 64;\n    }\n\n    output = output +\n      KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) +\n      KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\n  }\n\n  return output;\n}\n\nfunction encodeUTF8(input) {\n  var output = \"\";\n\n  for (var i = 0; i < input.length; i++) {\n    var c = input.charCodeAt(i);\n\n    if (c < 0x80) {\n      // One byte\n      output += fromCharCode(c);\n    } else if (c < 0x800) {\n      // Two bytes\n      output += fromCharCode(0xC0 | (c >>> 6));\n      output += fromCharCode(0x80 | (c & 0x3f));\n    } else if (c < 0x10000) {\n      // Three bytes\n      output += fromCharCode(0xE0 | (c >>> 12));\n      output += fromCharCode(0x80 | (c >>> 6 & 0x3f));\n      output += fromCharCode(0x80 | (c & 0x3f));\n    }\n  }\n\n  return output;\n}\n","var current = {\n    compile: function(template) {\n        return template;\n    }\n};\n\nvar TemplateService = function TemplateService () {};\n\nTemplateService.register = function register (userImplementation) {\n    current = userImplementation;\n};\n\nTemplateService.compile = function compile (template) {\n    return current.compile(template);\n};\n\nexport default TemplateService;","var FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\nvar getterCache = {};\nvar UNDEFINED = 'undefined';\n\ngetterCache[UNDEFINED] = function(obj) {\n    return obj;\n};\n\nexport default function getter(field) {\n    if (getterCache[field]) {\n        return getterCache[field];\n    }\n\n    var fields = [];\n    field.replace(FIELD_REGEX, function(match, index, indexAccessor, field) {\n        fields.push(typeof index !== UNDEFINED ? index : (indexAccessor || field));\n    });\n\n    getterCache[field] = function(obj) {\n        var result = obj;\n        for (var idx = 0; idx < fields.length && result; idx++) {\n            result = result[fields[idx]];\n        }\n\n        return result;\n    };\n\n    return getterCache[field];\n}","export default function map(array, func) {\n    return array.reduce(function (result, el, i) {\n        var val = func(el, i);\n        if (val != null) {\n            result.push(val);\n        }\n        return result;\n    }, []);\n}","import TemplateService from './services/template-service';\nimport getter from './utils/getter';\nimport map from './utils/map';\n\nfunction defaultGroupHeaderTemplate(data) {\n    return ((data.title) + \": \" + (data.value));\n}\n\nfunction createArray(length, callback) {\n    var result = [];\n\n    for (var idx = 0; idx < length; idx++) {\n        result.push(callback(idx));\n    }\n\n    return result;\n}\n\nfunction defaultItemId(item) {\n    return item.id;\n}\n\nvar ExcelExporter = function ExcelExporter(options) {\n    options.columns = this._trimColumns(options.columns || []);\n\n    this.allColumns = map(this._leafColumns(options.columns || []), this._prepareColumn);\n\n    this.columns = this._visibleColumns(this.allColumns);\n\n    this.options = options;\n    this.data = options.data || [];\n    this.aggregates = options.aggregates || {};\n    this.groups = [].concat(options.groups || []);\n    this.hasGroups = this.groups.length > 0;\n    this.hierarchy = options.hierarchy;\n    this.hasGroupHeaderColumn = this.columns.some(function (column) { return column.groupHeaderColumnTemplate; });\n    this.collapsible = this.options.collapsible;\n};\n\nExcelExporter.prototype.workbook = function workbook () {\n    var workbook = {\n        sheets: [ {\n            columns: this._columns(),\n            rows: this.hierarchy ? this._hierarchyRows() : this._rows(),\n            freezePane: this._freezePane(),\n            filter: this._filter()\n        } ]\n    };\n\n    return workbook;\n};\n\nExcelExporter.prototype._trimColumns = function _trimColumns (columns) {\n        var this$1 = this;\n\n    return columns.filter(function (column) {\n        var result = Boolean(column.field);\n\n        if (!result && column.columns) {\n            result = this$1._trimColumns(column.columns).length > 0;\n        }\n\n        return result;\n    });\n};\n\nExcelExporter.prototype._leafColumns = function _leafColumns (columns) {\n        var this$1 = this;\n\n    var result = [];\n\n    for (var idx = 0; idx < columns.length; idx++) {\n        if (!columns[idx].columns) {\n            result.push(columns[idx]);\n        } else {\n            result = result.concat(this$1._leafColumns(columns[idx].columns));\n        }\n    }\n\n    return result;\n};\n\nExcelExporter.prototype._prepareColumn = function _prepareColumn (column) {\n    if (!column.field) {\n        return null;\n    }\n\n    var value = function(dataItem) {\n        return getter(column.field, true)(dataItem);\n    };\n\n    var values = null;\n\n    if (column.values) {\n        values = {};\n\n        column.values.forEach(function(item) {\n            values[item.value] = item.text;\n        });\n\n        value = function(dataItem) {\n            return values[getter(column.field, true)(dataItem)];\n        };\n    }\n\n    return Object.assign({}, column, {\n        value: value,\n        values: values,\n        groupHeaderTemplate: column.groupHeaderTemplate ? TemplateService.compile(column.groupHeaderTemplate) : defaultGroupHeaderTemplate,\n        groupHeaderColumnTemplate: column.groupHeaderColumnTemplate ? TemplateService.compile(column.groupHeaderColumnTemplate) : null,\n        groupFooterTemplate: column.groupFooterTemplate ? TemplateService.compile(column.groupFooterTemplate) : null,\n        footerTemplate: column.footerTemplate ? TemplateService.compile(column.footerTemplate) : null\n    });\n};\n\nExcelExporter.prototype._filter = function _filter () {\n    if (!this.options.filterable) {\n        return null;\n    }\n\n    var depth = this._depth();\n\n    return {\n        from: depth,\n        to: depth + this.columns.length - 1\n    };\n};\n\nExcelExporter.prototype._createPaddingCells = function _createPaddingCells (length) {\n        var this$1 = this;\n\n    return createArray(length, function () { return Object.assign({\n        background: \"#dfdfdf\",\n        color: \"#333\"\n    }, this$1.options.paddingCellOptions); });\n};\n\nExcelExporter.prototype._dataRow = function _dataRow (dataItem, level, depth) {\n        var this$1 = this;\n\n    var cells = this._createPaddingCells(level);\n\n    // grouped\n    if (this.hasGroups && depth && dataItem.items) {\n        cells = cells.concat(this._groupHeaderCells(dataItem, level, depth));\n        var rows = this._dataRows(dataItem.items, level + 1);\n\n        rows.unshift({\n            type: \"group-header\",\n            cells: cells,\n            level: this.collapsible ? level : null\n        });\n\n        return rows.concat(this._footer(dataItem, level));\n    }\n\n    var dataCells = [];\n\n    for (var cellIdx = 0; cellIdx < this.columns.length; cellIdx++) {\n        dataCells[cellIdx] = this$1._cell(dataItem, this$1.columns[cellIdx]);\n    }\n\n    if (this.hierarchy) {\n        dataCells[0].colSpan = depth - level + 1;\n    }\n\n    return [ {\n        type: \"data\",\n        cells: cells.concat(dataCells),\n        level: this.collapsible ? level : null\n    } ];\n};\n\nExcelExporter.prototype._groupHeaderCells = function _groupHeaderCells (dataItem, level, depth) {\n    var cells = [];\n\n    var column = this.allColumns.filter(function(column) {\n        return column.field === dataItem.field;\n    })[0] || {};\n\n    var title = column && column.title ? column.title : dataItem.field;\n    var template = column ? column.groupHeaderTemplate || column.groupHeaderColumnTemplate : null;\n    var group = Object.assign({\n        title: title,\n        field: dataItem.field,\n        value: column && column.values ? column.values[dataItem.value] : dataItem.value,\n        aggregates: dataItem.aggregates,\n        items: dataItem.items\n    }, dataItem.aggregates[dataItem.field]);\n\n    var value = template ? template(group) : (title + \": \" + (dataItem.value));\n\n    cells.push(Object.assign({\n        value: value,\n        background: \"#dfdfdf\",\n        color: \"#333\",\n        colSpan: (this.hasGroupHeaderColumn ? 1 : this.columns.length) + depth - level\n    }, column.groupHeaderCellOptions));\n\n    if (this.hasGroupHeaderColumn) {\n        this.columns.forEach(function(column, index) {\n            if (index > 0) {\n                cells.push(Object.assign({\n                    background: \"#dfdfdf\",\n                    color: \"#333\",\n                    value: column.groupHeaderColumnTemplate ?\n                        column.groupHeaderColumnTemplate(Object.assign({ group: group }, group, dataItem.aggregates[column.field])) :\n                        undefined\n                }, column.groupHeaderCellOptions));\n            }\n        });\n    }\n\n    return cells;\n};\n\nExcelExporter.prototype._dataRows = function _dataRows (dataItems, level) {\n        var this$1 = this;\n\n    var depth = this._depth();\n    var rows = [];\n\n    for (var idx = 0; idx < dataItems.length; idx++) {\n        rows.push.apply(rows, this$1._dataRow(dataItems[idx], level, depth));\n    }\n\n    return rows;\n};\n\nExcelExporter.prototype._hierarchyRows = function _hierarchyRows () {\n        var this$1 = this;\n\n    var depth = this._depth();\n    var data = this.data;\n    var itemLevel = this.hierarchy.itemLevel;\n    var itemId = this.hierarchy.itemId || defaultItemId;\n    var hasFooter = this._hasFooterTemplate();\n    var rows = [];\n    var parents = [];\n    var previousLevel = 0;\n    var previousItemId;\n\n    if (!hasFooter) {\n        this.collapsible = false;\n    }\n\n    for (var idx = 0; idx < data.length; idx++) {\n        var item = data[idx];\n        var level = itemLevel(item, idx);\n\n        if (hasFooter) {\n            if (level > previousLevel) {\n                parents.push({ id: previousItemId, level: previousLevel });\n            } else if (level < previousLevel) {\n                rows.push.apply(rows, this$1._hierarchyFooterRows(parents, level, depth));\n            }\n\n            previousLevel = level;\n            previousItemId = itemId(item, idx);\n        }\n\n        rows.push.apply(rows, this$1._dataRow(item, level + 1, depth));\n    }\n\n    if (hasFooter) {\n        rows.push.apply(rows, this._hierarchyFooterRows(parents, 0, depth));\n\n        var rootAggregate = data.length ? this.aggregates[data[0].parentId] : {};\n        rows.push(this._hierarchyFooter(rootAggregate, 0, depth));\n    }\n\n    this._prependHeaderRows(rows);\n\n    return rows;\n};\n\nExcelExporter.prototype._hierarchyFooterRows = function _hierarchyFooterRows (parents, currentLevel, depth) {\n        var this$1 = this;\n\n    var rows = [];\n    while (parents.length && parents[parents.length - 1].level >= currentLevel) {\n        var parent = parents.pop();\n        rows.push(this$1._hierarchyFooter(this$1.aggregates[parent.id], parent.level + 1, depth));\n    }\n\n    return rows;\n};\n\nExcelExporter.prototype._hasFooterTemplate = function _hasFooterTemplate () {\n    var columns = this.columns;\n    for (var idx = 0; idx < columns.length; idx++) {\n        if (columns[idx].footerTemplate) {\n            return true;\n        }\n    }\n};\n\nExcelExporter.prototype._hierarchyFooter = function _hierarchyFooter (aggregates, level, depth) {\n    var cells = this.columns.map(function(column, index) {\n        var colSpan = index ? 1 : depth - level + 1;\n        if (column.footerTemplate) {\n            var fieldAggregates = (aggregates || {})[column.field];\n            return Object.assign({\n                background: \"#dfdfdf\",\n                color: \"#333\",\n                colSpan: colSpan,\n                value: column.footerTemplate(Object.assign({ aggregates: aggregates }, fieldAggregates))\n            }, column.footerCellOptions);\n        }\n\n        return Object.assign({\n            background: \"#dfdfdf\",\n            color: \"#333\",\n            colSpan: colSpan\n        }, column.footerCellOptions);\n    });\n\n    return {\n        type: \"footer\",\n        cells: this._createPaddingCells(level).concat(cells),\n        level: this.collapsible ? level : null\n    };\n};\n\nExcelExporter.prototype._footer = function _footer (dataItem, level) {\n    var rows = [];\n    var footer = this.columns.some(function (column) { return column.groupFooterTemplate; });\n\n    var templateData, group;\n    if (footer) {\n        group = {\n            group: { items: dataItem.items,\n                     field: dataItem.field,\n                     value: dataItem.value }\n        };\n        templateData = {};\n        Object.keys(dataItem.aggregates).forEach(function (key) {\n            templateData[key] = Object.assign({}, dataItem.aggregates[key], group);\n        });\n    }\n\n    var cells = this.columns.map(function (column) {\n        if (column.groupFooterTemplate) {\n            var data = Object.assign({}, templateData, dataItem.aggregates[column.field], group);\n            return Object.assign({\n                background: \"#dfdfdf\",\n                color: \"#333\",\n                value: column.groupFooterTemplate(data)\n            }, column.groupFooterCellOptions);\n        }\n\n        return Object.assign({\n            background: \"#dfdfdf\",\n            color: \"#333\"\n        }, column.groupFooterCellOptions);\n    });\n\n    if (footer) {\n        rows.push({\n            type: \"group-footer\",\n            cells: this._createPaddingCells(this.groups.length).concat(cells),\n            level: this.collapsible ? level : null\n        });\n    }\n\n    return rows;\n};\n\nExcelExporter.prototype._isColumnVisible = function _isColumnVisible (column) {\n    return this._visibleColumns([ column ]).length > 0 && (column.field || column.columns);\n};\n\nExcelExporter.prototype._visibleColumns = function _visibleColumns (columns) {\n        var this$1 = this;\n\n    return columns.filter(function (column) {\n        var exportable = column.exportable;\n        if (typeof exportable === 'object') {\n            exportable = column.exportable.excel;\n        }\n\n        var visibleInExport = !column.hidden && exportable !== false;\n        var visibleInExportOnly = column.hidden && exportable === true;\n        var visible = visibleInExport || visibleInExportOnly;\n        if (visible && column.columns) {\n            visible = this$1._visibleColumns(column.columns).length > 0;\n        }\n        return visible;\n    });\n};\n\nExcelExporter.prototype._headerRow = function _headerRow (row, groups) {\n        var this$1 = this;\n\n    var headers = row.cells.map(function(cell) {\n        return Object.assign(cell, {\n            colSpan: cell.colSpan > 1 ? cell.colSpan : 1,\n            rowSpan: row.rowSpan > 1 && !cell.colSpan ? row.rowSpan : 1\n        });\n    });\n\n    if (this.hierarchy && headers[0].firstCell) {\n        headers[0].colSpan += this._depth();\n    }\n\n    return {\n        type: \"header\",\n        cells: createArray(groups.length, function () { return Object.assign({\n            background: \"#7a7a7a\",\n            color: \"#fff\"\n        }, this$1.options.headerPaddingCellOptions); }).concat(headers)\n    };\n};\n\nExcelExporter.prototype._prependHeaderRows = function _prependHeaderRows (rows) {\n        var this$1 = this;\n\n    var groups = this.groups;\n\n    var headerRows = [ { rowSpan: 1, cells: [], index: 0 } ];\n\n    this._prepareHeaderRows(headerRows, this.options.columns);\n\n    for (var idx = headerRows.length - 1; idx >= 0; idx--) {\n        rows.unshift(this$1._headerRow(headerRows[idx], groups));\n    }\n};\n\nExcelExporter.prototype._prepareHeaderRows = function _prepareHeaderRows (rows, columns, parentCell, parentRow) {\n        var this$1 = this;\n\n    var row = parentRow || rows[rows.length - 1];\n    var childRow = rows[row.index + 1];\n    var totalColSpan = 0;\n\n    for (var idx = 0; idx < columns.length; idx++) {\n        var column = columns[idx];\n        if (this$1._isColumnVisible(column)) {\n\n            var cell = Object.assign({\n                background: \"#7a7a7a\",\n                color: \"#fff\",\n                value: column.title || column.field,\n                colSpan: 0,\n                firstCell: idx === 0 && (!parentCell || parentCell.firstCell)\n            }, column.headerCellOptions);\n            row.cells.push(cell);\n\n            if (column.columns && column.columns.length) {\n                if (!childRow) {\n                    childRow = { rowSpan: 0, cells: [], index: rows.length };\n                    rows.push(childRow);\n                }\n                cell.colSpan = this$1._trimColumns(this$1._visibleColumns(column.columns)).length;\n                this$1._prepareHeaderRows(rows, column.columns, cell, childRow);\n                totalColSpan += cell.colSpan - 1;\n                row.rowSpan = rows.length - row.index;\n            }\n        }\n    }\n\n    if (parentCell) {\n        parentCell.colSpan += totalColSpan;\n    }\n};\n\nExcelExporter.prototype._rows = function _rows () {\n        var this$1 = this;\n\n    var rows = this._dataRows(this.data, 0);\n\n    if (this.columns.length) {\n        this._prependHeaderRows(rows);\n        var footer = false;\n\n        var cells = this.columns.map(function (column) {\n            if (column.footerTemplate) {\n                footer = true;\n\n                return Object.assign({\n                    background: \"#dfdfdf\",\n                    color: \"#333\",\n                    value: column.footerTemplate(Object.assign({}, this$1.aggregates, this$1.aggregates[column.field]))\n                }, column.footerCellOptions);\n            }\n\n            return Object.assign({\n                background: \"#dfdfdf\",\n                color: \"#333\"\n            }, column.footerCellOptions);\n        });\n\n        if (footer) {\n            rows.push({\n                type: \"footer\",\n                cells: this._createPaddingCells(this.groups.length).concat(cells)\n            });\n        }\n    }\n\n    return rows;\n};\n\nExcelExporter.prototype._headerDepth = function _headerDepth (columns) {\n        var this$1 = this;\n\n    var result = 1;\n    var max = 0;\n\n    for (var idx = 0; idx < columns.length; idx++) {\n        if (columns[idx].columns) {\n            var temp = this$1._headerDepth(columns[idx].columns);\n            if (temp > max) {\n                max = temp;\n            }\n        }\n    }\n    return result + max;\n};\n\nExcelExporter.prototype._freezePane = function _freezePane () {\n    var columns = this._visibleColumns(this.options.columns || []);\n\n    var colSplit = this._visibleColumns(this._trimColumns(this._leafColumns(columns.filter(function(column) {\n        return column.locked;\n    })))).length;\n\n    return {\n        rowSplit: this._headerDepth(columns),\n        colSplit: colSplit ? colSplit + this.groups.length : 0\n    };\n};\n\nExcelExporter.prototype._cell = function _cell (dataItem, column) {\n    return Object.assign({\n        value: column.value(dataItem)\n    }, column.cellOptions);\n};\n\nExcelExporter.prototype._depth = function _depth () {\n    var depth = 0;\n\n    if (this.hierarchy) {\n        depth = this.hierarchy.depth;\n    } else {\n        depth = this.groups.length;\n    }\n\n    return depth;\n};\n\nExcelExporter.prototype._columns = function _columns () {\n    var depth = this._depth();\n    var columns = createArray(depth, function () { return ({ width: 20 }); });\n\n    return columns.concat(this.columns.map(function(column) {\n        return {\n            width: parseInt(column.width, 10),\n            autoWidth: column.width ? false : true\n        };\n    }));\n};\n\nexport default ExcelExporter;\n","/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH =          0;\nvar Z_PARTIAL_FLUSH =     1;\nvar Z_SYNC_FLUSH =        2;\nvar Z_FULL_FLUSH =        3;\nvar Z_FINISH =            4;\nvar Z_BLOCK =             5;\nvar Z_TREES =             6;\n\n/* Return codes for the compression/decompression functions. Negative values\n* are errors, positive values are used for special but normal events.\n*/\nvar Z_OK =                0;\nvar Z_STREAM_END =        1;\nvar Z_NEED_DICT =         2;\nvar Z_ERRNO =            -1;\nvar Z_STREAM_ERROR =     -2;\nvar Z_DATA_ERROR =       -3;\n//export var Z_MEM_ERROR =      -4;\nvar Z_BUF_ERROR =        -5;\n//export var Z_VERSION_ERROR =  -6;\n\n/* compression levels */\nvar Z_NO_COMPRESSION =          0;\nvar Z_BEST_SPEED =              1;\nvar Z_BEST_COMPRESSION =        9;\nvar Z_DEFAULT_COMPRESSION =    -1;\n\n\nvar Z_FILTERED =                1;\nvar Z_HUFFMAN_ONLY =            2;\nvar Z_RLE =                     3;\nvar Z_FIXED =                   4;\nvar Z_DEFAULT_STRATEGY =        0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY =                  0;\nvar Z_TEXT =                    1;\n//export var Z_ASCII =                 1; // = Z_TEXT (deprecated)\nvar Z_UNKNOWN =                 2;\n\n/* The deflate compression method */\nvar Z_DEFLATED =                8;\n//export var Z_NULL =                  null // Use -1 or null inline; depending on var type\n\n/* eslint-disable */\n\nfunction _has(obj, key) {\n  return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction assign(obj /*from1, from2, from3, ...*/) {\n  var sources = Array.prototype.slice.call(arguments, 1);\n  while (sources.length) {\n    var source = sources.shift();\n    if (!source) { continue; }\n\n    if (typeof source !== 'object') {\n      throw new TypeError(source + 'must be non-object');\n    }\n\n    for (var p in source) {\n      if (_has(source, p)) {\n        obj[p] = source[p];\n      }\n    }\n  }\n\n  return obj;\n}\n\n\n// reduce buffer size, avoiding mem copy\nfunction shrinkBuf(buf, size) {\n  if (buf.length === size) { return buf; }\n  if (buf.subarray) { return buf.subarray(0, size); }\n  buf.length = size;\n  return buf;\n}\n\nvar fnTyped = {\n  arraySet: function (dest, src, src_offs, len, dest_offs) {\n    if (src.subarray && dest.subarray) {\n      dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n      return;\n    }\n    // Fallback to ordinary array\n    for (var i = 0; i < len; i++) {\n      dest[dest_offs + i] = src[src_offs + i];\n    }\n  },\n  // Join array of chunks to single array.\n  flattenChunks: function (chunks) {\n    var i, l, len, pos, chunk, result;\n\n    // calculate data length\n    len = 0;\n    for (i = 0, l = chunks.length; i < l; i++) {\n      len += chunks[i].length;\n    }\n\n    // join chunks\n    result = new Uint8Array(len);\n    pos = 0;\n    for (i = 0, l = chunks.length; i < l; i++) {\n      chunk = chunks[i];\n      result.set(chunk, pos);\n      pos += chunk.length;\n    }\n\n    return result;\n  },\n  Buf8: function(size) {\n    return new Uint8Array(size);\n  },\n  Buf16: function(size) {\n    return new Uint16Array(size);\n  },\n  Buf32: function(size) {\n    return new Int32Array(size);\n  }\n};\n\nvar fnUntyped = {\n  arraySet: function (dest, src, src_offs, len, dest_offs) {\n    for (var i = 0; i < len; i++) {\n      dest[dest_offs + i] = src[src_offs + i];\n    }\n  },\n  // Join array of chunks to single array.\n  flattenChunks: function (chunks) {\n    return [].concat.apply([], chunks);\n  },\n  Buf8: function(size) {\n    return new Array(size);\n  },\n  Buf16: function(size) {\n    return new Array(size);\n  },\n  Buf32: function(size) {\n    return new Array(size);\n  }\n};\n\nvar typedOK = function () {\n  var supported =\n    (typeof Uint8Array !== 'undefined') &&\n    (typeof Uint16Array !== 'undefined') &&\n    (typeof Int32Array !== 'undefined');\n\n  typedOK = function () { return supported; };\n  return supported;\n};\n\nvar arraySet = function (dest, src, src_offs, len, dest_offs) {\n  arraySet = typedOK() ?\n    fnTyped.arraySet : fnUntyped.arraySet;\n\n  return arraySet(dest, src, src_offs, len, dest_offs);\n};\n\nvar flattenChunks = function (chunks) {\n  flattenChunks = typedOK() ?\n    fnTyped.flattenChunks : fnUntyped.flattenChunks;\n\n  return flattenChunks(chunks);\n};\n\nvar Buf8 = function (size) {\n  Buf8 = typedOK() ? fnTyped.Buf8 : fnUntyped.Buf8;\n  return Buf8(size);\n};\n\nvar Buf16 = function (size) {\n  Buf16 = typedOK() ? fnTyped.Buf16 : fnUntyped.Buf16;\n  return Buf16(size);\n};\n\nvar Buf32 = function (size) {\n  Buf32 = typedOK() ? fnTyped.Buf32 : fnUntyped.Buf32;\n  return Buf32(size);\n};\n\n/* eslint-disable */\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\nvar strApplyOK = function() {\n    var result = true;\n    try {\n        String.fromCharCode.apply(null, [ 0 ]);\n    } catch (_) {\n        result = false;\n    }\n\n    strApplyOK = function () { return result; };\n    return result;\n};\n\nvar strApplyUintOK = function() {\n    var result = true;\n    try {\n        String.fromCharCode.apply(null, new Uint8Array(1));\n    } catch (_) {\n        result = false;\n    }\n\n    strApplyUintOK = function () { return result; };\n    return result;\n};\n\nvar utf8len = function(c) {\n    // Table with utf8 lengths (calculated by first byte of sequence)\n    // Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n    // because max possible codepoint is 0x10ffff\n    var table = Buf8(256);\n    for (var q = 0; q < 256; q++) {\n      table[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n    }\n    table[254] = table[254] = 1; // Invalid sequence start\n\n    utf8len = function (arg) { return table[arg]; };\n    return table[c];\n};\n\n// convert string to array (typed, when possible)\nfunction string2buf(str) {\n  var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n  // count binary size\n  for (m_pos = 0; m_pos < str_len; m_pos++) {\n    c = str.charCodeAt(m_pos);\n    if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n      c2 = str.charCodeAt(m_pos + 1);\n      if ((c2 & 0xfc00) === 0xdc00) {\n        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n        m_pos++;\n      }\n    }\n    buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n  }\n\n  // allocate buffer\n  buf = new Uint8Array(buf_len);\n\n  // convert\n  for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n    c = str.charCodeAt(m_pos);\n    if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n      c2 = str.charCodeAt(m_pos + 1);\n      if ((c2 & 0xfc00) === 0xdc00) {\n        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n        m_pos++;\n      }\n    }\n    if (c < 0x80) {\n      /* one byte */\n      buf[i++] = c;\n    } else if (c < 0x800) {\n      /* two bytes */\n      buf[i++] = 0xC0 | (c >>> 6);\n      buf[i++] = 0x80 | (c & 0x3f);\n    } else if (c < 0x10000) {\n      /* three bytes */\n      buf[i++] = 0xE0 | (c >>> 12);\n      buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n      buf[i++] = 0x80 | (c & 0x3f);\n    } else {\n      /* four bytes */\n      buf[i++] = 0xf0 | (c >>> 18);\n      buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n      buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n      buf[i++] = 0x80 | (c & 0x3f);\n    }\n  }\n\n  return buf;\n}\n\n// Helper (used in 2 places)\nfunction _buf2binstring(buf, len) {\n  // On Chrome, the arguments in a function call that are allowed is `65534`.\n  // If the length of the buffer is smaller than that, we can use this optimization,\n  // otherwise we will take a slower path.\n  if (len < 65534) {\n    if ((buf.subarray && strApplyUintOK()) || (!buf.subarray && strApplyOK())) {\n      return String.fromCharCode.apply(null, shrinkBuf(buf, len));\n    }\n  }\n\n  var result = '';\n  for (var i = 0; i < len; i++) {\n    result += String.fromCharCode(buf[i]);\n  }\n  return result;\n}\n\n\n// Convert byte array to binary string\nfunction buf2binstring(buf) {\n  return _buf2binstring(buf, buf.length);\n}\n\n\n// Convert binary string (typed, when possible)\nfunction binstring2buf(str) {\n  var buf = new Uint8Array(str.length);\n  for (var i = 0, len = buf.length; i < len; i++) {\n    buf[i] = str.charCodeAt(i);\n  }\n  return buf;\n}\n\n\n// convert array to string\nfunction buf2string(buf, max) {\n  var i, out, c, c_len;\n  var len = max || buf.length;\n\n  // Reserve max possible length (2 words per char)\n  // NB: by unknown reasons, Array is significantly faster for\n  //     String.fromCharCode.apply than Uint16Array.\n  var utf16buf = new Array(len * 2);\n\n  for (out = 0, i = 0; i < len;) {\n    c = buf[i++];\n    // quick process ascii\n    if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n    c_len = utf8len(c);\n    // skip 5 & 6 byte codes\n    if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n    // apply mask on first byte\n    c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n    // join the rest\n    while (c_len > 1 && i < len) {\n      c = (c << 6) | (buf[i++] & 0x3f);\n      c_len--;\n    }\n\n    // terminated by end of string?\n    if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n    if (c < 0x10000) {\n      utf16buf[out++] = c;\n    } else {\n      c -= 0x10000;\n      utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n      utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n    }\n  }\n\n  return _buf2binstring(utf16buf, out);\n}\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max   - length limit (mandatory);\nfunction utf8border(buf, max) {\n  var pos;\n\n  max = max || buf.length;\n  if (max > buf.length) { max = buf.length; }\n\n  // go back from last position, until start of sequence found\n  pos = max - 1;\n  while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n  // Very small and broken sequence,\n  // return max, because we should return something anyway.\n  if (pos < 0) { return max; }\n\n  // If we came to start of buffer - that means buffer is too small,\n  // return max too.\n  if (pos === 0) { return max; }\n\n  return (pos + utf8len(buf[pos]) > max) ? pos : max;\n}\n\n/* eslint-disable */\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32(adler, buf, len, pos) {\n  var s1 = (adler & 0xffff) |0,\n      s2 = ((adler >>> 16) & 0xffff) |0,\n      n = 0;\n\n  while (len !== 0) {\n    // Set limit ~ twice less than 5552, to keep\n    // s2 in 31-bits, because we force signed ints.\n    // in other case %= will fail.\n    n = len > 2000 ? 2000 : len;\n    len -= n;\n\n    do {\n      s1 = (s1 + buf[pos++]) |0;\n      s2 = (s2 + s1) |0;\n    } while (--n);\n\n    s1 %= 65521;\n    s2 %= 65521;\n  }\n\n  return (s1 | (s2 << 16)) |0;\n}\n\n/* eslint-disable */\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n  var c, table = [];\n\n  for (var n = 0; n < 256; n++) {\n    c = n;\n    for (var k = 0; k < 8; k++) {\n      c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n    }\n    table[n] = c;\n  }\n\n  return table;\n}\n\nvar crcTable = function() {\n    var table = makeTable();\n    crcTable = function () { return table; };\n    return table;\n};\n\nfunction crc32(crc, buf, len, pos) {\n  var t = crcTable(),\n      end = pos + len;\n\n  crc ^= -1;\n\n  for (var i = pos; i < end; i++) {\n    crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n  }\n\n  return (crc ^ (-1)); // >>> 0;\n}\n\n/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nvar BAD = 30;       /* got a data error -- remain here until reset */\nvar TYPE = 12;      /* i: waiting for type bits, including last-flag bit */\n\n/*\n   Decode literal, length, and distance codes and write out the resulting\n   literal and match bytes until either not enough input or output is\n   available, an end-of-block is encountered, or a data error is encountered.\n   When large enough input and output buffers are supplied to inflate(), for\n   example, a 16K input buffer and a 64K output buffer, more than 95% of the\n   inflate execution time is spent in this routine.\n\n   Entry assumptions:\n\n        state.mode === LEN\n        strm.avail_in >= 6\n        strm.avail_out >= 258\n        start >= strm.avail_out\n        state.bits < 8\n\n   On return, state.mode is one of:\n\n        LEN -- ran out of enough output space or enough available input\n        TYPE -- reached end of block code, inflate() to interpret next block\n        BAD -- error in block data\n\n   Notes:\n\n    - The maximum input bits used by a length/distance pair is 15 bits for the\n      length code, 5 bits for the length extra, 15 bits for the distance code,\n      and 13 bits for the distance extra.  This totals 48 bits, or six bytes.\n      Therefore if strm.avail_in >= 6, then there is enough input to avoid\n      checking for available input while decoding.\n\n    - The maximum bytes that a single length/distance pair can output is 258\n      bytes, which is the maximum length that can be coded.  inflate_fast()\n      requires strm.avail_out >= 258 for each loop to avoid checking for\n      output space.\n */\nfunction inflate_fast(strm, start) {\n  var state;\n  var _in;                    /* local strm.input */\n  var last;                   /* have enough input while in < last */\n  var _out;                   /* local strm.output */\n  var beg;                    /* inflate()'s initial strm.output */\n  var end;                    /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n  var dmax;                   /* maximum distance from zlib header */\n//#endif\n  var wsize;                  /* window size or zero if not using window */\n  var whave;                  /* valid bytes in the window */\n  var wnext;                  /* window write index */\n  // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n  var s_window;               /* allocated sliding window, if wsize != 0 */\n  var hold;                   /* local strm.hold */\n  var bits;                   /* local strm.bits */\n  var lcode;                  /* local strm.lencode */\n  var dcode;                  /* local strm.distcode */\n  var lmask;                  /* mask for first level of length codes */\n  var dmask;                  /* mask for first level of distance codes */\n  var here;                   /* retrieved table entry */\n  var op;                     /* code bits, operation, extra bits, or */\n                              /*  window position, window bytes to copy */\n  var len;                    /* match length, unused bytes */\n  var dist;                   /* match distance */\n  var from;                   /* where to copy match from */\n  var from_source;\n\n\n  var input, output; // JS specific, because we have no pointers\n\n  /* copy state to local variables */\n  state = strm.state;\n  //here = state.here;\n  _in = strm.next_in;\n  input = strm.input;\n  last = _in + (strm.avail_in - 5);\n  _out = strm.next_out;\n  output = strm.output;\n  beg = _out - (start - strm.avail_out);\n  end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n  dmax = state.dmax;\n//#endif\n  wsize = state.wsize;\n  whave = state.whave;\n  wnext = state.wnext;\n  s_window = state.window;\n  hold = state.hold;\n  bits = state.bits;\n  lcode = state.lencode;\n  dcode = state.distcode;\n  lmask = (1 << state.lenbits) - 1;\n  dmask = (1 << state.distbits) - 1;\n\n\n  /* decode literals and length/distances until end-of-block or not enough\n     input data or output space */\n\n  top:\n  do {\n    if (bits < 15) {\n      hold += input[_in++] << bits;\n      bits += 8;\n      hold += input[_in++] << bits;\n      bits += 8;\n    }\n\n    here = lcode[hold & lmask];\n\n    dolen:\n    for (;;) { // Goto emulation\n      op = here >>> 24/*here.bits*/;\n      hold >>>= op;\n      bits -= op;\n      op = (here >>> 16) & 0xff/*here.op*/;\n      if (op === 0) {                          /* literal */\n        //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n        //        \"inflate:         literal '%c'\\n\" :\n        //        \"inflate:         literal 0x%02x\\n\", here.val));\n        output[_out++] = here & 0xffff/*here.val*/;\n      }\n      else if (op & 16) {                     /* length base */\n        len = here & 0xffff/*here.val*/;\n        op &= 15;                           /* number of extra bits */\n        if (op) {\n          if (bits < op) {\n            hold += input[_in++] << bits;\n            bits += 8;\n          }\n          len += hold & ((1 << op) - 1);\n          hold >>>= op;\n          bits -= op;\n        }\n        //Tracevv((stderr, \"inflate:         length %u\\n\", len));\n        if (bits < 15) {\n          hold += input[_in++] << bits;\n          bits += 8;\n          hold += input[_in++] << bits;\n          bits += 8;\n        }\n        here = dcode[hold & dmask];\n\n        dodist:\n        for (;;) { // goto emulation\n          op = here >>> 24/*here.bits*/;\n          hold >>>= op;\n          bits -= op;\n          op = (here >>> 16) & 0xff/*here.op*/;\n\n          if (op & 16) {                      /* distance base */\n            dist = here & 0xffff/*here.val*/;\n            op &= 15;                       /* number of extra bits */\n            if (bits < op) {\n              hold += input[_in++] << bits;\n              bits += 8;\n              if (bits < op) {\n                hold += input[_in++] << bits;\n                bits += 8;\n              }\n            }\n            dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n            if (dist > dmax) {\n              strm.msg = 'invalid distance too far back';\n              state.mode = BAD;\n              break top;\n            }\n//#endif\n            hold >>>= op;\n            bits -= op;\n            //Tracevv((stderr, \"inflate:         distance %u\\n\", dist));\n            op = _out - beg;                /* max distance in output */\n            if (dist > op) {                /* see if copy from window */\n              op = dist - op;               /* distance back in window */\n              if (op > whave) {\n                if (state.sane) {\n                  strm.msg = 'invalid distance too far back';\n                  state.mode = BAD;\n                  break top;\n                }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n//                if (len <= op - whave) {\n//                  do {\n//                    output[_out++] = 0;\n//                  } while (--len);\n//                  continue top;\n//                }\n//                len -= op - whave;\n//                do {\n//                  output[_out++] = 0;\n//                } while (--op > whave);\n//                if (op === 0) {\n//                  from = _out - dist;\n//                  do {\n//                    output[_out++] = output[from++];\n//                  } while (--len);\n//                  continue top;\n//                }\n//#endif\n              }\n              from = 0; // window index\n              from_source = s_window;\n              if (wnext === 0) {           /* very common case */\n                from += wsize - op;\n                if (op < len) {         /* some from window */\n                  len -= op;\n                  do {\n                    output[_out++] = s_window[from++];\n                  } while (--op);\n                  from = _out - dist;  /* rest from output */\n                  from_source = output;\n                }\n              }\n              else if (wnext < op) {      /* wrap around window */\n                from += wsize + wnext - op;\n                op -= wnext;\n                if (op < len) {         /* some from end of window */\n                  len -= op;\n                  do {\n                    output[_out++] = s_window[from++];\n                  } while (--op);\n                  from = 0;\n                  if (wnext < len) {  /* some from start of window */\n                    op = wnext;\n                    len -= op;\n                    do {\n                      output[_out++] = s_window[from++];\n                    } while (--op);\n                    from = _out - dist;      /* rest from output */\n                    from_source = output;\n                  }\n                }\n              }\n              else {                      /* contiguous in window */\n                from += wnext - op;\n                if (op < len) {         /* some from window */\n                  len -= op;\n                  do {\n                    output[_out++] = s_window[from++];\n                  } while (--op);\n                  from = _out - dist;  /* rest from output */\n                  from_source = output;\n                }\n              }\n              while (len > 2) {\n                output[_out++] = from_source[from++];\n                output[_out++] = from_source[from++];\n                output[_out++] = from_source[from++];\n                len -= 3;\n              }\n              if (len) {\n                output[_out++] = from_source[from++];\n                if (len > 1) {\n                  output[_out++] = from_source[from++];\n                }\n              }\n            }\n            else {\n              from = _out - dist;          /* copy direct from output */\n              do {                        /* minimum length is three */\n                output[_out++] = output[from++];\n                output[_out++] = output[from++];\n                output[_out++] = output[from++];\n                len -= 3;\n              } while (len > 2);\n              if (len) {\n                output[_out++] = output[from++];\n                if (len > 1) {\n                  output[_out++] = output[from++];\n                }\n              }\n            }\n          }\n          else if ((op & 64) === 0) {          /* 2nd level distance code */\n            here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n            continue dodist;\n          }\n          else {\n            strm.msg = 'invalid distance code';\n            state.mode = BAD;\n            break top;\n          }\n\n          break; // need to emulate goto via \"continue\"\n        }\n      }\n      else if ((op & 64) === 0) {              /* 2nd level length code */\n        here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n        continue dolen;\n      }\n      else if (op & 32) {                     /* end-of-block */\n        //Tracevv((stderr, \"inflate:         end of block\\n\"));\n        state.mode = TYPE;\n        break top;\n      }\n      else {\n        strm.msg = 'invalid literal/length code';\n        state.mode = BAD;\n        break top;\n      }\n\n      break; // need to emulate goto via \"continue\"\n    }\n  } while (_in < last && _out < end);\n\n  /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n  len = bits >> 3;\n  _in -= len;\n  bits -= len << 3;\n  hold &= (1 << bits) - 1;\n\n  /* update state and return */\n  strm.next_in = _in;\n  strm.next_out = _out;\n  strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n  strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n  state.hold = hold;\n  state.bits = bits;\n  return;\n}\n\n/* eslint-disable */\n\nvar MAXBITS = 15;\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\nvar lbase = [ /* Length codes 257..285 base */\n  3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n  35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n];\n\nvar lext = [ /* Length codes 257..285 extra */\n  16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n  19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n];\n\nvar dbase = [ /* Distance codes 0..29 base */\n  1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n  257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n  8193, 12289, 16385, 24577, 0, 0\n];\n\nvar dext = [ /* Distance codes 0..29 extra */\n  16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n  23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n  28, 28, 29, 29, 64, 64\n];\n\nfunction inflate_table(type, lens, lens_index, codes, table, table_index, work, opts) {\n  var bits = opts.bits;\n      //here = opts.here; /* table entry for duplication */\n\n  var len = 0;               /* a code's length in bits */\n  var sym = 0;               /* index of code symbols */\n  var min = 0, max = 0;          /* minimum and maximum code lengths */\n  var root = 0;              /* number of index bits for root table */\n  var curr = 0;              /* number of index bits for current table */\n  var drop = 0;              /* code bits to drop for sub-table */\n  var left = 0;                   /* number of prefix codes available */\n  var used = 0;              /* code entries in table used */\n  var huff = 0;              /* Huffman code */\n  var incr;              /* for incrementing code, index */\n  var fill;              /* index for replicating entries */\n  var low;               /* low bits for current root entry */\n  var mask;              /* mask for low root bits */\n  var next;             /* next available space in table */\n  var base = null;     /* base value table to use */\n  var base_index = 0;\n//  var shoextra;    /* extra bits table to use */\n  var end;                    /* use base and extra for symbol > end */\n  var count = Buf16(MAXBITS + 1); //[MAXBITS+1];    /* number of codes of each length */\n  var offs = Buf16(MAXBITS + 1); //[MAXBITS+1];     /* offsets in table for each length */\n  var extra = null;\n  var extra_index = 0;\n\n  var here_bits, here_op, here_val;\n\n  /*\n   Process a set of code lengths to create a canonical Huffman code.  The\n   code lengths are lens[0..codes-1].  Each length corresponds to the\n   symbols 0..codes-1.  The Huffman code is generated by first sorting the\n   symbols by length from short to long, and retaining the symbol order\n   for codes with equal lengths.  Then the code starts with all zero bits\n   for the first code of the shortest length, and the codes are integer\n   increments for the same length, and zeros are appended as the length\n   increases.  For the deflate format, these bits are stored backwards\n   from their more natural integer increment ordering, and so when the\n   decoding tables are built in the large loop below, the integer codes\n   are incremented backwards.\n\n   This routine assumes, but does not check, that all of the entries in\n   lens[] are in the range 0..MAXBITS.  The caller must assure this.\n   1..MAXBITS is interpreted as that code length.  zero means that that\n   symbol does not occur in this code.\n\n   The codes are sorted by computing a count of codes for each length,\n   creating from that a table of starting indices for each length in the\n   sorted table, and then entering the symbols in order in the sorted\n   table.  The sorted table is work[], with that space being provided by\n   the caller.\n\n   The length counts are used for other purposes as well, i.e. finding\n   the minimum and maximum length codes, determining if there are any\n   codes at all, checking for a valid set of lengths, and looking ahead\n   at length counts to determine sub-table sizes when building the\n   decoding tables.\n   */\n\n  /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n  for (len = 0; len <= MAXBITS; len++) {\n    count[len] = 0;\n  }\n  for (sym = 0; sym < codes; sym++) {\n    count[lens[lens_index + sym]]++;\n  }\n\n  /* bound code lengths, force root to be within code lengths */\n  root = bits;\n  for (max = MAXBITS; max >= 1; max--) {\n    if (count[max] !== 0) { break; }\n  }\n  if (root > max) {\n    root = max;\n  }\n  if (max === 0) {                     /* no symbols to code at all */\n    //table.op[opts.table_index] = 64;  //here.op = (var char)64;    /* invalid code marker */\n    //table.bits[opts.table_index] = 1;   //here.bits = (var char)1;\n    //table.val[opts.table_index++] = 0;   //here.val = (var short)0;\n    table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n    //table.op[opts.table_index] = 64;\n    //table.bits[opts.table_index] = 1;\n    //table.val[opts.table_index++] = 0;\n    table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n    opts.bits = 1;\n    return 0;     /* no symbols, but wait for decoding to report error */\n  }\n  for (min = 1; min < max; min++) {\n    if (count[min] !== 0) { break; }\n  }\n  if (root < min) {\n    root = min;\n  }\n\n  /* check for an over-subscribed or incomplete set of lengths */\n  left = 1;\n  for (len = 1; len <= MAXBITS; len++) {\n    left <<= 1;\n    left -= count[len];\n    if (left < 0) {\n      return -1;\n    }        /* over-subscribed */\n  }\n  if (left > 0 && (type === CODES || max !== 1)) {\n    return -1;                      /* incomplete set */\n  }\n\n  /* generate offsets into symbol table for each length for sorting */\n  offs[1] = 0;\n  for (len = 1; len < MAXBITS; len++) {\n    offs[len + 1] = offs[len] + count[len];\n  }\n\n  /* sort symbols by length, by symbol order within each length */\n  for (sym = 0; sym < codes; sym++) {\n    if (lens[lens_index + sym] !== 0) {\n      work[offs[lens[lens_index + sym]]++] = sym;\n    }\n  }\n\n  /*\n   Create and fill in decoding tables.  In this loop, the table being\n   filled is at next and has curr index bits.  The code being used is huff\n   with length len.  That code is converted to an index by dropping drop\n   bits off of the bottom.  For codes where len is less than drop + curr,\n   those top drop + curr - len bits are incremented through all values to\n   fill the table with replicated entries.\n\n   root is the number of index bits for the root table.  When len exceeds\n   root, sub-tables are created pointed to by the root entry with an index\n   of the low root bits of huff.  This is saved in low to check for when a\n   new sub-table should be started.  drop is zero when the root table is\n   being filled, and drop is root when sub-tables are being filled.\n\n   When a new sub-table is needed, it is necessary to look ahead in the\n   code lengths to determine what size sub-table is needed.  The length\n   counts are used for this, and so count[] is decremented as codes are\n   entered in the tables.\n\n   used keeps track of how many table entries have been allocated from the\n   provided *table space.  It is checked for LENS and DIST tables against\n   the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n   the initial root table size constants.  See the comments in inftrees.h\n   for more information.\n\n   sym increments through all symbols, and the loop terminates when\n   all codes of length max, i.e. all codes, have been processed.  This\n   routine permits incomplete codes, so another loop after this one fills\n   in the rest of the decoding tables with invalid code markers.\n   */\n\n  /* set up for code type */\n  // poor man optimization - use if-else instead of switch,\n  // to avoid deopts in old v8\n  if (type === CODES) {\n    base = extra = work;    /* dummy value--not used */\n    end = 19;\n\n  } else if (type === LENS) {\n    base = lbase;\n    base_index -= 257;\n    extra = lext;\n    extra_index -= 257;\n    end = 256;\n\n  } else {                    /* DISTS */\n    base = dbase;\n    extra = dext;\n    end = -1;\n  }\n\n  /* initialize opts for loop */\n  huff = 0;                   /* starting code */\n  sym = 0;                    /* starting code symbol */\n  len = min;                  /* starting code length */\n  next = table_index;              /* current table to fill in */\n  curr = root;                /* current table index bits */\n  drop = 0;                   /* current bits to drop from code for index */\n  low = -1;                   /* trigger new sub-table when len > root */\n  used = 1 << root;          /* use root table entries */\n  mask = used - 1;            /* mask for comparing low */\n\n  /* check available table space */\n  if ((type === LENS && used > ENOUGH_LENS) ||\n    (type === DISTS && used > ENOUGH_DISTS)) {\n    return 1;\n  }\n\n  /* process all codes and make table entries */\n  for (;;) {\n    /* create table entry */\n    here_bits = len - drop;\n    if (work[sym] < end) {\n      here_op = 0;\n      here_val = work[sym];\n    }\n    else if (work[sym] > end) {\n      here_op = extra[extra_index + work[sym]];\n      here_val = base[base_index + work[sym]];\n    }\n    else {\n      here_op = 32 + 64;         /* end of block */\n      here_val = 0;\n    }\n\n    /* replicate for those indices with low len bits equal to huff */\n    incr = 1 << (len - drop);\n    fill = 1 << curr;\n    min = fill;                 /* save offset to next table */\n    do {\n      fill -= incr;\n      table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n    } while (fill !== 0);\n\n    /* backwards increment the len-bit code huff */\n    incr = 1 << (len - 1);\n    while (huff & incr) {\n      incr >>= 1;\n    }\n    if (incr !== 0) {\n      huff &= incr - 1;\n      huff += incr;\n    } else {\n      huff = 0;\n    }\n\n    /* go to next symbol, update count, len */\n    sym++;\n    if (--count[len] === 0) {\n      if (len === max) { break; }\n      len = lens[lens_index + work[sym]];\n    }\n\n    /* create new sub-table if needed */\n    if (len > root && (huff & mask) !== low) {\n      /* if first time, transition to sub-tables */\n      if (drop === 0) {\n        drop = root;\n      }\n\n      /* increment past last table */\n      next += min;            /* here min is 1 << curr */\n\n      /* determine length of next table */\n      curr = len - drop;\n      left = 1 << curr;\n      while (curr + drop < max) {\n        left -= count[curr + drop];\n        if (left <= 0) { break; }\n        curr++;\n        left <<= 1;\n      }\n\n      /* check for enough space */\n      used += 1 << curr;\n      if ((type === LENS && used > ENOUGH_LENS) ||\n        (type === DISTS && used > ENOUGH_DISTS)) {\n        return 1;\n      }\n\n      /* point entry in root table to sub-table */\n      low = huff & mask;\n      /*table.op[low] = curr;\n      table.bits[low] = root;\n      table.val[low] = next - opts.table_index;*/\n      table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n    }\n  }\n\n  /* fill in remaining table entry if code is incomplete (guaranteed to have\n   at most one remaining entry, since if the code is incomplete, the\n   maximum code length that was allowed to get this far is one bit) */\n  if (huff !== 0) {\n    //table.op[next + huff] = 64;            /* invalid code marker */\n    //table.bits[next + huff] = len - drop;\n    //table.val[next + huff] = 0;\n    table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n  }\n\n  /* set return parameters */\n  //opts.table_index += used;\n  opts.bits = root;\n  return 0;\n}\n\n/* eslint-disable */\n\nvar CODES$1 = 0;\nvar LENS$1 = 1;\nvar DISTS$1 = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH      = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH    = 2;\n//var Z_FULL_FLUSH    = 3;\nvar Z_FINISH$1        = 4;\nvar Z_BLOCK$1         = 5;\nvar Z_TREES$1         = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK$1            = 0;\nvar Z_STREAM_END$1    = 1;\nvar Z_NEED_DICT$1     = 2;\n//var Z_ERRNO         = -1;\nvar Z_STREAM_ERROR$1  = -2;\nvar Z_DATA_ERROR$1    = -3;\nvar Z_MEM_ERROR     = -4;\nvar Z_BUF_ERROR$1     = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* The deflate compression method */\nvar Z_DEFLATED$1  = 8;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nvar    HEAD = 1;       /* i: waiting for magic header */\nvar    FLAGS = 2;      /* i: waiting for method and flags (gzip) */\nvar    TIME = 3;       /* i: waiting for modification time (gzip) */\nvar    OS = 4;         /* i: waiting for extra flags and operating system (gzip) */\nvar    EXLEN = 5;      /* i: waiting for extra length (gzip) */\nvar    EXTRA = 6;      /* i: waiting for extra bytes (gzip) */\nvar    NAME = 7;       /* i: waiting for end of file name (gzip) */\nvar    COMMENT = 8;    /* i: waiting for end of comment (gzip) */\nvar    HCRC = 9;       /* i: waiting for header crc (gzip) */\nvar    DICTID = 10;    /* i: waiting for dictionary check value */\nvar    DICT = 11;      /* waiting for inflateSetDictionary() call */\nvar        TYPE$1 = 12;      /* i: waiting for type bits, including last-flag bit */\nvar        TYPEDO = 13;    /* i: same, but skip check to exit inflate on new block */\nvar        STORED = 14;    /* i: waiting for stored size (length and complement) */\nvar        COPY_ = 15;     /* i/o: same as COPY below, but only first time in */\nvar        COPY = 16;      /* i/o: waiting for input or output to copy stored block */\nvar        TABLE = 17;     /* i: waiting for dynamic block table lengths */\nvar        LENLENS = 18;   /* i: waiting for code length code lengths */\nvar        CODELENS = 19;  /* i: waiting for length/lit and distance code lengths */\nvar            LEN_ = 20;      /* i: same as LEN below, but only first time in */\nvar            LEN = 21;       /* i: waiting for length/lit/eob code */\nvar            LENEXT = 22;    /* i: waiting for length extra bits */\nvar            DIST = 23;      /* i: waiting for distance code */\nvar            DISTEXT = 24;   /* i: waiting for distance extra bits */\nvar            MATCH = 25;     /* o: waiting for output space to copy string */\nvar            LIT = 26;       /* o: waiting for output space to write literal */\nvar    CHECK = 27;     /* i: waiting for 32-bit check value */\nvar    LENGTH = 28;    /* i: waiting for 32-bit length (gzip) */\nvar    DONE = 29;      /* finished check, done -- remain here until reset */\nvar    BAD$1 = 30;       /* got a data error -- remain here until reset */\nvar    MEM = 31;       /* got an inflate() memory error -- remain here until reset */\nvar    SYNC = 32;      /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nvar ENOUGH_LENS$1 = 852;\nvar ENOUGH_DISTS$1 = 592;\n\n\nfunction zswap32(q) {\n  return  (((q >>> 24) & 0xff) +\n          ((q >>> 8) & 0xff00) +\n          ((q & 0xff00) << 8) +\n          ((q & 0xff) << 24));\n}\n\n\nfunction InflateState() {\n  this.mode = 0;             /* current inflate mode */\n  this.last = false;          /* true if processing last block */\n  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */\n  this.havedict = false;      /* true if dictionary provided */\n  this.flags = 0;             /* gzip header method and flags (0 if zlib) */\n  this.dmax = 0;              /* zlib header max distance (INFLATE_STRICT) */\n  this.check = 0;             /* protected copy of check value */\n  this.total = 0;             /* protected copy of output count */\n  // TODO: may be {}\n  this.head = null;           /* where to save gzip header information */\n\n  /* sliding window */\n  this.wbits = 0;             /* log base 2 of requested window size */\n  this.wsize = 0;             /* window size or zero if not using window */\n  this.whave = 0;             /* valid bytes in the window */\n  this.wnext = 0;             /* window write index */\n  this.window = null;         /* allocated sliding window, if needed */\n\n  /* bit accumulator */\n  this.hold = 0;              /* input bit accumulator */\n  this.bits = 0;              /* number of bits in \"in\" */\n\n  /* for string and stored block copying */\n  this.length = 0;            /* literal or length of data to copy */\n  this.offset = 0;            /* distance back to copy string from */\n\n  /* for table and code decoding */\n  this.extra = 0;             /* extra bits needed */\n\n  /* fixed and dynamic code tables */\n  this.lencode = null;          /* starting table for length/literal codes */\n  this.distcode = null;         /* starting table for distance codes */\n  this.lenbits = 0;           /* index bits for lencode */\n  this.distbits = 0;          /* index bits for distcode */\n\n  /* dynamic table building */\n  this.ncode = 0;             /* number of code length code lengths */\n  this.nlen = 0;              /* number of length code lengths */\n  this.ndist = 0;             /* number of distance code lengths */\n  this.have = 0;              /* number of code lengths in lens[] */\n  this.next = null;              /* next available space in codes[] */\n\n  this.lens = Buf16(320); /* temporary storage for code lengths */\n  this.work = Buf16(288); /* work area for code table building */\n\n  /*\n   because we don't have pointers in js, we use lencode and distcode directly\n   as buffers so we don't need codes\n  */\n  //this.codes = Buf32(ENOUGH);       /* space for code tables */\n  this.lendyn = null;              /* dynamic table for length/literal codes (JS specific) */\n  this.distdyn = null;             /* dynamic table for distance codes (JS specific) */\n  this.sane = 0;                   /* if false, allow invalid distance too far */\n  this.back = 0;                   /* bits back of last unprocessed length/lit */\n  this.was = 0;                    /* initial length of match */\n}\n\nfunction inflateResetKeep(strm) {\n  var state;\n\n  if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n  state = strm.state;\n  strm.total_in = strm.total_out = state.total = 0;\n  strm.msg = ''; /*Z_NULL*/\n  if (state.wrap) {       /* to support ill-conceived Java test suite */\n    strm.adler = state.wrap & 1;\n  }\n  state.mode = HEAD;\n  state.last = 0;\n  state.havedict = 0;\n  state.dmax = 32768;\n  state.head = null/*Z_NULL*/;\n  state.hold = 0;\n  state.bits = 0;\n  //state.lencode = state.distcode = state.next = state.codes;\n  state.lencode = state.lendyn = Buf32(ENOUGH_LENS$1);\n  state.distcode = state.distdyn = Buf32(ENOUGH_DISTS$1);\n\n  state.sane = 1;\n  state.back = -1;\n  //Tracev((stderr, \"inflate: reset\\n\"));\n  return Z_OK$1;\n}\n\nfunction inflateReset(strm) {\n  var state;\n\n  if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n  state = strm.state;\n  state.wsize = 0;\n  state.whave = 0;\n  state.wnext = 0;\n  return inflateResetKeep(strm);\n\n}\n\nfunction inflateReset2(strm, windowBits) {\n  var wrap;\n  var state;\n\n  /* get the state */\n  if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n  state = strm.state;\n\n  /* extract wrap request from windowBits parameter */\n  if (windowBits < 0) {\n    wrap = 0;\n    windowBits = -windowBits;\n  }\n  else {\n    wrap = (windowBits >> 4) + 1;\n    if (windowBits < 48) {\n      windowBits &= 15;\n    }\n  }\n\n  /* set number of window bits, free window if different */\n  if (windowBits && (windowBits < 8 || windowBits > 15)) {\n    return Z_STREAM_ERROR$1;\n  }\n  if (state.window !== null && state.wbits !== windowBits) {\n    state.window = null;\n  }\n\n  /* update state and reset the rest of it */\n  state.wrap = wrap;\n  state.wbits = windowBits;\n  return inflateReset(strm);\n}\n\nfunction inflateInit2(strm, windowBits) {\n  var ret;\n  var state;\n\n  if (!strm) { return Z_STREAM_ERROR$1; }\n  //strm.msg = Z_NULL;                 /* in case we return an error */\n\n  state = new InflateState();\n\n  //if (state === Z_NULL) return Z_MEM_ERROR;\n  //Tracev((stderr, \"inflate: allocated\\n\"));\n  strm.state = state;\n  state.window = null/*Z_NULL*/;\n  ret = inflateReset2(strm, windowBits);\n  if (ret !== Z_OK$1) {\n    strm.state = null/*Z_NULL*/;\n  }\n  return ret;\n}\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding.  Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter.  This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time.  However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nvar virgin = true;\n\nvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\nfunction fixedtables(state) {\n  /* build fixed huffman tables if first call (may not be thread safe) */\n  if (virgin) {\n    var sym;\n\n    lenfix = Buf32(512);\n    distfix = Buf32(32);\n\n    /* literal/length table */\n    sym = 0;\n    while (sym < 144) { state.lens[sym++] = 8; }\n    while (sym < 256) { state.lens[sym++] = 9; }\n    while (sym < 280) { state.lens[sym++] = 7; }\n    while (sym < 288) { state.lens[sym++] = 8; }\n\n    inflate_table(LENS$1,  state.lens, 0, 288, lenfix,   0, state.work, { bits: 9 });\n\n    /* distance table */\n    sym = 0;\n    while (sym < 32) { state.lens[sym++] = 5; }\n\n    inflate_table(DISTS$1, state.lens, 0, 32,   distfix, 0, state.work, { bits: 5 });\n\n    /* do this just once */\n    virgin = false;\n  }\n\n  state.lencode = lenfix;\n  state.lenbits = 9;\n  state.distcode = distfix;\n  state.distbits = 5;\n}\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning.  If window does not exist yet, create it.  This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nfunction updatewindow(strm, src, end, copy) {\n  var dist;\n  var state = strm.state;\n\n  /* if it hasn't been done already, allocate space for the window */\n  if (state.window === null) {\n    state.wsize = 1 << state.wbits;\n    state.wnext = 0;\n    state.whave = 0;\n\n    state.window = Buf8(state.wsize);\n  }\n\n  /* copy state->wsize or less output bytes into the circular window */\n  if (copy >= state.wsize) {\n    arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n    state.wnext = 0;\n    state.whave = state.wsize;\n  }\n  else {\n    dist = state.wsize - state.wnext;\n    if (dist > copy) {\n      dist = copy;\n    }\n    //zmemcpy(state->window + state->wnext, end - copy, dist);\n    arraySet(state.window, src, end - copy, dist, state.wnext);\n    copy -= dist;\n    if (copy) {\n      //zmemcpy(state->window, end - copy, copy);\n      arraySet(state.window, src, end - copy, copy, 0);\n      state.wnext = copy;\n      state.whave = state.wsize;\n    }\n    else {\n      state.wnext += dist;\n      if (state.wnext === state.wsize) { state.wnext = 0; }\n      if (state.whave < state.wsize) { state.whave += dist; }\n    }\n  }\n  return 0;\n}\n\nfunction inflate(strm, flush) {\n  var state;\n  var input, output;          // input/output buffers\n  var next;                   /* next input INDEX */\n  var put;                    /* next output INDEX */\n  var have, left;             /* available input and output */\n  var hold;                   /* bit buffer */\n  var bits;                   /* bits in bit buffer */\n  var _in, _out;              /* save starting available input and output */\n  var copy;                   /* number of stored or match bytes to copy */\n  var from;                   /* where to copy match bytes from */\n  var from_source;\n  var here = 0;               /* current decoding table entry */\n  var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n  //var last;                   /* parent table entry */\n  var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n  var len;                    /* length to copy for repeats, bits to drop */\n  var ret;                    /* return code */\n  var hbuf = Buf8(4);    /* buffer for gzip header crc calculation */\n  var opts;\n\n  var n; // temporary var for NEED_BITS\n\n  var order = /* permutation of code lengths */\n    [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n\n  if (!strm || !strm.state || !strm.output ||\n      (!strm.input && strm.avail_in !== 0)) {\n    return Z_STREAM_ERROR$1;\n  }\n\n  state = strm.state;\n  if (state.mode === TYPE$1) { state.mode = TYPEDO; }    /* skip check */\n\n\n  //--- LOAD() ---\n  put = strm.next_out;\n  output = strm.output;\n  left = strm.avail_out;\n  next = strm.next_in;\n  input = strm.input;\n  have = strm.avail_in;\n  hold = state.hold;\n  bits = state.bits;\n  //---\n\n  _in = have;\n  _out = left;\n  ret = Z_OK$1;\n\n  inf_leave: // goto emulation\n  for (;;) {\n    switch (state.mode) {\n      case HEAD:\n        if (state.wrap === 0) {\n          state.mode = TYPEDO;\n          break;\n        }\n        //=== NEEDBITS(16);\n        while (bits < 16) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        if ((state.wrap & 2) && hold === 0x8b1f) {  /* gzip header */\n          state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n          //=== CRC2(state.check, hold);\n          hbuf[0] = hold & 0xff;\n          hbuf[1] = (hold >>> 8) & 0xff;\n          state.check = crc32(state.check, hbuf, 2, 0);\n          //===//\n\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n          state.mode = FLAGS;\n          break;\n        }\n        state.flags = 0;           /* expect zlib header */\n        if (state.head) {\n          state.head.done = false;\n        }\n        if (!(state.wrap & 1) ||   /* check if zlib header allowed */\n          (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n          strm.msg = 'incorrect header check';\n          state.mode = BAD$1;\n          break;\n        }\n        if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED$1) {\n          strm.msg = 'unknown compression method';\n          state.mode = BAD$1;\n          break;\n        }\n        //--- DROPBITS(4) ---//\n        hold >>>= 4;\n        bits -= 4;\n        //---//\n        len = (hold & 0x0f)/*BITS(4)*/ + 8;\n        if (state.wbits === 0) {\n          state.wbits = len;\n        }\n        else if (len > state.wbits) {\n          strm.msg = 'invalid window size';\n          state.mode = BAD$1;\n          break;\n        }\n        state.dmax = 1 << len;\n        //Tracev((stderr, \"inflate:   zlib header ok\\n\"));\n        strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n        state.mode = hold & 0x200 ? DICTID : TYPE$1;\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        break;\n      case FLAGS:\n        //=== NEEDBITS(16); */\n        while (bits < 16) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        state.flags = hold;\n        if ((state.flags & 0xff) !== Z_DEFLATED$1) {\n          strm.msg = 'unknown compression method';\n          state.mode = BAD$1;\n          break;\n        }\n        if (state.flags & 0xe000) {\n          strm.msg = 'unknown header flags set';\n          state.mode = BAD$1;\n          break;\n        }\n        if (state.head) {\n          state.head.text = ((hold >> 8) & 1);\n        }\n        if (state.flags & 0x0200) {\n          //=== CRC2(state.check, hold);\n          hbuf[0] = hold & 0xff;\n          hbuf[1] = (hold >>> 8) & 0xff;\n          state.check = crc32(state.check, hbuf, 2, 0);\n          //===//\n        }\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = TIME;\n        /* falls through */\n      case TIME:\n        //=== NEEDBITS(32); */\n        while (bits < 32) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        if (state.head) {\n          state.head.time = hold;\n        }\n        if (state.flags & 0x0200) {\n          //=== CRC4(state.check, hold)\n          hbuf[0] = hold & 0xff;\n          hbuf[1] = (hold >>> 8) & 0xff;\n          hbuf[2] = (hold >>> 16) & 0xff;\n          hbuf[3] = (hold >>> 24) & 0xff;\n          state.check = crc32(state.check, hbuf, 4, 0);\n          //===\n        }\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = OS;\n        /* falls through */\n      case OS:\n        //=== NEEDBITS(16); */\n        while (bits < 16) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        if (state.head) {\n          state.head.xflags = (hold & 0xff);\n          state.head.os = (hold >> 8);\n        }\n        if (state.flags & 0x0200) {\n          //=== CRC2(state.check, hold);\n          hbuf[0] = hold & 0xff;\n          hbuf[1] = (hold >>> 8) & 0xff;\n          state.check = crc32(state.check, hbuf, 2, 0);\n          //===//\n        }\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = EXLEN;\n        /* falls through */\n      case EXLEN:\n        if (state.flags & 0x0400) {\n          //=== NEEDBITS(16); */\n          while (bits < 16) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          state.length = hold;\n          if (state.head) {\n            state.head.extra_len = hold;\n          }\n          if (state.flags & 0x0200) {\n            //=== CRC2(state.check, hold);\n            hbuf[0] = hold & 0xff;\n            hbuf[1] = (hold >>> 8) & 0xff;\n            state.check = crc32(state.check, hbuf, 2, 0);\n            //===//\n          }\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n        }\n        else if (state.head) {\n          state.head.extra = null/*Z_NULL*/;\n        }\n        state.mode = EXTRA;\n        /* falls through */\n      case EXTRA:\n        if (state.flags & 0x0400) {\n          copy = state.length;\n          if (copy > have) { copy = have; }\n          if (copy) {\n            if (state.head) {\n              len = state.head.extra_len - state.length;\n              if (!state.head.extra) {\n                // Use untyped array for more convenient processing later\n                state.head.extra = new Array(state.head.extra_len);\n              }\n              arraySet(\n                state.head.extra,\n                input,\n                next,\n                // extra field is limited to 65536 bytes\n                // - no need for additional size check\n                copy,\n                /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n                len\n              );\n              //zmemcpy(state.head.extra + len, next,\n              //        len + copy > state.head.extra_max ?\n              //        state.head.extra_max - len : copy);\n            }\n            if (state.flags & 0x0200) {\n              state.check = crc32(state.check, input, copy, next);\n            }\n            have -= copy;\n            next += copy;\n            state.length -= copy;\n          }\n          if (state.length) { break inf_leave; }\n        }\n        state.length = 0;\n        state.mode = NAME;\n        /* falls through */\n      case NAME:\n        if (state.flags & 0x0800) {\n          if (have === 0) { break inf_leave; }\n          copy = 0;\n          do {\n            // TODO: 2 or 1 bytes?\n            len = input[next + copy++];\n            /* use constant limit because in js we should not preallocate memory */\n            if (state.head && len &&\n                (state.length < 65536 /*state.head.name_max*/)) {\n              state.head.name += String.fromCharCode(len);\n            }\n          } while (len && copy < have);\n\n          if (state.flags & 0x0200) {\n            state.check = crc32(state.check, input, copy, next);\n          }\n          have -= copy;\n          next += copy;\n          if (len) { break inf_leave; }\n        }\n        else if (state.head) {\n          state.head.name = null;\n        }\n        state.length = 0;\n        state.mode = COMMENT;\n        /* falls through */\n      case COMMENT:\n        if (state.flags & 0x1000) {\n          if (have === 0) { break inf_leave; }\n          copy = 0;\n          do {\n            len = input[next + copy++];\n            /* use constant limit because in js we should not preallocate memory */\n            if (state.head && len &&\n                (state.length < 65536 /*state.head.comm_max*/)) {\n              state.head.comment += String.fromCharCode(len);\n            }\n          } while (len && copy < have);\n          if (state.flags & 0x0200) {\n            state.check = crc32(state.check, input, copy, next);\n          }\n          have -= copy;\n          next += copy;\n          if (len) { break inf_leave; }\n        }\n        else if (state.head) {\n          state.head.comment = null;\n        }\n        state.mode = HCRC;\n        /* falls through */\n      case HCRC:\n        if (state.flags & 0x0200) {\n          //=== NEEDBITS(16); */\n          while (bits < 16) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          if (hold !== (state.check & 0xffff)) {\n            strm.msg = 'header crc mismatch';\n            state.mode = BAD$1;\n            break;\n          }\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n        }\n        if (state.head) {\n          state.head.hcrc = ((state.flags >> 9) & 1);\n          state.head.done = true;\n        }\n        strm.adler = state.check = 0;\n        state.mode = TYPE$1;\n        break;\n      case DICTID:\n        //=== NEEDBITS(32); */\n        while (bits < 32) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        strm.adler = state.check = zswap32(hold);\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = DICT;\n        /* falls through */\n      case DICT:\n        if (state.havedict === 0) {\n          //--- RESTORE() ---\n          strm.next_out = put;\n          strm.avail_out = left;\n          strm.next_in = next;\n          strm.avail_in = have;\n          state.hold = hold;\n          state.bits = bits;\n          //---\n          return Z_NEED_DICT$1;\n        }\n        strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n        state.mode = TYPE$1;\n        /* falls through */\n      case TYPE$1:\n        if (flush === Z_BLOCK$1 || flush === Z_TREES$1) { break inf_leave; }\n        /* falls through */\n      case TYPEDO:\n        if (state.last) {\n          //--- BYTEBITS() ---//\n          hold >>>= bits & 7;\n          bits -= bits & 7;\n          //---//\n          state.mode = CHECK;\n          break;\n        }\n        //=== NEEDBITS(3); */\n        while (bits < 3) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        state.last = (hold & 0x01)/*BITS(1)*/;\n        //--- DROPBITS(1) ---//\n        hold >>>= 1;\n        bits -= 1;\n        //---//\n\n        switch ((hold & 0x03)/*BITS(2)*/) {\n          case 0:                             /* stored block */\n            //Tracev((stderr, \"inflate:     stored block%s\\n\",\n            //        state.last ? \" (last)\" : \"\"));\n            state.mode = STORED;\n            break;\n          case 1:                             /* fixed block */\n            fixedtables(state);\n            //Tracev((stderr, \"inflate:     fixed codes block%s\\n\",\n            //        state.last ? \" (last)\" : \"\"));\n            state.mode = LEN_;             /* decode codes */\n            if (flush === Z_TREES$1) {\n              //--- DROPBITS(2) ---//\n              hold >>>= 2;\n              bits -= 2;\n              //---//\n              break inf_leave;\n            }\n            break;\n          case 2:                             /* dynamic block */\n            //Tracev((stderr, \"inflate:     dynamic codes block%s\\n\",\n            //        state.last ? \" (last)\" : \"\"));\n            state.mode = TABLE;\n            break;\n          case 3:\n            strm.msg = 'invalid block type';\n            state.mode = BAD$1;\n        }\n        //--- DROPBITS(2) ---//\n        hold >>>= 2;\n        bits -= 2;\n        //---//\n        break;\n      case STORED:\n        //--- BYTEBITS() ---// /* go to byte boundary */\n        hold >>>= bits & 7;\n        bits -= bits & 7;\n        //---//\n        //=== NEEDBITS(32); */\n        while (bits < 32) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n          strm.msg = 'invalid stored block lengths';\n          state.mode = BAD$1;\n          break;\n        }\n        state.length = hold & 0xffff;\n        //Tracev((stderr, \"inflate:       stored length %u\\n\",\n        //        state.length));\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = COPY_;\n        if (flush === Z_TREES$1) { break inf_leave; }\n        /* falls through */\n      case COPY_:\n        state.mode = COPY;\n        /* falls through */\n      case COPY:\n        copy = state.length;\n        if (copy) {\n          if (copy > have) { copy = have; }\n          if (copy > left) { copy = left; }\n          if (copy === 0) { break inf_leave; }\n          //--- zmemcpy(put, next, copy); ---\n          arraySet(output, input, next, copy, put);\n          //---//\n          have -= copy;\n          next += copy;\n          left -= copy;\n          put += copy;\n          state.length -= copy;\n          break;\n        }\n        //Tracev((stderr, \"inflate:       stored end\\n\"));\n        state.mode = TYPE$1;\n        break;\n      case TABLE:\n        //=== NEEDBITS(14); */\n        while (bits < 14) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n        //--- DROPBITS(5) ---//\n        hold >>>= 5;\n        bits -= 5;\n        //---//\n        state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n        //--- DROPBITS(5) ---//\n        hold >>>= 5;\n        bits -= 5;\n        //---//\n        state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n        //--- DROPBITS(4) ---//\n        hold >>>= 4;\n        bits -= 4;\n        //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n        if (state.nlen > 286 || state.ndist > 30) {\n          strm.msg = 'too many length or distance symbols';\n          state.mode = BAD$1;\n          break;\n        }\n//#endif\n        //Tracev((stderr, \"inflate:       table sizes ok\\n\"));\n        state.have = 0;\n        state.mode = LENLENS;\n        /* falls through */\n      case LENLENS:\n        while (state.have < state.ncode) {\n          //=== NEEDBITS(3);\n          while (bits < 3) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n          //--- DROPBITS(3) ---//\n          hold >>>= 3;\n          bits -= 3;\n          //---//\n        }\n        while (state.have < 19) {\n          state.lens[order[state.have++]] = 0;\n        }\n        // We have separate tables & no pointers. 2 commented lines below not needed.\n        //state.next = state.codes;\n        //state.lencode = state.next;\n        // Switch to use dynamic table\n        state.lencode = state.lendyn;\n        state.lenbits = 7;\n\n        opts = { bits: state.lenbits };\n        ret = inflate_table(CODES$1, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n        state.lenbits = opts.bits;\n\n        if (ret) {\n          strm.msg = 'invalid code lengths set';\n          state.mode = BAD$1;\n          break;\n        }\n        //Tracev((stderr, \"inflate:       code lengths ok\\n\"));\n        state.have = 0;\n        state.mode = CODELENS;\n        /* falls through */\n      case CODELENS:\n        while (state.have < state.nlen + state.ndist) {\n          for (;;) {\n            here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n            here_bits = here >>> 24;\n            here_op = (here >>> 16) & 0xff;\n            here_val = here & 0xffff;\n\n            if ((here_bits) <= bits) { break; }\n            //--- PULLBYTE() ---//\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n            //---//\n          }\n          if (here_val < 16) {\n            //--- DROPBITS(here.bits) ---//\n            hold >>>= here_bits;\n            bits -= here_bits;\n            //---//\n            state.lens[state.have++] = here_val;\n          }\n          else {\n            if (here_val === 16) {\n              //=== NEEDBITS(here.bits + 2);\n              n = here_bits + 2;\n              while (bits < n) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              //===//\n              //--- DROPBITS(here.bits) ---//\n              hold >>>= here_bits;\n              bits -= here_bits;\n              //---//\n              if (state.have === 0) {\n                strm.msg = 'invalid bit length repeat';\n                state.mode = BAD$1;\n                break;\n              }\n              len = state.lens[state.have - 1];\n              copy = 3 + (hold & 0x03);//BITS(2);\n              //--- DROPBITS(2) ---//\n              hold >>>= 2;\n              bits -= 2;\n              //---//\n            }\n            else if (here_val === 17) {\n              //=== NEEDBITS(here.bits + 3);\n              n = here_bits + 3;\n              while (bits < n) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              //===//\n              //--- DROPBITS(here.bits) ---//\n              hold >>>= here_bits;\n              bits -= here_bits;\n              //---//\n              len = 0;\n              copy = 3 + (hold & 0x07);//BITS(3);\n              //--- DROPBITS(3) ---//\n              hold >>>= 3;\n              bits -= 3;\n              //---//\n            }\n            else {\n              //=== NEEDBITS(here.bits + 7);\n              n = here_bits + 7;\n              while (bits < n) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              //===//\n              //--- DROPBITS(here.bits) ---//\n              hold >>>= here_bits;\n              bits -= here_bits;\n              //---//\n              len = 0;\n              copy = 11 + (hold & 0x7f);//BITS(7);\n              //--- DROPBITS(7) ---//\n              hold >>>= 7;\n              bits -= 7;\n              //---//\n            }\n            if (state.have + copy > state.nlen + state.ndist) {\n              strm.msg = 'invalid bit length repeat';\n              state.mode = BAD$1;\n              break;\n            }\n            while (copy--) {\n              state.lens[state.have++] = len;\n            }\n          }\n        }\n\n        /* handle error breaks in while */\n        if (state.mode === BAD$1) { break; }\n\n        /* check for end-of-block code (better have one) */\n        if (state.lens[256] === 0) {\n          strm.msg = 'invalid code -- missing end-of-block';\n          state.mode = BAD$1;\n          break;\n        }\n\n        /* build code tables -- note: do not change the lenbits or distbits\n           values here (9 and 6) without reading the comments in inftrees.h\n           concerning the ENOUGH constants, which depend on those values */\n        state.lenbits = 9;\n\n        opts = { bits: state.lenbits };\n        ret = inflate_table(LENS$1, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n        // We have separate tables & no pointers. 2 commented lines below not needed.\n        // state.next_index = opts.table_index;\n        state.lenbits = opts.bits;\n        // state.lencode = state.next;\n\n        if (ret) {\n          strm.msg = 'invalid literal/lengths set';\n          state.mode = BAD$1;\n          break;\n        }\n\n        state.distbits = 6;\n        //state.distcode.copy(state.codes);\n        // Switch to use dynamic table\n        state.distcode = state.distdyn;\n        opts = { bits: state.distbits };\n        ret = inflate_table(DISTS$1, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n        // We have separate tables & no pointers. 2 commented lines below not needed.\n        // state.next_index = opts.table_index;\n        state.distbits = opts.bits;\n        // state.distcode = state.next;\n\n        if (ret) {\n          strm.msg = 'invalid distances set';\n          state.mode = BAD$1;\n          break;\n        }\n        //Tracev((stderr, 'inflate:       codes ok\\n'));\n        state.mode = LEN_;\n        if (flush === Z_TREES$1) { break inf_leave; }\n        /* falls through */\n      case LEN_:\n        state.mode = LEN;\n        /* falls through */\n      case LEN:\n        if (have >= 6 && left >= 258) {\n          //--- RESTORE() ---\n          strm.next_out = put;\n          strm.avail_out = left;\n          strm.next_in = next;\n          strm.avail_in = have;\n          state.hold = hold;\n          state.bits = bits;\n          //---\n          inflate_fast(strm, _out);\n          //--- LOAD() ---\n          put = strm.next_out;\n          output = strm.output;\n          left = strm.avail_out;\n          next = strm.next_in;\n          input = strm.input;\n          have = strm.avail_in;\n          hold = state.hold;\n          bits = state.bits;\n          //---\n\n          if (state.mode === TYPE$1) {\n            state.back = -1;\n          }\n          break;\n        }\n        state.back = 0;\n        for (;;) {\n          here = state.lencode[hold & ((1 << state.lenbits) - 1)];  /*BITS(state.lenbits)*/\n          here_bits = here >>> 24;\n          here_op = (here >>> 16) & 0xff;\n          here_val = here & 0xffff;\n\n          if (here_bits <= bits) { break; }\n          //--- PULLBYTE() ---//\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n          //---//\n        }\n        if (here_op && (here_op & 0xf0) === 0) {\n          last_bits = here_bits;\n          last_op = here_op;\n          last_val = here_val;\n          for (;;) {\n            here = state.lencode[last_val +\n                    ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n            here_bits = here >>> 24;\n            here_op = (here >>> 16) & 0xff;\n            here_val = here & 0xffff;\n\n            if ((last_bits + here_bits) <= bits) { break; }\n            //--- PULLBYTE() ---//\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n            //---//\n          }\n          //--- DROPBITS(last.bits) ---//\n          hold >>>= last_bits;\n          bits -= last_bits;\n          //---//\n          state.back += last_bits;\n        }\n        //--- DROPBITS(here.bits) ---//\n        hold >>>= here_bits;\n        bits -= here_bits;\n        //---//\n        state.back += here_bits;\n        state.length = here_val;\n        if (here_op === 0) {\n          //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n          //        \"inflate:         literal '%c'\\n\" :\n          //        \"inflate:         literal 0x%02x\\n\", here.val));\n          state.mode = LIT;\n          break;\n        }\n        if (here_op & 32) {\n          //Tracevv((stderr, \"inflate:         end of block\\n\"));\n          state.back = -1;\n          state.mode = TYPE$1;\n          break;\n        }\n        if (here_op & 64) {\n          strm.msg = 'invalid literal/length code';\n          state.mode = BAD$1;\n          break;\n        }\n        state.extra = here_op & 15;\n        state.mode = LENEXT;\n        /* falls through */\n      case LENEXT:\n        if (state.extra) {\n          //=== NEEDBITS(state.extra);\n          n = state.extra;\n          while (bits < n) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n          //--- DROPBITS(state.extra) ---//\n          hold >>>= state.extra;\n          bits -= state.extra;\n          //---//\n          state.back += state.extra;\n        }\n        //Tracevv((stderr, \"inflate:         length %u\\n\", state.length));\n        state.was = state.length;\n        state.mode = DIST;\n        /* falls through */\n      case DIST:\n        for (;;) {\n          here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n          here_bits = here >>> 24;\n          here_op = (here >>> 16) & 0xff;\n          here_val = here & 0xffff;\n\n          if ((here_bits) <= bits) { break; }\n          //--- PULLBYTE() ---//\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n          //---//\n        }\n        if ((here_op & 0xf0) === 0) {\n          last_bits = here_bits;\n          last_op = here_op;\n          last_val = here_val;\n          for (;;) {\n            here = state.distcode[last_val +\n                    ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n            here_bits = here >>> 24;\n            here_op = (here >>> 16) & 0xff;\n            here_val = here & 0xffff;\n\n            if ((last_bits + here_bits) <= bits) { break; }\n            //--- PULLBYTE() ---//\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n            //---//\n          }\n          //--- DROPBITS(last.bits) ---//\n          hold >>>= last_bits;\n          bits -= last_bits;\n          //---//\n          state.back += last_bits;\n        }\n        //--- DROPBITS(here.bits) ---//\n        hold >>>= here_bits;\n        bits -= here_bits;\n        //---//\n        state.back += here_bits;\n        if (here_op & 64) {\n          strm.msg = 'invalid distance code';\n          state.mode = BAD$1;\n          break;\n        }\n        state.offset = here_val;\n        state.extra = (here_op) & 15;\n        state.mode = DISTEXT;\n        /* falls through */\n      case DISTEXT:\n        if (state.extra) {\n          //=== NEEDBITS(state.extra);\n          n = state.extra;\n          while (bits < n) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n          //--- DROPBITS(state.extra) ---//\n          hold >>>= state.extra;\n          bits -= state.extra;\n          //---//\n          state.back += state.extra;\n        }\n//#ifdef INFLATE_STRICT\n        if (state.offset > state.dmax) {\n          strm.msg = 'invalid distance too far back';\n          state.mode = BAD$1;\n          break;\n        }\n//#endif\n        //Tracevv((stderr, \"inflate:         distance %u\\n\", state.offset));\n        state.mode = MATCH;\n        /* falls through */\n      case MATCH:\n        if (left === 0) { break inf_leave; }\n        copy = _out - left;\n        if (state.offset > copy) {         /* copy from window */\n          copy = state.offset - copy;\n          if (copy > state.whave) {\n            if (state.sane) {\n              strm.msg = 'invalid distance too far back';\n              state.mode = BAD$1;\n              break;\n            }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n//          Trace((stderr, \"inflate.c too far\\n\"));\n//          copy -= state.whave;\n//          if (copy > state.length) { copy = state.length; }\n//          if (copy > left) { copy = left; }\n//          left -= copy;\n//          state.length -= copy;\n//          do {\n//            output[put++] = 0;\n//          } while (--copy);\n//          if (state.length === 0) { state.mode = LEN; }\n//          break;\n//#endif\n          }\n          if (copy > state.wnext) {\n            copy -= state.wnext;\n            from = state.wsize - copy;\n          }\n          else {\n            from = state.wnext - copy;\n          }\n          if (copy > state.length) { copy = state.length; }\n          from_source = state.window;\n        }\n        else {                              /* copy from output */\n          from_source = output;\n          from = put - state.offset;\n          copy = state.length;\n        }\n        if (copy > left) { copy = left; }\n        left -= copy;\n        state.length -= copy;\n        do {\n          output[put++] = from_source[from++];\n        } while (--copy);\n        if (state.length === 0) { state.mode = LEN; }\n        break;\n      case LIT:\n        if (left === 0) { break inf_leave; }\n        output[put++] = state.length;\n        left--;\n        state.mode = LEN;\n        break;\n      case CHECK:\n        if (state.wrap) {\n          //=== NEEDBITS(32);\n          while (bits < 32) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            // Use '|' instead of '+' to make sure that result is signed\n            hold |= input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          _out -= left;\n          strm.total_out += _out;\n          state.total += _out;\n          if (_out) {\n            strm.adler = state.check =\n                /*UPDATE(state.check, put - _out, _out);*/\n                (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n          }\n          _out = left;\n          // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n          if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n            strm.msg = 'incorrect data check';\n            state.mode = BAD$1;\n            break;\n          }\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n          //Tracev((stderr, \"inflate:   check matches trailer\\n\"));\n        }\n        state.mode = LENGTH;\n        /* falls through */\n      case LENGTH:\n        if (state.wrap && state.flags) {\n          //=== NEEDBITS(32);\n          while (bits < 32) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          if (hold !== (state.total & 0xffffffff)) {\n            strm.msg = 'incorrect length check';\n            state.mode = BAD$1;\n            break;\n          }\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n          //Tracev((stderr, \"inflate:   length matches trailer\\n\"));\n        }\n        state.mode = DONE;\n        /* falls through */\n      case DONE:\n        ret = Z_STREAM_END$1;\n        break inf_leave;\n      case BAD$1:\n        ret = Z_DATA_ERROR$1;\n        break inf_leave;\n      case MEM:\n        return Z_MEM_ERROR;\n      case SYNC:\n        /* falls through */\n      default:\n        return Z_STREAM_ERROR$1;\n    }\n  }\n\n  // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n  /*\n     Return from inflate(), updating the total counts and the check value.\n     If there was no progress during the inflate() call, return a buffer\n     error.  Call updatewindow() to create and/or update the window state.\n     Note: a memory error from inflate() is non-recoverable.\n   */\n\n  //--- RESTORE() ---\n  strm.next_out = put;\n  strm.avail_out = left;\n  strm.next_in = next;\n  strm.avail_in = have;\n  state.hold = hold;\n  state.bits = bits;\n  //---\n\n  if (state.wsize || (_out !== strm.avail_out && state.mode < BAD$1 &&\n                      (state.mode < CHECK || flush !== Z_FINISH$1))) {\n    if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) ;\n  }\n  _in -= strm.avail_in;\n  _out -= strm.avail_out;\n  strm.total_in += _in;\n  strm.total_out += _out;\n  state.total += _out;\n  if (state.wrap && _out) {\n    strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n      (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n  }\n  strm.data_type = state.bits + (state.last ? 64 : 0) +\n                    (state.mode === TYPE$1 ? 128 : 0) +\n                    (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n  if (((_in === 0 && _out === 0) || flush === Z_FINISH$1) && ret === Z_OK$1) {\n    ret = Z_BUF_ERROR$1;\n  }\n  return ret;\n}\n\nfunction inflateEnd(strm) {\n\n  if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n    return Z_STREAM_ERROR$1;\n  }\n\n  var state = strm.state;\n  if (state.window) {\n    state.window = null;\n  }\n  strm.state = null;\n  return Z_OK$1;\n}\n\nfunction inflateGetHeader(strm, head) {\n  var state;\n\n  /* check state */\n  if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n  state = strm.state;\n  if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR$1; }\n\n  /* save header structure */\n  state.head = head;\n  head.done = false;\n  return Z_OK$1;\n}\n\nfunction inflateSetDictionary(strm, dictionary) {\n  var dictLength = dictionary.length;\n\n  var state;\n  var dictid;\n  var ret;\n\n  /* check state */\n  if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR$1; }\n  state = strm.state;\n\n  if (state.wrap !== 0 && state.mode !== DICT) {\n    return Z_STREAM_ERROR$1;\n  }\n\n  /* check for correct dictionary identifier */\n  if (state.mode === DICT) {\n    dictid = 1; /* adler32(0, null, 0)*/\n    /* dictid = adler32(dictid, dictionary, dictLength); */\n    dictid = adler32(dictid, dictionary, dictLength, 0);\n    if (dictid !== state.check) {\n      return Z_DATA_ERROR$1;\n    }\n  }\n  /* copy dictionary to window using updatewindow(), which will amend the\n   existing dictionary if appropriate */\n  ret = updatewindow(strm, dictionary, dictLength, dictLength);\n  if (ret) {\n    state.mode = MEM;\n    return Z_MEM_ERROR;\n  }\n  state.havedict = 1;\n  // Tracev((stderr, \"inflate:   dictionary set\\n\"));\n  return Z_OK$1;\n}\n\n/* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n\n/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar msg = {\n  2:      'need dictionary',     /* Z_NEED_DICT       2  */\n  1:      'stream end',          /* Z_STREAM_END      1  */\n  0:      '',                    /* Z_OK              0  */\n  '-1':   'file error',          /* Z_ERRNO         (-1) */\n  '-2':   'stream error',        /* Z_STREAM_ERROR  (-2) */\n  '-3':   'data error',          /* Z_DATA_ERROR    (-3) */\n  '-4':   'insufficient memory', /* Z_MEM_ERROR     (-4) */\n  '-5':   'buffer error',        /* Z_BUF_ERROR     (-5) */\n  '-6':   'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n\n/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n  /* next input byte */\n  this.input = null; // JS specific, because we have no pointers\n  this.next_in = 0;\n  /* number of bytes available at input */\n  this.avail_in = 0;\n  /* total number of input bytes read so far */\n  this.total_in = 0;\n  /* next output byte should be put there */\n  this.output = null; // JS specific, because we have no pointers\n  this.next_out = 0;\n  /* remaining free space at output */\n  this.avail_out = 0;\n  /* total number of bytes output so far */\n  this.total_out = 0;\n  /* last error message, NULL if no error */\n  this.msg = ''/*Z_NULL*/;\n  /* not visible by applications */\n  this.state = null;\n  /* best guess about the data type: binary or text */\n  this.data_type = 2/*Z_UNKNOWN*/;\n  /* adler32 value of the uncompressed data */\n  this.adler = 0;\n}\n\n/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n  /* true if compressed data believed to be text */\n  this.text       = 0;\n  /* modification time */\n  this.time       = 0;\n  /* extra flags (not used when writing a gzip file) */\n  this.xflags     = 0;\n  /* operating system */\n  this.os         = 0;\n  /* pointer to extra field or Z_NULL if none */\n  this.extra      = null;\n  /* extra field length (valid if extra != Z_NULL) */\n  this.extra_len  = 0; // Actually, we don't need it in JS,\n                       // but leave for few code modifications\n\n  //\n  // Setup limits is not necessary because in js we should not preallocate memory\n  // for inflate use constant limit in 65536 bytes\n  //\n\n  /* space at extra (only when reading header) */\n  // this.extra_max  = 0;\n  /* pointer to zero-terminated file name or Z_NULL */\n  this.name       = '';\n  /* space at name (only when reading header) */\n  // this.name_max   = 0;\n  /* pointer to zero-terminated comment or Z_NULL */\n  this.comment    = '';\n  /* space at comment (only when reading header) */\n  // this.comm_max   = 0;\n  /* true if there was or will be a header crc */\n  this.hcrc       = 0;\n  /* true when done reading gzip header (not used when writing a gzip file) */\n  this.done       = false;\n}\n\n/* eslint-disable */\n\nvar toString = Object.prototype.toString;\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Inflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n *   from utf8 to utf16 (javascript) string. When string output requested,\n *   chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n *   , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n *   , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true);  // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nvar Inflate = function Inflate(options) {\n  if (!(this instanceof Inflate)) { return new Inflate(options); }\n\n  this.options = assign({\n    chunkSize: 16384,\n    windowBits: 0,\n    to: ''\n  }, options || {});\n\n  var opt = this.options;\n\n  // Force window size for `raw` data, if not set directly,\n  // because we have no header for autodetect.\n  if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n    opt.windowBits = -opt.windowBits;\n    if (opt.windowBits === 0) { opt.windowBits = -15; }\n  }\n\n  // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n  if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n      !(options && options.windowBits)) {\n    opt.windowBits += 32;\n  }\n\n  // Gzip header has no info about windows size, we can do autodetect only\n  // for deflate. So, if window size not set, force it to max when gzip possible\n  if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n    // bit 3 (16) -> gzipped data\n    // bit 4 (32) -> autodetect gzip/deflate\n    if ((opt.windowBits & 15) === 0) {\n      opt.windowBits |= 15;\n    }\n  }\n\n  this.err  = 0;    // error code, if happens (0 = Z_OK)\n  this.msg  = '';   // error message\n  this.ended= false;// used to avoid multiple onEnd() calls\n  this.chunks = [];   // chunks of compressed data\n\n  this.strm = new ZStream();\n  this.strm.avail_out = 0;\n\n  var status= inflateInit2(\n    this.strm,\n    opt.windowBits\n  );\n\n  if (status !== Z_OK) {\n    throw new Error(msg[status]);\n  }\n\n  this.header = new GZheader();\n\n  inflateGetHeader(this.strm, this.header);\n\n  // Setup dictionary\n  if (opt.dictionary) {\n    // Convert data if needed\n    if (typeof opt.dictionary === 'string') {\n      opt.dictionary = string2buf(opt.dictionary);\n    } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n      opt.dictionary = new Uint8Array(opt.dictionary);\n    }\n    if (opt.raw) { //In raw mode we need to set the dictionary early\n      status = inflateSetDictionary(this.strm, opt.dictionary);\n      if (status !== Z_OK) {\n        throw new Error(msg[status]);\n      }\n    }\n  }\n};\n\n/**\n * Inflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the decompression context.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true);// push last chunk\n * ```\n **/\nInflate.prototype.push = function push (data, mode) {\n  var strm = this.strm;\n  var chunkSize = this.options.chunkSize;\n  var dictionary = this.options.dictionary;\n  var status, _mode;\n  var next_out_utf8, tail, utf8str;\n  var dict;\n\n  // Flag to properly process Z_BUF_ERROR on testing inflate call\n  // when we check that all output data was flushed.\n  var allowBufError = false;\n\n  if (this.ended) { return false; }\n  _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n  // Convert data if needed\n  if (typeof data === 'string') {\n    // Only binary strings can be decompressed on practice\n    strm.input = binstring2buf(data);\n  } else if (toString.call(data) === '[object ArrayBuffer]') {\n    strm.input = new Uint8Array(data);\n  } else {\n    strm.input = data;\n  }\n\n  strm.next_in = 0;\n  strm.avail_in = strm.input.length;\n\n  do {\n    if (strm.avail_out === 0) {\n      strm.output = Buf8(chunkSize);\n      strm.next_out = 0;\n      strm.avail_out = chunkSize;\n    }\n\n    status = inflate(strm, Z_NO_FLUSH);  /* no bad return value */\n\n    if (status === Z_NEED_DICT && dictionary) {\n      // Convert data if needed\n      if (typeof dictionary === 'string') {\n        dict = string2buf(dictionary);\n      } else if (toString.call(dictionary) === '[object ArrayBuffer]') {\n        dict = new Uint8Array(dictionary);\n      } else {\n        dict = dictionary;\n      }\n\n      status = inflateSetDictionary(this.strm, dict);\n\n    }\n\n    if (status === Z_BUF_ERROR && allowBufError === true) {\n      status = Z_OK;\n      allowBufError = false;\n    }\n\n    if (status !== Z_STREAM_END && status !== Z_OK) {\n      this.onEnd(status);\n      this.ended = true;\n      return false;\n    }\n\n    if (strm.next_out) {\n      if (strm.avail_out === 0 || status === Z_STREAM_END || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n\n        if (this.options.to === 'string') {\n\n          next_out_utf8 = utf8border(strm.output, strm.next_out);\n\n          tail = strm.next_out - next_out_utf8;\n          utf8str = buf2string(strm.output, next_out_utf8);\n\n          // move tail\n          strm.next_out = tail;\n          strm.avail_out = chunkSize - tail;\n          if (tail) { arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }\n\n          this.onData(utf8str);\n\n        } else {\n          this.onData(shrinkBuf(strm.output, strm.next_out));\n        }\n      }\n    }\n\n    // When no more input data, we should check that internal inflate buffers\n    // are flushed. The only way to do it when avail_out = 0 - run one more\n    // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.\n    // Here we set flag to process this error properly.\n    //\n    // NOTE. Deflate does not return error in this case and does not needs such\n    // logic.\n    if (strm.avail_in === 0 && strm.avail_out === 0) {\n      allowBufError = true;\n    }\n\n  } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n  if (status === Z_STREAM_END) {\n    _mode = Z_FINISH;\n  }\n\n  // Finalize on the last chunk.\n  if (_mode === Z_FINISH) {\n    status = inflateEnd(this.strm);\n    this.onEnd(status);\n    this.ended = true;\n    return status === Z_OK;\n  }\n\n  // callback interim results if Z_SYNC_FLUSH.\n  if (_mode === Z_SYNC_FLUSH) {\n    this.onEnd(Z_OK);\n    strm.avail_out = 0;\n    return true;\n  }\n\n  return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate.prototype.onData = function onData (chunk) {\n  this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate.prototype.onEnd = function onEnd (status) {\n  // On success - join\n  if (status === Z_OK) {\n    if (this.options.to === 'string') {\n      // Glue & convert here, until we teach pako to send\n      // utf8 aligned strings to onData\n      this.result = this.chunks.join('');\n    } else {\n      this.result = flattenChunks(this.chunks);\n    }\n  }\n  this.chunks = [];\n  this.err = status;\n  this.msg = this.strm.msg;\n};\n\n/**\n * inflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n *   negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n *   from utf8 to utf16 (javascript) string. When string output requested,\n *   chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n *   , input = pako.deflate([1,2,3,4,5,6,7,8,9])\n *   , output;\n *\n * try {\n *   output = pako.inflate(input);\n * } catch (err)\n *   console.log(err);\n * }\n * ```\n **/\nfunction inflate$1(input, options) {\n  var inflator = new Inflate(options);\n\n  inflator.push(input, true);\n\n  // That will never happens, if you don't cheat with options :)\n  if (inflator.err) { throw inflator.msg || msg[inflator.err]; }\n\n  return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw(input, options) {\n  options = options || {};\n  options.raw = true;\n  return inflate$1(input, options);\n}\n\n/**\n * ungzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\nvar ungzip = inflate$1;\n\n/* eslint-disable */\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES    = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH    = 3;\nvar MAX_MATCH    = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES  = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS      = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES       = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES       = 30;\n/* number of distance codes */\n\nvar BL_CODES      = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE     = 2 * L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS      = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size      = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK   = 256;\n/* end of block literal code */\n\nvar REP_3_6     = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10   = 17;\n/* repeat a zero length 3-10 times  (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times  (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nvar extra_lbits =   /* extra bits for each length code */\n  [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\nvar extra_dbits =   /* extra bits for each distance code */\n  [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\nvar extra_blbits =  /* extra bits for each bit length code */\n  [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n  [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree;\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree;\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code;\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code;\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length;\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist;\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n  this.static_tree  = static_tree;  /* static tree or NULL */\n  this.extra_bits   = extra_bits;   /* extra bits for each code or NULL */\n  this.extra_base   = extra_base;   /* base index for extra_bits */\n  this.elems        = elems;        /* max number of elements in the tree */\n  this.max_length   = max_length;   /* max bit length for the codes */\n\n  // show if `static_tree` has data or dummy - needed for monomorphic objects\n  this.has_stree    = static_tree && static_tree.length;\n}\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n  this.dyn_tree = dyn_tree;     /* the dynamic tree */\n  this.max_code = 0;            /* largest code with non zero frequency */\n  this.stat_desc = stat_desc;   /* the corresponding static tree */\n}\n\n\n\nfunction d_code(dist) {\n  return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short(s, w) {\n//    put_byte(s, (uch)((w) & 0xff));\n//    put_byte(s, (uch)((ush)(w) >> 8));\n  s.pending_buf[s.pending++] = (w) & 0xff;\n  s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n  if (s.bi_valid > (Buf_size - length)) {\n    s.bi_buf |= (value << s.bi_valid) & 0xffff;\n    put_short(s, s.bi_buf);\n    s.bi_buf = value >> (Buf_size - s.bi_valid);\n    s.bi_valid += length - Buf_size;\n  } else {\n    s.bi_buf |= (value << s.bi_valid) & 0xffff;\n    s.bi_valid += length;\n  }\n}\n\n\nfunction send_code(s, c, tree) {\n  send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n  var res = 0;\n  do {\n    res |= code & 1;\n    code >>>= 1;\n    res <<= 1;\n  } while (--len > 0);\n  return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n  if (s.bi_valid === 16) {\n    put_short(s, s.bi_buf);\n    s.bi_buf = 0;\n    s.bi_valid = 0;\n\n  } else if (s.bi_valid >= 8) {\n    s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n    s.bi_buf >>= 8;\n    s.bi_valid -= 8;\n  }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n *    above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n *     array bl_count contains the frequencies for each bit length.\n *     The length opt_len is updated; static_len is also updated if stree is\n *     not null.\n */\nfunction gen_bitlen(s, desc)\n//    deflate_state *s;\n//    tree_desc *desc;    /* the tree descriptor */\n{\n  var tree            = desc.dyn_tree;\n  var max_code        = desc.max_code;\n  var stree           = desc.stat_desc.static_tree;\n  var has_stree       = desc.stat_desc.has_stree;\n  var extra           = desc.stat_desc.extra_bits;\n  var base            = desc.stat_desc.extra_base;\n  var max_length      = desc.stat_desc.max_length;\n  var h;              /* heap index */\n  var n, m;           /* iterate over the tree elements */\n  var bits;           /* bit length */\n  var xbits;          /* extra bits */\n  var f;              /* frequency */\n  var overflow = 0;   /* number of elements with bit length too large */\n\n  for (bits = 0; bits <= MAX_BITS; bits++) {\n    s.bl_count[bits] = 0;\n  }\n\n  /* In a first pass, compute the optimal bit lengths (which may\n   * overflow in the case of the bit length tree).\n   */\n  tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n  for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n    n = s.heap[h];\n    bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n    if (bits > max_length) {\n      bits = max_length;\n      overflow++;\n    }\n    tree[n * 2 + 1]/*.Len*/ = bits;\n    /* We overwrite tree[n].Dad which is no longer needed */\n\n    if (n > max_code) { continue; } /* not a leaf node */\n\n    s.bl_count[bits]++;\n    xbits = 0;\n    if (n >= base) {\n      xbits = extra[n - base];\n    }\n    f = tree[n * 2]/*.Freq*/;\n    s.opt_len += f * (bits + xbits);\n    if (has_stree) {\n      s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n    }\n  }\n  if (overflow === 0) { return; }\n\n  // Trace((stderr,\"\\nbit length overflow\\n\"));\n  /* This happens for example on obj2 and pic of the Calgary corpus */\n\n  /* Find the first bit length which could increase: */\n  do {\n    bits = max_length - 1;\n    while (s.bl_count[bits] === 0) { bits--; }\n    s.bl_count[bits]--;      /* move one leaf down the tree */\n    s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n    s.bl_count[max_length]--;\n    /* The brother of the overflow item also moves one step up,\n     * but this does not affect bl_count[max_length]\n     */\n    overflow -= 2;\n  } while (overflow > 0);\n\n  /* Now recompute all bit lengths, scanning in increasing frequency.\n   * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n   * lengths instead of fixing only the wrong ones. This idea is taken\n   * from 'ar' written by Haruhiko Okumura.)\n   */\n  for (bits = max_length; bits !== 0; bits--) {\n    n = s.bl_count[bits];\n    while (n !== 0) {\n      m = s.heap[--h];\n      if (m > max_code) { continue; }\n      if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n        // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n        s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n        tree[m * 2 + 1]/*.Len*/ = bits;\n      }\n      n--;\n    }\n  }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n *     zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n//    ct_data *tree;             /* the tree to decorate */\n//    int max_code;              /* largest code with non zero frequency */\n//    ushf *bl_count;            /* number of codes at each bit length */\n{\n  var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n  var code = 0;              /* running code value */\n  var bits;                  /* bit index */\n  var n;                     /* code index */\n\n  /* The distribution counts are first used to generate the code values\n   * without bit reversal.\n   */\n  for (bits = 1; bits <= MAX_BITS; bits++) {\n    next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n  }\n  /* Check that the bit counts in bl_count are consistent. The last code\n   * must be all ones.\n   */\n  //Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,\n  //        \"inconsistent bit counts\");\n  //Tracev((stderr,\"\\ngen_codes: max_code %d \", max_code));\n\n  for (n = 0;  n <= max_code; n++) {\n    var len = tree[n * 2 + 1]/*.Len*/;\n    if (len === 0) { continue; }\n    /* Now reverse the bits */\n    tree[n * 2]/*.Code*/ = bi_reverse(next_code[len]++, len);\n\n    //Tracecv(tree != static_ltree, (stderr,\"\\nn %3d %c l %2d c %4x (%x) \",\n    //     n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));\n  }\n}\n\n\n/* ===========================================================================\n * Initialize the various 'constant' tables.\n */\nfunction tr_static_init() {\n  var n;        /* iterates over tree elements */\n  var bits;     /* bit counter */\n  var length;   /* length value */\n  var code;     /* code value */\n  var dist;     /* distance index */\n  var bl_count = new Array(MAX_BITS + 1);\n  /* number of codes at each bit length for an optimal tree */\n\n  static_ltree  = new Array((L_CODES + 2) * 2);\n  zero(static_ltree);\n\n  static_dtree  = new Array(D_CODES * 2);\n  zero(static_dtree);\n\n  _dist_code    = new Array(DIST_CODE_LEN);\n  zero(_dist_code);\n\n  _length_code  = new Array(MAX_MATCH - MIN_MATCH + 1);\n  zero(_length_code);\n\n  base_length   = new Array(LENGTH_CODES);\n  zero(base_length);\n\n  base_dist     = new Array(D_CODES);\n  zero(base_dist);\n\n  // do check in _tr_init()\n  //if (static_init_done) return;\n\n  /* For some embedded targets, global variables are not initialized: */\n/*#ifdef NO_INIT_GLOBAL_POINTERS\n  static_l_desc.static_tree = static_ltree;\n  static_l_desc.extra_bits = extra_lbits;\n  static_d_desc.static_tree = static_dtree;\n  static_d_desc.extra_bits = extra_dbits;\n  static_bl_desc.extra_bits = extra_blbits;\n#endif*/\n\n  /* Initialize the mapping length (0..255) -> length code (0..28) */\n  length = 0;\n  for (code = 0; code < LENGTH_CODES - 1; code++) {\n    base_length[code] = length;\n    for (n = 0; n < (1 << extra_lbits[code]); n++) {\n      _length_code[length++] = code;\n    }\n  }\n  //Assert (length == 256, \"tr_static_init: length != 256\");\n  /* Note that the length 255 (match length 258) can be represented\n   * in two different ways: code 284 + 5 bits or code 285, so we\n   * overwrite length_code[255] to use the best encoding:\n   */\n  _length_code[length - 1] = code;\n\n  /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n  dist = 0;\n  for (code = 0; code < 16; code++) {\n    base_dist[code] = dist;\n    for (n = 0; n < (1 << extra_dbits[code]); n++) {\n      _dist_code[dist++] = code;\n    }\n  }\n  //Assert (dist == 256, \"tr_static_init: dist != 256\");\n  dist >>= 7; /* from now on, all distances are divided by 128 */\n  for (; code < D_CODES; code++) {\n    base_dist[code] = dist << 7;\n    for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n      _dist_code[256 + dist++] = code;\n    }\n  }\n  //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n  /* Construct the codes of the static literal tree */\n  for (bits = 0; bits <= MAX_BITS; bits++) {\n    bl_count[bits] = 0;\n  }\n\n  n = 0;\n  while (n <= 143) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 8;\n    n++;\n    bl_count[8]++;\n  }\n  while (n <= 255) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 9;\n    n++;\n    bl_count[9]++;\n  }\n  while (n <= 279) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 7;\n    n++;\n    bl_count[7]++;\n  }\n  while (n <= 287) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 8;\n    n++;\n    bl_count[8]++;\n  }\n  /* Codes 286 and 287 do not exist, but we must include them in the\n   * tree construction to get a canonical Huffman tree (longest code\n   * all ones)\n   */\n  gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n  /* The static distance tree is trivial: */\n  for (n = 0; n < D_CODES; n++) {\n    static_dtree[n * 2 + 1]/*.Len*/ = 5;\n    static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n  }\n\n  // Now data ready and we can init static trees\n  static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n  static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0,          D_CODES, MAX_BITS);\n  static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0,         BL_CODES, MAX_BL_BITS);\n\n  //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n  var n; /* iterates over tree elements */\n\n  /* Initialize the trees. */\n  for (n = 0; n < L_CODES;  n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n  for (n = 0; n < D_CODES;  n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n  for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n  s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n  s.opt_len = s.static_len = 0;\n  s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n  if (s.bi_valid > 8) {\n    put_short(s, s.bi_buf);\n  } else if (s.bi_valid > 0) {\n    //put_byte(s, (Byte)s->bi_buf);\n    s.pending_buf[s.pending++] = s.bi_buf;\n  }\n  s.bi_buf = 0;\n  s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf    *buf;    /* the input data */\n//unsigned len;     /* its length */\n//int      header;  /* true if block header must be written */\n{\n  bi_windup(s);        /* align on byte boundary */\n\n  if (header) {\n    put_short(s, len);\n    put_short(s, ~len);\n  }\n//  while (len--) {\n//    put_byte(s, *buf++);\n//  }\n  arraySet(s.pending_buf, s.window, buf, len, s.pending);\n  s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n  var _n2 = n * 2;\n  var _m2 = m * 2;\n  return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n         (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n//    deflate_state *s;\n//    ct_data *tree;  /* the tree to restore */\n//    int k;               /* node to move down */\n{\n  var v = s.heap[k];\n  var j = k << 1;  /* left son of k */\n  while (j <= s.heap_len) {\n    /* Set j to the smallest of the two sons: */\n    if (j < s.heap_len &&\n      smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n      j++;\n    }\n    /* Exit if v is smaller than both sons */\n    if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n    /* Exchange v with the smallest son */\n    s.heap[k] = s.heap[j];\n    k = j;\n\n    /* And continue down the tree, setting j to the left son of k */\n    j <<= 1;\n  }\n  s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n//    deflate_state *s;\n//    const ct_data *ltree; /* literal tree */\n//    const ct_data *dtree; /* distance tree */\n{\n  var dist;           /* distance of matched string */\n  var lc;             /* match length or unmatched char (if dist == 0) */\n  var lx = 0;         /* running index in l_buf */\n  var code;           /* the code to send */\n  var extra;          /* number of extra bits to send */\n\n  if (s.last_lit !== 0) {\n    do {\n      dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n      lc = s.pending_buf[s.l_buf + lx];\n      lx++;\n\n      if (dist === 0) {\n        send_code(s, lc, ltree); /* send a literal byte */\n        //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n      } else {\n        /* Here, lc is the match length - MIN_MATCH */\n        code = _length_code[lc];\n        send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n        extra = extra_lbits[code];\n        if (extra !== 0) {\n          lc -= base_length[code];\n          send_bits(s, lc, extra);       /* send the extra length bits */\n        }\n        dist--; /* dist is now the match distance - 1 */\n        code = d_code(dist);\n        //Assert (code < D_CODES, \"bad d_code\");\n\n        send_code(s, code, dtree);       /* send the distance code */\n        extra = extra_dbits[code];\n        if (extra !== 0) {\n          dist -= base_dist[code];\n          send_bits(s, dist, extra);   /* send the extra distance bits */\n        }\n      } /* literal or match pair ? */\n\n      /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n      //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n      //       \"pendingBuf overflow\");\n\n    } while (lx < s.last_lit);\n  }\n\n  send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n *     and corresponding code. The length opt_len is updated; static_len is\n *     also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n//    deflate_state *s;\n//    tree_desc *desc; /* the tree descriptor */\n{\n  var tree     = desc.dyn_tree;\n  var stree    = desc.stat_desc.static_tree;\n  var has_stree = desc.stat_desc.has_stree;\n  var elems    = desc.stat_desc.elems;\n  var n, m;          /* iterate over heap elements */\n  var max_code = -1; /* largest code with non zero frequency */\n  var node;          /* new node being created */\n\n  /* Construct the initial heap, with least frequent element in\n   * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n   * heap[0] is not used.\n   */\n  s.heap_len = 0;\n  s.heap_max = HEAP_SIZE;\n\n  for (n = 0; n < elems; n++) {\n    if (tree[n * 2]/*.Freq*/ !== 0) {\n      s.heap[++s.heap_len] = max_code = n;\n      s.depth[n] = 0;\n\n    } else {\n      tree[n * 2 + 1]/*.Len*/ = 0;\n    }\n  }\n\n  /* The pkzip format requires that at least one distance code exists,\n   * and that at least one bit should be sent even if there is only one\n   * possible code. So to avoid special checks later on we force at least\n   * two codes of non zero frequency.\n   */\n  while (s.heap_len < 2) {\n    node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n    tree[node * 2]/*.Freq*/ = 1;\n    s.depth[node] = 0;\n    s.opt_len--;\n\n    if (has_stree) {\n      s.static_len -= stree[node * 2 + 1]/*.Len*/;\n    }\n    /* node is 0 or 1 so it does not have extra bits */\n  }\n  desc.max_code = max_code;\n\n  /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n   * establish sub-heaps of increasing lengths:\n   */\n  for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n  /* Construct the Huffman tree by repeatedly combining the least two\n   * frequent nodes.\n   */\n  node = elems;              /* next internal node of the tree */\n  do {\n    //pqremove(s, tree, n);  /* n = node of least frequency */\n    /*** pqremove ***/\n    n = s.heap[1/*SMALLEST*/];\n    s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n    pqdownheap(s, tree, 1/*SMALLEST*/);\n    /***/\n\n    m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n    s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n    s.heap[--s.heap_max] = m;\n\n    /* Create a new node father of n and m */\n    tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n    s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n    tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n    /* and insert the new node in the heap */\n    s.heap[1/*SMALLEST*/] = node++;\n    pqdownheap(s, tree, 1/*SMALLEST*/);\n\n  } while (s.heap_len >= 2);\n\n  s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n  /* At this point, the fields freq and dad are set. We can now\n   * generate the bit lengths.\n   */\n  gen_bitlen(s, desc);\n\n  /* The field len is now set, we can generate the bit codes */\n  gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n//    deflate_state *s;\n//    ct_data *tree;   /* the tree to be scanned */\n//    int max_code;    /* and its largest code of non zero frequency */\n{\n  var n;                     /* iterates over all tree elements */\n  var prevlen = -1;          /* last emitted length */\n  var curlen;                /* length of current code */\n\n  var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n  var count = 0;             /* repeat count of the current code */\n  var max_count = 7;         /* max repeat count */\n  var min_count = 4;         /* min repeat count */\n\n  if (nextlen === 0) {\n    max_count = 138;\n    min_count = 3;\n  }\n  tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n  for (n = 0; n <= max_code; n++) {\n    curlen = nextlen;\n    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n    if (++count < max_count && curlen === nextlen) {\n      continue;\n\n    } else if (count < min_count) {\n      s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n    } else if (curlen !== 0) {\n\n      if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n      s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n    } else if (count <= 10) {\n      s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n    } else {\n      s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n    }\n\n    count = 0;\n    prevlen = curlen;\n\n    if (nextlen === 0) {\n      max_count = 138;\n      min_count = 3;\n\n    } else if (curlen === nextlen) {\n      max_count = 6;\n      min_count = 3;\n\n    } else {\n      max_count = 7;\n      min_count = 4;\n    }\n  }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n//    deflate_state *s;\n//    ct_data *tree; /* the tree to be scanned */\n//    int max_code;       /* and its largest code of non zero frequency */\n{\n  var n;                     /* iterates over all tree elements */\n  var prevlen = -1;          /* last emitted length */\n  var curlen;                /* length of current code */\n\n  var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n  var count = 0;             /* repeat count of the current code */\n  var max_count = 7;         /* max repeat count */\n  var min_count = 4;         /* min repeat count */\n\n  /* tree[max_code+1].Len = -1; */  /* guard already set */\n  if (nextlen === 0) {\n    max_count = 138;\n    min_count = 3;\n  }\n\n  for (n = 0; n <= max_code; n++) {\n    curlen = nextlen;\n    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n    if (++count < max_count && curlen === nextlen) {\n      continue;\n\n    } else if (count < min_count) {\n      do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n    } else if (curlen !== 0) {\n      if (curlen !== prevlen) {\n        send_code(s, curlen, s.bl_tree);\n        count--;\n      }\n      //Assert(count >= 3 && count <= 6, \" 3_6?\");\n      send_code(s, REP_3_6, s.bl_tree);\n      send_bits(s, count - 3, 2);\n\n    } else if (count <= 10) {\n      send_code(s, REPZ_3_10, s.bl_tree);\n      send_bits(s, count - 3, 3);\n\n    } else {\n      send_code(s, REPZ_11_138, s.bl_tree);\n      send_bits(s, count - 11, 7);\n    }\n\n    count = 0;\n    prevlen = curlen;\n    if (nextlen === 0) {\n      max_count = 138;\n      min_count = 3;\n\n    } else if (curlen === nextlen) {\n      max_count = 6;\n      min_count = 3;\n\n    } else {\n      max_count = 7;\n      min_count = 4;\n    }\n  }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n  var max_blindex;  /* index of last bit length code of non zero freq */\n\n  /* Determine the bit length frequencies for literal and distance trees */\n  scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n  scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n  /* Build the bit length tree: */\n  build_tree(s, s.bl_desc);\n  /* opt_len now includes the length of the tree representations, except\n   * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n   */\n\n  /* Determine the number of bit length codes to send. The pkzip format\n   * requires that at least 4 bit length codes be sent. (appnote.txt says\n   * 3 but the actual value used is 4.)\n   */\n  for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n    if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n      break;\n    }\n  }\n  /* Update opt_len to include the bit length tree and counts */\n  s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n  //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n  //        s->opt_len, s->static_len));\n\n  return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n//    deflate_state *s;\n//    int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n  var rank;                    /* index in bl_order */\n\n  //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n  //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n  //        \"too many codes\");\n  //Tracev((stderr, \"\\nbl counts: \"));\n  send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n  send_bits(s, dcodes - 1,   5);\n  send_bits(s, blcodes - 4,  4); /* not -3 as stated in appnote.txt */\n  for (rank = 0; rank < blcodes; rank++) {\n    //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n    send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n  }\n  //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n  send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n  //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n  send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n  //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n *    a) There are no non-portable control characters belonging to the\n *       \"black list\" (0..6, 14..25, 28..31).\n *    b) There is at least one printable character belonging to the\n *       \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n *   \"gray list\" that is ignored in this detection algorithm:\n *   (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n  /* black_mask is the bit mask of black-listed bytes\n   * set bits 0..6, 14..25, and 28..31\n   * 0xf3ffc07f = binary 11110011111111111100000001111111\n   */\n  var black_mask = 0xf3ffc07f;\n  var n;\n\n  /* Check for non-textual (\"black-listed\") bytes. */\n  for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n    if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n      return Z_BINARY;\n    }\n  }\n\n  /* Check for textual (\"white-listed\") bytes. */\n  if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n      s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n    return Z_TEXT;\n  }\n  for (n = 32; n < LITERALS; n++) {\n    if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n      return Z_TEXT;\n    }\n  }\n\n  /* There are no \"black-listed\" or \"white-listed\" bytes:\n   * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n   */\n  return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s) {\n\n  if (!static_init_done) {\n    tr_static_init();\n    static_init_done = true;\n  }\n\n  s.l_desc  = new TreeDesc(s.dyn_ltree, static_l_desc);\n  s.d_desc  = new TreeDesc(s.dyn_dtree, static_d_desc);\n  s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n  s.bi_buf = 0;\n  s.bi_valid = 0;\n\n  /* Initialize the first block of the first file: */\n  init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last) {\n  //DeflateState *s;\n  //charf *buf;       /* input block */\n  //ulg stored_len;   /* length of input block */\n  //int last;         /* one if this is the last block for a file */\n  send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3);    /* send block type */\n  copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n  send_bits(s, STATIC_TREES << 1, 3);\n  send_code(s, END_BLOCK, static_ltree);\n  bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last) {\n  //DeflateState *s;\n  //charf *buf;       /* input block, or NULL if too old */\n  //ulg stored_len;   /* length of input block */\n  //int last;         /* one if this is the last block for a file */\n  var opt_lenb, static_lenb;  /* opt_len and static_len in bytes */\n  var max_blindex = 0;        /* index of last bit length code of non zero freq */\n\n  /* Build the Huffman trees unless a stored block is forced */\n  if (s.level > 0) {\n\n    /* Check if the file is binary or text */\n    if (s.strm.data_type === Z_UNKNOWN) {\n      s.strm.data_type = detect_data_type(s);\n    }\n\n    /* Construct the literal and distance trees */\n    build_tree(s, s.l_desc);\n    // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n    //        s->static_len));\n\n    build_tree(s, s.d_desc);\n    // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n    //        s->static_len));\n    /* At this point, opt_len and static_len are the total bit lengths of\n     * the compressed block data, excluding the tree representations.\n     */\n\n    /* Build the bit length tree for the above two trees, and get the index\n     * in bl_order of the last bit length code to send.\n     */\n    max_blindex = build_bl_tree(s);\n\n    /* Determine the best encoding. Compute the block lengths in bytes. */\n    opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n    static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n    // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n    //        opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n    //        s->last_lit));\n\n    if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n  } else {\n    // Assert(buf != (char*)0, \"lost buf\");\n    opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n  }\n\n  if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n    /* 4: two words for the lengths */\n\n    /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n     * Otherwise we can't have processed more than WSIZE input bytes since\n     * the last block flush, because compression would have been\n     * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n     * transform a block into a stored block.\n     */\n    _tr_stored_block(s, buf, stored_len, last);\n\n  } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n    send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n    compress_block(s, static_ltree, static_dtree);\n\n  } else {\n    send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n    send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n    compress_block(s, s.dyn_ltree, s.dyn_dtree);\n  }\n  // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n  /* The above check is made mod 2^32, for files larger than 512 MB\n   * and uLong implemented on 32 bits.\n   */\n  init_block(s);\n\n  if (last) {\n    bi_windup(s);\n  }\n  // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n  //       s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc) {\n  //    deflate_state *s;\n  //    unsigned dist;  /* distance of matched string */\n  //    unsigned lc;    /* match length-MIN_MATCH or unmatched char (if dist==0) */\n  //var out_length, in_length, dcode;\n\n  s.pending_buf[s.d_buf + s.last_lit * 2]     = (dist >>> 8) & 0xff;\n  s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n  s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n  s.last_lit++;\n\n  if (dist === 0) {\n    /* lc is the unmatched char */\n    s.dyn_ltree[lc * 2]/*.Freq*/++;\n  } else {\n    s.matches++;\n    /* Here, lc is the match length - MIN_MATCH */\n    dist--;             /* dist = match distance - 1 */\n    //Assert((ush)dist < (ush)MAX_DIST(s) &&\n    //       (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n    //       (ush)d_code(dist) < (ush)D_CODES,  \"_tr_tally: bad match\");\n\n    s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n    s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n  }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n//  /* Try to guess if it is profitable to stop the current block here */\n//  if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n//    /* Compute an upper bound for the compressed length */\n//    out_length = s.last_lit*8;\n//    in_length = s.strstart - s.block_start;\n//\n//    for (dcode = 0; dcode < D_CODES; dcode++) {\n//      out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n//    }\n//    out_length >>>= 3;\n//    //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n//    //       s->last_lit, in_length, out_length,\n//    //       100L - out_length*100L/in_length));\n//    if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n//      return true;\n//    }\n//  }\n//#endif\n\n  return (s.last_lit === s.lit_bufsize - 1);\n  /* We avoid equality with lit_bufsize because of wraparound at 64K\n   * on 16 bit machines and because stored blocks are restricted to\n   * 64K-1 bytes.\n   */\n}\n\n/* eslint-disable */\n\nvar MAX_MEM_LEVEL = 9;\n\n\nvar LENGTH_CODES$1  = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS$1      = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES$1       = LITERALS$1 + 1 + LENGTH_CODES$1;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES$1       = 30;\n/* number of distance codes */\nvar BL_CODES$1      = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE$1     = 2 * L_CODES$1 + 1;\n/* maximum heap size */\nvar MAX_BITS$1  = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH$1 = 3;\nvar MAX_MATCH$1 = 258;\nvar MIN_LOOKAHEAD = (MAX_MATCH$1 + MIN_MATCH$1 + 1);\n\nvar PRESET_DICT = 0x20;\n\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\n\nvar BS_NEED_MORE      = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE     = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE    = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n  strm.msg = msg[errorCode];\n  return errorCode;\n}\n\nfunction rank(f) {\n  return ((f) << 1) - ((f) > 4 ? 9 : 0);\n}\n\nfunction zero$1(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n  var s = strm.state;\n\n  //_tr_flush_bits(s);\n  var len = s.pending;\n  if (len > strm.avail_out) {\n    len = strm.avail_out;\n  }\n  if (len === 0) { return; }\n\n  arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n  strm.next_out += len;\n  s.pending_out += len;\n  strm.total_out += len;\n  strm.avail_out -= len;\n  s.pending -= len;\n  if (s.pending === 0) {\n    s.pending_out = 0;\n  }\n}\n\n\nfunction flush_block_only(s, last) {\n  _tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n  s.block_start = s.strstart;\n  flush_pending(s.strm);\n}\n\n\nfunction put_byte(s, b) {\n  s.pending_buf[s.pending++] = b;\n}\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n//  put_byte(s, (Byte)(b >> 8));\n//  put_byte(s, (Byte)(b & 0xff));\n  s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n  s.pending_buf[s.pending++] = b & 0xff;\n}\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read.  All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n  var len = strm.avail_in;\n\n  if (len > size) { len = size; }\n  if (len === 0) { return 0; }\n\n  strm.avail_in -= len;\n\n  // zmemcpy(buf, strm->next_in, len);\n  arraySet(buf, strm.input, strm.next_in, len, start);\n  if (strm.state.wrap === 1) {\n    strm.adler = adler32(strm.adler, buf, len, start);\n  }\n\n  else if (strm.state.wrap === 2) {\n    strm.adler = crc32(strm.adler, buf, len, start);\n  }\n\n  strm.next_in += len;\n  strm.total_in += len;\n\n  return len;\n}\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n *   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n  var chain_length = s.max_chain_length;      /* max hash chain length */\n  var scan = s.strstart; /* current string */\n  var match;                       /* matched string */\n  var len;                           /* length of current match */\n  var best_len = s.prev_length;              /* best match length so far */\n  var nice_match = s.nice_match;             /* stop if match long enough */\n  var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n      s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n  var _win = s.window; // shortcut\n\n  var wmask = s.w_mask;\n  var prev  = s.prev;\n\n  /* Stop when cur_match becomes <= limit. To simplify the code,\n   * we prevent matches with the string of window index 0.\n   */\n\n  var strend = s.strstart + MAX_MATCH$1;\n  var scan_end1  = _win[scan + best_len - 1];\n  var scan_end   = _win[scan + best_len];\n\n  /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n   * It is easy to get rid of this optimization if necessary.\n   */\n  // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n  /* Do not waste too much time if we already have a good match: */\n  if (s.prev_length >= s.good_match) {\n    chain_length >>= 2;\n  }\n  /* Do not look for matches beyond the end of the input. This is necessary\n   * to make deflate deterministic.\n   */\n  if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n  // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n  do {\n    // Assert(cur_match < s->strstart, \"no future\");\n    match = cur_match;\n\n    /* Skip to next match if the match length cannot increase\n     * or if the match length is less than 2.  Note that the checks below\n     * for insufficient lookahead only occur occasionally for performance\n     * reasons.  Therefore uninitialized memory will be accessed, and\n     * conditional jumps will be made that depend on those values.\n     * However the length of the match is limited to the lookahead, so\n     * the output of deflate is not affected by the uninitialized values.\n     */\n\n    if (_win[match + best_len]     !== scan_end  ||\n        _win[match + best_len - 1] !== scan_end1 ||\n        _win[match]                !== _win[scan] ||\n        _win[++match]              !== _win[scan + 1]) {\n      continue;\n    }\n\n    /* The check at best_len-1 can be removed because it will be made\n     * again later. (This heuristic is not always a win.)\n     * It is not necessary to compare scan[2] and match[2] since they\n     * are always equal when the other bytes match, given that\n     * the hash keys are equal and that HASH_BITS >= 8.\n     */\n    scan += 2;\n    match++;\n    // Assert(*scan == *match, \"match[2]?\");\n\n    /* We check for insufficient lookahead only every 8th comparison;\n     * the 256th check will be made at strstart+258.\n     */\n    do {\n      /*jshint noempty:false*/\n    } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             scan < strend);\n\n    // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n    len = MAX_MATCH$1 - (strend - scan);\n    scan = strend - MAX_MATCH$1;\n\n    if (len > best_len) {\n      s.match_start = cur_match;\n      best_len = len;\n      if (len >= nice_match) {\n        break;\n      }\n      scan_end1  = _win[scan + best_len - 1];\n      scan_end   = _win[scan + best_len];\n    }\n  } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n  if (best_len <= s.lookahead) {\n    return best_len;\n  }\n  return s.lookahead;\n}\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n *    At least one byte has been read, or avail_in == 0; reads are\n *    performed for at least two bytes (required for the zip translate_eol\n *    option -- not supported here).\n */\nfunction fill_window(s) {\n  var _w_size = s.w_size;\n  var p, n, m, more, str;\n\n  //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n  do {\n    more = s.window_size - s.lookahead - s.strstart;\n\n    // JS ints have 32 bit, block below not needed\n    /* Deal with !@#$% 64K limit: */\n    //if (sizeof(int) <= 2) {\n    //    if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n    //        more = wsize;\n    //\n    //  } else if (more == (unsigned)(-1)) {\n    //        /* Very unlikely, but possible on 16 bit machine if\n    //         * strstart == 0 && lookahead == 1 (input done a byte at time)\n    //         */\n    //        more--;\n    //    }\n    //}\n\n\n    /* If the window is almost full and there is insufficient lookahead,\n     * move the upper half to the lower one to make room in the upper half.\n     */\n    if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n      arraySet(s.window, s.window, _w_size, _w_size, 0);\n      s.match_start -= _w_size;\n      s.strstart -= _w_size;\n      /* we now have strstart >= MAX_DIST */\n      s.block_start -= _w_size;\n\n      /* Slide the hash table (could be avoided with 32 bit values\n       at the expense of memory usage). We slide even when level == 0\n       to keep the hash table consistent if we switch back to level > 0\n       later. (Using level 0 permanently is not an optimal usage of\n       zlib, so we don't care about this pathological case.)\n       */\n\n      n = s.hash_size;\n      p = n;\n      do {\n        m = s.head[--p];\n        s.head[p] = (m >= _w_size ? m - _w_size : 0);\n      } while (--n);\n\n      n = _w_size;\n      p = n;\n      do {\n        m = s.prev[--p];\n        s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n        /* If n is not on any hash chain, prev[n] is garbage but\n         * its value will never be used.\n         */\n      } while (--n);\n\n      more += _w_size;\n    }\n    if (s.strm.avail_in === 0) {\n      break;\n    }\n\n    /* If there was no sliding:\n     *    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n     *    more == window_size - lookahead - strstart\n     * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n     * => more >= window_size - 2*WSIZE + 2\n     * In the BIG_MEM or MMAP case (not yet supported),\n     *   window_size == input_size + MIN_LOOKAHEAD  &&\n     *   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n     * Otherwise, window_size == 2*WSIZE so more >= 2.\n     * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n     */\n    //Assert(more >= 2, \"more < 2\");\n    n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n    s.lookahead += n;\n\n    /* Initialize the hash value now that we have some input: */\n    if (s.lookahead + s.insert >= MIN_MATCH$1) {\n      str = s.strstart - s.insert;\n      s.ins_h = s.window[str];\n\n      /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n//        Call update_hash() MIN_MATCH-3 more times\n//#endif\n      while (s.insert) {\n        /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH$1 - 1]) & s.hash_mask;\n\n        s.prev[str & s.w_mask] = s.head[s.ins_h];\n        s.head[s.ins_h] = str;\n        str++;\n        s.insert--;\n        if (s.lookahead + s.insert < MIN_MATCH$1) {\n          break;\n        }\n      }\n    }\n    /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n     * but this is not important since only literal bytes will be emitted.\n     */\n\n  } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n  /* If the WIN_INIT bytes after the end of the current data have never been\n   * written, then zero those bytes in order to avoid memory check reports of\n   * the use of uninitialized (or uninitialised as Julian writes) bytes by\n   * the longest match routines.  Update the high water mark for the next\n   * time through here.  WIN_INIT is set to MAX_MATCH since the longest match\n   * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n   */\n//  if (s.high_water < s.window_size) {\n//    var curr = s.strstart + s.lookahead;\n//    var init = 0;\n//\n//    if (s.high_water < curr) {\n//      /* Previous high water mark below current data -- zero WIN_INIT\n//       * bytes or up to end of window, whichever is less.\n//       */\n//      init = s.window_size - curr;\n//      if (init > WIN_INIT)\n//        init = WIN_INIT;\n//      zmemzero(s->window + curr, (unsigned)init);\n//      s->high_water = curr + init;\n//    }\n//    else if (s->high_water < (ulg)curr + WIN_INIT) {\n//      /* High water mark at or above current data, but below current data\n//       * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n//       * to end of window, whichever is less.\n//       */\n//      init = (ulg)curr + WIN_INIT - s->high_water;\n//      if (init > s->window_size - s->high_water)\n//        init = s->window_size - s->high_water;\n//      zmemzero(s->window + s->high_water, (unsigned)init);\n//      s->high_water += init;\n//    }\n//  }\n//\n//  Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n//    \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n  /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n   * to pending_buf_size, and each stored block has a 5 byte header:\n   */\n  var max_block_size = 0xffff;\n\n  if (max_block_size > s.pending_buf_size - 5) {\n    max_block_size = s.pending_buf_size - 5;\n  }\n\n  /* Copy as much as possible from input to output: */\n  for (;;) {\n    /* Fill the window as much as possible: */\n    if (s.lookahead <= 1) {\n\n      //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n      //  s->block_start >= (long)s->w_size, \"slide too late\");\n//      if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n//        s.block_start >= s.w_size)) {\n//        throw  new Error(\"slide too late\");\n//      }\n\n      fill_window(s);\n      if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n        return BS_NEED_MORE;\n      }\n\n      if (s.lookahead === 0) {\n        break;\n      }\n      /* flush the current block */\n    }\n    //Assert(s->block_start >= 0L, \"block gone\");\n//    if (s.block_start < 0) throw new Error(\"block gone\");\n\n    s.strstart += s.lookahead;\n    s.lookahead = 0;\n\n    /* Emit a stored block if pending_buf will be full: */\n    var max_start = s.block_start + max_block_size;\n\n    if (s.strstart === 0 || s.strstart >= max_start) {\n      /* strstart == 0 is possible when wraparound on 16-bit machine */\n      s.lookahead = s.strstart - max_start;\n      s.strstart = max_start;\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n\n\n    }\n    /* Flush if we may have to slide, otherwise block_start may become\n     * negative and the data will be gone:\n     */\n    if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n\n  s.insert = 0;\n\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n\n  if (s.strstart > s.block_start) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n\n  return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n  var hash_head;        /* head of the hash chain */\n  var bflush;           /* set if current block must be flushed */\n\n  for (;;) {\n    /* Make sure that we always have enough lookahead, except\n     * at the end of the input file. We need MAX_MATCH bytes\n     * for the next match, plus MIN_MATCH bytes to insert the\n     * string following the next match.\n     */\n    if (s.lookahead < MIN_LOOKAHEAD) {\n      fill_window(s);\n      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n        return BS_NEED_MORE;\n      }\n      if (s.lookahead === 0) {\n        break; /* flush the current block */\n      }\n    }\n\n    /* Insert the string window[strstart .. strstart+2] in the\n     * dictionary, and set hash_head to the head of the hash chain:\n     */\n    hash_head = 0/*NIL*/;\n    if (s.lookahead >= MIN_MATCH$1) {\n      /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH$1 - 1]) & s.hash_mask;\n      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n      s.head[s.ins_h] = s.strstart;\n      /***/\n    }\n\n    /* Find the longest match, discarding those <= prev_length.\n     * At this point we have always match_length < MIN_MATCH\n     */\n    if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n      /* To simplify the code, we prevent matches with the string\n       * of window index 0 (in particular we have to avoid a match\n       * of the string with itself at the start of the input file).\n       */\n      s.match_length = longest_match(s, hash_head);\n      /* longest_match() sets match_start */\n    }\n    if (s.match_length >= MIN_MATCH$1) {\n      // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n      /*** _tr_tally_dist(s, s.strstart - s.match_start,\n                     s.match_length - MIN_MATCH, bflush); ***/\n      bflush = _tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH$1);\n\n      s.lookahead -= s.match_length;\n\n      /* Insert new strings in the hash table only if the match length\n       * is not too large. This saves time but degrades compression.\n       */\n      if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH$1) {\n        s.match_length--; /* string at strstart already in table */\n        do {\n          s.strstart++;\n          /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH$1 - 1]) & s.hash_mask;\n          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n          s.head[s.ins_h] = s.strstart;\n          /***/\n          /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n           * always MIN_MATCH bytes ahead.\n           */\n        } while (--s.match_length !== 0);\n        s.strstart++;\n      } else\n      {\n        s.strstart += s.match_length;\n        s.match_length = 0;\n        s.ins_h = s.window[s.strstart];\n        /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n//                Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n        /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n         * matter since it will be recomputed at next deflate call.\n         */\n      }\n    } else {\n      /* No match, output a literal byte */\n      //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n      bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n      s.lookahead--;\n      s.strstart++;\n    }\n    if (bflush) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n  s.insert = ((s.strstart < (MIN_MATCH$1 - 1)) ? s.strstart : MIN_MATCH$1 - 1);\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.last_lit) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n  return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n  var hash_head;          /* head of hash chain */\n  var bflush;              /* set if current block must be flushed */\n\n  var max_insert;\n\n  /* Process the input block. */\n  for (;;) {\n    /* Make sure that we always have enough lookahead, except\n     * at the end of the input file. We need MAX_MATCH bytes\n     * for the next match, plus MIN_MATCH bytes to insert the\n     * string following the next match.\n     */\n    if (s.lookahead < MIN_LOOKAHEAD) {\n      fill_window(s);\n      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n        return BS_NEED_MORE;\n      }\n      if (s.lookahead === 0) { break; } /* flush the current block */\n    }\n\n    /* Insert the string window[strstart .. strstart+2] in the\n     * dictionary, and set hash_head to the head of the hash chain:\n     */\n    hash_head = 0/*NIL*/;\n    if (s.lookahead >= MIN_MATCH$1) {\n      /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH$1 - 1]) & s.hash_mask;\n      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n      s.head[s.ins_h] = s.strstart;\n      /***/\n    }\n\n    /* Find the longest match, discarding those <= prev_length.\n     */\n    s.prev_length = s.match_length;\n    s.prev_match = s.match_start;\n    s.match_length = MIN_MATCH$1 - 1;\n\n    if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n        s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n      /* To simplify the code, we prevent matches with the string\n       * of window index 0 (in particular we have to avoid a match\n       * of the string with itself at the start of the input file).\n       */\n      s.match_length = longest_match(s, hash_head);\n      /* longest_match() sets match_start */\n\n      if (s.match_length <= 5 &&\n         (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH$1 && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n        /* If prev_match is also MIN_MATCH, match_start is garbage\n         * but we will ignore the current match anyway.\n         */\n        s.match_length = MIN_MATCH$1 - 1;\n      }\n    }\n    /* If there was a match at the previous step and the current\n     * match is not better, output the previous match:\n     */\n    if (s.prev_length >= MIN_MATCH$1 && s.match_length <= s.prev_length) {\n      max_insert = s.strstart + s.lookahead - MIN_MATCH$1;\n      /* Do not insert strings in hash table beyond this. */\n\n      //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n      /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n                     s.prev_length - MIN_MATCH, bflush);***/\n      bflush = _tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH$1);\n      /* Insert in hash table all strings up to the end of the match.\n       * strstart-1 and strstart are already inserted. If there is not\n       * enough lookahead, the last two strings are not inserted in\n       * the hash table.\n       */\n      s.lookahead -= s.prev_length - 1;\n      s.prev_length -= 2;\n      do {\n        if (++s.strstart <= max_insert) {\n          /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH$1 - 1]) & s.hash_mask;\n          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n          s.head[s.ins_h] = s.strstart;\n          /***/\n        }\n      } while (--s.prev_length !== 0);\n      s.match_available = 0;\n      s.match_length = MIN_MATCH$1 - 1;\n      s.strstart++;\n\n      if (bflush) {\n        /*** FLUSH_BLOCK(s, 0); ***/\n        flush_block_only(s, false);\n        if (s.strm.avail_out === 0) {\n          return BS_NEED_MORE;\n        }\n        /***/\n      }\n\n    } else if (s.match_available) {\n      /* If there was no match at the previous position, output a\n       * single literal. If there was a match but the current match\n       * is longer, truncate the previous match to a single literal.\n       */\n      //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n      /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n      bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n      if (bflush) {\n        /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n        flush_block_only(s, false);\n        /***/\n      }\n      s.strstart++;\n      s.lookahead--;\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n    } else {\n      /* There is no previous match to compare with, wait for\n       * the next step to decide.\n       */\n      s.match_available = 1;\n      s.strstart++;\n      s.lookahead--;\n    }\n  }\n  //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n  if (s.match_available) {\n    //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n    /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n    bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n    s.match_available = 0;\n  }\n  s.insert = s.strstart < MIN_MATCH$1 - 1 ? s.strstart : MIN_MATCH$1 - 1;\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.last_lit) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n\n  return BS_BLOCK_DONE;\n}\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one.  Do not maintain a hash table.  (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n  var bflush;            /* set if current block must be flushed */\n  var prev;              /* byte at distance one to match */\n  var scan, strend;      /* scan goes up to strend for length of run */\n\n  var _win = s.window;\n\n  for (;;) {\n    /* Make sure that we always have enough lookahead, except\n     * at the end of the input file. We need MAX_MATCH bytes\n     * for the longest run, plus one for the unrolled loop.\n     */\n    if (s.lookahead <= MAX_MATCH$1) {\n      fill_window(s);\n      if (s.lookahead <= MAX_MATCH$1 && flush === Z_NO_FLUSH) {\n        return BS_NEED_MORE;\n      }\n      if (s.lookahead === 0) { break; } /* flush the current block */\n    }\n\n    /* See how many times the previous byte repeats */\n    s.match_length = 0;\n    if (s.lookahead >= MIN_MATCH$1 && s.strstart > 0) {\n      scan = s.strstart - 1;\n      prev = _win[scan];\n      if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n        strend = s.strstart + MAX_MATCH$1;\n        do {\n          /*jshint noempty:false*/\n        } while (prev === _win[++scan] && prev === _win[++scan] &&\n                 prev === _win[++scan] && prev === _win[++scan] &&\n                 prev === _win[++scan] && prev === _win[++scan] &&\n                 prev === _win[++scan] && prev === _win[++scan] &&\n                 scan < strend);\n        s.match_length = MAX_MATCH$1 - (strend - scan);\n        if (s.match_length > s.lookahead) {\n          s.match_length = s.lookahead;\n        }\n      }\n      //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n    }\n\n    /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n    if (s.match_length >= MIN_MATCH$1) {\n      //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n      /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n      bflush = _tr_tally(s, 1, s.match_length - MIN_MATCH$1);\n\n      s.lookahead -= s.match_length;\n      s.strstart += s.match_length;\n      s.match_length = 0;\n    } else {\n      /* No match, output a literal byte */\n      //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n      bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n      s.lookahead--;\n      s.strstart++;\n    }\n    if (bflush) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n  s.insert = 0;\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.last_lit) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n  return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches.  Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n  var bflush;             /* set if current block must be flushed */\n\n  for (;;) {\n    /* Make sure that we have a literal to write. */\n    if (s.lookahead === 0) {\n      fill_window(s);\n      if (s.lookahead === 0) {\n        if (flush === Z_NO_FLUSH) {\n          return BS_NEED_MORE;\n        }\n        break;      /* flush the current block */\n      }\n    }\n\n    /* Output a literal byte */\n    s.match_length = 0;\n    //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n    /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n    bflush = _tr_tally(s, 0, s.window[s.strstart]);\n    s.lookahead--;\n    s.strstart++;\n    if (bflush) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n  s.insert = 0;\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.last_lit) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n  return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n  this.good_length = good_length;\n  this.max_lazy = max_lazy;\n  this.nice_length = nice_length;\n  this.max_chain = max_chain;\n  this.func = func;\n}\n\nvar configurationTable = function() {\n  var table = [\n    /*      good lazy nice chain */\n    new Config(0, 0, 0, 0, deflate_stored),          /* 0 store only */\n    new Config(4, 4, 8, 4, deflate_fast),            /* 1 max speed, no lazy matches */\n    new Config(4, 5, 16, 8, deflate_fast),           /* 2 */\n    new Config(4, 6, 32, 32, deflate_fast),          /* 3 */\n  \n    new Config(4, 4, 16, 16, deflate_slow),          /* 4 lazy matches */\n    new Config(8, 16, 32, 32, deflate_slow),         /* 5 */\n    new Config(8, 16, 128, 128, deflate_slow),       /* 6 */\n    new Config(8, 32, 128, 256, deflate_slow),       /* 7 */\n    new Config(32, 128, 258, 1024, deflate_slow),    /* 8 */\n    new Config(32, 258, 258, 4096, deflate_slow)     /* 9 max compression */\n  ];\n\n  configurationTable = function () { return table; };\n  return table;\n};\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n  s.window_size = 2 * s.w_size;\n\n  /*** CLEAR_HASH(s); ***/\n  zero$1(s.head); // Fill with NIL (= 0);\n\n  var table = configurationTable();\n  /* Set the default configuration parameters:\n   */\n  s.max_lazy_match = table[s.level].max_lazy;\n  s.good_match = table[s.level].good_length;\n  s.nice_match = table[s.level].nice_length;\n  s.max_chain_length = table[s.level].max_chain;\n\n  s.strstart = 0;\n  s.block_start = 0;\n  s.lookahead = 0;\n  s.insert = 0;\n  s.match_length = s.prev_length = MIN_MATCH$1 - 1;\n  s.match_available = 0;\n  s.ins_h = 0;\n}\n\n\nfunction DeflateState() {\n  this.strm = null;            /* pointer back to this zlib stream */\n  this.status = 0;            /* as the name implies */\n  this.pending_buf = null;      /* output still pending */\n  this.pending_buf_size = 0;  /* size of pending_buf */\n  this.pending_out = 0;       /* next pending byte to output to the stream */\n  this.pending = 0;           /* nb of bytes in the pending buffer */\n  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */\n  this.gzhead = null;         /* gzip header information to write */\n  this.gzindex = 0;           /* where in extra, name, or comment */\n  this.method = Z_DEFLATED; /* can only be DEFLATED */\n  this.last_flush = -1;   /* value of flush param for previous deflate call */\n\n  this.w_size = 0;  /* LZ77 window size (32K by default) */\n  this.w_bits = 0;  /* log2(w_size)  (8..16) */\n  this.w_mask = 0;  /* w_size - 1 */\n\n  this.window = null;\n  /* Sliding window. Input bytes are read into the second half of the window,\n   * and move to the first half later to keep a dictionary of at least wSize\n   * bytes. With this organization, matches are limited to a distance of\n   * wSize-MAX_MATCH bytes, but this ensures that IO is always\n   * performed with a length multiple of the block size.\n   */\n\n  this.window_size = 0;\n  /* Actual size of window: 2*wSize, except when the user input buffer\n   * is directly used as sliding window.\n   */\n\n  this.prev = null;\n  /* Link to older string with same hash index. To limit the size of this\n   * array to 64K, this link is maintained only for the last 32K strings.\n   * An index in this array is thus a window index modulo 32K.\n   */\n\n  this.head = null;   /* Heads of the hash chains or NIL. */\n\n  this.ins_h = 0;       /* hash index of string to be inserted */\n  this.hash_size = 0;   /* number of elements in hash table */\n  this.hash_bits = 0;   /* log2(hash_size) */\n  this.hash_mask = 0;   /* hash_size-1 */\n\n  this.hash_shift = 0;\n  /* Number of bits by which ins_h must be shifted at each input\n   * step. It must be such that after MIN_MATCH steps, the oldest\n   * byte no longer takes part in the hash key, that is:\n   *   hash_shift * MIN_MATCH >= hash_bits\n   */\n\n  this.block_start = 0;\n  /* Window position at the beginning of the current output block. Gets\n   * negative when the window is moved backwards.\n   */\n\n  this.match_length = 0;      /* length of best match */\n  this.prev_match = 0;        /* previous match */\n  this.match_available = 0;   /* set if previous match exists */\n  this.strstart = 0;          /* start of string to insert */\n  this.match_start = 0;       /* start of matching string */\n  this.lookahead = 0;         /* number of valid bytes ahead in window */\n\n  this.prev_length = 0;\n  /* Length of the best match at previous step. Matches not greater than this\n   * are discarded. This is used in the lazy match evaluation.\n   */\n\n  this.max_chain_length = 0;\n  /* To speed up deflation, hash chains are never searched beyond this\n   * length.  A higher limit improves compression ratio but degrades the\n   * speed.\n   */\n\n  this.max_lazy_match = 0;\n  /* Attempt to find a better match only when the current match is strictly\n   * smaller than this value. This mechanism is used only for compression\n   * levels >= 4.\n   */\n  // That's alias to max_lazy_match, don't use directly\n  //this.max_insert_length = 0;\n  /* Insert new strings in the hash table only if the match length is not\n   * greater than this length. This saves time but degrades compression.\n   * max_insert_length is used only for compression levels <= 3.\n   */\n\n  this.level = 0;     /* compression level (1..9) */\n  this.strategy = 0;  /* favor or force Huffman coding*/\n\n  this.good_match = 0;\n  /* Use a faster search when the previous match is longer than this */\n\n  this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n              /* used by trees.c: */\n\n  /* Didn't use ct_data typedef below to suppress compiler warning */\n\n  // struct ct_data_s dyn_ltree[HEAP_SIZE];   /* literal and length tree */\n  // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n  // struct ct_data_s bl_tree[2*BL_CODES+1];  /* Huffman tree for bit lengths */\n\n  // Use flat array of DOUBLE size, with interleaved fata,\n  // because JS does not support effective\n  this.dyn_ltree  = Buf16(HEAP_SIZE$1 * 2);\n  this.dyn_dtree  = Buf16((2 * D_CODES$1 + 1) * 2);\n  this.bl_tree    = Buf16((2 * BL_CODES$1 + 1) * 2);\n  zero$1(this.dyn_ltree);\n  zero$1(this.dyn_dtree);\n  zero$1(this.bl_tree);\n\n  this.l_desc   = null;         /* desc. for literal tree */\n  this.d_desc   = null;         /* desc. for distance tree */\n  this.bl_desc  = null;         /* desc. for bit length tree */\n\n  //ush bl_count[MAX_BITS+1];\n  this.bl_count = Buf16(MAX_BITS$1 + 1);\n  /* number of codes at each bit length for an optimal tree */\n\n  //int heap[2*L_CODES+1];      /* heap used to build the Huffman trees */\n  this.heap = Buf16(2 * L_CODES$1 + 1);  /* heap used to build the Huffman trees */\n  zero$1(this.heap);\n\n  this.heap_len = 0;               /* number of elements in the heap */\n  this.heap_max = 0;               /* element of largest frequency */\n  /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n   * The same heap array is used to build all trees.\n   */\n\n  this.depth = Buf16(2 * L_CODES$1 + 1); //uch depth[2*L_CODES+1];\n  zero$1(this.depth);\n  /* Depth of each subtree used as tie breaker for trees of equal frequency\n   */\n\n  this.l_buf = 0;          /* buffer index for literals or lengths */\n\n  this.lit_bufsize = 0;\n  /* Size of match buffer for literals/lengths.  There are 4 reasons for\n   * limiting lit_bufsize to 64K:\n   *   - frequencies can be kept in 16 bit counters\n   *   - if compression is not successful for the first block, all input\n   *     data is still in the window so we can still emit a stored block even\n   *     when input comes from standard input.  (This can also be done for\n   *     all blocks if lit_bufsize is not greater than 32K.)\n   *   - if compression is not successful for a file smaller than 64K, we can\n   *     even emit a stored file instead of a stored block (saving 5 bytes).\n   *     This is applicable only for zip (not gzip or zlib).\n   *   - creating new Huffman trees less frequently may not provide fast\n   *     adaptation to changes in the input data statistics. (Take for\n   *     example a binary file with poorly compressible code followed by\n   *     a highly compressible string table.) Smaller buffer sizes give\n   *     fast adaptation but have of course the overhead of transmitting\n   *     trees more frequently.\n   *   - I can't count above 4\n   */\n\n  this.last_lit = 0;      /* running index in l_buf */\n\n  this.d_buf = 0;\n  /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n   * the same number of elements. To use different lengths, an extra flag\n   * array would be necessary.\n   */\n\n  this.opt_len = 0;       /* bit length of current block with optimal trees */\n  this.static_len = 0;    /* bit length of current block with static trees */\n  this.matches = 0;       /* number of string matches in current block */\n  this.insert = 0;        /* bytes at end of window left to insert */\n\n\n  this.bi_buf = 0;\n  /* Output buffer. bits are inserted starting at the bottom (least\n   * significant bits).\n   */\n  this.bi_valid = 0;\n  /* Number of valid bits in bi_buf.  All bits above the last valid bit\n   * are always zero.\n   */\n\n  // Used for window memory init. We safely ignore it for JS. That makes\n  // sense only for pointers and memory check tools.\n  //this.high_water = 0;\n  /* High water mark offset in window for initialized bytes -- bytes above\n   * this are set to zero in order to avoid memory check warnings when\n   * longest match routines access bytes past the input.  This is then\n   * updated to the new high water mark.\n   */\n}\n\n\nfunction deflateResetKeep(strm) {\n  var s;\n\n  if (!strm || !strm.state) {\n    return err(strm, Z_STREAM_ERROR);\n  }\n\n  strm.total_in = strm.total_out = 0;\n  strm.data_type = Z_UNKNOWN;\n\n  s = strm.state;\n  s.pending = 0;\n  s.pending_out = 0;\n\n  if (s.wrap < 0) {\n    s.wrap = -s.wrap;\n    /* was made negative by deflate(..., Z_FINISH); */\n  }\n  s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n  strm.adler = (s.wrap === 2) ?\n    0  // crc32(0, Z_NULL, 0)\n  :\n    1; // adler32(0, Z_NULL, 0)\n  s.last_flush = Z_NO_FLUSH;\n  _tr_init(s);\n  return Z_OK;\n}\n\n\nfunction deflateReset(strm) {\n  var ret = deflateResetKeep(strm);\n  if (ret === Z_OK) {\n    lm_init(strm.state);\n  }\n  return ret;\n}\n\n\nfunction deflateSetHeader(strm, head) {\n  if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n  if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n  strm.state.gzhead = head;\n  return Z_OK;\n}\n\n\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n  if (!strm) { // === Z_NULL\n    return Z_STREAM_ERROR;\n  }\n  var wrap = 1;\n\n  if (level === Z_DEFAULT_COMPRESSION) {\n    level = 6;\n  }\n\n  if (windowBits < 0) { /* suppress zlib wrapper */\n    wrap = 0;\n    windowBits = -windowBits;\n  }\n\n  else if (windowBits > 15) {\n    wrap = 2;           /* write gzip wrapper instead */\n    windowBits -= 16;\n  }\n\n\n  if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n    windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n    strategy < 0 || strategy > Z_FIXED) {\n    return err(strm, Z_STREAM_ERROR);\n  }\n\n\n  if (windowBits === 8) {\n    windowBits = 9;\n  }\n  /* until 256-byte window bug fixed */\n\n  var s = new DeflateState();\n\n  strm.state = s;\n  s.strm = strm;\n\n  s.wrap = wrap;\n  s.gzhead = null;\n  s.w_bits = windowBits;\n  s.w_size = 1 << s.w_bits;\n  s.w_mask = s.w_size - 1;\n\n  s.hash_bits = memLevel + 7;\n  s.hash_size = 1 << s.hash_bits;\n  s.hash_mask = s.hash_size - 1;\n  s.hash_shift = ~~((s.hash_bits + MIN_MATCH$1 - 1) / MIN_MATCH$1);\n\n  s.window = Buf8(s.w_size * 2);\n  s.head = Buf16(s.hash_size);\n  s.prev = Buf16(s.w_size);\n\n  // Don't need mem init magic for JS.\n  //s.high_water = 0;  /* nothing written to s->window yet */\n\n  s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n  s.pending_buf_size = s.lit_bufsize * 4;\n\n  //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n  //s->pending_buf = (uchf *) overlay;\n  s.pending_buf = Buf8(s.pending_buf_size);\n\n  // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n  //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n  s.d_buf = 1 * s.lit_bufsize;\n\n  //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n  s.l_buf = (1 + 2) * s.lit_bufsize;\n\n  s.level = level;\n  s.strategy = strategy;\n  s.method = method;\n\n  return deflateReset(strm);\n}\n\n\nfunction deflate(strm, flush) {\n  var old_flush, s;\n  var beg, val; // for gzip header write only\n\n  if (!strm || !strm.state ||\n    flush > Z_BLOCK || flush < 0) {\n    return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n  }\n\n  s = strm.state;\n\n  if (!strm.output ||\n      (!strm.input && strm.avail_in !== 0) ||\n      (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n    return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n  }\n\n  s.strm = strm; /* just in case */\n  old_flush = s.last_flush;\n  s.last_flush = flush;\n\n  /* Write the header */\n  if (s.status === INIT_STATE) {\n\n    if (s.wrap === 2) { // GZIP header\n      strm.adler = 0;  //crc32(0L, Z_NULL, 0);\n      put_byte(s, 31);\n      put_byte(s, 139);\n      put_byte(s, 8);\n      if (!s.gzhead) { // s->gzhead == Z_NULL\n        put_byte(s, 0);\n        put_byte(s, 0);\n        put_byte(s, 0);\n        put_byte(s, 0);\n        put_byte(s, 0);\n        put_byte(s, s.level === 9 ? 2 :\n                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n                     4 : 0));\n        put_byte(s, OS_CODE);\n        s.status = BUSY_STATE;\n      }\n      else {\n        put_byte(s, (s.gzhead.text ? 1 : 0) +\n                    (s.gzhead.hcrc ? 2 : 0) +\n                    (!s.gzhead.extra ? 0 : 4) +\n                    (!s.gzhead.name ? 0 : 8) +\n                    (!s.gzhead.comment ? 0 : 16)\n        );\n        put_byte(s, s.gzhead.time & 0xff);\n        put_byte(s, (s.gzhead.time >> 8) & 0xff);\n        put_byte(s, (s.gzhead.time >> 16) & 0xff);\n        put_byte(s, (s.gzhead.time >> 24) & 0xff);\n        put_byte(s, s.level === 9 ? 2 :\n                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n                     4 : 0));\n        put_byte(s, s.gzhead.os & 0xff);\n        if (s.gzhead.extra && s.gzhead.extra.length) {\n          put_byte(s, s.gzhead.extra.length & 0xff);\n          put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n        }\n        if (s.gzhead.hcrc) {\n          strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n        }\n        s.gzindex = 0;\n        s.status = EXTRA_STATE;\n      }\n    }\n    else // DEFLATE header\n    {\n      var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n      var level_flags = -1;\n\n      if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n        level_flags = 0;\n      } else if (s.level < 6) {\n        level_flags = 1;\n      } else if (s.level === 6) {\n        level_flags = 2;\n      } else {\n        level_flags = 3;\n      }\n      header |= (level_flags << 6);\n      if (s.strstart !== 0) { header |= PRESET_DICT; }\n      header += 31 - (header % 31);\n\n      s.status = BUSY_STATE;\n      putShortMSB(s, header);\n\n      /* Save the adler32 of the preset dictionary: */\n      if (s.strstart !== 0) {\n        putShortMSB(s, strm.adler >>> 16);\n        putShortMSB(s, strm.adler & 0xffff);\n      }\n      strm.adler = 1; // adler32(0L, Z_NULL, 0);\n    }\n  }\n\n//#ifdef GZIP\n  if (s.status === EXTRA_STATE) {\n    if (s.gzhead.extra/* != Z_NULL*/) {\n      beg = s.pending;  /* start of bytes to update crc */\n\n      while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n        if (s.pending === s.pending_buf_size) {\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          flush_pending(strm);\n          beg = s.pending;\n          if (s.pending === s.pending_buf_size) {\n            break;\n          }\n        }\n        put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n        s.gzindex++;\n      }\n      if (s.gzhead.hcrc && s.pending > beg) {\n        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n      }\n      if (s.gzindex === s.gzhead.extra.length) {\n        s.gzindex = 0;\n        s.status = NAME_STATE;\n      }\n    }\n    else {\n      s.status = NAME_STATE;\n    }\n  }\n  if (s.status === NAME_STATE) {\n    if (s.gzhead.name/* != Z_NULL*/) {\n      beg = s.pending;  /* start of bytes to update crc */\n      //int val;\n\n      do {\n        if (s.pending === s.pending_buf_size) {\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          flush_pending(strm);\n          beg = s.pending;\n          if (s.pending === s.pending_buf_size) {\n            val = 1;\n            break;\n          }\n        }\n        // JS specific: little magic to add zero terminator to end of string\n        if (s.gzindex < s.gzhead.name.length) {\n          val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n        } else {\n          val = 0;\n        }\n        put_byte(s, val);\n      } while (val !== 0);\n\n      if (s.gzhead.hcrc && s.pending > beg) {\n        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n      }\n      if (val === 0) {\n        s.gzindex = 0;\n        s.status = COMMENT_STATE;\n      }\n    }\n    else {\n      s.status = COMMENT_STATE;\n    }\n  }\n  if (s.status === COMMENT_STATE) {\n    if (s.gzhead.comment/* != Z_NULL*/) {\n      beg = s.pending;  /* start of bytes to update crc */\n      //int val;\n\n      do {\n        if (s.pending === s.pending_buf_size) {\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          flush_pending(strm);\n          beg = s.pending;\n          if (s.pending === s.pending_buf_size) {\n            val = 1;\n            break;\n          }\n        }\n        // JS specific: little magic to add zero terminator to end of string\n        if (s.gzindex < s.gzhead.comment.length) {\n          val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n        } else {\n          val = 0;\n        }\n        put_byte(s, val);\n      } while (val !== 0);\n\n      if (s.gzhead.hcrc && s.pending > beg) {\n        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n      }\n      if (val === 0) {\n        s.status = HCRC_STATE;\n      }\n    }\n    else {\n      s.status = HCRC_STATE;\n    }\n  }\n  if (s.status === HCRC_STATE) {\n    if (s.gzhead.hcrc) {\n      if (s.pending + 2 > s.pending_buf_size) {\n        flush_pending(strm);\n      }\n      if (s.pending + 2 <= s.pending_buf_size) {\n        put_byte(s, strm.adler & 0xff);\n        put_byte(s, (strm.adler >> 8) & 0xff);\n        strm.adler = 0; //crc32(0L, Z_NULL, 0);\n        s.status = BUSY_STATE;\n      }\n    }\n    else {\n      s.status = BUSY_STATE;\n    }\n  }\n//#endif\n\n  /* Flush as much pending output as possible */\n  if (s.pending !== 0) {\n    flush_pending(strm);\n    if (strm.avail_out === 0) {\n      /* Since avail_out is 0, deflate will be called again with\n       * more output space, but possibly with both pending and\n       * avail_in equal to zero. There won't be anything to do,\n       * but this is not an error situation so make sure we\n       * return OK instead of BUF_ERROR at next call of deflate:\n       */\n      s.last_flush = -1;\n      return Z_OK;\n    }\n\n    /* Make sure there is something to do and avoid duplicate consecutive\n     * flushes. For repeated and useless calls with Z_FINISH, we keep\n     * returning Z_STREAM_END instead of Z_BUF_ERROR.\n     */\n  } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n    flush !== Z_FINISH) {\n    return err(strm, Z_BUF_ERROR);\n  }\n\n  /* User must not provide more input after the first FINISH: */\n  if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n    return err(strm, Z_BUF_ERROR);\n  }\n\n  /* Start a new block or continue the current one.\n   */\n  if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n    (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n    var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n      (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n        configurationTable()[s.level].func(s, flush));\n\n    if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n      s.status = FINISH_STATE;\n    }\n    if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n      if (strm.avail_out === 0) {\n        s.last_flush = -1;\n        /* avoid BUF_ERROR next call, see above */\n      }\n      return Z_OK;\n      /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n       * of deflate should use the same flush parameter to make sure\n       * that the flush is complete. So we don't have to output an\n       * empty block here, this will be done at next call. This also\n       * ensures that for a very small output buffer, we emit at most\n       * one empty block.\n       */\n    }\n    if (bstate === BS_BLOCK_DONE) {\n      if (flush === Z_PARTIAL_FLUSH) {\n        _tr_align(s);\n      }\n      else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n        _tr_stored_block(s, 0, 0, false);\n        /* For a full flush, this empty block will be recognized\n         * as a special marker by inflate_sync().\n         */\n        if (flush === Z_FULL_FLUSH) {\n          /*** CLEAR_HASH(s); ***/             /* forget history */\n          zero$1(s.head); // Fill with NIL (= 0);\n\n          if (s.lookahead === 0) {\n            s.strstart = 0;\n            s.block_start = 0;\n            s.insert = 0;\n          }\n        }\n      }\n      flush_pending(strm);\n      if (strm.avail_out === 0) {\n        s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n        return Z_OK;\n      }\n    }\n  }\n  //Assert(strm->avail_out > 0, \"bug2\");\n  //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n  if (flush !== Z_FINISH) { return Z_OK; }\n  if (s.wrap <= 0) { return Z_STREAM_END; }\n\n  /* Write the trailer */\n  if (s.wrap === 2) {\n    put_byte(s, strm.adler & 0xff);\n    put_byte(s, (strm.adler >> 8) & 0xff);\n    put_byte(s, (strm.adler >> 16) & 0xff);\n    put_byte(s, (strm.adler >> 24) & 0xff);\n    put_byte(s, strm.total_in & 0xff);\n    put_byte(s, (strm.total_in >> 8) & 0xff);\n    put_byte(s, (strm.total_in >> 16) & 0xff);\n    put_byte(s, (strm.total_in >> 24) & 0xff);\n  }\n  else\n  {\n    putShortMSB(s, strm.adler >>> 16);\n    putShortMSB(s, strm.adler & 0xffff);\n  }\n\n  flush_pending(strm);\n  /* If avail_out is zero, the application will call deflate again\n   * to flush the rest.\n   */\n  if (s.wrap > 0) { s.wrap = -s.wrap; }\n  /* write the trailer only once! */\n  return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n}\n\nfunction deflateEnd(strm) {\n  var status;\n\n  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n    return Z_STREAM_ERROR;\n  }\n\n  status = strm.state.status;\n  if (status !== INIT_STATE &&\n    status !== EXTRA_STATE &&\n    status !== NAME_STATE &&\n    status !== COMMENT_STATE &&\n    status !== HCRC_STATE &&\n    status !== BUSY_STATE &&\n    status !== FINISH_STATE\n  ) {\n    return err(strm, Z_STREAM_ERROR);\n  }\n\n  strm.state = null;\n\n  return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n}\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nfunction deflateSetDictionary(strm, dictionary) {\n  var dictLength = dictionary.length;\n\n  var s;\n  var str, n;\n  var wrap;\n  var avail;\n  var next;\n  var input;\n  var tmpDict;\n\n  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n    return Z_STREAM_ERROR;\n  }\n\n  s = strm.state;\n  wrap = s.wrap;\n\n  if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n    return Z_STREAM_ERROR;\n  }\n\n  /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n  if (wrap === 1) {\n    /* adler32(strm->adler, dictionary, dictLength); */\n    strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n  }\n\n  s.wrap = 0;   /* avoid computing Adler-32 in read_buf */\n\n  /* if dictionary would fill window, just replace the history */\n  if (dictLength >= s.w_size) {\n    if (wrap === 0) {            /* already empty otherwise */\n      /*** CLEAR_HASH(s); ***/\n      zero$1(s.head); // Fill with NIL (= 0);\n      s.strstart = 0;\n      s.block_start = 0;\n      s.insert = 0;\n    }\n    /* use the tail */\n    // dictionary = dictionary.slice(dictLength - s.w_size);\n    tmpDict = Buf8(s.w_size);\n    arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n    dictionary = tmpDict;\n    dictLength = s.w_size;\n  }\n  /* insert dictionary into window and hash */\n  avail = strm.avail_in;\n  next = strm.next_in;\n  input = strm.input;\n  strm.avail_in = dictLength;\n  strm.next_in = 0;\n  strm.input = dictionary;\n  fill_window(s);\n  while (s.lookahead >= MIN_MATCH$1) {\n    str = s.strstart;\n    n = s.lookahead - (MIN_MATCH$1 - 1);\n    do {\n      /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH$1 - 1]) & s.hash_mask;\n\n      s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n      s.head[s.ins_h] = str;\n      str++;\n    } while (--n);\n    s.strstart = str;\n    s.lookahead = MIN_MATCH$1 - 1;\n    fill_window(s);\n  }\n  s.strstart += s.lookahead;\n  s.block_start = s.strstart;\n  s.insert = s.lookahead;\n  s.lookahead = 0;\n  s.match_length = s.prev_length = MIN_MATCH$1 - 1;\n  s.match_available = 0;\n  strm.next_in = next;\n  strm.input = input;\n  strm.avail_in = avail;\n  s.wrap = wrap;\n  return Z_OK;\n}\n\n/* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n\n/* eslint-disable */\n\nvar toString$1 = Object.prototype.toString;\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array|Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param)  or if you\n * push a chunk with explicit flush (call [[Deflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n *    (each char code [0..255])\n * - `header` (Object) - custom header for gzip\n *   - `text` (Boolean) - true if compressed data believed to be text\n *   - `time` (Number) - modification time, unix timestamp\n *   - `os` (Number) - operation system code\n *   - `extra` (Array) - array of bytes with extra data (max 65536)\n *   - `name` (String) - file name (binary string)\n *   - `comment` (String) - comment (binary string)\n *   - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n *   , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n *   , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true);  // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nvar Deflate = function Deflate(options) {\n  this.options = assign({\n    level: Z_DEFAULT_COMPRESSION,\n    method: Z_DEFLATED,\n    chunkSize: 16384,\n    windowBits: 15,\n    memLevel: 8,\n    strategy: Z_DEFAULT_STRATEGY,\n    to: ''\n  }, options || {});\n\n  var opt = this.options;\n\n  if (opt.raw && (opt.windowBits > 0)) {\n    opt.windowBits = -opt.windowBits;\n  }\n\n  else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n    opt.windowBits += 16;\n  }\n\n  this.err  = 0;    // error code, if happens (0 = Z_OK)\n  this.msg  = '';   // error message\n  this.ended= false;// used to avoid multiple onEnd() calls\n  this.chunks = [];   // chunks of compressed data\n\n  this.strm = new ZStream();\n  this.strm.avail_out = 0;\n\n  var status = deflateInit2(\n    this.strm,\n    opt.level,\n    opt.method,\n    opt.windowBits,\n    opt.memLevel,\n    opt.strategy\n  );\n\n  if (status !== Z_OK) {\n    throw new Error(msg[status]);\n  }\n\n  if (opt.header) {\n    deflateSetHeader(this.strm, opt.header);\n  }\n\n  if (opt.dictionary) {\n    var dict;\n    // Convert data if needed\n    if (typeof opt.dictionary === 'string') {\n      // If we need to compress text, change encoding to utf8.\n      dict = string2buf(opt.dictionary);\n    } else if (toString$1.call(opt.dictionary) === '[object ArrayBuffer]') {\n      dict = new Uint8Array(opt.dictionary);\n    } else {\n      dict = opt.dictionary;\n    }\n\n    status = deflateSetDictionary(this.strm, dict);\n\n    if (status !== Z_OK) {\n      throw new Error(msg[status]);\n    }\n\n    this._dict_set = true;\n  }\n};\n\n/**\n * Deflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be\n * converted to utf8 byte sequence.\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the compression context.\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * array format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true);// push last chunk\n * ```\n **/\nDeflate.prototype.push = function push (data, mode) {\n  var strm = this.strm;\n  var chunkSize = this.options.chunkSize;\n  var status, _mode;\n\n  if (this.ended) { return false; }\n\n  _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n  // Convert data if needed\n  if (typeof data === 'string') {\n    // If we need to compress text, change encoding to utf8.\n    strm.input = string2buf(data);\n  } else if (toString$1.call(data) === '[object ArrayBuffer]') {\n    strm.input = new Uint8Array(data);\n  } else {\n    strm.input = data;\n  }\n\n  strm.next_in = 0;\n  strm.avail_in = strm.input.length;\n\n  do {\n    if (strm.avail_out === 0) {\n      strm.output = Buf8(chunkSize);\n      strm.next_out = 0;\n      strm.avail_out = chunkSize;\n    }\n    status = deflate(strm, _mode);  /* no bad return value */\n\n    if (status !== Z_STREAM_END && status !== Z_OK) {\n      this.onEnd(status);\n      this.ended = true;\n      return false;\n    }\n    if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n      if (this.options.to === 'string') {\n        this.onData(buf2binstring(shrinkBuf(strm.output, strm.next_out)));\n      } else {\n        this.onData(shrinkBuf(strm.output, strm.next_out));\n      }\n    }\n  } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n  // Finalize on the last chunk.\n  if (_mode === Z_FINISH) {\n    status = deflateEnd(this.strm);\n    this.onEnd(status);\n    this.ended = true;\n    return status === Z_OK;\n  }\n\n  // callback interim results if Z_SYNC_FLUSH.\n  if (_mode === Z_SYNC_FLUSH) {\n    this.onEnd(Z_OK);\n    strm.avail_out = 0;\n    return true;\n  }\n\n  return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate.prototype.onData = function onData (chunk) {\n  this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate.prototype.onEnd = function onEnd (status) {\n  // On success - join\n  if (status === Z_OK) {\n    if (this.options.to === 'string') {\n      this.result = this.chunks.join('');\n    } else {\n      this.result = flattenChunks(this.chunks);\n    }\n  }\n  this.chunks = [];\n  this.err = status;\n  this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n *   negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n *    (each char code [0..255])\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n *   , data = Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate$1(input, options) {\n  var deflator = new Deflate(options);\n\n  deflator.push(input, true);\n\n  // That will never happens, if you don't cheat with options :)\n  if (deflator.err) { throw deflator.msg || msg[deflator.err]; }\n\n  return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n  options = options || {};\n  options.raw = true;\n  return deflate$1(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n  options = options || {};\n  options.gzip = true;\n  return deflate$1(input, options);\n}\n\nexport { Deflate, Inflate, Z_BEST_COMPRESSION, Z_BEST_SPEED, Z_BINARY, Z_BLOCK, Z_BUF_ERROR, Z_DATA_ERROR, Z_DEFAULT_COMPRESSION, Z_DEFAULT_STRATEGY, Z_DEFLATED, Z_ERRNO, Z_FILTERED, Z_FINISH, Z_FIXED, Z_FULL_FLUSH, Z_HUFFMAN_ONLY, Z_NEED_DICT, Z_NO_COMPRESSION, Z_NO_FLUSH, Z_OK, Z_PARTIAL_FLUSH, Z_RLE, Z_STREAM_END, Z_STREAM_ERROR, Z_SYNC_FLUSH, Z_TEXT, Z_TREES, Z_UNKNOWN, deflate$1 as deflate, deflateRaw, gzip, inflate$1 as inflate, inflateRaw, ungzip };\n","import { Deflate, Inflate } from '@progress/pako-esm';\n\n/**\n * Let the user use/change some implementations.\n */\nvar external = {\n    Promise: Promise\n};\n\nvar support = {\n    base64: true,\n    array: true,\n    string: true,\n    nodebuffer: false,\n    nodestream: false,\n\n    get arraybuffer() {\n        return typeof ArrayBuffer !== \"undefined\" && typeof Uint8Array !== \"undefined\";\n    },\n\n    // Returns true if JSZip can read/generate Uint8Array, false otherwise.\n    get uint8array() {\n        return typeof Uint8Array !== \"undefined\";\n    },\n\n    get blob() {\n        return blob();\n    }\n};\n\nvar blob = function() {\n    var supported;\n\n    if (typeof ArrayBuffer === \"undefined\") {\n        supported = false;\n    } else {\n        var buffer = new ArrayBuffer(0);\n        try {\n            supported = new Blob([ buffer ], {\n                type: \"application/zip\"\n            }).size === 0;\n        } catch (e) {\n            supported = false;\n        }\n    }\n\n    blob = function () { return supported; };\n    return supported;\n};\n\n// private property\nvar _keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n// public method for encoding\nvar encode = function(input) {\n    var output = [];\n    var chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n    var i = 0, len = input.length, remainingBytes = len;\n\n    var isArray = typeof input !== \"string\";\n    while (i < input.length) {\n        remainingBytes = len - i;\n\n        if (!isArray) {\n            chr1 = input.charCodeAt(i++);\n            chr2 = i < len ? input.charCodeAt(i++) : 0;\n            chr3 = i < len ? input.charCodeAt(i++) : 0;\n        } else {\n            chr1 = input[i++];\n            chr2 = i < len ? input[i++] : 0;\n            chr3 = i < len ? input[i++] : 0;\n        }\n\n        enc1 = chr1 >> 2;\n        enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n        enc3 = remainingBytes > 1 ? (((chr2 & 15) << 2) | (chr3 >> 6)) : 64;\n        enc4 = remainingBytes > 2 ? (chr3 & 63) : 64;\n\n        output.push(_keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4));\n\n    }\n\n    return output.join(\"\");\n};\n\n// public method for decoding\nvar decode = function(input) {\n    var chr1, chr2, chr3;\n    var enc1, enc2, enc3, enc4;\n    var i = 0, resultIndex = 0;\n\n    var dataUrlPrefix = \"data:\";\n\n    if (input.substr(0, dataUrlPrefix.length) === dataUrlPrefix) {\n        // This is a common error: people give a data url\n        // (data:image/png;base64,iVBOR...) with a {base64: true} and\n        // wonders why things don't work.\n        // We can detect that the string input looks like a data url but we\n        // *can't* be sure it is one: removing everything up to the comma would\n        // be too dangerous.\n        throw new Error(\"Invalid base64 input, it looks like a data url.\");\n    }\n\n    input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n\n    var totalLength = input.length * 3 / 4;\n    if(input.charAt(input.length - 1) === _keyStr.charAt(64)) {\n        totalLength--;\n    }\n    if(input.charAt(input.length - 2) === _keyStr.charAt(64)) {\n        totalLength--;\n    }\n    if (totalLength % 1 !== 0) {\n        // totalLength is not an integer, the length does not match a valid\n        // base64 content. That can happen if:\n        // - the input is not a base64 content\n        // - the input is *almost* a base64 content, with a extra chars at the\n        //   beginning or at the end\n        // - the input uses a base64 letiant (base64url for example)\n        throw new Error(\"Invalid base64 input, bad content length.\");\n    }\n    var output;\n    if (support.uint8array) {\n        output = new Uint8Array(totalLength|0);\n    } else {\n        output = new Array(totalLength|0);\n    }\n\n    while (i < input.length) {\n\n        enc1 = _keyStr.indexOf(input.charAt(i++));\n        enc2 = _keyStr.indexOf(input.charAt(i++));\n        enc3 = _keyStr.indexOf(input.charAt(i++));\n        enc4 = _keyStr.indexOf(input.charAt(i++));\n\n        chr1 = (enc1 << 2) | (enc2 >> 4);\n        chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n        chr3 = ((enc3 & 3) << 6) | enc4;\n\n        output[resultIndex++] = chr1;\n\n        if (enc3 !== 64) {\n            output[resultIndex++] = chr2;\n        }\n        if (enc4 !== 64) {\n            output[resultIndex++] = chr3;\n        }\n\n    }\n\n    return output;\n};\n\n/**\n * Convert a string that pass as a \"binary string\": it should represent a byte\n * array but may have > 255 char codes. Be sure to take only the first byte\n * and returns the byte array.\n * @param {String} str the string to transform.\n * @return {Array|Uint8Array} the string in a binary format.\n */\nfunction string2binary(str) {\n    var result = null;\n    if (support.uint8array) {\n      result = new Uint8Array(str.length);\n    } else {\n      result = new Array(str.length);\n    }\n    return stringToArrayLike(str, result);\n}\n\n/**\n * Create a new blob with the given content and the given type.\n * @param {String|ArrayBuffer} part the content to put in the blob. DO NOT use\n * an Uint8Array because the stock browser of android 4 won't accept it (it\n * will be silently converted to a string, \"[object Uint8Array]\").\n *\n * Use only ONE part to build the blob to avoid a memory leak in IE11 / Edge:\n * when a large amount of Array is used to create the Blob, the amount of\n * memory consumed is nearly 100 times the original data amount.\n *\n * @param {String} type the mime type of the blob.\n * @return {Blob} the created blob.\n */\nvar newBlob = function(part, type) {\n    checkSupport(\"blob\");\n\n    // Blob constructor\n    return new Blob([part], {\n        type: type\n    });\n};\n\n/**\n * The identity function.\n * @param {Object} input the input.\n * @return {Object} the same input.\n */\nfunction identity(input) {\n    return input;\n}\n\n/**\n * Fill in an array with a string.\n * @param {String} str the string to use.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to fill in (will be mutated).\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated array.\n */\nfunction stringToArrayLike(str, array) {\n    for (var i = 0; i < str.length; ++i) {\n        array[i] = str.charCodeAt(i) & 0xFF;\n    }\n    return array;\n}\n\n/**\n * Transform an array of int into a string, chunk by chunk.\n * See the performances notes on arrayLikeToString.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @param {String} type the type of the array.\n * @param {Integer} chunk the chunk size.\n * @return {String} the resulting string.\n * @throws Error if the chunk is too big for the stack.\n */\nfunction stringifyByChunk(array, type, chunk) {\n    var result = [], k = 0, len = array.length;\n    // shortcut\n    if (len <= chunk) {\n        return String.fromCharCode.apply(null, array);\n    }\n    while (k < len) {\n        if (type === \"array\") {\n            result.push(String.fromCharCode.apply(null, array.slice(k, Math.min(k + chunk, len))));\n        }\n        else {\n            result.push(String.fromCharCode.apply(null, array.subarray(k, Math.min(k + chunk, len))));\n        }\n        k += chunk;\n    }\n    return result.join(\"\");\n}\n\n/**\n * Call String.fromCharCode on every item in the array.\n * This is the naive implementation, which generate A LOT of intermediate string.\n * This should be used when everything else fail.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @return {String} the result.\n */\nfunction stringifyByChar(array) {\n    var resultStr = \"\";\n    for(var i = 0; i < array.length; i++) {\n        resultStr += String.fromCharCode(array[i]);\n    }\n    return resultStr;\n}\n\n/**\n * true if the browser accepts to use String.fromCharCode on Uint8Array\n */\nvar fromCharCodeSupportsTypedArrays = function () {\n    var supported;\n    try {\n        supported = support.uint8array && String.fromCharCode.apply(null, new Uint8Array(1)).length === 1;\n    } catch (e) {\n        supported = false;\n    }\n\n    fromCharCodeSupportsTypedArrays = function () { return supported; };\n    return supported;\n};\n\n/**\n * Transform an array-like object to a string.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @return {String} the result.\n */\nfunction arrayLikeToString(array) {\n    // Performances notes :\n    // --------------------\n    // String.fromCharCode.apply(null, array) is the fastest, see\n    // see http://jsperf.com/converting-a-uint8array-to-a-string/2\n    // but the stack is limited (and we can get huge arrays !).\n    //\n    // result += String.fromCharCode(array[i]); generate too many strings !\n    //\n    // This code is inspired by http://jsperf.com/arraybuffer-to-string-apply-performance/2\n    // TODO : we now have workers that split the work. Do we still need that ?\n    var chunk = 65536,\n        type = getTypeOf(array),\n        canUseApply = true;\n    if (type === \"uint8array\") {\n        canUseApply = fromCharCodeSupportsTypedArrays();\n    }\n\n    if (canUseApply) {\n        while (chunk > 1) {\n            try {\n                return stringifyByChunk(array, type, chunk);\n            } catch (e) {\n                chunk = Math.floor(chunk / 2);\n            }\n        }\n    }\n\n    // no apply or chunk error : slow and painful algorithm\n    // default browser on android 4.*\n    return stringifyByChar(array);\n}\n\nvar applyFromCharCode = arrayLikeToString;\n\n\n/**\n * Copy the data from an array-like to an other array-like.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayFrom the origin array.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayTo the destination array which will be mutated.\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated destination array.\n */\nfunction arrayLikeToArrayLike(arrayFrom, arrayTo) {\n    for (var i = 0; i < arrayFrom.length; i++) {\n        arrayTo[i] = arrayFrom[i];\n    }\n    return arrayTo;\n}\n\n// a matrix containing functions to transform everything into everything.\nvar transform = {\n    // string to ?\n    \"string\": {\n        \"string\": identity,\n        \"array\": function(input) {\n            return stringToArrayLike(input, new Array(input.length));\n        },\n        \"arraybuffer\": function(input) {\n            return transform[\"string\"][\"uint8array\"](input).buffer;\n        },\n        \"uint8array\": function(input) {\n            return stringToArrayLike(input, new Uint8Array(input.length));\n        }\n    },\n\n    // array to ?\n    \"array\": {\n        \"string\": arrayLikeToString,\n        \"array\": identity,\n        \"arraybuffer\": function(input) {\n            return (new Uint8Array(input)).buffer;\n        },\n        \"uint8array\": function(input) {\n            return new Uint8Array(input);\n        }\n    },\n\n    // arraybuffer to ?\n    \"arraybuffer\": {\n        \"string\": function(input) {\n            return arrayLikeToString(new Uint8Array(input));\n        },\n        \"array\": function(input) {\n            return arrayLikeToArrayLike(new Uint8Array(input), new Array(input.byteLength));\n        },\n        \"arraybuffer\": identity,\n        \"uint8array\": function(input) {\n            return new Uint8Array(input);\n        }\n    },\n\n    // uint8array to ?\n    \"uint8array\": {\n        \"string\": arrayLikeToString,\n        \"array\": function(input) {\n            return arrayLikeToArrayLike(input, new Array(input.length));\n        },\n        \"arraybuffer\": function(input) {\n            return input.buffer;\n        },\n        \"uint8array\": identity\n    }\n};\n\n/**\n * Transform an input into any type.\n * The supported output type are : string, array, uint8array, arraybuffer.\n * If no output type is specified, the unmodified input will be returned.\n * @param {String} outputType the output type.\n * @param {String|Array|ArrayBuffer|Uint8Array|Buffer} input the input to convert.\n * @throws {Error} an Error if the browser doesn't support the requested output type.\n */\nvar transformTo = function(outputType, input) {\n    if (!input) {\n        // undefined, null, etc\n        // an empty string won't harm.\n        input = \"\";\n    }\n    if (!outputType) {\n        return input;\n    }\n    checkSupport(outputType);\n    var inputType = getTypeOf(input);\n    var result = transform[inputType][outputType](input);\n    return result;\n};\n\n/**\n * Resolve all relative path components, \".\" and \"..\", in a path. If these relative components\n * traverse above the root then the resulting path will only contain the final path component.\n *\n * All empty components, e.g. \"//\", are removed.\n * @param {string} path A path with / or \\ separators\n * @returns {string} The path with all relative path components resolved.\n */\nvar resolve = function(path) {\n    var parts = path.split(\"/\");\n    var result = [];\n    for (var index = 0; index < parts.length; index++) {\n        var part = parts[index];\n        // Allow the first and last component to be empty for trailing slashes.\n        if (part === \".\" || (part === \"\" && index !== 0 && index !== parts.length - 1)) {\n            continue;\n        } else if (part === \"..\") {\n            result.pop();\n        } else {\n            result.push(part);\n        }\n    }\n    return result.join(\"/\");\n};\n\n/**\n * Return the type of the input.\n * The type will be in a format valid for JSZip.utils.transformTo : string, array, uint8array, arraybuffer.\n * @param {Object} input the input to identify.\n * @return {String} the (lowercase) type of the input.\n */\nvar getTypeOf = function(input) {\n    if (typeof input === \"string\") {\n        return \"string\";\n    }\n    if (Object.prototype.toString.call(input) === \"[object Array]\") {\n        return \"array\";\n    }\n    if (support.uint8array && input instanceof Uint8Array) {\n        return \"uint8array\";\n    }\n    if (support.arraybuffer && input instanceof ArrayBuffer) {\n        return \"arraybuffer\";\n    }\n};\n\n/**\n * Throw an exception if the type is not supported.\n * @param {String} type the type to check.\n * @throws {Error} an Error if the browser doesn't support the requested type.\n */\nvar checkSupport = function(type) {\n    var supported = support[type.toLowerCase()];\n    if (!supported) {\n        throw new Error(type + \" is not supported by this platform\");\n    }\n};\n\nvar MAX_VALUE_16BITS = 65535;\nvar MAX_VALUE_32BITS = -1; // well, \"\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\" is parsed as -1\n\n/**\n * Prettify a string read as binary.\n * @param {string} str the string to prettify.\n * @return {string} a pretty string.\n */\nvar pretty = function(str) {\n    var res = '',\n        code, i;\n    for (i = 0; i < (str || \"\").length; i++) {\n        code = str.charCodeAt(i);\n        res += '\\\\x' + (code < 16 ? \"0\" : \"\") + code.toString(16).toUpperCase();\n    }\n    return res;\n};\n\n/**\n * Defer the call of a function.\n * @param {Function} callback the function to call asynchronously.\n * @param {Array} args the arguments to give to the callback.\n */\nvar delay = function(callback, args, self) {\n    setTimeout(function() {\n        callback.apply(self || null, args || []);\n    }, 0);\n};\n\n/**\n * Merge the objects passed as parameters into a new one.\n * @private\n * @param {...Object} var_args All objects to merge.\n * @return {Object} a new object with the data of the others.\n */\nvar extend = function() {\n    var arguments$1 = arguments;\n\n    var result = {}, i, attr;\n    for (i = 0; i < arguments.length; i++) { // arguments is not enumerable in some browsers\n        for (attr in arguments[i]) {\n            if (Object.hasOwnProperty.call(arguments$1[i], attr) && typeof result[attr] === \"undefined\") {\n                result[attr] = arguments$1[i][attr];\n            }\n        }\n    }\n    return result;\n};\n\n/**\n * Transform arbitrary content into a Promise.\n * @param {String} name a name for the content being processed.\n * @param {Object} inputData the content to process.\n * @param {Boolean} isBinary true if the content is not an unicode string\n * @param {Boolean} isOptimizedBinaryString true if the string content only has one byte per character.\n * @param {Boolean} isBase64 true if the string content is encoded with base64.\n * @return {Promise} a promise in a format usable by JSZip.\n */\nvar prepareContent = function(name, inputData, isBinary, isOptimizedBinaryString, isBase64) {\n\n    // if inputData is already a promise, this flatten it.\n    var promise = external.Promise.resolve(inputData).then(function(data) {\n\n\n        var isBlob = support.blob && (data instanceof Blob || ['[object File]', '[object Blob]'].indexOf(Object.prototype.toString.call(data)) !== -1);\n\n        if (isBlob && typeof FileReader !== \"undefined\") {\n            return new external.Promise(function (resolve, reject) {\n                var reader = new FileReader();\n\n                reader.onload = function(e) {\n                    resolve(e.target.result);\n                };\n                reader.onerror = function(e) {\n                    reject(e.target.error);\n                };\n                reader.readAsArrayBuffer(data);\n            });\n        } else {\n            return data;\n        }\n    });\n\n    return promise.then(function(data) {\n        var dataType = getTypeOf(data);\n\n        if (!dataType) {\n            return external.Promise.reject(\n                new Error(\"Can't read the data of '\" + name + \"'. Is it \" +\n                          \"in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?\")\n            );\n        }\n        // special case : it's way easier to work with Uint8Array than with ArrayBuffer\n        if (dataType === \"arraybuffer\") {\n            data = transformTo(\"uint8array\", data);\n        } else if (dataType === \"string\") {\n            if (isBase64) {\n                data = decode(data);\n            }\n            else if (isBinary) {\n                // optimizedBinaryString === true means that the file has already been filtered with a 0xFF mask\n                if (isOptimizedBinaryString !== true) {\n                    // this is a string, not in a base64 format.\n                    // Be sure that this is a correct \"binary string\"\n                    data = string2binary(data);\n                }\n            }\n        }\n        return data;\n    });\n};\n\n/**\n * A worker that does nothing but passing chunks to the next one. This is like\n * a nodejs stream but with some differences. On the good side :\n * - it works on IE 6-9 without any issue / polyfill\n * - it weights less than the full dependencies bundled with browserify\n * - it forwards errors (no need to declare an error handler EVERYWHERE)\n *\n * A chunk is an object with 2 attributes : `meta` and `data`. The former is an\n * object containing anything (`percent` for example), see each worker for more\n * details. The latter is the real data (String, Uint8Array, etc).\n *\n * @constructor\n * @param {String} name the name of the stream (mainly used for debugging purposes)\n */\nvar GenericWorker = function GenericWorker(name) {\n    // the name of the worker\n    this.name = name || \"default\";\n    // an object containing metadata about the workers chain\n    this.streamInfo = {};\n    // an error which happened when the worker was paused\n    this.generatedError = null;\n    // an object containing metadata to be merged by this worker into the general metadata\n    this.extraStreamInfo = {};\n    // true if the stream is paused (and should not do anything), false otherwise\n    this.isPaused = true;\n    // true if the stream is finished (and should not do anything), false otherwise\n    this.isFinished = false;\n    // true if the stream is locked to prevent further structure updates (pipe), false otherwise\n    this.isLocked = false;\n    // the event listeners\n    this._listeners = {\n        'data':[],\n        'end':[],\n        'error':[]\n    };\n    // the previous worker, if any\n    this.previous = null;\n};\n\n/**\n * Push a chunk to the next workers.\n * @param {Object} chunk the chunk to push\n */\nGenericWorker.prototype.push = function push (chunk) {\n    this.emit(\"data\", chunk);\n};\n\n/**\n * End the stream.\n * @return {Boolean} true if this call ended the worker, false otherwise.\n */\nGenericWorker.prototype.end = function end () {\n    if (this.isFinished) {\n        return false;\n    }\n\n    this.flush();\n    try {\n        this.emit(\"end\");\n        this.cleanUp();\n        this.isFinished = true;\n    } catch (e) {\n        this.emit(\"error\", e);\n    }\n    return true;\n};\n\n/**\n * End the stream with an error.\n * @param {Error} e the error which caused the premature end.\n * @return {Boolean} true if this call ended the worker with an error, false otherwise.\n */\nGenericWorker.prototype.error = function error (e) {\n    if (this.isFinished) {\n        return false;\n    }\n\n    if(this.isPaused) {\n        this.generatedError = e;\n    } else {\n        this.isFinished = true;\n\n        this.emit(\"error\", e);\n\n        // in the workers chain exploded in the middle of the chain,\n        // the error event will go downward but we also need to notify\n        // workers upward that there has been an error.\n        if(this.previous) {\n            this.previous.error(e);\n        }\n\n        this.cleanUp();\n    }\n    return true;\n};\n\n/**\n * Add a callback on an event.\n * @param {String} name the name of the event (data, end, error)\n * @param {Function} listener the function to call when the event is triggered\n * @return {GenericWorker} the current object for chainability\n */\nGenericWorker.prototype.on = function on (name, listener) {\n    this._listeners[name].push(listener);\n    return this;\n};\n\n/**\n * Clean any references when a worker is ending.\n */\nGenericWorker.prototype.cleanUp = function cleanUp () {\n    this.streamInfo = this.generatedError = this.extraStreamInfo = null;\n    this._listeners = [];\n};\n\n/**\n * Trigger an event. This will call registered callback with the provided arg.\n * @param {String} name the name of the event (data, end, error)\n * @param {Object} arg the argument to call the callback with.\n */\nGenericWorker.prototype.emit = function emit (name, arg) {\n    if (this._listeners[name]) {\n        for(var i = 0; i < this._listeners[name].length; i++) {\n            this._listeners[name][i].call(this, arg);\n        }\n    }\n};\n\n/**\n * Chain a worker with an other.\n * @param {Worker} next the worker receiving events from the current one.\n * @return {worker} the next worker for chainability\n */\nGenericWorker.prototype.pipe = function pipe (next) {\n    return next.registerPrevious(this);\n};\n\n/**\n * Same as `pipe` in the other direction.\n * Using an API with `pipe(next)` is very easy.\n * Implementing the API with the point of view of the next one registering\n * a source is easier, see the ZipFileWorker.\n * @param {Worker} previous the previous worker, sending events to this one\n * @return {Worker} the current worker for chainability\n */\nGenericWorker.prototype.registerPrevious = function registerPrevious (previous) {\n    if (this.isLocked) {\n        throw new Error(\"The stream '\" + this + \"' has already been used.\");\n    }\n\n    // sharing the streamInfo...\n    this.streamInfo = previous.streamInfo;\n    // ... and adding our own bits\n    this.mergeStreamInfo();\n    this.previous =  previous;\n    var self = this;\n    previous.on('data', function (chunk) {\n        self.processChunk(chunk);\n    });\n    previous.on('end', function () {\n        self.end();\n    });\n    previous.on('error', function (e) {\n        self.error(e);\n    });\n    return this;\n};\n\n/**\n * Pause the stream so it doesn't send events anymore.\n * @return {Boolean} true if this call paused the worker, false otherwise.\n */\nGenericWorker.prototype.pause = function pause () {\n    if(this.isPaused || this.isFinished) {\n        return false;\n    }\n    this.isPaused = true;\n\n    if(this.previous) {\n        this.previous.pause();\n    }\n    return true;\n};\n\n/**\n * Resume a paused stream.\n * @return {Boolean} true if this call resumed the worker, false otherwise.\n */\nGenericWorker.prototype.resume = function resume () {\n    if(!this.isPaused || this.isFinished) {\n        return false;\n    }\n    this.isPaused = false;\n\n    // if true, the worker tried to resume but failed\n    var withError = false;\n    if(this.generatedError) {\n        this.error(this.generatedError);\n        withError = true;\n    }\n    if(this.previous) {\n        this.previous.resume();\n    }\n\n    return !withError;\n};\n\n/**\n * Flush any remaining bytes as the stream is ending.\n */\nGenericWorker.prototype.flush = function flush () {};\n\n/**\n * Process a chunk. This is usually the method overridden.\n * @param {Object} chunk the chunk to process.\n */\nGenericWorker.prototype.processChunk = function processChunk (chunk) {\n    this.push(chunk);\n};\n\n/**\n * Add a key/value to be added in the workers chain streamInfo once activated.\n * @param {String} key the key to use\n * @param {Object} value the associated value\n * @return {Worker} the current worker for chainability\n */\nGenericWorker.prototype.withStreamInfo = function withStreamInfo (key, value) {\n    this.extraStreamInfo[key] = value;\n    this.mergeStreamInfo();\n    return this;\n};\n\n/**\n * Merge this worker's streamInfo into the chain's streamInfo.\n */\nGenericWorker.prototype.mergeStreamInfo = function mergeStreamInfo () {\n    for(var key in this.extraStreamInfo) {\n        if (!this.extraStreamInfo.hasOwnProperty(key)) {\n            continue;\n        }\n        this.streamInfo[key] = this.extraStreamInfo[key];\n    }\n};\n\n/**\n * Lock the stream to prevent further updates on the workers chain.\n * After calling this method, all calls to pipe will fail.\n */\nGenericWorker.prototype.lock = function lock () {\n    if (this.isLocked) {\n        throw new Error(\"The stream '\" + this + \"' has already been used.\");\n    }\n    this.isLocked = true;\n    if (this.previous) {\n        this.previous.lock();\n    }\n};\n\n/**\n *\n * Pretty print the workers chain.\n */\nGenericWorker.prototype.toString = function toString () {\n    var me = \"Worker \" + this.name;\n    if (this.previous) {\n        return this.previous + \" -> \" + me;\n    } else {\n        return me;\n    }\n};\n\n/**\n * The following functions come from pako, from pako/lib/utils/strings\n * released under the MIT license, see pako https://github.com/nodeca/pako/\n */\n\n// Returns the utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nvar utf8len = function(c) {\n    var _utf8len = new Array(256);\n    for (var i = 0; i < 256; i++) {\n        _utf8len[i] = (i >= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1);\n    }\n    _utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n    // Memoize table after first call\n    utf8len = function(c) {\n        return _utf8len[c];\n    };\n\n    return _utf8len[c];\n};\n\n// convert string to array (typed, when possible)\nvar string2buf = function (str) {\n    var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n    // count binary size\n    for (m_pos = 0; m_pos < str_len; m_pos++) {\n        c = str.charCodeAt(m_pos);\n        if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n            c2 = str.charCodeAt(m_pos+1);\n            if ((c2 & 0xfc00) === 0xdc00) {\n                c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n                m_pos++;\n            }\n        }\n        buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n    }\n\n    // allocate buffer\n    if (support.uint8array) {\n        buf = new Uint8Array(buf_len);\n    } else {\n        buf = new Array(buf_len);\n    }\n\n    // convert\n    for (i=0, m_pos = 0; i < buf_len; m_pos++) {\n        c = str.charCodeAt(m_pos);\n        if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n            c2 = str.charCodeAt(m_pos+1);\n            if ((c2 & 0xfc00) === 0xdc00) {\n                c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n                m_pos++;\n            }\n        }\n        if (c < 0x80) {\n            /* one byte */\n            buf[i++] = c;\n        } else if (c < 0x800) {\n            /* two bytes */\n            buf[i++] = 0xC0 | (c >>> 6);\n            buf[i++] = 0x80 | (c & 0x3f);\n        } else if (c < 0x10000) {\n            /* three bytes */\n            buf[i++] = 0xE0 | (c >>> 12);\n            buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n            buf[i++] = 0x80 | (c & 0x3f);\n        } else {\n            /* four bytes */\n            buf[i++] = 0xf0 | (c >>> 18);\n            buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n            buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n            buf[i++] = 0x80 | (c & 0x3f);\n        }\n    }\n\n    return buf;\n};\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max   - length limit (mandatory);\nvar utf8border = function(buf, max) {\n    var pos;\n\n    max = max || buf.length;\n    if (max > buf.length) { max = buf.length; }\n\n    // go back from last position, until start of sequence found\n    pos = max-1;\n    while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n    // Fuckup - very small and broken sequence,\n    // return max, because we should return something anyway.\n    if (pos < 0) { return max; }\n\n    // If we came to start of buffer - that means vuffer is too small,\n    // return max too.\n    if (pos === 0) { return max; }\n\n    return (pos + utf8len(buf[pos]) > max) ? pos : max;\n};\n\n// convert array to string\nvar buf2string = function (buf) {\n    var i, out, c, c_len;\n    var len = buf.length;\n\n    // Reserve max possible length (2 words per char)\n    // NB: by unknown reasons, Array is significantly faster for\n    //     String.fromCharCode.apply than Uint16Array.\n    var utf16buf = new Array(len*2);\n\n    for (out=0, i=0; i<len;) {\n        c = buf[i++];\n        // quick process ascii\n        if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n        c_len = utf8len(c);\n        // skip 5 & 6 byte codes\n        if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len-1; continue; }\n\n        // apply mask on first byte\n        c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n        // join the rest\n        while (c_len > 1 && i < len) {\n            c = (c << 6) | (buf[i++] & 0x3f);\n            c_len--;\n        }\n\n        // terminated by end of string?\n        if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n        if (c < 0x10000) {\n            utf16buf[out++] = c;\n        } else {\n            c -= 0x10000;\n            utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n            utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n        }\n    }\n\n    // shrinkBuf(utf16buf, out)\n    if (utf16buf.length !== out) {\n        if(utf16buf.subarray) {\n            utf16buf = utf16buf.subarray(0, out);\n        } else {\n            utf16buf.length = out;\n        }\n    }\n\n    // return String.fromCharCode.apply(null, utf16buf);\n    return applyFromCharCode(utf16buf);\n};\n\n\n// That's all for the pako functions.\n\n\n/**\n * Transform a javascript string into an array (typed if possible) of bytes,\n * UTF-8 encoded.\n * @param {String} str the string to encode\n * @return {Array|Uint8Array|Buffer} the UTF-8 encoded string.\n */\nvar utf8encode = function utf8encode(str) {\n    return string2buf(str);\n};\n\n/**\n * Transform a bytes array (or a representation) representing an UTF-8 encoded\n * string into a javascript string.\n * @param {Array|Uint8Array|Buffer} buf the data de decode\n * @return {String} the decoded string.\n */\nvar utf8decode = function utf8decode(buf) {\n    buf = transformTo(support.uint8array ? \"uint8array\" : \"array\", buf);\n\n    return buf2string(buf);\n};\n\n/**\n * A worker to decode utf8 encoded binary chunks into string chunks.\n * @constructor\n */\nvar Utf8DecodeWorker = /*@__PURE__*/(function (GenericWorker) {\n    function Utf8DecodeWorker() {\n        GenericWorker.call(this, \"utf-8 decode\");\n\n        // the last bytes if a chunk didn't end with a complete codepoint.\n        this.leftOver = null;\n    }\n\n    Utf8DecodeWorker.__proto__ = GenericWorker;\n    Utf8DecodeWorker.prototype = Object.create( GenericWorker.prototype );\n    Utf8DecodeWorker.prototype.constructor = Utf8DecodeWorker;\n\n    /**\n     * @see GenericWorker.processChunk\n     */\n    Utf8DecodeWorker.prototype.processChunk = function processChunk (chunk) {\n        var data = transformTo(support.uint8array ? \"uint8array\" : \"array\", chunk.data);\n\n        // 1st step, re-use what's left of the previous chunk\n        if (this.leftOver && this.leftOver.length) {\n            if(support.uint8array) {\n                var previousData = data;\n                data = new Uint8Array(previousData.length + this.leftOver.length);\n                data.set(this.leftOver, 0);\n                data.set(previousData, this.leftOver.length);\n            } else {\n                data = this.leftOver.concat(data);\n            }\n            this.leftOver = null;\n        }\n\n        var nextBoundary = utf8border(data);\n        var usableData = data;\n        if (nextBoundary !== data.length) {\n            if (support.uint8array) {\n                usableData = data.subarray(0, nextBoundary);\n                this.leftOver = data.subarray(nextBoundary, data.length);\n            } else {\n                usableData = data.slice(0, nextBoundary);\n                this.leftOver = data.slice(nextBoundary, data.length);\n            }\n        }\n\n        this.push({\n            data : utf8decode(usableData),\n            meta : chunk.meta\n        });\n    };\n\n    /**\n     * @see GenericWorker.flush\n     */\n    Utf8DecodeWorker.prototype.flush = function flush () {\n        if (this.leftOver && this.leftOver.length) {\n            this.push({\n                data : utf8decode(this.leftOver),\n                meta : {}\n            });\n            this.leftOver = null;\n        }\n    };\n\n    return Utf8DecodeWorker;\n}(GenericWorker));\n\n/**\n * A worker to endcode string chunks into utf8 encoded binary chunks.\n * @constructor\n */\nvar Utf8EncodeWorker = /*@__PURE__*/(function (GenericWorker) {\n    function Utf8EncodeWorker() {\n        GenericWorker.call(this, \"utf-8 encode\");\n    }\n\n    Utf8EncodeWorker.__proto__ = GenericWorker;\n    Utf8EncodeWorker.prototype = Object.create( GenericWorker.prototype );\n    Utf8EncodeWorker.prototype.constructor = Utf8EncodeWorker;\n\n    /**\n     * @see GenericWorker.processChunk\n     */\n    Utf8EncodeWorker.prototype.processChunk = function processChunk (chunk) {\n        this.push({\n            data: utf8encode(chunk.data),\n            meta: chunk.meta\n        });\n    };\n\n    return Utf8EncodeWorker;\n}(GenericWorker));\n\n/**\n * A worker which convert chunks to a specified type.\n * @constructor\n * @param {String} destType the destination type.\n */\nvar ConvertWorker = /*@__PURE__*/(function (GenericWorker) {\n    function ConvertWorker(destType) {\n        GenericWorker.call(this, \"ConvertWorker to \" + destType);\n        this.destType = destType;\n    }\n\n    ConvertWorker.__proto__ = GenericWorker;\n    ConvertWorker.prototype = Object.create( GenericWorker.prototype );\n    ConvertWorker.prototype.constructor = ConvertWorker;\n\n    /**\n     * @see GenericWorker.processChunk\n     */\n    ConvertWorker.prototype.processChunk = function processChunk (chunk) {\n        this.push({\n            data: transformTo(this.destType, chunk.data),\n            meta: chunk.meta\n        });\n    };\n\n    return ConvertWorker;\n}(GenericWorker));\n\n/**\n * Apply the final transformation of the data. If the user wants a Blob for\n * example, it's easier to work with an U8intArray and finally do the\n * ArrayBuffer/Blob conversion.\n * @param {String} type the name of the final type\n * @param {String|Uint8Array|Buffer} content the content to transform\n * @param {String} mimeType the mime type of the content, if applicable.\n * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the content in the right format.\n */\nfunction transformZipOutput(type, content, mimeType) {\n    switch(type) {\n        case \"blob\" :\n            return newBlob(transformTo(\"arraybuffer\", content), mimeType);\n        case \"base64\" :\n            return encode(content);\n        default :\n            return transformTo(type, content);\n    }\n}\n\n/**\n * Concatenate an array of data of the given type.\n * @param {String} type the type of the data in the given array.\n * @param {Array} dataArray the array containing the data chunks to concatenate\n * @return {String|Uint8Array|Buffer} the concatenated data\n * @throws Error if the asked type is unsupported\n */\nfunction concat (type, dataArray) {\n    var i, index = 0, res = null, totalLength = 0;\n    for(i = 0; i < dataArray.length; i++) {\n        totalLength += dataArray[i].length;\n    }\n    switch(type) {\n        case \"string\":\n            return dataArray.join(\"\");\n          case \"array\":\n            return Array.prototype.concat.apply([], dataArray);\n        case \"uint8array\":\n            res = new Uint8Array(totalLength);\n            for(i = 0; i < dataArray.length; i++) {\n                res.set(dataArray[i], index);\n                index += dataArray[i].length;\n            }\n            return res;\n        default:\n            throw new Error(\"concat : unsupported type '\"  + type + \"'\");\n    }\n}\n\n/**\n * Listen a StreamHelper, accumulate its content and concatenate it into a\n * complete block.\n * @param {StreamHelper} helper the helper to use.\n * @param {Function} updateCallback a callback called on each update. Called\n * with one arg :\n * - the metadata linked to the update received.\n * @return Promise the promise for the accumulation.\n */\nfunction accumulate(helper, updateCallback) {\n    return new external.Promise(function (resolve, reject){\n        var dataArray = [];\n        var chunkType = helper._internalType,\n            resultType = helper._outputType,\n            mimeType = helper._mimeType;\n        helper\n        .on('data', function (data, meta) {\n            dataArray.push(data);\n            if(updateCallback) {\n                updateCallback(meta);\n            }\n        })\n        .on('error', function(err) {\n            dataArray = [];\n            reject(err);\n        })\n        .on('end', function (){\n            try {\n                var result = transformZipOutput(resultType, concat(chunkType, dataArray), mimeType);\n                resolve(result);\n            } catch (e) {\n                reject(e);\n            }\n            dataArray = [];\n        })\n        .resume();\n    });\n}\n\n/**\n * An helper to easily use workers outside of JSZip.\n * @constructor\n * @param {Worker} worker the worker to wrap\n * @param {String} outputType the type of data expected by the use\n * @param {String} mimeType the mime type of the content, if applicable.\n */\nvar StreamHelper = function StreamHelper (worker, outputType, mimeType) {\n    var internalType = outputType;\n    switch(outputType) {\n        case \"blob\":\n        case \"arraybuffer\":\n            internalType = \"uint8array\";\n        break;\n        case \"base64\":\n            internalType = \"string\";\n        break;\n    }\n\n    try {\n        // the type used internally\n        this._internalType = internalType;\n        // the type used to output results\n        this._outputType = outputType;\n        // the mime type\n        this._mimeType = mimeType;\n        checkSupport(internalType);\n        this._worker = worker.pipe(new ConvertWorker(internalType));\n        // the last workers can be rewired without issues but we need to\n        // prevent any updates on previous workers.\n        worker.lock();\n    } catch(e) {\n        this._worker = new GenericWorker(\"error\");\n        this._worker.error(e);\n    }\n};\n\n/**\n * Listen a StreamHelper, accumulate its content and concatenate it into a\n * complete block.\n * @param {Function} updateCb the update callback.\n * @return Promise the promise for the accumulation.\n */\nStreamHelper.prototype.accumulate = function accumulate$1 (updateCb) {\n    return accumulate(this, updateCb);\n};\n\n/**\n * Add a listener on an event triggered on a stream.\n * @param {String} evt the name of the event\n * @param {Function} fn the listener\n * @return {StreamHelper} the current helper.\n */\nStreamHelper.prototype.on = function on (evt, fn) {\n    var self = this;\n\n    if(evt === \"data\") {\n        this._worker.on(evt, function (chunk) {\n            fn.call(self, chunk.data, chunk.meta);\n        });\n    } else {\n        this._worker.on(evt, function () {\n            delay(fn, arguments, self);\n        });\n    }\n    return this;\n};\n\n/**\n * Resume the flow of chunks.\n * @return {StreamHelper} the current helper.\n */\nStreamHelper.prototype.resume = function resume () {\n    delay(this._worker.resume, [], this._worker);\n    return this;\n};\n\n/**\n * Pause the flow of chunks.\n * @return {StreamHelper} the current helper.\n */\nStreamHelper.prototype.pause = function pause () {\n    this._worker.pause();\n    return this;\n};\n\nvar base64 = false;\nvar binary = false;\nvar dir = false;\nvar createFolders = true;\nvar date = null;\nvar compression = null;\nvar compressionOptions = null;\nvar comment = null;\nvar unixPermissions = null;\nvar dosPermissions = null;\n\nvar defaults = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    base64: base64,\n    binary: binary,\n    comment: comment,\n    compression: compression,\n    compressionOptions: compressionOptions,\n    createFolders: createFolders,\n    date: date,\n    dir: dir,\n    dosPermissions: dosPermissions,\n    unixPermissions: unixPermissions\n});\n\n// the size of the generated chunks\n// TODO expose this as a public variable\nvar DEFAULT_BLOCK_SIZE = 16 * 1024;\n\n/**\n * A worker that reads a content and emits chunks.\n * @constructor\n * @param {Promise} dataP the promise of the data to split\n */\nvar DataWorker = /*@__PURE__*/(function (GenericWorker) {\n    function DataWorker(dataP) {\n        GenericWorker.call(this, \"DataWorker\");\n        var self = this;\n        this.dataIsReady = false;\n        this.index = 0;\n        this.max = 0;\n        this.data = null;\n        this.type = \"\";\n\n        this._tickScheduled = false;\n\n        dataP.then(function (data) {\n            self.dataIsReady = true;\n            self.data = data;\n            self.max = data && data.length || 0;\n            self.type = getTypeOf(data);\n            if(!self.isPaused) {\n                self._tickAndRepeat();\n            }\n        }, function (e) {\n            self.error(e);\n        });\n    }\n\n    DataWorker.__proto__ = GenericWorker;\n    DataWorker.prototype = Object.create( GenericWorker.prototype );\n    DataWorker.prototype.constructor = DataWorker;\n\n    /**\n     * @see GenericWorker.cleanUp\n     */\n    DataWorker.prototype.cleanUp = function cleanUp () {\n        GenericWorker.prototype.cleanUp.call(this);\n        this.data = null;\n    };\n\n    /**\n     * @see GenericWorker.resume\n     */\n    DataWorker.prototype.resume = function resume () {\n        if(!GenericWorker.prototype.resume.call(this)) {\n            return false;\n        }\n\n        if (!this._tickScheduled && this.dataIsReady) {\n            this._tickScheduled = true;\n            delay(this._tickAndRepeat, [], this);\n        }\n        return true;\n    };\n\n    /**\n     * Trigger a tick a schedule an other call to this function.\n     */\n    DataWorker.prototype._tickAndRepeat = function _tickAndRepeat () {\n        this._tickScheduled = false;\n        if(this.isPaused || this.isFinished) {\n            return;\n        }\n        this._tick();\n        if(!this.isFinished) {\n            delay(this._tickAndRepeat, [], this);\n            this._tickScheduled = true;\n        }\n    };\n    /**\n     * Read and push a chunk.\n     */\n    DataWorker.prototype._tick = function _tick () {\n\n        if(this.isPaused || this.isFinished) {\n            return false;\n        }\n\n        var size = DEFAULT_BLOCK_SIZE;\n        var data = null, nextIndex = Math.min(this.max, this.index + size);\n        if (this.index >= this.max) {\n            // EOF\n            return this.end();\n        } else {\n            switch(this.type) {\n                case \"string\":\n                    data = this.data.substring(this.index, nextIndex);\n                break;\n                case \"uint8array\":\n                    data = this.data.subarray(this.index, nextIndex);\n                break;\n                case \"array\":\n                    data = this.data.slice(this.index, nextIndex);\n                break;\n            }\n            this.index = nextIndex;\n            return this.push({\n                data : data,\n                meta : {\n                    percent : this.max ? this.index / this.max * 100 : 0\n                }\n            });\n        }\n    };\n\n    return DataWorker;\n}(GenericWorker));\n\n/**\n * A worker which calculate the total length of the data flowing through.\n * @constructor\n * @param {String} propName the name used to expose the length\n */\nvar DataLengthProbe = /*@__PURE__*/(function (GenericWorker) {\n    function DataLengthProbe(propName) {\n        GenericWorker.call(this, \"DataLengthProbe for \" + propName);\n        this.propName = propName;\n        this.withStreamInfo(propName, 0);\n    }\n\n    DataLengthProbe.__proto__ = GenericWorker;\n    DataLengthProbe.prototype = Object.create( GenericWorker.prototype );\n    DataLengthProbe.prototype.constructor = DataLengthProbe;\n\n    /**\n     * @see GenericWorker.processChunk\n     */\n    DataLengthProbe.prototype.processChunk = function processChunk (chunk) {\n        if (chunk) {\n            var length = this.streamInfo[this.propName] || 0;\n            this.streamInfo[this.propName] = length + chunk.data.length;\n        }\n        GenericWorker.prototype.processChunk.call(this, chunk);\n    };\n\n    return DataLengthProbe;\n}(GenericWorker));\n\n/**\n * The following functions come from pako, from pako/lib/zlib/crc32.js\n * released under the MIT license, see pako https://github.com/nodeca/pako/\n */\n\nvar makeTable = function() {\n    // Use ordinary array, since untyped makes no boost here\n    var table = [];\n\n    for (var n =0; n < 256; n++){\n        var c = n;\n        for(var k =0; k < 8; k++){\n            c = ((c&1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n        }\n        table[n] = c;\n    }\n\n    // Memoize table on first call.\n    makeTable = function() {\n        return table;\n    };\n\n    return table;\n};\n\nfunction crc32(crc, buf, len, pos) {\n    var t = makeTable();\n    var end = pos + len;\n\n    crc = crc ^ (-1);\n\n    for (var i = pos; i < end; i++ ) {\n        crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n    }\n\n    return (crc ^ (-1)); // >>> 0;\n}\n\n// That's all for the pako functions.\n\n/**\n * Compute the crc32 of a string.\n * This is almost the same as the function crc32, but for strings. Using the\n * same function for the two use cases leads to horrible performances.\n * @param {Number} crc the starting value of the crc.\n * @param {String} str the string to use.\n * @param {Number} len the length of the string.\n * @param {Number} pos the starting position for the crc32 computation.\n * @return {Number} the computed crc32.\n */\nfunction crc32str(crc, str, len, pos) {\n    var t = makeTable();\n    var end = pos + len;\n\n    crc = crc ^ (-1);\n\n    for (var i = pos; i < end; i++ ) {\n        crc = (crc >>> 8) ^ t[(crc ^ str.charCodeAt(i)) & 0xFF];\n    }\n\n    return (crc ^ (-1)); // >>> 0;\n}\n\nfunction crc32wrapper(input, crc) {\n    if (typeof input === \"undefined\" || !input.length) {\n        return 0;\n    }\n\n    var isArray = getTypeOf(input) !== \"string\";\n\n    if (isArray) {\n        return crc32(crc | 0, input, input.length, 0);\n    } else {\n        return crc32str(crc | 0, input, input.length, 0);\n    }\n}\n\n/**\n * A worker which calculate the crc32 of the data flowing through.\n * @constructor\n */\nvar Crc32Probe = /*@__PURE__*/(function (GenericWorker) {\n    function Crc32Probe() {\n        GenericWorker.call(this, \"Crc32Probe\");\n        this.withStreamInfo(\"crc32\", 0);\n    }\n\n    Crc32Probe.__proto__ = GenericWorker;\n    Crc32Probe.prototype = Object.create( GenericWorker.prototype );\n    Crc32Probe.prototype.constructor = Crc32Probe;\n\n    /**\n     * @see GenericWorker.processChunk\n     */\n    Crc32Probe.prototype.processChunk = function processChunk (chunk) {\n        this.streamInfo.crc32 = crc32wrapper(chunk.data, this.streamInfo.crc32 || 0);\n        this.push(chunk);\n    };\n\n    return Crc32Probe;\n}(GenericWorker));\n\n/**\n * Represent a compressed object, with everything needed to decompress it.\n * @constructor\n * @param {number} compressedSize the size of the data compressed.\n * @param {number} uncompressedSize the size of the data after decompression.\n * @param {number} crc32 the crc32 of the decompressed file.\n * @param {object} compression the type of compression, see lib/compressions.js.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the compressed data.\n */\nvar CompressedObject = function CompressedObject(compressedSize, uncompressedSize, crc32, compression, data) {\n    this.compressedSize = compressedSize;\n    this.uncompressedSize = uncompressedSize;\n    this.crc32 = crc32;\n    this.compression = compression;\n    this.compressedContent = data;\n};\n\n/**\n * Create a worker to get the uncompressed content.\n * @return {GenericWorker} the worker.\n */\nCompressedObject.prototype.getContentWorker = function getContentWorker () {\n    var worker = new DataWorker(external.Promise.resolve(this.compressedContent))\n    .pipe(this.compression.uncompressWorker())\n    .pipe(new DataLengthProbe(\"data_length\"));\n\n    var that = this;\n    worker.on(\"end\", function () {\n        if(this.streamInfo['data_length'] !== that.uncompressedSize) {\n            throw new Error(\"Bug : uncompressed data size mismatch\");\n        }\n    });\n    return worker;\n};\n\n/**\n * Create a worker to get the compressed content.\n * @return {GenericWorker} the worker.\n */\nCompressedObject.prototype.getCompressedWorker = function getCompressedWorker () {\n    return new DataWorker(external.Promise.resolve(this.compressedContent))\n    .withStreamInfo(\"compressedSize\", this.compressedSize)\n    .withStreamInfo(\"uncompressedSize\", this.uncompressedSize)\n    .withStreamInfo(\"crc32\", this.crc32)\n    .withStreamInfo(\"compression\", this.compression)\n    ;\n};\n\n/**\n * Chain the given worker with other workers to compress the content with the\n * given compression.\n * @param {GenericWorker} uncompressedWorker the worker to pipe.\n * @param {Object} compression the compression object.\n * @param {Object} compressionOptions the options to use when compressing.\n * @return {GenericWorker} the new worker compressing the content.\n */\nCompressedObject.createWorkerFrom = function createWorkerFrom (uncompressedWorker, compression, compressionOptions) {\n    return uncompressedWorker\n    .pipe(new Crc32Probe())\n    .pipe(new DataLengthProbe(\"uncompressedSize\"))\n    .pipe(compression.compressWorker(compressionOptions))\n    .pipe(new DataLengthProbe(\"compressedSize\"))\n    .withStreamInfo(\"compression\", compression);\n};\n\n/**\n * A simple object representing a file in the zip file.\n * @constructor\n * @param {string} name the name of the file\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data\n * @param {Object} options the options of the file\n */\nvar ZipObject = function ZipObject(name, data, options) {\n    this.name = name;\n    this.dir = options.dir;\n    this.date = options.date;\n    this.comment = options.comment;\n    this.unixPermissions = options.unixPermissions;\n    this.dosPermissions = options.dosPermissions;\n\n    this._data = data;\n    this._dataBinary = options.binary;\n    // keep only the compression\n    this.options = {\n        compression : options.compression,\n        compressionOptions : options.compressionOptions\n    };\n};\n\n/**\n * Create an internal stream for the content of this object.\n * @param {String} type the type of each chunk.\n * @return StreamHelper the stream.\n */\nZipObject.prototype.internalStream = function internalStream (type) {\n    var result = null, outputType = \"string\";\n    try {\n        if (!type) {\n            throw new Error(\"No output type specified.\");\n        }\n        outputType = type.toLowerCase();\n        var askUnicodeString = outputType === \"string\" || outputType === \"text\";\n        if (outputType === \"binarystring\" || outputType === \"text\") {\n            outputType = \"string\";\n        }\n        result = this._decompressWorker();\n\n        var isUnicodeString = !this._dataBinary;\n\n        if (isUnicodeString && !askUnicodeString) {\n            result = result.pipe(new Utf8EncodeWorker());\n        }\n        if (!isUnicodeString && askUnicodeString) {\n            result = result.pipe(new Utf8DecodeWorker());\n        }\n    } catch (e) {\n        result = new GenericWorker(\"error\");\n        result.error(e);\n    }\n\n    return new StreamHelper(result, outputType, \"\");\n};\n\n/**\n * Prepare the content in the asked type.\n * @param {String} type the type of the result.\n * @param {Function} onUpdate a function to call on each internal update.\n * @return Promise the promise of the result.\n */\nZipObject.prototype.async = function async (type, onUpdate) {\n    return this.internalStream(type).accumulate(onUpdate);\n};\n\n/**\n * Return a worker for the compressed content.\n * @private\n * @param {Object} compression the compression object to use.\n * @param {Object} compressionOptions the options to use when compressing.\n * @return Worker the worker.\n */\nZipObject.prototype._compressWorker = function _compressWorker (compression, compressionOptions) {\n    if (\n        this._data instanceof CompressedObject &&\n        this._data.compression.magic === compression.magic\n    ) {\n        return this._data.getCompressedWorker();\n    } else {\n        var result = this._decompressWorker();\n        if(!this._dataBinary) {\n            result = result.pipe(new Utf8EncodeWorker());\n        }\n        return CompressedObject.createWorkerFrom(result, compression, compressionOptions);\n    }\n};\n\n/**\n * Return a worker for the decompressed content.\n * @private\n * @return Worker the worker.\n */\nZipObject.prototype._decompressWorker = function _decompressWorker () {\n    if (this._data instanceof CompressedObject) {\n        return this._data.getContentWorker();\n    } else if (this._data instanceof GenericWorker) {\n        return this._data;\n    } else {\n        return new DataWorker(this._data);\n    }\n};\n\nvar arrayType = function() {\n    var useTypedArray = (typeof Uint8Array !== 'undefined') && (typeof Uint16Array !== 'undefined') && (typeof Uint32Array !== 'undefined');\n    var resolved = useTypedArray ? \"uint8array\" : \"array\";\n\n    arrayType = function() {\n        return resolved;\n    };\n};\n\n/**\n * Create a worker that uses pako to inflate/deflate.\n * @constructor\n * @param {String} action the name of the pako function to call : either \"Deflate\" or \"Inflate\".\n * @param {Object} options the options to use when (de)compressing.\n */\nvar FlateWorker = /*@__PURE__*/(function (GenericWorker) {\n    function FlateWorker(action, options) {\n        GenericWorker.call(this, \"FlateWorker/\" + action);\n\n        this._pako = null;\n        this._pakoAction = action;\n        this._pakoOptions = options;\n        // the `meta` object from the last chunk received\n        // this allow this worker to pass around metadata\n        this.meta = {};\n    }\n\n    FlateWorker.__proto__ = GenericWorker;\n    FlateWorker.prototype = Object.create( GenericWorker.prototype );\n    FlateWorker.prototype.constructor = FlateWorker;\n\n    /**\n     * @see GenericWorker.processChunk\n     */\n    FlateWorker.prototype.processChunk = function processChunk (chunk) {\n        this.meta = chunk.meta;\n        if (this._pako === null) {\n            this._createPako();\n        }\n        this._pako.push(transformTo(arrayType(), chunk.data), false);\n    };\n\n    /**\n     * @see GenericWorker.flush\n     */\n    FlateWorker.prototype.flush = function flush () {\n        GenericWorker.prototype.flush.call(this);\n        if (this._pako === null) {\n            this._createPako();\n        }\n        this._pako.push([], true);\n    };\n    /**\n     * @see GenericWorker.cleanUp\n     */\n    FlateWorker.prototype.cleanUp = function cleanUp () {\n        GenericWorker.prototype.cleanUp.call(this);\n        this._pako = null;\n    };\n\n    /**\n     * Create the _pako object.\n     * TODO: lazy-loading this object isn't the best solution but it's the\n     * quickest. The best solution is to lazy-load the worker list. See also the\n     * issue #446.\n     */\n    FlateWorker.prototype._createPako = function _createPako () {\n        var this$1$1 = this;\n\n        var params = {\n            raw: true,\n            level: this._pakoOptions.level || -1 // default compression\n        };\n        this._pako = this._pakoAction === 'Deflate' ? new Deflate(params) : new Inflate(params);\n        this._pako.onData = function (data) {\n            this$1$1.push({\n                data: data,\n                meta: this$1$1.meta\n            });\n        };\n    };\n\n    return FlateWorker;\n}(GenericWorker));\n\nvar DEFLATE = {\n    magic: \"\\x08\\x00\",\n    compressWorker: function(compressionOptions) {\n        return new FlateWorker(\"Deflate\", compressionOptions);\n    },\n\n    uncompressWorker: function() {\n        return new FlateWorker(\"Inflate\", {});\n    }\n};\n\nvar STORE = {\n    magic: \"\\x00\\x00\",\n    compressWorker: function() {\n        return new GenericWorker(\"STORE compression\");\n    },\n    uncompressWorker: function() {\n        return new GenericWorker(\"STORE decompression\");\n    }\n};\n\nvar compressions = {\n    STORE: STORE,\n    DEFLATE: DEFLATE\n};\n\nvar LOCAL_FILE_HEADER = \"PK\\x03\\x04\";\nvar CENTRAL_FILE_HEADER = \"PK\\x01\\x02\";\nvar CENTRAL_DIRECTORY_END = \"PK\\x05\\x06\";\nvar ZIP64_CENTRAL_DIRECTORY_LOCATOR = \"PK\\x06\\x07\";\nvar ZIP64_CENTRAL_DIRECTORY_END = \"PK\\x06\\x06\";\nvar DATA_DESCRIPTOR = \"PK\\x07\\x08\";\n\n/**\n * Transform an integer into a string in hexadecimal.\n * @private\n * @param {number} dec the number to convert.\n * @param {number} bytes the number of bytes to generate.\n * @returns {string} the result.\n */\nvar decToHex = function(dec, bytes) {\n    var hex = \"\", i;\n    for (i = 0; i < bytes; i++) {\n        hex += String.fromCharCode(dec & 0xff);\n        dec = dec >>> 8;\n    }\n    return hex;\n};\n\n/**\n * Generate the UNIX part of the external file attributes.\n * @param {Object} unixPermissions the unix permissions or null.\n * @param {Boolean} isDir true if the entry is a directory, false otherwise.\n * @return {Number} a 32 bit integer.\n *\n * adapted from http://unix.stackexchange.com/questions/14705/the-zip-formats-external-file-attribute :\n *\n * TTTTsstrwxrwxrwx0000000000ADVSHR\n * ^^^^____________________________ file type, see zipinfo.c (UNX_*)\n *     ^^^_________________________ setuid, setgid, sticky\n *        ^^^^^^^^^________________ permissions\n *                 ^^^^^^^^^^______ not used ?\n *                           ^^^^^^ DOS attribute bits : Archive, Directory, Volume label, System file, Hidden, Read only\n */\nvar generateUnixExternalFileAttr = function (unixPermissions, isDir) {\n\n    var result = unixPermissions;\n    if (!unixPermissions) {\n        // I can't use octal values in strict mode, hence the hexa.\n        //  040775 => 0x41fd\n        // 0100664 => 0x81b4\n        result = isDir ? 0x41fd : 0x81b4;\n    }\n    return (result & 0xFFFF) << 16;\n};\n\n/**\n * Generate the DOS part of the external file attributes.\n * @param {Object} dosPermissions the dos permissions or null.\n * @param {Boolean} isDir true if the entry is a directory, false otherwise.\n * @return {Number} a 32 bit integer.\n *\n * Bit 0     Read-Only\n * Bit 1     Hidden\n * Bit 2     System\n * Bit 3     Volume Label\n * Bit 4     Directory\n * Bit 5     Archive\n */\nvar generateDosExternalFileAttr = function (dosPermissions, isDir) {\n\n    // the dir flag is already set for compatibility\n    return (dosPermissions || 0)  & 0x3F;\n};\n\n/**\n * Generate the various parts used in the construction of the final zip file.\n * @param {Object} streamInfo the hash with information about the compressed file.\n * @param {Boolean} streamedContent is the content streamed ?\n * @param {Boolean} streamingEnded is the stream finished ?\n * @param {number} offset the current offset from the start of the zip file.\n * @param {String} platform let's pretend we are this platform (change platform dependents fields)\n * @param {Function} encodeFileName the function to encode the file name / comment.\n * @return {Object} the zip parts.\n */\nvar generateZipParts = function(streamInfo, streamedContent, streamingEnded, offset, platform, encodeFileName) {\n    var file = streamInfo['file'],\n    compression = streamInfo['compression'],\n    useCustomEncoding = encodeFileName !== utf8encode,\n    encodedFileName = transformTo(\"string\", encodeFileName(file.name)),\n    utfEncodedFileName = transformTo(\"string\", utf8encode(file.name)),\n    comment = file.comment,\n    encodedComment = transformTo(\"string\", encodeFileName(comment)),\n    utfEncodedComment = transformTo(\"string\", utf8encode(comment)),\n    useUTF8ForFileName = utfEncodedFileName.length !== file.name.length,\n    useUTF8ForComment = utfEncodedComment.length !== comment.length,\n    dosTime,\n    dosDate,\n    extraFields = \"\",\n    unicodePathExtraField = \"\",\n    unicodeCommentExtraField = \"\",\n    dir = file.dir,\n    date = file.date;\n\n\n    var dataInfo = {\n        crc32 : 0,\n        compressedSize : 0,\n        uncompressedSize : 0\n    };\n\n    // if the content is streamed, the sizes/crc32 are only available AFTER\n    // the end of the stream.\n    if (!streamedContent || streamingEnded) {\n        dataInfo.crc32 = streamInfo['crc32'];\n        dataInfo.compressedSize = streamInfo['compressedSize'];\n        dataInfo.uncompressedSize = streamInfo['uncompressedSize'];\n    }\n\n    var bitflag = 0;\n    if (streamedContent) {\n        // Bit 3: the sizes/crc32 are set to zero in the local header.\n        // The correct values are put in the data descriptor immediately\n        // following the compressed data.\n        bitflag |= 0x0008;\n    }\n    if (!useCustomEncoding && (useUTF8ForFileName || useUTF8ForComment)) {\n        // Bit 11: Language encoding flag (EFS).\n        bitflag |= 0x0800;\n    }\n\n\n    var extFileAttr = 0;\n    var versionMadeBy = 0;\n    if (dir) {\n        // dos or unix, we set the dos dir flag\n        extFileAttr |= 0x00010;\n    }\n    if(platform === \"UNIX\") {\n        versionMadeBy = 0x031E; // UNIX, version 3.0\n        extFileAttr |= generateUnixExternalFileAttr(file.unixPermissions, dir);\n    } else { // DOS or other, fallback to DOS\n        versionMadeBy = 0x0014; // DOS, version 2.0\n        extFileAttr |= generateDosExternalFileAttr(file.dosPermissions);\n    }\n\n    // date\n    // @see http://www.delorie.com/djgpp/doc/rbinter/it/52/13.html\n    // @see http://www.delorie.com/djgpp/doc/rbinter/it/65/16.html\n    // @see http://www.delorie.com/djgpp/doc/rbinter/it/66/16.html\n\n    dosTime = date.getUTCHours();\n    dosTime = dosTime << 6;\n    dosTime = dosTime | date.getUTCMinutes();\n    dosTime = dosTime << 5;\n    dosTime = dosTime | date.getUTCSeconds() / 2;\n\n    dosDate = date.getUTCFullYear() - 1980;\n    dosDate = dosDate << 4;\n    dosDate = dosDate | (date.getUTCMonth() + 1);\n    dosDate = dosDate << 5;\n    dosDate = dosDate | date.getUTCDate();\n\n    if (useUTF8ForFileName) {\n        // set the unicode path extra field. unzip needs at least one extra\n        // field to correctly handle unicode path, so using the path is as good\n        // as any other information. This could improve the situation with\n        // other archive managers too.\n        // This field is usually used without the utf8 flag, with a non\n        // unicode path in the header (winrar, winzip). This helps (a bit)\n        // with the messy Windows' default compressed folders feature but\n        // breaks on p7zip which doesn't seek the unicode path extra field.\n        // So for now, UTF-8 everywhere !\n        unicodePathExtraField =\n            // Version\n            decToHex(1, 1) +\n            // NameCRC32\n            decToHex(crc32wrapper(encodedFileName), 4) +\n            // UnicodeName\n            utfEncodedFileName;\n\n        extraFields +=\n            // Info-ZIP Unicode Path Extra Field\n            \"\\x75\\x70\" +\n            // size\n            decToHex(unicodePathExtraField.length, 2) +\n            // content\n            unicodePathExtraField;\n    }\n\n    if(useUTF8ForComment) {\n\n        unicodeCommentExtraField =\n            // Version\n            decToHex(1, 1) +\n            // CommentCRC32\n            decToHex(crc32wrapper(encodedComment), 4) +\n            // UnicodeName\n            utfEncodedComment;\n\n        extraFields +=\n            // Info-ZIP Unicode Path Extra Field\n            \"\\x75\\x63\" +\n            // size\n            decToHex(unicodeCommentExtraField.length, 2) +\n            // content\n            unicodeCommentExtraField;\n    }\n\n    var header = \"\";\n\n    // version needed to extract\n    header += \"\\x0A\\x00\";\n    // general purpose bit flag\n    header += decToHex(bitflag, 2);\n    // compression method\n    header += compression.magic;\n    // last mod file time\n    header += decToHex(dosTime, 2);\n    // last mod file date\n    header += decToHex(dosDate, 2);\n    // crc-32\n    header += decToHex(dataInfo.crc32, 4);\n    // compressed size\n    header += decToHex(dataInfo.compressedSize, 4);\n    // uncompressed size\n    header += decToHex(dataInfo.uncompressedSize, 4);\n    // file name length\n    header += decToHex(encodedFileName.length, 2);\n    // extra field length\n    header += decToHex(extraFields.length, 2);\n\n\n    var fileRecord = LOCAL_FILE_HEADER + header + encodedFileName + extraFields;\n\n    var dirRecord = CENTRAL_FILE_HEADER +\n        // version made by (00: DOS)\n        decToHex(versionMadeBy, 2) +\n        // file header (common to file and central directory)\n        header +\n        // file comment length\n        decToHex(encodedComment.length, 2) +\n        // disk number start\n        \"\\x00\\x00\" +\n        // internal file attributes TODO\n        \"\\x00\\x00\" +\n        // external file attributes\n        decToHex(extFileAttr, 4) +\n        // relative offset of local header\n        decToHex(offset, 4) +\n        // file name\n        encodedFileName +\n        // extra field\n        extraFields +\n        // file comment\n        encodedComment;\n\n    return {\n        fileRecord: fileRecord,\n        dirRecord: dirRecord\n    };\n};\n\n/**\n * Generate the EOCD record.\n * @param {Number} entriesCount the number of entries in the zip file.\n * @param {Number} centralDirLength the length (in bytes) of the central dir.\n * @param {Number} localDirLength the length (in bytes) of the local dir.\n * @param {String} comment the zip file comment as a binary string.\n * @param {Function} encodeFileName the function to encode the comment.\n * @return {String} the EOCD record.\n */\nvar generateCentralDirectoryEnd = function (entriesCount, centralDirLength, localDirLength, comment, encodeFileName) {\n    var dirEnd = \"\";\n    var encodedComment = transformTo(\"string\", encodeFileName(comment));\n\n    // end of central dir signature\n    dirEnd = CENTRAL_DIRECTORY_END +\n        // number of this disk\n        \"\\x00\\x00\" +\n        // number of the disk with the start of the central directory\n        \"\\x00\\x00\" +\n        // total number of entries in the central directory on this disk\n        decToHex(entriesCount, 2) +\n        // total number of entries in the central directory\n        decToHex(entriesCount, 2) +\n        // size of the central directory   4 bytes\n        decToHex(centralDirLength, 4) +\n        // offset of start of central directory with respect to the starting disk number\n        decToHex(localDirLength, 4) +\n        // .ZIP file comment length\n        decToHex(encodedComment.length, 2) +\n        // .ZIP file comment\n        encodedComment;\n\n    return dirEnd;\n};\n\n/**\n * Generate data descriptors for a file entry.\n * @param {Object} streamInfo the hash generated by a worker, containing information\n * on the file entry.\n * @return {String} the data descriptors.\n */\nvar generateDataDescriptors = function (streamInfo) {\n    var descriptor = \"\";\n    descriptor = DATA_DESCRIPTOR +\n        // crc-32                          4 bytes\n        decToHex(streamInfo['crc32'], 4) +\n        // compressed size                 4 bytes\n        decToHex(streamInfo['compressedSize'], 4) +\n        // uncompressed size               4 bytes\n        decToHex(streamInfo['uncompressedSize'], 4);\n\n    return descriptor;\n};\n\n\n/**\n * A worker to concatenate other workers to create a zip file.\n * @param {Boolean} streamFiles `true` to stream the content of the files,\n * `false` to accumulate it.\n * @param {String} comment the comment to use.\n * @param {String} platform the platform to use, \"UNIX\" or \"DOS\".\n * @param {Function} encodeFileName the function to encode file names and comments.\n */\nvar ZipFileWorker = /*@__PURE__*/(function (GenericWorker) {\n    function ZipFileWorker(streamFiles, comment, platform, encodeFileName) {\n        GenericWorker.call(this, \"ZipFileWorker\");\n        // The number of bytes written so far. This doesn't count accumulated chunks.\n        this.bytesWritten = 0;\n        // The comment of the zip file\n        this.zipComment = comment;\n        // The platform \"generating\" the zip file.\n        this.zipPlatform = platform;\n        // the function to encode file names and comments.\n        this.encodeFileName = encodeFileName;\n        // Should we stream the content of the files ?\n        this.streamFiles = streamFiles;\n        // If `streamFiles` is false, we will need to accumulate the content of the\n        // files to calculate sizes / crc32 (and write them *before* the content).\n        // This boolean indicates if we are accumulating chunks (it will change a lot\n        // during the lifetime of this worker).\n        this.accumulate = false;\n        // The buffer receiving chunks when accumulating content.\n        this.contentBuffer = [];\n        // The list of generated directory records.\n        this.dirRecords = [];\n        // The offset (in bytes) from the beginning of the zip file for the current source.\n        this.currentSourceOffset = 0;\n        // The total number of entries in this zip file.\n        this.entriesCount = 0;\n        // the name of the file currently being added, null when handling the end of the zip file.\n        // Used for the emitted metadata.\n        this.currentFile = null;\n\n        this._sources = [];\n    }\n\n    ZipFileWorker.__proto__ = GenericWorker;\n    ZipFileWorker.prototype = Object.create( GenericWorker.prototype );\n    ZipFileWorker.prototype.constructor = ZipFileWorker;\n\n    /**\n     * @see GenericWorker.push\n     */\n    ZipFileWorker.prototype.push = function push (chunk) {\n\n        var currentFilePercent = chunk.meta.percent || 0;\n        var entriesCount = this.entriesCount;\n        var remainingFiles = this._sources.length;\n\n        if(this.accumulate) {\n            this.contentBuffer.push(chunk);\n        } else {\n            this.bytesWritten += chunk.data.length;\n\n            GenericWorker.prototype.push.call(this, {\n                data : chunk.data,\n                meta : {\n                    currentFile : this.currentFile,\n                    percent : entriesCount ? (currentFilePercent + 100 * (entriesCount - remainingFiles - 1)) / entriesCount : 100\n                }\n            });\n        }\n    };\n\n    /**\n     * The worker started a new source (an other worker).\n     * @param {Object} streamInfo the streamInfo object from the new source.\n     */\n    ZipFileWorker.prototype.openedSource = function openedSource (streamInfo) {\n        this.currentSourceOffset = this.bytesWritten;\n        this.currentFile = streamInfo['file'].name;\n\n        var streamedContent = this.streamFiles && !streamInfo['file'].dir;\n\n        // don't stream folders (because they don't have any content)\n        if(streamedContent) {\n            var record = generateZipParts(streamInfo, streamedContent, false, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);\n            this.push({\n                data : record.fileRecord,\n                meta : {percent:0}\n            });\n        } else {\n            // we need to wait for the whole file before pushing anything\n            this.accumulate = true;\n        }\n    };\n\n    /**\n     * The worker finished a source (an other worker).\n     * @param {Object} streamInfo the streamInfo object from the finished source.\n     */\n    ZipFileWorker.prototype.closedSource = function closedSource (streamInfo) {\n        this.accumulate = false;\n        var streamedContent = this.streamFiles && !streamInfo['file'].dir;\n        var record = generateZipParts(streamInfo, streamedContent, true, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);\n\n        this.dirRecords.push(record.dirRecord);\n        if(streamedContent) {\n            // after the streamed file, we put data descriptors\n            this.push({\n                data : generateDataDescriptors(streamInfo),\n                meta : {percent:100}\n            });\n        } else {\n            // the content wasn't streamed, we need to push everything now\n            // first the file record, then the content\n            this.push({\n                data : record.fileRecord,\n                meta : {percent:0}\n            });\n            while(this.contentBuffer.length) {\n                this.push(this.contentBuffer.shift());\n            }\n        }\n        this.currentFile = null;\n    };\n\n    /**\n     * @see GenericWorker.flush\n     */\n    ZipFileWorker.prototype.flush = function flush () {\n\n        var localDirLength = this.bytesWritten;\n        for(var i = 0; i < this.dirRecords.length; i++) {\n            this.push({\n                data : this.dirRecords[i],\n                meta : {percent:100}\n            });\n        }\n        var centralDirLength = this.bytesWritten - localDirLength;\n\n        var dirEnd = generateCentralDirectoryEnd(this.dirRecords.length, centralDirLength, localDirLength, this.zipComment, this.encodeFileName);\n\n        this.push({\n            data : dirEnd,\n            meta : {percent:100}\n        });\n    };\n\n    /**\n     * Prepare the next source to be read.\n     */\n    ZipFileWorker.prototype.prepareNextSource = function prepareNextSource () {\n        this.previous = this._sources.shift();\n        this.openedSource(this.previous.streamInfo);\n        if (this.isPaused) {\n            this.previous.pause();\n        } else {\n            this.previous.resume();\n        }\n    };\n\n    /**\n     * @see GenericWorker.registerPrevious\n     */\n    ZipFileWorker.prototype.registerPrevious = function registerPrevious (previous) {\n        this._sources.push(previous);\n        var self = this;\n\n        previous.on('data', function (chunk) {\n            self.processChunk(chunk);\n        });\n        previous.on('end', function () {\n            self.closedSource(self.previous.streamInfo);\n            if(self._sources.length) {\n                self.prepareNextSource();\n            } else {\n                self.end();\n            }\n        });\n        previous.on('error', function (e) {\n            self.error(e);\n        });\n        return this;\n    };\n\n    /**\n     * @see GenericWorker.resume\n     */\n    ZipFileWorker.prototype.resume = function resume () {\n        if(!GenericWorker.prototype.resume.call(this)) {\n            return false;\n        }\n\n        if (!this.previous && this._sources.length) {\n            this.prepareNextSource();\n            return true;\n        }\n        if (!this.previous && !this._sources.length && !this.generatedError) {\n            this.end();\n            return true;\n        }\n    };\n\n    /**\n     * @see GenericWorker.error\n     */\n    ZipFileWorker.prototype.error = function error (e) {\n        var sources = this._sources;\n        if(!GenericWorker.prototype.error.call(this, e)) {\n            return false;\n        }\n        for(var i = 0; i < sources.length; i++) {\n            try {\n                sources[i].error(e);\n            } catch(e$1) {\n                // the `error` exploded, nothing to do\n            }\n        }\n        return true;\n    };\n\n    /**\n     * @see GenericWorker.lock\n     */\n    ZipFileWorker.prototype.lock = function lock () {\n        GenericWorker.prototype.lock.call(this);\n        var sources = this._sources;\n        for(var i = 0; i < sources.length; i++) {\n            sources[i].lock();\n        }\n    };\n\n    return ZipFileWorker;\n}(GenericWorker));\n\n/**\n * Find the compression to use.\n * @param {String} fileCompression the compression defined at the file level, if any.\n * @param {String} zipCompression the compression defined at the load() level.\n * @return {Object} the compression object to use.\n */\nvar getCompression = function (fileCompression, zipCompression) {\n\n    var compressionName = fileCompression || zipCompression;\n    var compression = compressions[compressionName];\n    if (!compression) {\n        throw new Error(compressionName + \" is not a valid compression method !\");\n    }\n    return compression;\n};\n\n/**\n * Create a worker to generate a zip file.\n * @param {JSZip} zip the JSZip instance at the right root level.\n * @param {Object} options to generate the zip file.\n * @param {String} comment the comment to use.\n */\nvar generateWorker = function (zip, options, comment) {\n\n    var zipFileWorker = new ZipFileWorker(options.streamFiles, comment, options.platform, options.encodeFileName);\n    var entriesCount = 0;\n    try {\n\n        zip.forEach(function (relativePath, file) {\n            entriesCount++;\n            var compression = getCompression(file.options.compression, options.compression);\n            var compressionOptions = file.options.compressionOptions || options.compressionOptions || {};\n            var dir = file.dir, date = file.date;\n\n            file._compressWorker(compression, compressionOptions)\n            .withStreamInfo(\"file\", {\n                name : relativePath,\n                dir : dir,\n                date : date,\n                comment : file.comment || \"\",\n                unixPermissions : file.unixPermissions,\n                dosPermissions : file.dosPermissions\n            })\n            .pipe(zipFileWorker);\n        });\n        zipFileWorker.entriesCount = entriesCount;\n    } catch (e) {\n        zipFileWorker.error(e);\n    }\n\n    return zipFileWorker;\n};\n\nvar DataReader = function DataReader(data) {\n    this.data = data; // type : see implementation\n    this.length = data.length;\n    this.index = 0;\n    this.zero = 0;\n};\n\n/**\n * Check that the offset will not go too far.\n * @param {string} offset the additional offset to check.\n * @throws {Error} an Error if the offset is out of bounds.\n */\nDataReader.prototype.checkOffset = function checkOffset (offset) {\n    this.checkIndex(this.index + offset);\n};\n\n/**\n * Check that the specified index will not be too far.\n * @param {string} newIndex the index to check.\n * @throws {Error} an Error if the index is out of bounds.\n */\nDataReader.prototype.checkIndex = function checkIndex (newIndex) {\n    if (this.length < this.zero + newIndex || newIndex < 0) {\n        throw new Error(\"End of data reached (data length = \" + this.length + \", asked index = \" + (newIndex) + \"). Corrupted zip ?\");\n    }\n};\n\n/**\n * Change the index.\n * @param {number} newIndex The new index.\n * @throws {Error} if the new index is out of the data.\n */\nDataReader.prototype.setIndex = function setIndex (newIndex) {\n    this.checkIndex(newIndex);\n    this.index = newIndex;\n};\n\n/**\n * Skip the next n bytes.\n * @param {number} n the number of bytes to skip.\n * @throws {Error} if the new index is out of the data.\n */\nDataReader.prototype.skip = function skip (n) {\n    this.setIndex(this.index + n);\n};\n\n/**\n * Get the byte at the specified index.\n * @param {number} i the index to use.\n * @return {number} a byte.\n */\nDataReader.prototype.byteAt = function byteAt (i) {\n    // see implementations\n};\n\n/**\n * Get the next number with a given byte size.\n * @param {number} size the number of bytes to read.\n * @return {number} the corresponding number.\n */\nDataReader.prototype.readInt = function readInt (size) {\n    var result = 0,\n        i;\n    this.checkOffset(size);\n    for (i = this.index + size - 1; i >= this.index; i--) {\n        result = (result << 8) + this.byteAt(i);\n    }\n    this.index += size;\n    return result;\n};\n\n/**\n * Get the next string with a given byte size.\n * @param {number} size the number of bytes to read.\n * @return {string} the corresponding string.\n */\nDataReader.prototype.readString = function readString (size) {\n    return transformTo(\"string\", this.readData(size));\n};\n\n/**\n * Get raw data without conversion, <size> bytes.\n * @param {number} size the number of bytes to read.\n * @return {Object} the raw data, implementation specific.\n */\nDataReader.prototype.readData = function readData (size) {\n    // see implementations\n};\n\n/**\n * Find the last occurrence of a zip signature (4 bytes).\n * @param {string} sig the signature to find.\n * @return {number} the index of the last occurrence, -1 if not found.\n */\nDataReader.prototype.lastIndexOfSignature = function lastIndexOfSignature (sig) {\n    // see implementations\n};\n\n/**\n * Read the signature (4 bytes) at the current position and compare it with sig.\n * @param {string} sig the expected signature\n * @return {boolean} true if the signature matches, false otherwise.\n */\nDataReader.prototype.readAndCheckSignature = function readAndCheckSignature (sig) {\n    // see implementations\n};\n\n/**\n * Get the next date.\n * @return {Date} the date.\n */\nDataReader.prototype.readDate = function readDate () {\n    var dostime = this.readInt(4);\n    return new Date(Date.UTC(\n    ((dostime >> 25) & 0x7f) + 1980, // year\n    ((dostime >> 21) & 0x0f) - 1, // month\n    (dostime >> 16) & 0x1f, // day\n    (dostime >> 11) & 0x1f, // hour\n    (dostime >> 5) & 0x3f, // minute\n    (dostime & 0x1f) << 1)); // second\n};\n\nvar ArrayReader = /*@__PURE__*/(function (DataReader) {\n    function ArrayReader(data) {\n        DataReader.call(this, data);\n        for(var i = 0; i < this.data.length; i++) {\n            data[i] = data[i] & 0xFF;\n        }\n    }\n\n    ArrayReader.__proto__ = DataReader;\n    ArrayReader.prototype = Object.create( DataReader.prototype );\n    ArrayReader.prototype.constructor = ArrayReader;\n\n    /**\n     * @see DataReader.byteAt\n     */\n    ArrayReader.prototype.byteAt = function byteAt (i) {\n        return this.data[this.zero + i];\n    };\n\n    /**\n     * @see DataReader.lastIndexOfSignature\n     */\n    ArrayReader.prototype.lastIndexOfSignature = function lastIndexOfSignature (sig) {\n        var sig0 = sig.charCodeAt(0),\n            sig1 = sig.charCodeAt(1),\n            sig2 = sig.charCodeAt(2),\n            sig3 = sig.charCodeAt(3);\n        for (var i = this.length - 4; i >= 0; --i) {\n            if (this.data[i] === sig0 && this.data[i + 1] === sig1 && this.data[i + 2] === sig2 && this.data[i + 3] === sig3) {\n                return i - this.zero;\n            }\n        }\n\n        return -1;\n    };\n\n    /**\n     * @see DataReader.readAndCheckSignature\n     */\n    ArrayReader.prototype.readAndCheckSignature = function readAndCheckSignature (sig) {\n        var sig0 = sig.charCodeAt(0),\n            sig1 = sig.charCodeAt(1),\n            sig2 = sig.charCodeAt(2),\n            sig3 = sig.charCodeAt(3),\n            data = this.readData(4);\n        return sig0 === data[0] && sig1 === data[1] && sig2 === data[2] && sig3 === data[3];\n    };\n\n    /**\n     * @see DataReader.readData\n     */\n    ArrayReader.prototype.readData = function readData (size) {\n        this.checkOffset(size);\n        if(size === 0) {\n            return [];\n        }\n        var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n        this.index += size;\n        return result;\n    };\n\n    return ArrayReader;\n}(DataReader));\n\nvar StringReader = /*@__PURE__*/(function (DataReader) {\n    function StringReader(data) {\n        DataReader.call(this, data);\n    }\n\n    StringReader.__proto__ = DataReader;\n    StringReader.prototype = Object.create( DataReader.prototype );\n    StringReader.prototype.constructor = StringReader;\n\n    /**\n     * @see DataReader.byteAt\n     */\n    StringReader.prototype.byteAt = function byteAt (i) {\n        return this.data.charCodeAt(this.zero + i);\n    };\n\n    /**\n     * @see DataReader.lastIndexOfSignature\n     */\n    StringReader.prototype.lastIndexOfSignature = function lastIndexOfSignature (sig) {\n        return this.data.lastIndexOf(sig) - this.zero;\n    };\n\n    /**\n     * @see DataReader.readAndCheckSignature\n     */\n    StringReader.prototype.readAndCheckSignature = function readAndCheckSignature (sig) {\n        var data = this.readData(4);\n        return sig === data;\n    };\n\n    /**\n     * @see DataReader.readData\n     */\n    StringReader.prototype.readData = function readData (size) {\n        this.checkOffset(size);\n        // this will work because the constructor applied the \"& 0xff\" mask.\n        var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n        this.index += size;\n        return result;\n    };\n\n    return StringReader;\n}(DataReader));\n\nvar Uint8ArrayReader = /*@__PURE__*/(function (ArrayReader) {\n    function Uint8ArrayReader(data) {\n        ArrayReader.call(this, data);\n    }\n\n    Uint8ArrayReader.__proto__ = ArrayReader;\n    Uint8ArrayReader.prototype = Object.create( ArrayReader.prototype );\n    Uint8ArrayReader.prototype.constructor = Uint8ArrayReader;\n\n    /**\n     * @see DataReader.readData\n     */\n    Uint8ArrayReader.prototype.readData = function readData (size) {\n        this.checkOffset(size);\n        if(size === 0) {\n            // in IE10, when using subarray(idx, idx), we get the array [0x00] instead of [].\n            return new Uint8Array(0);\n        }\n        var result = this.data.subarray(this.zero + this.index, this.zero + this.index + size);\n        this.index += size;\n        return result;\n    };\n\n    return Uint8ArrayReader;\n}(ArrayReader));\n\n/**\n * Create a reader adapted to the data.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data to read.\n * @return {DataReader} the data reader.\n */\nfunction readerFor(data) {\n    var type = getTypeOf(data);\n    checkSupport(type);\n    if (type === \"string\" && !support.uint8array) {\n        return new StringReader(data);\n    }\n    if (support.uint8array) {\n        return new Uint8ArrayReader(transformTo(\"uint8array\", data));\n    }\n    return new ArrayReader(transformTo(\"array\", data));\n}\n\nvar MADE_BY_DOS = 0x00;\nvar MADE_BY_UNIX = 0x03;\n\n/**\n * Find a compression registered in JSZip.\n * @param {string} compressionMethod the method magic to find.\n * @return {Object|null} the JSZip compression object, null if none found.\n */\nvar findCompression = function(compressionMethod) {\n    for (var method in compressions) {\n        if (!compressions.hasOwnProperty(method)) {\n            continue;\n        }\n        if (compressions[method].magic === compressionMethod) {\n            return compressions[method];\n        }\n    }\n    return null;\n};\n\n// class ZipEntry {{{\n/**\n * An entry in the zip file.\n * @constructor\n * @param {Object} options Options of the current file.\n * @param {Object} loadOptions Options for loading the stream.\n */\nvar ZipEntry = function ZipEntry(options, loadOptions) {\n    this.options = options;\n    this.loadOptions = loadOptions;\n};\n\n/**\n * say if the file is encrypted.\n * @return {boolean} true if the file is encrypted, false otherwise.\n */\nZipEntry.prototype.isEncrypted = function isEncrypted () {\n    // bit 1 is set\n    return (this.bitFlag & 0x0001) === 0x0001;\n};\n\n/**\n * say if the file has utf-8 filename/comment.\n * @return {boolean} true if the filename/comment is in utf-8, false otherwise.\n */\nZipEntry.prototype.useUTF8 = function useUTF8 () {\n    // bit 11 is set\n    return (this.bitFlag & 0x0800) === 0x0800;\n};\n\n/**\n * Read the local part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\nZipEntry.prototype.readLocalPart = function readLocalPart (reader) {\n    var compression, localExtraFieldsLength;\n\n    // we already know everything from the central dir !\n    // If the central dir data are false, we are doomed.\n    // On the bright side, the local part is scary  : zip64, data descriptors, both, etc.\n    // The less data we get here, the more reliable this should be.\n    // Let's skip the whole header and dash to the data !\n    reader.skip(22);\n    // in some zip created on windows, the filename stored in the central dir contains \\ instead of /.\n    // Strangely, the filename here is OK.\n    // I would love to treat these zip files as corrupted (see http://www.info-zip.org/FAQ.html#backslashes\n    // or APPNOTE#4.4.17.1, \"All slashes MUST be forward slashes '/'\") but there are a lot of bad zip generators...\n    // Search \"unzip mismatching \"local\" filename continuing with \"central\" filename version\" on\n    // the internet.\n    //\n    // I think I see the logic here : the central directory is used to display\n    // content and the local directory is used to extract the files. Mixing / and \\\n    // may be used to display \\ to windows users and use / when extracting the files.\n    // Unfortunately, this lead also to some issues : http://seclists.org/fulldisclosure/2009/Sep/394\n    this.fileNameLength = reader.readInt(2);\n    localExtraFieldsLength = reader.readInt(2); // can't be sure this will be the same as the central dir\n    // the fileName is stored as binary data, the handleUTF8 method will take care of the encoding.\n    this.fileName = reader.readData(this.fileNameLength);\n    reader.skip(localExtraFieldsLength);\n\n    if (this.compressedSize === -1 || this.uncompressedSize === -1) {\n        throw new Error(\"Bug or corrupted zip : didn't get enough information from the central directory \" + \"(compressedSize === -1 || uncompressedSize === -1)\");\n    }\n\n    compression = findCompression(this.compressionMethod);\n    if (compression === null) { // no compression found\n        throw new Error(\"Corrupted zip : compression \" + pretty(this.compressionMethod) + \" unknown (inner file : \" + transformTo(\"string\", this.fileName) + \")\");\n    }\n    this.decompressed = new CompressedObject(this.compressedSize, this.uncompressedSize, this.crc32, compression, reader.readData(this.compressedSize));\n};\n\n/**\n * Read the central part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\nZipEntry.prototype.readCentralPart = function readCentralPart (reader) {\n    this.versionMadeBy = reader.readInt(2);\n    reader.skip(2);\n    // this.versionNeeded = reader.readInt(2);\n    this.bitFlag = reader.readInt(2);\n    this.compressionMethod = reader.readString(2);\n    this.date = reader.readDate();\n    this.crc32 = reader.readInt(4);\n    this.compressedSize = reader.readInt(4);\n    this.uncompressedSize = reader.readInt(4);\n    var fileNameLength = reader.readInt(2);\n    this.extraFieldsLength = reader.readInt(2);\n    this.fileCommentLength = reader.readInt(2);\n    this.diskNumberStart = reader.readInt(2);\n    this.internalFileAttributes = reader.readInt(2);\n    this.externalFileAttributes = reader.readInt(4);\n    this.localHeaderOffset = reader.readInt(4);\n\n    if (this.isEncrypted()) {\n        throw new Error(\"Encrypted zip are not supported\");\n    }\n\n    // will be read in the local part, see the comments there\n    reader.skip(fileNameLength);\n    this.readExtraFields(reader);\n    this.parseZIP64ExtraField(reader);\n    this.fileComment = reader.readData(this.fileCommentLength);\n};\n\n/**\n * Parse the external file attributes and get the unix/dos permissions.\n */\nZipEntry.prototype.processAttributes = function processAttributes () {\n    this.unixPermissions = null;\n    this.dosPermissions = null;\n    var madeBy = this.versionMadeBy >> 8;\n\n    // Check if we have the DOS directory flag set.\n    // We look for it in the DOS and UNIX permissions\n    // but some unknown platform could set it as a compatibility flag.\n    this.dir = this.externalFileAttributes & 0x0010 ? true : false;\n\n    if(madeBy === MADE_BY_DOS) {\n        // first 6 bits (0 to 5)\n        this.dosPermissions = this.externalFileAttributes & 0x3F;\n    }\n\n    if(madeBy === MADE_BY_UNIX) {\n        this.unixPermissions = (this.externalFileAttributes >> 16) & 0xFFFF;\n        // the octal permissions are in (this.unixPermissions & 0x01FF).toString(8);\n    }\n\n    // fail safe : if the name ends with a / it probably means a folder\n    if (!this.dir && this.fileNameStr.slice(-1) === '/') {\n        this.dir = true;\n    }\n};\n\n/**\n * Parse the ZIP64 extra field and merge the info in the current ZipEntry.\n * @param {DataReader} reader the reader to use.\n */\nZipEntry.prototype.parseZIP64ExtraField = function parseZIP64ExtraField (reader) {\n\n    if (!this.extraFields[0x0001]) {\n        return;\n    }\n\n    // should be something, preparing the extra reader\n    var extraReader = readerFor(this.extraFields[0x0001].value);\n\n    // I really hope that these 64bits integer can fit in 32 bits integer, because js\n    // won't let us have more.\n    if (this.uncompressedSize === MAX_VALUE_32BITS) {\n        this.uncompressedSize = extraReader.readInt(8);\n    }\n    if (this.compressedSize === MAX_VALUE_32BITS) {\n        this.compressedSize = extraReader.readInt(8);\n    }\n    if (this.localHeaderOffset === MAX_VALUE_32BITS) {\n        this.localHeaderOffset = extraReader.readInt(8);\n    }\n    if (this.diskNumberStart === MAX_VALUE_32BITS) {\n        this.diskNumberStart = extraReader.readInt(4);\n    }\n};\n\n/**\n * Read the central part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\nZipEntry.prototype.readExtraFields = function readExtraFields (reader) {\n    var end = reader.index + this.extraFieldsLength,\n        extraFieldId,\n        extraFieldLength,\n        extraFieldValue;\n\n    if (!this.extraFields) {\n        this.extraFields = {};\n    }\n\n    while (reader.index < end) {\n        extraFieldId = reader.readInt(2);\n        extraFieldLength = reader.readInt(2);\n        extraFieldValue = reader.readData(extraFieldLength);\n\n        this.extraFields[extraFieldId] = {\n            id: extraFieldId,\n            length: extraFieldLength,\n            value: extraFieldValue\n        };\n    }\n};\n\n/**\n * Apply an UTF8 transformation if needed.\n */\nZipEntry.prototype.handleUTF8 = function handleUTF8 () {\n    var decodeParamType = support.uint8array ? \"uint8array\" : \"array\";\n    if (this.useUTF8()) {\n        this.fileNameStr = utf8decode(this.fileName);\n        this.fileCommentStr = utf8decode(this.fileComment);\n    } else {\n        var upath = this.findExtraFieldUnicodePath();\n        if (upath !== null) {\n            this.fileNameStr = upath;\n        } else {\n            // ASCII text or unsupported code page\n            var fileNameByteArray =  transformTo(decodeParamType, this.fileName);\n            this.fileNameStr = this.loadOptions.decodeFileName(fileNameByteArray);\n        }\n\n        var ucomment = this.findExtraFieldUnicodeComment();\n        if (ucomment !== null) {\n            this.fileCommentStr = ucomment;\n        } else {\n            // ASCII text or unsupported code page\n            var commentByteArray =  transformTo(decodeParamType, this.fileComment);\n            this.fileCommentStr = this.loadOptions.decodeFileName(commentByteArray);\n        }\n    }\n};\n\n/**\n * Find the unicode path declared in the extra field, if any.\n * @return {String} the unicode path, null otherwise.\n */\nZipEntry.prototype.findExtraFieldUnicodePath = function findExtraFieldUnicodePath () {\n    var upathField = this.extraFields[0x7075];\n    if (upathField) {\n        var extraReader = readerFor(upathField.value);\n\n        // wrong version\n        if (extraReader.readInt(1) !== 1) {\n            return null;\n        }\n\n        // the crc of the filename changed, this field is out of date.\n        if (crc32wrapper(this.fileName) !== extraReader.readInt(4)) {\n            return null;\n        }\n\n        return utf8decode(extraReader.readData(upathField.length - 5));\n    }\n    return null;\n};\n\n/**\n * Find the unicode comment declared in the extra field, if any.\n * @return {String} the unicode comment, null otherwise.\n */\nZipEntry.prototype.findExtraFieldUnicodeComment = function findExtraFieldUnicodeComment () {\n    var ucommentField = this.extraFields[0x6375];\n    if (ucommentField) {\n        var extraReader = readerFor(ucommentField.value);\n\n        // wrong version\n        if (extraReader.readInt(1) !== 1) {\n            return null;\n        }\n\n        // the crc of the comment changed, this field is out of date.\n        if (crc32wrapper(this.fileComment) !== extraReader.readInt(4)) {\n            return null;\n        }\n\n        return utf8decode(extraReader.readData(ucommentField.length - 5));\n    }\n    return null;\n};\n\n//  class ZipEntries {{{\n/**\n * All the entries in the zip file.\n * @constructor\n * @param {Object} loadOptions Options for loading the stream.\n */\nvar ZipEntries = function ZipEntries(loadOptions) {\n    this.files = [];\n    this.loadOptions = loadOptions;\n};\n\n/**\n * Check that the reader is on the specified signature.\n * @param {string} expectedSignature the expected signature.\n * @throws {Error} if it is an other signature.\n */\nZipEntries.prototype.checkSignature = function checkSignature (expectedSignature) {\n    if (!this.reader.readAndCheckSignature(expectedSignature)) {\n        this.reader.index -= 4;\n        var signature = this.reader.readString(4);\n        throw new Error(\"Corrupted zip or bug: unexpected signature \" + \"(\" + pretty(signature) + \", expected \" + pretty(expectedSignature) + \")\");\n    }\n};\n\n/**\n * Check if the given signature is at the given index.\n * @param {number} askedIndex the index to check.\n * @param {string} expectedSignature the signature to expect.\n * @return {boolean} true if the signature is here, false otherwise.\n */\nZipEntries.prototype.isSignature = function isSignature (askedIndex, expectedSignature) {\n    var currentIndex = this.reader.index;\n    this.reader.setIndex(askedIndex);\n    var signature = this.reader.readString(4);\n    var result = signature === expectedSignature;\n    this.reader.setIndex(currentIndex);\n    return result;\n};\n\n/**\n * Read the end of the central directory.\n */\nZipEntries.prototype.readBlockEndOfCentral = function readBlockEndOfCentral () {\n    this.diskNumber = this.reader.readInt(2);\n    this.diskWithCentralDirStart = this.reader.readInt(2);\n    this.centralDirRecordsOnThisDisk = this.reader.readInt(2);\n    this.centralDirRecords = this.reader.readInt(2);\n    this.centralDirSize = this.reader.readInt(4);\n    this.centralDirOffset = this.reader.readInt(4);\n\n    this.zipCommentLength = this.reader.readInt(2);\n    // warning : the encoding depends of the system locale\n    // On a linux machine with LANG=en_US.utf8, this field is utf8 encoded.\n    // On a windows machine, this field is encoded with the localized windows code page.\n    var zipComment = this.reader.readData(this.zipCommentLength);\n    var decodeParamType = support.uint8array ? \"uint8array\" : \"array\";\n    // To get consistent behavior with the generation part, we will assume that\n    // this is utf8 encoded unless specified otherwise.\n    var decodeContent = transformTo(decodeParamType, zipComment);\n    this.zipComment = this.loadOptions.decodeFileName(decodeContent);\n};\n\n/**\n * Read the end of the Zip 64 central directory.\n * Not merged with the method readEndOfCentral :\n * The end of central can coexist with its Zip64 brother,\n * I don't want to read the wrong number of bytes !\n */\nZipEntries.prototype.readBlockZip64EndOfCentral = function readBlockZip64EndOfCentral () {\n    this.zip64EndOfCentralSize = this.reader.readInt(8);\n    this.reader.skip(4);\n    // this.versionMadeBy = this.reader.readString(2);\n    // this.versionNeeded = this.reader.readInt(2);\n    this.diskNumber = this.reader.readInt(4);\n    this.diskWithCentralDirStart = this.reader.readInt(4);\n    this.centralDirRecordsOnThisDisk = this.reader.readInt(8);\n    this.centralDirRecords = this.reader.readInt(8);\n    this.centralDirSize = this.reader.readInt(8);\n    this.centralDirOffset = this.reader.readInt(8);\n\n    this.zip64ExtensibleData = {};\n    var extraDataSize = this.zip64EndOfCentralSize - 44,\n        index = 0,\n        extraFieldId,\n        extraFieldLength,\n        extraFieldValue;\n    while (index < extraDataSize) {\n        extraFieldId = this.reader.readInt(2);\n        extraFieldLength = this.reader.readInt(4);\n        extraFieldValue = this.reader.readData(extraFieldLength);\n        this.zip64ExtensibleData[extraFieldId] = {\n            id: extraFieldId,\n            length: extraFieldLength,\n            value: extraFieldValue\n        };\n    }\n};\n\n/**\n * Read the end of the Zip 64 central directory locator.\n */\nZipEntries.prototype.readBlockZip64EndOfCentralLocator = function readBlockZip64EndOfCentralLocator () {\n    this.diskWithZip64CentralDirStart = this.reader.readInt(4);\n    this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8);\n    this.disksCount = this.reader.readInt(4);\n    if (this.disksCount > 1) {\n        throw new Error(\"Multi-volumes zip are not supported\");\n    }\n};\n\n/**\n * Read the local files, based on the offset read in the central part.\n */\nZipEntries.prototype.readLocalFiles = function readLocalFiles () {\n    var i, file;\n    for (i = 0; i < this.files.length; i++) {\n        file = this.files[i];\n        this.reader.setIndex(file.localHeaderOffset);\n        this.checkSignature(LOCAL_FILE_HEADER);\n        file.readLocalPart(this.reader);\n        file.handleUTF8();\n        file.processAttributes();\n    }\n};\n\n/**\n * Read the central directory.\n */\nZipEntries.prototype.readCentralDir = function readCentralDir () {\n    var file;\n\n    this.reader.setIndex(this.centralDirOffset);\n    while (this.reader.readAndCheckSignature(CENTRAL_FILE_HEADER)) {\n        file = new ZipEntry({\n            zip64: this.zip64\n        }, this.loadOptions);\n        file.readCentralPart(this.reader);\n        this.files.push(file);\n    }\n\n    if (this.centralDirRecords !== this.files.length) {\n        if (this.centralDirRecords !== 0 && this.files.length === 0) {\n            // We expected some records but couldn't find ANY.\n            // This is really suspicious, as if something went wrong.\n            throw new Error(\"Corrupted zip or bug: expected \" + this.centralDirRecords + \" records in central dir, got \" + this.files.length);\n        }\n    }\n};\n\n/**\n * Read the end of central directory.\n */\nZipEntries.prototype.readEndOfCentral = function readEndOfCentral () {\n    var offset = this.reader.lastIndexOfSignature(CENTRAL_DIRECTORY_END);\n    if (offset < 0) {\n        // Check if the content is a truncated zip or complete garbage.\n        // A \"LOCAL_FILE_HEADER\" is not required at the beginning (auto\n        // extractible zip for example) but it can give a good hint.\n        // If an ajax request was used without responseType, we will also\n        // get unreadable data.\n        var isGarbage = !this.isSignature(0, LOCAL_FILE_HEADER);\n\n        if (isGarbage) {\n            throw new Error(\"Can't find end of central directory : is this a zip file ? \" +\n                            \"If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html\");\n        } else {\n            throw new Error(\"Corrupted zip: can't find end of central directory\");\n        }\n\n    }\n    this.reader.setIndex(offset);\n    var endOfCentralDirOffset = offset;\n    this.checkSignature(CENTRAL_DIRECTORY_END);\n    this.readBlockEndOfCentral();\n\n\n    /* extract from the zip spec :\n        4)  If one of the fields in the end of central directory\n            record is too small to hold required data, the field\n            should be set to -1 (0xFFFF or 0xFFFFFFFF) and the\n            ZIP64 format record should be created.\n        5)  The end of central directory record and the\n            Zip64 end of central directory locator record must\n            reside on the same disk when splitting or spanning\n            an archive.\n     */\n    if (this.diskNumber === MAX_VALUE_16BITS || this.diskWithCentralDirStart === MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === MAX_VALUE_16BITS || this.centralDirRecords === MAX_VALUE_16BITS || this.centralDirSize === MAX_VALUE_32BITS || this.centralDirOffset === MAX_VALUE_32BITS) {\n        this.zip64 = true;\n\n        /*\n        Warning : the zip64 extension is supported, but ONLY if the 64bits integer read from\n        the zip file can fit into a 32bits integer. This cannot be solved : JavaScript represents\n        all numbers as 64-bit double precision IEEE 754 floating point numbers.\n        So, we have 53bits for integers and bitwise operations treat everything as 32bits.\n        see https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Bitwise_Operators\n        and http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf section 8.5\n        */\n\n        // should look for a zip64 EOCD locator\n        offset = this.reader.lastIndexOfSignature(ZIP64_CENTRAL_DIRECTORY_LOCATOR);\n        if (offset < 0) {\n            throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory locator\");\n        }\n        this.reader.setIndex(offset);\n        this.checkSignature(ZIP64_CENTRAL_DIRECTORY_LOCATOR);\n        this.readBlockZip64EndOfCentralLocator();\n\n        // now the zip64 EOCD record\n        if (!this.isSignature(this.relativeOffsetEndOfZip64CentralDir, ZIP64_CENTRAL_DIRECTORY_END)) {\n            // console.warn(\"ZIP64 end of central directory not where expected.\");\n            this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature(ZIP64_CENTRAL_DIRECTORY_END);\n            if (this.relativeOffsetEndOfZip64CentralDir < 0) {\n                throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory\");\n            }\n        }\n        this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir);\n        this.checkSignature(ZIP64_CENTRAL_DIRECTORY_END);\n        this.readBlockZip64EndOfCentral();\n    }\n\n    var expectedEndOfCentralDirOffset = this.centralDirOffset + this.centralDirSize;\n    if (this.zip64) {\n        expectedEndOfCentralDirOffset += 20; // end of central dir 64 locator\n        expectedEndOfCentralDirOffset += 12 /* should not include the leading 12 bytes */ + this.zip64EndOfCentralSize;\n    }\n\n    var extraBytes = endOfCentralDirOffset - expectedEndOfCentralDirOffset;\n\n    if (extraBytes > 0) {\n        // console.warn(extraBytes, \"extra bytes at beginning or within zipfile\");\n        if (this.isSignature(endOfCentralDirOffset, CENTRAL_FILE_HEADER)) ; else {\n            // the offset is wrong, update the \"zero\" of the reader\n            // this happens if data has been prepended (crx files for example)\n            this.reader.zero = extraBytes;\n        }\n    } else if (extraBytes < 0) {\n        throw new Error(\"Corrupted zip: missing \" + Math.abs(extraBytes) + \" bytes.\");\n    }\n};\n\nZipEntries.prototype.prepareReader = function prepareReader (data) {\n    this.reader = readerFor(data);\n};\n\n/**\n * Read a zip file and create ZipEntries.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the binary string representing a zip file.\n */\nZipEntries.prototype.load = function load (data) {\n    this.prepareReader(data);\n    this.readEndOfCentral();\n    this.readCentralDir();\n    this.readLocalFiles();\n};\n\n/**\n * Check the CRC32 of an entry.\n * @param {ZipEntry} zipEntry the zip entry to check.\n * @return {Promise} the result.\n */\nfunction checkEntryCRC32(zipEntry) {\n    return new external.Promise(function (resolve, reject) {\n        var worker = zipEntry.decompressed.getContentWorker().pipe(new Crc32Probe());\n        worker.on(\"error\", function (e) {\n            reject(e);\n        })\n        .on(\"end\", function () {\n            if (worker.streamInfo.crc32 !== zipEntry.decompressed.crc32) {\n                reject(new Error(\"Corrupted zip : CRC32 mismatch\"));\n            } else {\n                resolve();\n            }\n        })\n        .resume();\n    });\n}\n\nfunction load(data, options) {\n    var zip = this;\n    options = extend(options || {}, {\n        base64: false,\n        checkCRC32: false,\n        optimizedBinaryString: false,\n        createFolders: false,\n        decodeFileName: utf8decode\n    });\n\n    return prepareContent(\"the loaded zip file\", data, true, options.optimizedBinaryString, options.base64)\n    .then(function(data) {\n        var zipEntries = new ZipEntries(options);\n        zipEntries.load(data);\n        return zipEntries;\n    }).then(function checkCRC32(zipEntries) {\n        var promises = [external.Promise.resolve(zipEntries)];\n        var files = zipEntries.files;\n        if (options.checkCRC32) {\n            for (var i = 0; i < files.length; i++) {\n                promises.push(checkEntryCRC32(files[i]));\n            }\n        }\n        return external.Promise.all(promises);\n    }).then(function addFiles(results) {\n        var zipEntries = results.shift();\n        var files = zipEntries.files;\n        for (var i = 0; i < files.length; i++) {\n            var input = files[i];\n\n            var unsafeName = input.fileNameStr;\n            var safeName = resolve(input.fileNameStr);\n\n            zip.file(safeName, input.decompressed, {\n                binary: true,\n                optimizedBinaryString: true,\n                date: input.date,\n                dir: input.dir,\n                comment : input.fileCommentStr.length ? input.fileCommentStr : null,\n                unixPermissions : input.unixPermissions,\n                dosPermissions : input.dosPermissions,\n                createFolders: options.createFolders\n            });\n            if (!input.dir) {\n                zip.file(safeName).unsafeOriginalName = unsafeName;\n            }\n        }\n        if (zipEntries.zipComment.length) {\n            zip.comment = zipEntries.zipComment;\n        }\n\n        return zip;\n    });\n}\n\n/**\n * Add a file in the current folder.\n * @private\n * @param {string} name the name of the file\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data of the file\n * @param {Object} originalOptions the options of the file\n * @return {Object} the new file.\n */\nvar fileAdd = function(name, data, originalOptions) {\n    // be sure sub folders exist\n    var dataType = getTypeOf(data),\n        parent;\n\n\n    /*\n     * Correct options.\n     */\n\n    var o = extend(originalOptions || {}, defaults);\n    o.date = o.date || new Date();\n    if (o.compression !== null) {\n        o.compression = o.compression.toUpperCase();\n    }\n\n    if (typeof o.unixPermissions === \"string\") {\n        o.unixPermissions = parseInt(o.unixPermissions, 8);\n    }\n\n    // UNX_IFDIR  0040000 see zipinfo.c\n    if (o.unixPermissions && (o.unixPermissions & 0x4000)) {\n        o.dir = true;\n    }\n    // Bit 4    Directory\n    if (o.dosPermissions && (o.dosPermissions & 0x0010)) {\n        o.dir = true;\n    }\n\n    if (o.dir) {\n        name = forceTrailingSlash(name);\n    }\n    if (o.createFolders && (parent = parentFolder(name))) {\n        folderAdd.call(this, parent, true);\n    }\n\n    var isUnicodeString = dataType === \"string\" && o.binary === false && o.base64 === false;\n    if (!originalOptions || typeof originalOptions.binary === \"undefined\") {\n        o.binary = !isUnicodeString;\n    }\n\n\n    var isCompressedEmpty = (data instanceof CompressedObject) && data.uncompressedSize === 0;\n\n    if (isCompressedEmpty || o.dir || !data || data.length === 0) {\n        o.base64 = false;\n        o.binary = true;\n        data = \"\";\n        o.compression = \"STORE\";\n        dataType = \"string\";\n    }\n\n    /*\n     * Convert content to fit.\n     */\n\n    var zipObjectContent = null;\n    if (data instanceof CompressedObject || data instanceof GenericWorker) {\n        zipObjectContent = data;\n    } else {\n        zipObjectContent = prepareContent(name, data, o.binary, o.optimizedBinaryString, o.base64);\n    }\n\n    var object = new ZipObject(name, zipObjectContent, o);\n    this.files[name] = object;\n    /*\n    TODO: we can't throw an exception because we have async promises\n    (we can have a promise of a Date() for example) but returning a\n    promise is useless because file(name, data) returns the JSZip\n    object for chaining. Should we break that to allow the user\n    to catch the error ?\n\n    return external.Promise.resolve(zipObjectContent)\n    .then(function () {\n        return object;\n    });\n    */\n};\n\n/**\n * Find the parent folder of the path.\n * @private\n * @param {string} path the path to use\n * @return {string} the parent folder, or \"\"\n */\nvar parentFolder = function (path) {\n    if (path.slice(-1) === '/') {\n        path = path.substring(0, path.length - 1);\n    }\n    var lastSlash = path.lastIndexOf('/');\n    return (lastSlash > 0) ? path.substring(0, lastSlash) : \"\";\n};\n\n/**\n * Returns the path with a slash at the end.\n * @private\n * @param {String} path the path to check.\n * @return {String} the path with a trailing slash.\n */\nvar forceTrailingSlash = function(path) {\n    // Check the name ends with a /\n    if (path.slice(-1) !== \"/\") {\n        path += \"/\"; // IE doesn't like substr(-1)\n    }\n    return path;\n};\n\n/**\n * Add a (sub) folder in the current folder.\n * @private\n * @param {string} name the folder's name\n * @param {boolean=} [createFolders] If true, automatically create sub\n *  folders. Defaults to false.\n * @return {Object} the new folder.\n */\nvar folderAdd = function(name, createFolders$1) {\n    createFolders$1 = (typeof createFolders$1 !== 'undefined') ? createFolders$1 : createFolders;\n\n    name = forceTrailingSlash(name);\n\n    // Does this folder already exist?\n    if (!this.files[name]) {\n        fileAdd.call(this, name, null, {\n            dir: true,\n            createFolders: createFolders$1\n        });\n    }\n    return this.files[name];\n};\n\n/**\n* Cross-window, cross-Node-context regular expression detection\n* @param  {Object}  object Anything\n* @return {Boolean}        true if the object is a regular expression,\n* false otherwise\n*/\nfunction isRegExp(object) {\n    return Object.prototype.toString.call(object) === \"[object RegExp]\";\n}\n\n/**\n * Representation a of zip file in js\n * @constructor\n */\nvar JSZip = function JSZip() {\n    if (arguments.length) {\n        throw new Error(\"The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.\");\n    }\n\n    // object containing the files :\n    // {\n    //   \"folder/\" : {...},\n    //   \"folder/data.txt\" : {...}\n    // }\n    // NOTE: we use a null prototype because we do not\n    // want filenames like \"toString\" coming from a zip file\n    // to overwrite methods and attributes in a normal Object.\n    this.files = Object.create(null);\n\n    this.comment = null;\n\n    // Where we are in the hierarchy\n    this.root = \"\";\n    this.clone = function() {\n        var newObj = new JSZip();\n        for (var i in this) {\n            if (typeof this[i] !== \"function\") {\n                newObj[i] = this[i];\n            }\n        }\n        return newObj;\n    };\n};\n\nvar staticAccessors = { support: { configurable: true },defaults: { configurable: true },version: { configurable: true },external: { configurable: true } };\n\n/**\n * @see loadAsync\n */\nJSZip.prototype.load = function load () {\n    throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\");\n};\n\n/**\n * Call a callback function for each entry at this folder level.\n * @param {Function} cb the callback function:\n * function (relativePath, file) {...}\n * It takes 2 arguments : the relative path and the file.\n */\nJSZip.prototype.forEach = function forEach (cb) {\n    var filename, relativePath, file;\n    for (filename in this.files) {\n        file = this.files[filename];\n        relativePath = filename.slice(this.root.length, filename.length);\n        if (relativePath && filename.slice(0, this.root.length) === this.root) { // the file is in the current root\n            cb(relativePath, file); // TODO reverse the parameters ? need to be clean AND consistent with the filter search fn...\n        }\n    }\n};\n\n/**\n * Filter nested files/folders with the specified function.\n * @param {Function} search the predicate to use :\n * function (relativePath, file) {...}\n * It takes 2 arguments : the relative path and the file.\n * @return {Array} An array of matching elements.\n */\nJSZip.prototype.filter = function filter (search) {\n    var result = [];\n    this.forEach(function (relativePath, entry) {\n        if (search(relativePath, entry)) { // the file matches the function\n            result.push(entry);\n        }\n\n    });\n    return result;\n};\n\n/**\n * Add a file to the zip file, or search a file.\n * @param   {string|RegExp} name The name of the file to add (if data is defined),\n * the name of the file to find (if no data) or a regex to match files.\n * @param   {String|ArrayBuffer|Uint8Array|Buffer} data  The file data, either raw or base64 encoded\n * @param   {Object} o File options\n * @return  {JSZip|Object|Array} this JSZip object (when adding a file),\n * a file (when searching by string) or an array of files (when searching by regex).\n */\nJSZip.prototype.file = function file (name, data, o) {\n    if (arguments.length === 1) {\n        if (isRegExp(name)) {\n            var regexp = name;\n            return this.filter(function(relativePath, file) {\n                return !file.dir && regexp.test(relativePath);\n            });\n        }\n        else { // text\n            var obj = this.files[this.root + name];\n            if (obj && !obj.dir) {\n                return obj;\n            } else {\n                return null;\n            }\n        }\n    }\n    else { // more than one argument : we have data !\n        name = this.root + name;\n        fileAdd.call(this, name, data, o);\n    }\n    return this;\n};\n\n/**\n * Add a directory to the zip file, or search.\n * @param   {String|RegExp} arg The name of the directory to add, or a regex to search folders.\n * @return  {JSZip} an object with the new directory as the root, or an array containing matching folders.\n */\nJSZip.prototype.folder = function folder (arg) {\n    if (!arg) {\n        return this;\n    }\n\n    if (isRegExp(arg)) {\n        return this.filter(function(relativePath, file) {\n            return file.dir && arg.test(relativePath);\n        });\n    }\n\n    // else, name is a new folder\n    var name = this.root + arg;\n    var newFolder = folderAdd.call(this, name);\n\n    // Allow chaining by returning a new object with this folder as the root\n    var ret = this.clone();\n    ret.root = newFolder.name;\n    return ret;\n};\n\n/**\n * Delete a file, or a directory and all sub-files, from the zip\n * @param {string} name the name of the file to delete\n * @return {JSZip} this JSZip object\n */\nJSZip.prototype.remove = function remove (name) {\n    name = this.root + name;\n    var file = this.files[name];\n    if (!file) {\n        // Look for any folders\n        if (name.slice(-1) !== \"/\") {\n            name += \"/\";\n        }\n        file = this.files[name];\n    }\n\n    if (file && !file.dir) {\n        // file\n        delete this.files[name];\n    } else {\n        // maybe a folder, delete recursively\n        var kids = this.filter(function(relativePath, file) {\n            return file.name.slice(0, name.length) === name;\n        });\n        for (var i = 0; i < kids.length; i++) {\n            delete this.files[kids[i].name];\n        }\n    }\n\n    return this;\n};\n\n/**\n * Generate the complete zip file\n * @param {Object} options the options to generate the zip file :\n * - compression, \"STORE\" by default.\n * - type, \"base64\" by default. Values are : string, base64, uint8array, arraybuffer, blob.\n * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the zip file\n */\nJSZip.prototype.generate = function generate (options) {\n    throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\");\n};\n\n/**\n * Generate the complete zip file as an internal stream.\n * @param {Object} options the options to generate the zip file :\n * - compression, \"STORE\" by default.\n * - type, \"base64\" by default. Values are : string, base64, uint8array, arraybuffer, blob.\n * @return {StreamHelper} the streamed zip file.\n */\nJSZip.prototype.generateInternalStream = function generateInternalStream (options) {\n  var worker, opts = {};\n  try {\n      opts = extend(options || {}, {\n          streamFiles: false,\n          compression: \"STORE\",\n          compressionOptions : null,\n          type: \"\",\n          platform: \"DOS\",\n          comment: null,\n          mimeType: 'application/zip',\n          encodeFileName: utf8encode\n      });\n\n      opts.type = opts.type.toLowerCase();\n      opts.compression = opts.compression.toUpperCase();\n\n      // \"binarystring\" is preferred but the internals use \"string\".\n      if(opts.type === \"binarystring\") {\n        opts.type = \"string\";\n      }\n\n      if (!opts.type) {\n        throw new Error(\"No output type specified.\");\n      }\n\n      checkSupport(opts.type);\n\n      // accept nodejs `process.platform`\n      if(\n          opts.platform === 'darwin' ||\n          opts.platform === 'freebsd' ||\n          opts.platform === 'linux' ||\n          opts.platform === 'sunos'\n      ) {\n          opts.platform = \"UNIX\";\n      }\n      if (opts.platform === 'win32') {\n          opts.platform = \"DOS\";\n      }\n\n      var comment = opts.comment || this.comment || \"\";\n      worker = generateWorker(this, opts, comment);\n  } catch (e) {\n    worker = new GenericWorker(\"error\");\n    worker.error(e);\n  }\n  return new StreamHelper(worker, opts.type || \"string\", opts.mimeType);\n};\n\n/**\n * Generate the complete zip file asynchronously.\n * @see generateInternalStream\n */\nJSZip.prototype.generateAsync = function generateAsync (options, onUpdate) {\n    return this.generateInternalStream(options).accumulate(onUpdate);\n};\n\nJSZip.prototype.loadAsync = function loadAsync (data, options) {\n    return load.apply(this, [data, options]);\n};\n\nJSZip.loadAsync = function loadAsync (content, options) {\n    return new JSZip().loadAsync(content, options);\n};\n    \nstaticAccessors.support.get = function () {\n    return support;\n};\n\nstaticAccessors.defaults.get = function () {\n    return defaults;\n};\n\nstaticAccessors.version.get = function () {\n    return \"3.2.2-esm\";\n};\n\nstaticAccessors.external.get = function () {\n    return external;\n};\n\nObject.defineProperties( JSZip, staticAccessors );\n\nexport { JSZip as default };\n","var current = {\n    toString: function (value) { return value; }\n};\n\nvar IntlService = function IntlService () {};\n\nIntlService.register = function register (userImplementation) {\n    current = userImplementation;\n};\n\nIntlService.toString = function toString (value, format) {\n    return current.toString(value, format);\n};\n\nexport default IntlService;","// date packing utilities from Kendo Spreadsheet\n\n// Julian days algorithms from http://www.hermetic.ch/cal_stud/jdn.htm#comp\nfunction dateToJulianDays(y, m, d) {\n    return ((1461 * (y + 4800 + ((m - 13) / 12 | 0))) / 4 | 0) +\n        ((367 * (m - 1 - 12 * ((m - 13) / 12 | 0))) / 12 | 0) -\n        ((3 * (((y + 4900 + ((m - 13) / 12 | 0)) / 100 | 0))) / 4 | 0) +\n        d - 32075;\n}\n\n// This uses the Google Spreadsheet approach: treat 1899-12-31 as day 1, allowing to avoid\n// implementing the \"Leap Year Bug\" yet still be Excel compatible for dates starting 1900-03-01.\nvar BASE_DATE = dateToJulianDays(1900, 0, -1);\n\nfunction packDate(year, month, date) {\n    return dateToJulianDays(year, month, date) - BASE_DATE;\n}\n\nfunction packTime(hh, mm, ss, ms) {\n    return (hh + (mm + (ss + ms / 1000) / 60) / 60) / 24;\n}\n\nexport default function dateToSerial(date) {\n    var time = packTime(date.getHours(),\n                          date.getMinutes(),\n                          date.getSeconds(),\n                          date.getMilliseconds());\n    var serial = packDate(date.getFullYear(),\n                            date.getMonth(),\n                            date.getDate());\n    return serial < 0 ? serial - 1 + time : serial + time;\n}\n","import map from './utils/map';\nimport createZip from './utils/create-zip';\nimport IntlService from './services/intl-service';\nimport dateToSerial from './utils/time';\n\nvar MIME_TYPE = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\";\nvar DATA_URL_PREFIX = \"data:\" + MIME_TYPE + \";base64,\";\nvar DATA_URL_OPTIONS = { compression: \"DEFLATE\", type: \"base64\" };\nvar BLOB_OPTIONS = { compression: \"DEFLATE\", type: \"blob\" };\nvar ARRAYBUFFER_OPTIONS = { compression: \"DEFLATE\", type: \"arraybuffer\" };\n\n/* eslint-disable key-spacing, no-confusing-arrow, no-constant-condition, indent, no-nested-ternary, consistent-return */\n\nfunction toDataURI(content) {\n    return DATA_URL_PREFIX + content;\n}\n\nfunction indexOf(thing, array) {\n    return array.indexOf(thing);\n}\n\nvar parseJSON = JSON.parse.bind(JSON);\n\nfunction ESC(val) {\n    return String(val)\n        .replace(/&/g, \"&amp;\")\n        .replace(/</g, \"&lt;\")\n        .replace(/>/g, \"&gt;\")\n        .replace(/\\\"/g, \"&quot;\")\n        .replace(/\\'/g, \"&#39;\");\n}\n\nfunction repeat(count, func) {\n    var str = \"\";\n    for (var i = 0; i < count; ++i) {\n        str += func(i);\n    }\n    return str;\n}\n\nfunction foreach(arr, func) {\n    var str = \"\";\n    if (arr != null) {\n        if (Array.isArray(arr)) {\n            for (var i = 0; i < arr.length; ++i) {\n                str += func(arr[i], i);\n            }\n        } else if (typeof arr == \"object\") {\n            Object.keys(arr).forEach(function (key, i) {\n                str += func(arr[key], key, i);\n            });\n        }\n    }\n    return str;\n}\n\nvar XMLHEAD = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\\r';\n\nvar RELS = XMLHEAD + \"\\n            <Relationships xmlns=\\\"http://schemas.openxmlformats.org/package/2006/relationships\\\">\\n               <Relationship Id=\\\"rId3\\\" Type=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties\\\" Target=\\\"docProps/app.xml\\\"/>\\n               <Relationship Id=\\\"rId2\\\" Type=\\\"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties\\\" Target=\\\"docProps/core.xml\\\"/>\\n               <Relationship Id=\\\"rId1\\\" Type=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\\\" Target=\\\"xl/workbook.xml\\\"/>\\n            </Relationships>\";\n\nvar CORE = function (ref) {\n  var creator = ref.creator;\n  var lastModifiedBy = ref.lastModifiedBy;\n  var created = ref.created;\n  var modified = ref.modified;\n\n  return (XMLHEAD + \"\\n <cp:coreProperties xmlns:cp=\\\"http://schemas.openxmlformats.org/package/2006/metadata/core-properties\\\"\\n   xmlns:dc=\\\"http://purl.org/dc/elements/1.1/\\\" xmlns:dcterms=\\\"http://purl.org/dc/terms/\\\"\\n   xmlns:dcmitype=\\\"http://purl.org/dc/dcmitype/\\\" xmlns:xsi=\\\"http://www.w3.org/2001/XMLSchema-instance\\\">\\n   <dc:creator>\" + (ESC(creator)) + \"</dc:creator>\\n   <cp:lastModifiedBy>\" + (ESC(lastModifiedBy)) + \"</cp:lastModifiedBy>\\n   <dcterms:created xsi:type=\\\"dcterms:W3CDTF\\\">\" + (ESC(created)) + \"</dcterms:created>\\n   <dcterms:modified xsi:type=\\\"dcterms:W3CDTF\\\">\" + (ESC(modified)) + \"</dcterms:modified>\\n</cp:coreProperties>\");\n};\n\nvar APP = function (ref) {\n  var sheets = ref.sheets;\n\n  return (XMLHEAD + \"\\n<Properties xmlns=\\\"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties\\\" xmlns:vt=\\\"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes\\\">\\n  <Application>Microsoft Excel</Application>\\n  <DocSecurity>0</DocSecurity>\\n  <ScaleCrop>false</ScaleCrop>\\n  <HeadingPairs>\\n    <vt:vector size=\\\"2\\\" baseType=\\\"variant\\\">\\n      <vt:variant>\\n        <vt:lpstr>Worksheets</vt:lpstr>\\n      </vt:variant>\\n      <vt:variant>\\n        <vt:i4>\" + (sheets.length) + \"</vt:i4>\\n      </vt:variant>\\n    </vt:vector>\\n  </HeadingPairs>\\n  <TitlesOfParts>\\n    <vt:vector size=\\\"\" + (sheets.length) + \"\\\" baseType=\\\"lpstr\\\">\" + (foreach(sheets, function (sheet, i) { return sheet.options.title\n          ? (\"<vt:lpstr>\" + (ESC(sheet.options.title)) + \"</vt:lpstr>\")\n          : (\"<vt:lpstr>Sheet\" + (i + 1) + \"</vt:lpstr>\"); }\n      )) + \"</vt:vector>\\n  </TitlesOfParts>\\n  <LinksUpToDate>false</LinksUpToDate>\\n  <SharedDoc>false</SharedDoc>\\n  <HyperlinksChanged>false</HyperlinksChanged>\\n  <AppVersion>14.0300</AppVersion>\\n</Properties>\");\n};\n\nvar CONTENT_TYPES = function (ref) {\n  var sheetCount = ref.sheetCount;\n  var commentFiles = ref.commentFiles;\n  var drawingFiles = ref.drawingFiles;\n\n  return (XMLHEAD + \"\\n<Types xmlns=\\\"http://schemas.openxmlformats.org/package/2006/content-types\\\">\\n  <Default Extension=\\\"png\\\" ContentType=\\\"image/png\\\"/>\\n  <Default Extension=\\\"gif\\\" ContentType=\\\"image/gif\\\"/>\\n  <Default Extension=\\\"jpg\\\" ContentType=\\\"image/jpeg\\\"/>\\n  <Default Extension=\\\"rels\\\" ContentType=\\\"application/vnd.openxmlformats-package.relationships+xml\\\" />\\n  <Default Extension=\\\"xml\\\" ContentType=\\\"application/xml\\\" />\\n  <Default Extension=\\\"vml\\\" ContentType=\\\"application/vnd.openxmlformats-officedocument.vmlDrawing\\\"/>\\n  <Override PartName=\\\"/xl/workbook.xml\\\" ContentType=\\\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\\\" />\\n  <Override PartName=\\\"/xl/styles.xml\\\" ContentType=\\\"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\\\"/>\\n  <Override PartName=\\\"/xl/sharedStrings.xml\\\" ContentType=\\\"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\\\"/>\\n  \" + (repeat(sheetCount, function (idx) { return (\"<Override PartName=\\\"/xl/worksheets/sheet\" + (idx + 1) + \".xml\\\" ContentType=\\\"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\\\" />\"); })) + \"\\n  \" + (foreach(commentFiles, function (filename) { return (\"<Override PartName=\\\"/xl/\" + filename + \"\\\" ContentType=\\\"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\\\"/>\"); })) + \"\\n  \" + (foreach(drawingFiles, function (filename) { return (\"<Override PartName=\\\"/xl/drawings/\" + filename + \"\\\" ContentType=\\\"application/vnd.openxmlformats-officedocument.drawing+xml\\\"/>\"); })) + \"\\n  <Override PartName=\\\"/docProps/core.xml\\\" ContentType=\\\"application/vnd.openxmlformats-package.core-properties+xml\\\" />\\n  <Override PartName=\\\"/docProps/app.xml\\\" ContentType=\\\"application/vnd.openxmlformats-officedocument.extended-properties+xml\\\" />\\n</Types>\");\n};\n\nvar WORKBOOK = function (ref) {\n  var sheets = ref.sheets;\n  var filterNames = ref.filterNames;\n  var userNames = ref.userNames;\n\n  return (XMLHEAD + \"\\n<workbook xmlns=\\\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\\\" xmlns:r=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\\\">\\n  <fileVersion appName=\\\"xl\\\" lastEdited=\\\"5\\\" lowestEdited=\\\"5\\\" rupBuild=\\\"9303\\\" />\\n  <workbookPr defaultThemeVersion=\\\"124226\\\" />\\n  <bookViews>\\n    <workbookView xWindow=\\\"240\\\" yWindow=\\\"45\\\" windowWidth=\\\"18195\\\" windowHeight=\\\"7995\\\" />\\n  </bookViews>\\n  <sheets>\\n  \" + (foreach(sheets, function (ref, i) {\n    var options = ref.options;\n\n    var name = options.name || options.title || (\"Sheet\" + (i + 1));\n    var state = options.state || 'visible';\n    return (\"<sheet name=\\\"\" + (ESC(name)) + \"\\\" state=\\\"\" + state + \"\\\" sheetId=\\\"\" + (i + 1) + \"\\\" r:id=\\\"rId\" + (i + 1) + \"\\\" />\");\n  })) + \"\\n  </sheets>\\n  \" + (filterNames.length || userNames.length ? (\"\\n    <definedNames>\\n      \" + (foreach(filterNames, function (f) { return (\"\\n         <definedName name=\\\"_xlnm._FilterDatabase\\\" hidden=\\\"1\\\" localSheetId=\\\"\" + (f.localSheetId) + \"\\\">\" + (ESC(quoteSheet(f.name))) + \"!\" + (ESC(f.from)) + \":\" + (ESC(f.to)) + \"</definedName>\"); })) + \"\\n      \" + (foreach(userNames, function (f) { return (\"\\n         <definedName name=\\\"\" + (f.name) + \"\\\" hidden=\\\"\" + (f.hidden ? 1 : 0) + \"\\\" \" + (f.localSheetId != null ? (\"localSheetId=\\\"\" + (f.localSheetId) + \"\\\"\") : '') + \">\" + (ESC(f.value)) + \"</definedName>\"); })) + \"\\n    </definedNames>\") : '') + \"\\n  <calcPr fullCalcOnLoad=\\\"1\\\" calcId=\\\"145621\\\" />\\n</workbook>\");\n};\n\nvar WORKSHEET = function (ref$1) {\n  var frozenColumns = ref$1.frozenColumns;\n  var frozenRows = ref$1.frozenRows;\n  var columns = ref$1.columns;\n  var defaults = ref$1.defaults;\n  var data = ref$1.data;\n  var index = ref$1.index;\n  var mergeCells = ref$1.mergeCells;\n  var autoFilter = ref$1.autoFilter;\n  var filter = ref$1.filter;\n  var showGridLines = ref$1.showGridLines;\n  var hyperlinks = ref$1.hyperlinks;\n  var validations = ref$1.validations;\n  var defaultCellStyleId = ref$1.defaultCellStyleId;\n  var rtl = ref$1.rtl;\n  var legacyDrawing = ref$1.legacyDrawing;\n  var drawing = ref$1.drawing;\n  var lastRow = ref$1.lastRow;\n  var lastCol = ref$1.lastCol;\n  var hasDisabledCells = ref$1.hasDisabledCells;\n\n  return (XMLHEAD + \"\\n<worksheet xmlns=\\\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\\\" xmlns:mc=\\\"http://schemas.openxmlformats.org/markup-compatibility/2006\\\" xmlns:r=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\\\" xmlns:x14ac=\\\"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac\\\" mc:Ignorable=\\\"x14ac\\\">\\n   \" + (lastRow && lastCol ? (\"<dimension ref=\\\"A1:\" + (ref(lastRow - 1, lastCol - 1)) + \"\\\" />\") : \"\") + \"\\n\\n   <sheetViews>\\n     <sheetView \" + (rtl ? 'rightToLeft=\"1\"' : '') + \" \" + (index === 0 ? 'tabSelected=\"1\"' : '') + \" workbookViewId=\\\"0\\\" \" + (showGridLines === false ? 'showGridLines=\"0\"' : '') + \">\\n     \" + (frozenRows || frozenColumns ? (\"\\n       <pane state=\\\"frozen\\\"\\n         \" + (frozenColumns ? (\"xSplit=\\\"\" + frozenColumns + \"\\\"\") : '') + \"\\n         \" + (frozenRows ? (\"ySplit=\\\"\" + frozenRows + \"\\\"\") : '') + \"\\n         topLeftCell=\\\"\" + (String.fromCharCode(65 + (frozenColumns || 0)) + ((frozenRows || 0) + 1)) + \"\\\"\\n       />\") : '') + \"\\n     </sheetView>\\n   </sheetViews>\\n\\n   <sheetFormatPr x14ac:dyDescent=\\\"0.25\\\" \" + (!defaults.skipCustomHeight ? 'customHeight=\"1\"' : '') + \" defaultRowHeight=\\\"\" + (defaults.rowHeight ? defaults.rowHeight * 0.75 : 15) + \"\\\"\\n     \" + (defaults.columnWidth ? (\"defaultColWidth=\\\"\" + (toWidth(defaults.columnWidth)) + \"\\\"\") : '') + \" />\\n\\n   \" + (defaultCellStyleId != null || (columns && columns.length > 0) ? (\"\\n     <cols>\\n       \" + (!columns || !columns.length ? (\"\\n         <col min=\\\"1\\\" max=\\\"16384\\\" style=\\\"\" + defaultCellStyleId + \"\\\"\\n              \" + (defaults.columnWidth ? (\"width=\\\"\" + (toWidth(defaults.columnWidth)) + \"\\\"\") : '') + \" /> \") : '') + \"\\n       \" + (foreach(columns, function (column, ci) {\n         var columnIndex = typeof column.index === \"number\" ? column.index + 1 : (ci + 1);\n         if (column.width === 0) {\n           return (\"<col \" + (defaultCellStyleId != null ? (\"style=\\\"\" + defaultCellStyleId + \"\\\"\") : '') + \"\\n                        min=\\\"\" + columnIndex + \"\\\" max=\\\"\" + columnIndex + \"\\\" hidden=\\\"1\\\" customWidth=\\\"1\\\" />\");\n         }\n         return (\"<col \" + (defaultCellStyleId != null ? (\"style=\\\"\" + defaultCellStyleId + \"\\\"\") : '') + \"\\n                      min=\\\"\" + columnIndex + \"\\\" max=\\\"\" + columnIndex + \"\\\" customWidth=\\\"1\\\"\\n                      \" + (column.autoWidth\n                          ? (\"width=\\\"\" + (((column.width * 7 + 5) / 7 * 256) / 256) + \"\\\" bestFit=\\\"1\\\"\")\n                          : (\"width=\\\"\" + (toWidth(column.width)) + \"\\\"\")) + \" />\");\n       })) + \"\\n     </cols>\") : '') + \"\\n\\n   <sheetData>\\n     \" + (foreach(data, function (row, ri) {\n       var rowIndex = typeof row.index === \"number\" ? row.index + 1 : (ri + 1);\n       return (\"\\n         <row r=\\\"\" + rowIndex + \"\\\" x14ac:dyDescent=\\\"0.25\\\"\\n              \" + (row.level ? (\"outlineLevel=\\\"\" + (row.level) + \"\\\"\") : '') + \"\\n              \" + (row.height === 0 ? 'hidden=\"1\"'\n                                 : row.height ? (\"ht=\\\"\" + (toHeight(row.height)) + \"\\\" customHeight=\\\"1\\\"\") : \"\") + \">\\n           \" + (foreach(row.data, function (cell) { return (\"\\n             <c r=\\\"\" + (cell.ref) + \"\\\" \" + (cell.style ? (\"s=\\\"\" + (cell.style) + \"\\\"\") : '') + \" \" + (cell.type ? (\"t=\\\"\" + (cell.type) + \"\\\"\") : '') + \">\\n               \" + (cell.formula != null ? writeFormula(cell.formula) : '') + \"\\n               \" + (cell.value != null ? (\"<v>\" + (ESC(cell.value)) + \"</v>\") : '') + \"\\n             </c>\"); })) + \"\\n         </row>\\n       \");})) + \"\\n   </sheetData>\\n\\n   \" + (hasDisabledCells ? \"<sheetProtection sheet=\\\"1\\\" objects=\\\"1\\\" scenarios=\\\"1\\\"/>\" : '') + \"\\n\\n   \" + (autoFilter ? (\"<autoFilter ref=\\\"\" + (autoFilter.from) + \":\" + (autoFilter.to) + \"\\\"/>\")\n                : filter ? spreadsheetFilters(filter) : '') + \"\\n\\n   \" + (mergeCells.length ? (\"\\n     <mergeCells count=\\\"\" + (mergeCells.length) + \"\\\">\\n       \" + (foreach(mergeCells, function (ref) { return (\"<mergeCell ref=\\\"\" + ref + \"\\\"/>\"); })) + \"\\n     </mergeCells>\") : '') + \"\\n\\n   \" + (validations.length ? (\"\\n     <dataValidations>\\n       \" + (foreach(validations, function (val) { return (\"\\n         <dataValidation sqref=\\\"\" + (val.sqref.join(\" \")) + \"\\\"\\n                         showErrorMessage=\\\"\" + (val.showErrorMessage) + \"\\\"\\n                         type=\\\"\" + (ESC(val.type)) + \"\\\"\\n                         \" + (val.type !== \"list\" ? (\"operator=\\\"\" + (ESC(val.operator)) + \"\\\"\") : '') + \"\\n                         allowBlank=\\\"\" + (val.allowBlank) + \"\\\"\\n                         showDropDown=\\\"\" + (val.showDropDown) + \"\\\"\\n                         \" + (val.error ? (\"error=\\\"\" + (ESC(val.error)) + \"\\\"\") : '') + \"\\n                         \" + (val.errorTitle ? (\"errorTitle=\\\"\" + (ESC(val.errorTitle)) + \"\\\"\") : '') + \">\\n           \" + (val.formula1 ? (\"<formula1>\" + (ESC(val.formula1)) + \"</formula1>\") : '') + \"\\n           \" + (val.formula2 ? (\"<formula2>\" + (ESC(val.formula2)) + \"</formula2>\") : '') + \"\\n         </dataValidation>\"); })) + \"\\n     </dataValidations>\") : '') + \"\\n\\n   \" + (hyperlinks.length ? (\"\\n     <hyperlinks>\\n       \" + (foreach(hyperlinks, function (link) { return (\"\\n         <hyperlink ref=\\\"\" + (link.ref) + \"\\\" r:id=\\\"\" + (link.rId) + \"\\\"/>\"); })) + \"\\n     </hyperlinks>\") : '') + \"\\n\\n   <pageMargins left=\\\"0.7\\\" right=\\\"0.7\\\" top=\\\"0.75\\\" bottom=\\\"0.75\\\" header=\\\"0.3\\\" footer=\\\"0.3\\\" />\\n   \" + (drawing ? (\"<drawing r:id=\\\"\" + drawing + \"\\\"/>\") : '') + \"\\n   \" + (legacyDrawing ? (\"<legacyDrawing r:id=\\\"\" + legacyDrawing + \"\\\"/>\") : '') + \"\\n</worksheet>\");\n};\n\nvar WORKBOOK_RELS = function (ref) {\n  var count = ref.count;\n\n  return (XMLHEAD + \"\\n<Relationships xmlns=\\\"http://schemas.openxmlformats.org/package/2006/relationships\\\">\\n  \" + (repeat(count, function (idx) { return (\"\\n    <Relationship Id=\\\"rId\" + (idx + 1) + \"\\\" Type=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet\\\" Target=\\\"worksheets/sheet\" + (idx + 1) + \".xml\\\" />\"); })) + \"\\n  <Relationship Id=\\\"rId\" + (count + 1) + \"\\\" Type=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\\\" Target=\\\"styles.xml\\\" />\\n  <Relationship Id=\\\"rId\" + (count + 2) + \"\\\" Type=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings\\\" Target=\\\"sharedStrings.xml\\\" />\\n</Relationships>\");\n};\n\nvar WORKSHEET_RELS = function (ref) {\n  var hyperlinks = ref.hyperlinks;\n  var comments = ref.comments;\n  var sheetIndex = ref.sheetIndex;\n  var drawings = ref.drawings;\n\n  return (XMLHEAD + \"\\n<Relationships xmlns=\\\"http://schemas.openxmlformats.org/package/2006/relationships\\\">\\n  \" + (foreach(hyperlinks, function (link) { return (\"\\n    <Relationship Id=\\\"\" + (link.rId) + \"\\\" Type=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink\\\" Target=\\\"\" + (ESC(link.target)) + \"\\\" TargetMode=\\\"External\\\" />\"); })) + \"\\n  \" + (!comments.length ? '' : (\"\\n    <Relationship Id=\\\"comment\" + sheetIndex + \"\\\" Type=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments\\\" Target=\\\"../comments\" + sheetIndex + \".xml\\\"/>\\n    <Relationship Id=\\\"vml\" + sheetIndex + \"\\\" Type=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing\\\" Target=\\\"../drawings/vmlDrawing\" + sheetIndex + \".vml\\\"/>\")) + \"\\n  \" + (!drawings.length ? '' : (\"\\n    <Relationship Id=\\\"drw\" + sheetIndex + \"\\\" Type=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing\\\" Target=\\\"../drawings/drawing\" + sheetIndex + \".xml\\\"/>\")) + \"\\n</Relationships>\");\n};\n\nvar COMMENTS_XML = function (ref) {\n  var comments = ref.comments;\n\n  return (XMLHEAD + \"\\n<comments xmlns=\\\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\\\">\\n  <authors>\\n    <author></author>\\n  </authors>\\n  <commentList>\\n    \" + (foreach(comments, function (comment) { return (\"\\n      <comment ref=\\\"\" + (comment.ref) + \"\\\" authorId=\\\"0\\\">\\n        <text>\\n          <r>\\n            <rPr>\\n              <sz val=\\\"8\\\"/>\\n              <color indexed=\\\"81\\\"/>\\n              <rFont val=\\\"Tahoma\\\"/>\\n              <charset val=\\\"1\\\"/>\\n            </rPr>\\n            <t>\" + (ESC(comment.text)) + \"</t>\\n          </r>\\n        </text>\\n      </comment>\"); })) + \"\\n  </commentList>\\n</comments>\");\n};\n\nvar LEGACY_DRAWING = function (ref) {\n  var comments = ref.comments;\n\n  return (\"<xml xmlns:v=\\\"urn:schemas-microsoft-com:vml\\\"\\n     xmlns:o=\\\"urn:schemas-microsoft-com:office:office\\\"\\n     xmlns:x=\\\"urn:schemas-microsoft-com:office:excel\\\">\\n  <v:shapetype coordsize=\\\"21600,21600\\\" id=\\\"_x0000_t202\\\" path=\\\"m,l,21600r21600,l21600,xe\\\">\\n    <v:stroke joinstyle=\\\"miter\\\"/>\\n    <v:path gradientshapeok=\\\"t\\\" o:connecttype=\\\"rect\\\"/>\\n  </v:shapetype>\\n  \" + (foreach(comments, function (comment) { return (\"\\n    <v:shape type=\\\"#_x0000_t202\\\" style=\\\"visibility: hidden\\\" fillcolor=\\\"#ffffe1\\\" o:insetmode=\\\"auto\\\">\\n      <v:shadow on=\\\"t\\\" color=\\\"black\\\" obscured=\\\"t\\\"/>\\n      <x:ClientData ObjectType=\\\"Note\\\">\\n        <x:MoveWithCells/>\\n        <x:SizeWithCells/>\\n        <x:Anchor>\" + (comment.anchor) + \"</x:Anchor>\\n        <x:AutoFill>False</x:AutoFill>\\n        <x:Row>\" + (comment.row) + \"</x:Row>\\n        <x:Column>\" + (comment.col) + \"</x:Column>\\n      </x:ClientData>\\n    </v:shape>\"); })) + \"\\n</xml>\");\n};\n\nvar DRAWINGS_XML = function (drawings) { return (XMLHEAD + \"\\n<xdr:wsDr xmlns:xdr=\\\"http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing\\\"\\n          xmlns:a=\\\"http://schemas.openxmlformats.org/drawingml/2006/main\\\"\\n          xmlns:r=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\\\">\\n  \" + (foreach(drawings, function (drawing, index) { return (\"\\n    <xdr:oneCellAnchor editAs=\\\"oneCell\\\">\\n      <xdr:from>\\n        <xdr:col>\" + (drawing.col) + \"</xdr:col>\\n        <xdr:colOff>\" + (drawing.colOffset) + \"</xdr:colOff>\\n        <xdr:row>\" + (drawing.row) + \"</xdr:row>\\n        <xdr:rowOff>\" + (drawing.rowOffset) + \"</xdr:rowOff>\\n      </xdr:from>\\n      <xdr:ext cx=\\\"\" + (drawing.width) + \"\\\" cy=\\\"\" + (drawing.height) + \"\\\" />\\n      <xdr:pic>\\n        <xdr:nvPicPr>\\n          <xdr:cNvPr id=\\\"\" + (index + 1) + \"\\\" name=\\\"Picture \" + (index + 1) + \"\\\"/>\\n          <xdr:cNvPicPr/>\\n        </xdr:nvPicPr>\\n        <xdr:blipFill>\\n          <a:blip r:embed=\\\"\" + (drawing.imageId) + \"\\\"/>\\n          <a:stretch>\\n            <a:fillRect/>\\n          </a:stretch>\\n        </xdr:blipFill>\\n        <xdr:spPr>\\n          <a:prstGeom prst=\\\"rect\\\">\\n            <a:avLst/>\\n          </a:prstGeom>\\n        </xdr:spPr>\\n      </xdr:pic>\\n      <xdr:clientData/>\\n    </xdr:oneCellAnchor>\"); })) + \"\\n</xdr:wsDr>\"); };\n\nvar DRAWINGS_RELS_XML = function (rels) { return (XMLHEAD + \"\\n<Relationships xmlns=\\\"http://schemas.openxmlformats.org/package/2006/relationships\\\">\\n  \" + (foreach(rels, function (rel) { return (\"\\n    <Relationship Id=\\\"\" + (rel.rId) + \"\\\" Type=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\\\" Target=\\\"\" + (rel.target) + \"\\\"/>\"); })) + \"\\n</Relationships>\"); };\n\nvar SHARED_STRINGS = function (ref) {\n  var count = ref.count;\n  var uniqueCount = ref.uniqueCount;\n  var indexes = ref.indexes;\n\n  return (XMLHEAD + \"\\n<sst xmlns=\\\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\\\" count=\\\"\" + count + \"\\\" uniqueCount=\\\"\" + uniqueCount + \"\\\">\\n  \" + (foreach(Object.keys(indexes), function (index) { return (\"\\n    <si><t xml:space=\\\"preserve\\\">\" + (ESC(index.substring(1))) + \"</t></si>\"); })) + \"\\n</sst>\");\n};\n\nvar STYLES = function (ref) {\n  var formats = ref.formats;\n  var fonts = ref.fonts;\n  var fills = ref.fills;\n  var borders = ref.borders;\n  var styles = ref.styles;\n\n  return (XMLHEAD + \"\\n<styleSheet\\n    xmlns=\\\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\\\"\\n    xmlns:mc=\\\"http://schemas.openxmlformats.org/markup-compatibility/2006\\\"\\n    mc:Ignorable=\\\"x14ac\\\"\\n    xmlns:x14ac=\\\"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac\\\">\\n  <numFmts count=\\\"\" + (formats.length) + \"\\\">\\n  \" + (foreach(formats, function (format, fi) { return (\"\\n    <numFmt formatCode=\\\"\" + (ESC(format.format)) + \"\\\" numFmtId=\\\"\" + (165 + fi) + \"\\\" />\"); })) + \"\\n  </numFmts>\\n  <fonts count=\\\"\" + (fonts.length + 1) + \"\\\" x14ac:knownFonts=\\\"1\\\">\\n    <font>\\n       <sz val=\\\"11\\\" />\\n       <color theme=\\\"1\\\" />\\n       <name val=\\\"Calibri\\\" />\\n       <family val=\\\"2\\\" />\\n       <scheme val=\\\"minor\\\" />\\n    </font>\\n    \" + (foreach(fonts, function (font) { return (\"\\n    <font>\\n      \" + (font.bold ? '<b/>' : '') + \"\\n      \" + (font.italic ? '<i/>' : '') + \"\\n      \" + (font.underline ? '<u/>' : '') + \"\\n      <sz val=\\\"\" + (font.fontSize || 11) + \"\\\" />\\n      \" + (font.color ? (\"<color rgb=\\\"\" + (ESC(font.color)) + \"\\\" />\") : '<color theme=\"1\" />') + \"\\n      \" + (font.fontFamily ? (\"\\n        <name val=\\\"\" + (ESC(font.fontFamily)) + \"\\\" />\\n        <family val=\\\"2\\\" />\\n      \") : \"\\n        <name val=\\\"Calibri\\\" />\\n        <family val=\\\"2\\\" />\\n        <scheme val=\\\"minor\\\" />\\n      \") + \"\\n    </font>\"); })) + \"\\n  </fonts>\\n  <fills count=\\\"\" + (fills.length + 2) + \"\\\">\\n      <fill><patternFill patternType=\\\"none\\\"/></fill>\\n      <fill><patternFill patternType=\\\"gray125\\\"/></fill>\\n    \" + (foreach(fills, function (fill) { return (\"\\n      \" + (fill.background ? (\"\\n        <fill>\\n          <patternFill patternType=\\\"solid\\\">\\n              <fgColor rgb=\\\"\" + (ESC(fill.background)) + \"\\\"/>\\n          </patternFill>\\n        </fill>\\n      \") : '')); })) + \"\\n  </fills>\\n  <borders count=\\\"\" + (borders.length + 1) + \"\\\">\\n    <border><left/><right/><top/><bottom/><diagonal/></border>\\n    \" + (foreach(borders, borderTemplate)) + \"\\n  </borders>\\n  <cellStyleXfs count=\\\"1\\\">\\n    <xf borderId=\\\"0\\\" fillId=\\\"0\\\" fontId=\\\"0\\\" />\\n  </cellStyleXfs>\\n  <cellXfs count=\\\"\" + (styles.length + 1) + \"\\\">\\n    <xf numFmtId=\\\"0\\\" fontId=\\\"0\\\" fillId=\\\"0\\\" borderId=\\\"0\\\" xfId=\\\"0\\\" />\\n    \" + (foreach(styles, function (style) { return (\"\\n      <xf xfId=\\\"0\\\"\\n          \" + (style.fontId ? (\"fontId=\\\"\" + (style.fontId) + \"\\\" applyFont=\\\"1\\\"\") : '') + \"\\n          \" + (style.fillId ? (\"fillId=\\\"\" + (style.fillId) + \"\\\" applyFill=\\\"1\\\"\") : '') + \"\\n          \" + (style.numFmtId ? (\"numFmtId=\\\"\" + (style.numFmtId) + \"\\\" applyNumberFormat=\\\"1\\\"\") : '') + \"\\n          \" + (style.textAlign || style.verticalAlign || style.wrap ? 'applyAlignment=\"1\"' : '') + \"\\n          \" + (style.borderId ? (\"borderId=\\\"\" + (style.borderId) + \"\\\" applyBorder=\\\"1\\\"\") : '') + \"\\n          \" + (style.disabled != null ? \"applyProtection=\\\"1\\\"\" : '') + \">\\n        \" + (style.textAlign || style.verticalAlign || style.wrap ? (\"\\n        <alignment\\n          \" + (style.textAlign ? (\"horizontal=\\\"\" + (ESC(style.textAlign)) + \"\\\"\") : '') + \"\\n          \" + (style.verticalAlign ? (\"vertical=\\\"\" + (ESC(style.verticalAlign)) + \"\\\"\") : '') + \"\\n          \" + (style.indent ? (\"indent=\\\"\" + (ESC(style.indent)) + \"\\\"\") : '') + \"\\n          \" + (style.wrap ? 'wrapText=\"1\"' : '') + \" />\\n        \") : '') + \"\\n        \" + (style.disabled != null ? (\"\\n        <protection locked=\\\"\" + (style.disabled ? 1 : 0) + \"\\\" />\\n        \") : '') + \"\\n      </xf>\\n    \"); })) + \"\\n  </cellXfs>\\n  <cellStyles count=\\\"1\\\">\\n    <cellStyle name=\\\"Normal\\\" xfId=\\\"0\\\" builtinId=\\\"0\\\"/>\\n  </cellStyles>\\n  <dxfs count=\\\"0\\\" />\\n  <tableStyles count=\\\"0\\\" defaultTableStyle=\\\"TableStyleMedium2\\\" defaultPivotStyle=\\\"PivotStyleMedium9\\\" />\\n</styleSheet>\");\n};\n\nfunction writeFormula(formula) {\n    if (typeof formula == \"string\") {\n        return (\"<f>\" + (ESC(formula)) + \"</f>\");\n    }\n    // array formulas\n    return (\"<f t=\\\"array\\\" ref=\\\"\" + (formula.ref) + \"\\\">\" + (ESC(formula.src)) + \"</f>\");\n}\n\nfunction numChar(colIndex) {\n   var letter = Math.floor(colIndex / 26) - 1;\n\n   return (letter >= 0 ? numChar(letter) : \"\") + String.fromCharCode(65 + (colIndex % 26));\n}\n\nfunction ref(rowIndex, colIndex) {\n    return numChar(colIndex) + (rowIndex + 1);\n}\n\nfunction $ref(rowIndex, colIndex) {\n    return \"$\" + numChar(colIndex) + \"$\" + (rowIndex + 1);\n}\n\nfunction filterRowIndex(options) {\n    var frozenRows = options.frozenRows || (options.freezePane || {}).rowSplit || 1;\n    return frozenRows - 1;\n}\n\nfunction toWidth(px) {\n    var maximumDigitWidth = 7;\n    return (px / maximumDigitWidth) - (Math.floor(128 / maximumDigitWidth) / 256);\n}\n\nfunction toHeight(px) {\n    return px * 0.75;\n}\n\nfunction stripFunnyChars(value) {\n    return String(value)\n        .replace(/[\\x00-\\x09\\x0B\\x0C\\x0E-\\x1F]/g, \"\") // leave CRLF in\n        .replace(/\\r?\\n/g, \"\\r\\n\");                   // make sure LF is preceded by CR\n}\n\nvar Worksheet = function Worksheet(options, sharedStrings, styles, borders) {\n      this.options = options;\n      this._strings = sharedStrings;\n      this._styles = styles;\n      this._borders = borders;\n      this._validations = {};\n      this._comments = [];\n      this._drawings = options.drawings || [];\n      this._hyperlinks = (this.options.hyperlinks || []).map(\n          function (link, i) { return Object.assign({}, link, { rId: (\"link\" + i) }); });\n  };\n\n  Worksheet.prototype.relsToXML = function relsToXML () {\n      var hyperlinks = this._hyperlinks;\n      var comments = this._comments;\n      var drawings = this._drawings;\n\n      if (hyperlinks.length || comments.length || drawings.length) {\n          return WORKSHEET_RELS({\n              hyperlinks : hyperlinks,\n              comments : comments,\n              sheetIndex : this.options.sheetIndex,\n              drawings : drawings\n          });\n      }\n  };\n\n  Worksheet.prototype.toXML = function toXML (index) {\n        var this$1 = this;\n\n      var mergeCells = this.options.mergedCells || [];\n      var rows = this.options.rows || [];\n      var data = inflate(rows, mergeCells);\n\n      this._readCells(data);\n\n      var autoFilter = this.options.filter;\n      var filter;\n      if (autoFilter && (typeof autoFilter.from === \"number\") && (typeof autoFilter.to === \"number\")) {\n          // Grid enables auto filter\n          autoFilter = {\n              from: ref(filterRowIndex(this.options), autoFilter.from),\n              to: ref(filterRowIndex(this.options), autoFilter.to)\n          };\n      } else if (autoFilter && autoFilter.ref && autoFilter.columns) {\n          // this is probably from the Spreadsheet\n          filter = autoFilter;\n          autoFilter = null;\n      }\n\n      var validations = [];\n      for (var i in this$1._validations) {\n          if (Object.prototype.hasOwnProperty.call(this$1._validations, i)) {\n              validations.push(this$1._validations[i]);\n          }\n      }\n\n      var defaultCellStyleId = null;\n      var defaultCellStyle = this.options.defaultCellStyle;\n      if (this._hasDisabledCells) {\n          if (!defaultCellStyle) {\n              defaultCellStyle = { disabled: false };\n          } else {\n              defaultCellStyle = Object.assign({ disabled: false }, defaultCellStyle);\n          }\n      }\n      if (defaultCellStyle) {\n          defaultCellStyleId = this._lookupStyle(defaultCellStyle);\n      }\n\n      var freezePane = this.options.freezePane || {};\n      var defaults = this.options.defaults || {};\n      var lastRow = this.options.rows ? this._getLastRow() : 1;\n      var lastCol = this.options.rows ? this._getLastCol() : 1;\n\n      return WORKSHEET({\n          frozenColumns: this.options.frozenColumns || freezePane.colSplit,\n          frozenRows: this.options.frozenRows || freezePane.rowSplit,\n          columns: this.options.columns,\n          defaults: defaults,\n          data: data,\n          index: index,\n          mergeCells: mergeCells,\n          autoFilter: autoFilter,\n          filter: filter,\n          showGridLines: this.options.showGridLines,\n          hyperlinks: this._hyperlinks,\n          validations: validations,\n          defaultCellStyleId: defaultCellStyleId,\n          rtl: this.options.rtl !== undefined ? this.options.rtl : defaults.rtl,\n          legacyDrawing: this._comments.length ? (\"vml\" + (this.options.sheetIndex)) : null,\n          drawing: this._drawings.length ? (\"drw\" + (this.options.sheetIndex)) : null,\n          lastRow: lastRow,\n          lastCol: lastCol,\n          hasDisabledCells: this._hasDisabledCells,\n      });\n  };\n\n  Worksheet.prototype.commentsXML = function commentsXML () {\n      if (this._comments.length) {\n          return COMMENTS_XML({ comments: this._comments });\n      }\n  };\n\n  Worksheet.prototype.drawingsXML = function drawingsXML (images) {\n      if (this._drawings.length) {\n          var rels = {};\n          var main = this._drawings.map(function (drw) {\n              var ref = parseRef(drw.topLeftCell);\n              var img = rels[drw.image];\n              if (!img) {\n                  img = rels[drw.image] = {\n                      rId: (\"img\" + (drw.image)),\n                      target: images[drw.image].target\n                  };\n              }\n              return {\n                  col     : ref.col,\n                  colOffset : pixelsToExcel(drw.offsetX),\n                  row     : ref.row,\n                  rowOffset : pixelsToExcel(drw.offsetY),\n                  width   : pixelsToExcel(drw.width),\n                  height  : pixelsToExcel(drw.height),\n                  imageId : img.rId\n              };\n          });\n          return {\n              main: DRAWINGS_XML(main),\n              rels: DRAWINGS_RELS_XML(rels)\n          };\n      }\n  };\n\n  Worksheet.prototype.legacyDrawing = function legacyDrawing () {\n      if (this._comments.length) {\n          return LEGACY_DRAWING({ comments: this._comments });\n      }\n  };\n\n  Worksheet.prototype._lookupString = function _lookupString (value) {\n      var key = \"$\" + value;\n      var index = this._strings.indexes[key];\n      var result;\n\n      if (index !== undefined) {\n          result = index;\n      } else {\n          result = this._strings.indexes[key] = this._strings.uniqueCount;\n          this._strings.uniqueCount ++;\n      }\n\n      this._strings.count ++;\n\n      return result;\n  };\n\n  Worksheet.prototype._lookupStyle = function _lookupStyle (style) {\n      var json = JSON.stringify(style);\n\n      if (json === \"{}\") {\n          return 0;\n      }\n\n      var index = indexOf(json, this._styles);\n\n      if (index < 0) {\n          index = this._styles.push(json) - 1;\n      }\n\n      // There is one default style\n      return index + 1;\n  };\n\n  Worksheet.prototype._lookupBorder = function _lookupBorder (border) {\n      var json = JSON.stringify(border);\n      if (json === \"{}\") {\n          return;\n      }\n\n      var index = indexOf(json, this._borders);\n      if (index < 0) {\n          index = this._borders.push(json) - 1;\n      }\n\n      // There is one default border\n      return index + 1;\n  };\n\n  Worksheet.prototype._readCells = function _readCells (rowData) {\n        var this$1 = this;\n\n      for (var i = 0; i < rowData.length; i++) {\n          var row = rowData[i];\n          var cells = row.cells;\n\n          row.data = [];\n\n          for (var j = 0; j < cells.length; j++) {\n              var cellData = this$1._cell(cells[j], row.index, j);\n              if (cellData) {\n                  row.data.push(cellData);\n              }\n          }\n      }\n  };\n\n  Worksheet.prototype._cell = function _cell (data, rowIndex, cellIndex) {\n        var this$1 = this;\n\n      if (!data || data === EMPTY_CELL) {\n          return null;\n      }\n\n      var value = data.value;\n\n      var border = {};\n\n      if (data.borderLeft) {\n          border.left = data.borderLeft;\n      }\n\n      if (data.borderRight) {\n          border.right = data.borderRight;\n      }\n\n      if (data.borderTop) {\n          border.top = data.borderTop;\n      }\n\n      if (data.borderBottom) {\n          border.bottom = data.borderBottom;\n      }\n\n      if (data.dBorders) {\n          border.diagonal = data.dBorders;\n      }\n\n      border = this._lookupBorder(border);\n\n      var defStyle = this.options.defaultCellStyle || {};\n      var style = { borderId: border };\n\n      (function (add) {\n          add(\"color\");\n          add(\"background\");\n          add(\"bold\");\n          add(\"italic\");\n          add(\"underline\");\n          if (!add(\"fontFamily\")) { add(\"fontName\", \"fontFamily\"); }\n          add(\"fontSize\");\n          add(\"format\");\n          if (!add(\"textAlign\")) { add(\"hAlign\", \"textAlign\"); }\n          if (!add(\"verticalAlign\")) { add(\"vAlign\", \"verticalAlign\"); }\n          add(\"wrap\");\n          add(\"indent\");\n          if (!add(\"disabled\")) {\n              if (add(\"enable\")) {\n                  style.disabled = !style.enable;\n                  delete style.enable;\n              }\n          }\n          if (style.disabled) {\n              this$1._hasDisabledCells = true;\n          }\n      })(function (prop, target) {\n          var val = data[prop];\n          if (val === undefined) {\n              val = defStyle[prop];\n          }\n          if (val !== undefined) {\n              style[target || prop] = val;\n              return true;\n          }\n      });\n\n      var columns = this.options.columns || [];\n\n      var column = columns[cellIndex];\n      var type = typeof value;\n\n      if (column && column.autoWidth && (!data.colSpan || data.colSpan === 1)) {\n          var displayValue = value;\n\n          // XXX: let's not bring kendo.toString in only for this.\n          //    better wait until the spreadsheet engine is available as a separate\n          //    component, then we can use a real Excel-like formatter.\n          //\n          if (type === \"number\") {\n              // kendo.toString will not behave exactly like the Excel format\n              // Still, it's the best we have available for estimating the character count.\n              displayValue = IntlService.toString(value, data.format);\n          }\n\n          column.width = Math.max(column.width || 0, String(displayValue).length);\n      }\n\n      if (type === \"string\") {\n          value = stripFunnyChars(value);\n          value = this._lookupString(value);\n          type = \"s\";\n      } else if (type === \"number\") {\n          type = \"n\";\n      } else if (type === \"boolean\") {\n          type = \"b\";\n          value = Number(value);\n      } else if (value && value.getTime) {\n          type = null;\n          value = dateToSerial(value);\n          if (!style.format) {\n              style.format = \"mm-dd-yy\";\n          }\n      } else {\n          type = null;\n          value = null;\n      }\n\n      style = this._lookupStyle(style);\n\n      var cellName = ref(rowIndex, cellIndex);\n\n      if (data.validation) {\n          this._addValidation(data.validation, cellName);\n      }\n\n      if (data.comment) {\n          var anchor = [\n              cellIndex + 1,// start column\n              15,           // start column offset\n              rowIndex,     // start row\n              10,           // start row offset\n              cellIndex + 3,// end column\n              15,           // end column offset\n              rowIndex + 3, // end row\n              4             // end row offset\n          ];\n          this._comments.push({\n              ref  : cellName,\n              text : data.comment,\n              row  : rowIndex,\n              col  : cellIndex,\n              anchor : anchor.join(\", \")\n          });\n      }\n\n      return {\n          value: value,\n          formula: data.formula,\n          type: type,\n          style: style,\n          ref: cellName\n      };\n  };\n\n  Worksheet.prototype._addValidation = function _addValidation (v, ref) {\n      var tmp = {\n          showErrorMessage : v.type === \"reject\" ? 1 : 0,\n          formula1       : v.from,\n          formula2       : v.to,\n          type           : MAP_EXCEL_TYPE[v.dataType] || v.dataType,\n          operator       : MAP_EXCEL_OPERATOR[v.comparerType] || v.comparerType,\n          allowBlank     : v.allowNulls ? 1 : 0,\n          showDropDown   : v.showButton ? 0 : 1, // LOL, Excel!\n          error          : v.messageTemplate,\n          errorTitle     : v.titleTemplate\n      };\n      var json = JSON.stringify(tmp);\n      if (!this._validations[json]) {\n          this._validations[json] = tmp;\n          tmp.sqref = [];\n      }\n      this._validations[json].sqref.push(ref);\n  };\n\n  Worksheet.prototype._getLastRow = function _getLastRow () {\n      return countData(this.options.rows);\n  };\n\n  Worksheet.prototype._getLastCol = function _getLastCol () {\n      var last = 0;\n      this.options.rows.forEach(function(row) {\n          if (row.cells) {\n              last = Math.max(last, countData(row.cells));\n          }\n      });\n      return last;\n  };\n\nfunction countData(data) {\n    var last = data.length;\n    data.forEach(function(el) {\n        if (el.index && el.index >= last) {\n            last = el.index + 1;\n        }\n    });\n    return last;\n}\n\nvar MAP_EXCEL_OPERATOR = {\n    // includes only what differs; key is our operator, value is Excel\n    // operator.\n    greaterThanOrEqualTo : \"greaterThanOrEqual\",\n    lessThanOrEqualTo    : \"lessThanOrEqual\"\n};\n\nvar MAP_EXCEL_TYPE = {\n    // eslint-disable-next-line id-denylist\n    number: \"decimal\"\n};\n\nvar defaultFormats = {\n    \"General\": 0,\n    \"0\": 1,\n    \"0.00\": 2,\n    \"#,##0\": 3,\n    \"#,##0.00\": 4,\n    \"0%\": 9,\n    \"0.00%\": 10,\n    \"0.00E+00\": 11,\n    \"# ?/?\": 12,\n    \"# ??/??\": 13,\n    \"mm-dd-yy\": 14,\n    \"d-mmm-yy\": 15,\n    \"d-mmm\": 16,\n    \"mmm-yy\": 17,\n    \"h:mm AM/PM\": 18,\n    \"h:mm:ss AM/PM\": 19,\n    \"h:mm\": 20,\n    \"h:mm:ss\": 21,\n    \"m/d/yy h:mm\": 22,\n    \"#,##0 ;(#,##0)\": 37,\n    \"#,##0 ;[Red](#,##0)\": 38,\n    \"#,##0.00;(#,##0.00)\": 39,\n    \"#,##0.00;[Red](#,##0.00)\": 40,\n    \"mm:ss\": 45,\n    \"[h]:mm:ss\": 46,\n    \"mmss.0\": 47,\n    \"##0.0E+0\": 48,\n    \"@\": 49,\n    \"[$-404]e/m/d\": 27,\n    \"m/d/yy\": 30,\n    \"t0\": 59,\n    \"t0.00\": 60,\n    \"t#,##0\": 61,\n    \"t#,##0.00\": 62,\n    \"t0%\": 67,\n    \"t0.00%\": 68,\n    \"t# ?/?\": 69,\n    \"t# ??/??\": 70\n};\n\nfunction maybeRGB(value) {\n    function hex(val) {\n        var x = parseInt(val, 10).toString(16);\n        return x.length < 2 ? \"0\" + x : x;\n    }\n\n    var m = /^rgba?\\((\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*([0-9.]+)\\s*)?\\)/i.exec(value.trim());\n    if (m) {\n        var opacity = (m[4] ? parseFloat(m[4]) : 1) * 255 | 0;\n        return \"#\" + hex(opacity) + hex(m[1]) + hex(m[2]) + hex(m[3]);\n    }\n    return value;\n}\n\nfunction convertColor(value) {\n    var color = maybeRGB(value);\n    if (color.length < 6) {\n        color = color.replace(/(\\w)/g, function($0, $1) {\n            return $1 + $1;\n        });\n    }\n\n    color = color.substring(1).toUpperCase();\n\n    if (color.length < 8) {\n        color = \"FF\" + color;\n    }\n\n    return color;\n}\n\nvar Workbook = function Workbook(options) {\n      var this$1 = this;\n\n      this.options = options || {};\n      this._strings = {\n          indexes: {},\n          count: 0,\n          uniqueCount: 0\n      };\n      this._styles = [];\n      this._borders = [];\n      this._images = this.options.images;\n      this._imgId = 0;\n\n      this._sheets = map(this.options.sheets || [], function (options, i) {\n          options.defaults = this$1.options;\n          options.sheetIndex = i + 1;\n          return new Worksheet(options, this$1._strings, this$1._styles, this$1._borders);\n      });\n  };\n\n  Workbook.prototype.imageFilename = function imageFilename (mimeType) {\n      var id = ++this._imgId;\n      switch (mimeType) {\n        case \"image/jpg\":\n        case \"image/jpeg\":\n          return (\"image\" + id + \".jpg\");\n        case \"image/png\":\n          return (\"image\" + id + \".png\");\n        case \"image/gif\":\n          return (\"image\" + id + \".gif\");\n        default:\n          return (\"image\" + id + \".bin\"); // XXX: anything better to do here?\n      }\n  };\n\n  Workbook.prototype.toZIP = function toZIP () {\n        var this$1 = this;\n\n      var zip = createZip();\n\n      var docProps = zip.folder(\"docProps\");\n\n      docProps.file(\"core.xml\", CORE({\n          creator: this.options.creator || \"Kendo UI\",\n          lastModifiedBy: this.options.creator || \"Kendo UI\",\n          created: this.options.date || new Date().toJSON(),\n          modified: this.options.date || new Date().toJSON()\n      }));\n\n      var sheetCount = this._sheets.length;\n\n      docProps.file(\"app.xml\", APP({ sheets: this._sheets }));\n\n      var rels = zip.folder(\"_rels\");\n      rels.file(\".rels\", RELS);\n\n      var xl = zip.folder(\"xl\");\n\n      var xlRels = xl.folder(\"_rels\");\n      xlRels.file(\"workbook.xml.rels\", WORKBOOK_RELS({ count: sheetCount }));\n\n      if (this._images) {\n          var media = xl.folder(\"media\");\n          Object.keys(this._images).forEach(function (id) {\n              var img = this$1._images[id];\n              var filename = this$1.imageFilename(img.type);\n              media.file(filename, img.data);\n              img.target = \"../media/\" + filename;\n          });\n      }\n\n      var sheetIds = {};\n      xl.file(\"workbook.xml\", WORKBOOK({\n          sheets: this._sheets,\n          filterNames: map(this._sheets, function(sheet, index) {\n              var options = sheet.options;\n              var sheetName = (options.name || options.title || \"Sheet\" + (index + 1));\n              sheetIds[sheetName.toLowerCase()] = index;\n              var filter = options.filter;\n              if (filter) {\n                  if (filter.ref) {\n                      // spreadsheet provides `ref`\n                      var a = filter.ref.split(\":\");\n                      var from = parseRef(a[0]);\n                      var to = parseRef(a[1]);\n                      return {\n                          localSheetId: index,\n                          name: sheetName,\n                          from: $ref(from.row, from.col),\n                          to: $ref(to.row, to.col)\n                      };\n                  } else if (typeof filter.from !== \"undefined\" && typeof filter.to !== \"undefined\") {\n                      // grid does this\n                      return {\n                          localSheetId: index,\n                          name: sheetName,\n                          from: $ref(filterRowIndex(options), filter.from),\n                          to: $ref(filterRowIndex(options), filter.to)\n                      };\n                  }\n              }\n          }),\n          userNames: map(this.options.names || [], function(def) {\n              return {\n                  name: def.localName,\n                  localSheetId: def.sheet ? sheetIds[def.sheet.toLowerCase()] : null,\n                  value: def.value,\n                  hidden: def.hidden\n              };\n          })\n      }));\n\n      var worksheets = xl.folder(\"worksheets\");\n      var drawings = xl.folder(\"drawings\");\n      var drawingsRels = drawings.folder(\"_rels\");\n      var sheetRels = worksheets.folder(\"_rels\");\n      var commentFiles = [];\n      var drawingFiles = [];\n      var hasDisabledCells = false;\n\n      for (var idx = 0; idx < sheetCount; idx++) {\n          var sheet = this$1._sheets[idx];\n          var sheetName = \"sheet\" + (idx + 1) + \".xml\";\n          var sheetXML = sheet.toXML(idx); // must be called before relsToXML\n          var relsXML = sheet.relsToXML();\n          var commentsXML = sheet.commentsXML();\n          var legacyDrawing = sheet.legacyDrawing();\n          var drawingsXML = sheet.drawingsXML(this$1._images);\n\n          if (sheet._hasDisabledCells) {\n              hasDisabledCells = true;\n          }\n\n          if (relsXML) {\n              sheetRels.file(sheetName + \".rels\", relsXML);\n          }\n          if (commentsXML) {\n              var name = \"comments\" + (sheet.options.sheetIndex) + \".xml\";\n              xl.file(name, commentsXML);\n              commentFiles.push(name);\n          }\n          if (legacyDrawing) {\n              drawings.file((\"vmlDrawing\" + (sheet.options.sheetIndex) + \".vml\"), legacyDrawing);\n          }\n          if (drawingsXML) {\n              var name$1 = \"drawing\" + (sheet.options.sheetIndex) + \".xml\";\n              drawings.file(name$1, drawingsXML.main);\n              drawingsRels.file((name$1 + \".rels\"), drawingsXML.rels);\n              drawingFiles.push(name$1);\n          }\n\n          worksheets.file(sheetName, sheetXML);\n      }\n\n      var borders = map(this._borders, parseJSON);\n\n      var styles = map(this._styles, parseJSON);\n\n      var hasFont = function(style) {\n          return style.underline || style.bold || style.italic || style.color || style.fontFamily || style.fontSize;\n      };\n\n      var convertFontSize = function(value) {\n          var fontInPx = Number(value);\n          var fontInPt;\n\n          if (fontInPx) {\n              fontInPt = fontInPx * 3 / 4;\n          }\n\n          return fontInPt;\n      };\n\n      var fonts = map(styles, function(style) {\n          if (style.fontSize) {\n              style.fontSize = convertFontSize(style.fontSize);\n          }\n\n          if (style.color) {\n              style.color = convertColor(style.color);\n          }\n\n          if (hasFont(style)) {\n              return style;\n          }\n      });\n\n      var formats = map(styles, function(style) {\n          if (style.format && defaultFormats[style.format] === undefined) {\n              return style;\n          }\n      });\n\n      var fills = map(styles, function(style) {\n          if (style.background) {\n              style.background = convertColor(style.background);\n              return style;\n          }\n      });\n\n      xl.file(\"styles.xml\", STYLES({\n          fonts: fonts,\n          fills: fills,\n          formats: formats,\n          borders: borders,\n          styles: map(styles, function(style) {\n              var result = {};\n\n              if (hasFont(style)) {\n                  result.fontId = indexOf(style, fonts) + 1;\n              }\n\n              if (style.background) {\n                  result.fillId = indexOf(style, fills) + 2;\n              }\n\n              result.textAlign = style.textAlign;\n              result.indent = style.indent;\n              result.verticalAlign = style.verticalAlign;\n              result.wrap = style.wrap;\n              result.borderId = style.borderId;\n\n              if (style.format) {\n                  if (defaultFormats[style.format] !== undefined) {\n                      result.numFmtId = defaultFormats[style.format];\n                  } else {\n                      result.numFmtId = 165 + indexOf(style, formats);\n                  }\n              }\n\n              if (hasDisabledCells) {\n                  result.disabled = !!style.disabled;\n              }\n\n              return result;\n          })\n      }));\n\n      xl.file(\"sharedStrings.xml\", SHARED_STRINGS(this._strings));\n\n      zip.file(\"[Content_Types].xml\", CONTENT_TYPES({\n          sheetCount: sheetCount,\n          commentFiles: commentFiles,\n          drawingFiles: drawingFiles\n      }));\n\n      return zip;\n  };\n\n  Workbook.prototype.toDataURL = function toDataURL () {\n      var zip = this.toZIP();\n\n      return zip.generateAsync ? zip.generateAsync(DATA_URL_OPTIONS).then(toDataURI) : toDataURI(zip.generate(DATA_URL_OPTIONS));\n  };\n\n  Workbook.prototype.toBlob = function toBlob () {\n      var zip = this.toZIP();\n      if (zip.generateAsync) {\n          return zip.generateAsync(BLOB_OPTIONS);\n      }\n      return new Blob([ zip.generate(ARRAYBUFFER_OPTIONS) ], { type: MIME_TYPE });\n  };\n\nfunction borderStyle(width) {\n    var alias = \"thin\";\n\n    if (width === 2) {\n        alias = \"medium\";\n    } else if (width === 3) {\n        alias = \"thick\";\n    }\n\n    return alias;\n}\n\nfunction borderSideTemplate(name, style) {\n    var result = \"\";\n\n    if (style) {\n        result += \"<\" + name + \" style=\\\"\" + borderStyle(style.size) + \"\\\">\";\n        if (style.color) {\n            result += \"<color rgb=\\\"\" + convertColor(style.color) + \"\\\"/>\";\n        }\n        result += \"</\" + name + \">\";\n    }\n\n    return result;\n}\n\nfunction borderTemplate(border) {\n    var diag = border.diagonal ? border.diagonal.type : 0;\n    return (\"<border \" + (diag & 2 ? 'diagonalUp=\"true\"' : '') + \" \" + (diag & 1 ? 'diagonalDown=\"true\"' : '') + \">\\n      \" + (borderSideTemplate(\"left\", border.left)) + \"\\n      \" + (borderSideTemplate(\"right\", border.right)) + \"\\n      \" + (borderSideTemplate(\"top\", border.top)) + \"\\n      \" + (borderSideTemplate(\"bottom\", border.bottom)) + \"\\n      \" + (borderSideTemplate(\"diagonal\", border.diagonal)) + \"\\n    </border>\");\n}\n\nvar EMPTY_CELL = {};\nfunction inflate(rows, mergedCells) {\n    var rowData = [];\n    var rowsByIndex = [];\n\n    indexRows(rows, function(row, index) {\n        var data = {\n            _source: row,\n            index: index,\n            height: row.height,\n            level: row.level,\n            cells: []\n        };\n\n        rowData.push(data);\n        rowsByIndex[index] = data;\n    });\n\n    var sorted = sortByIndex(rowData).slice(0);\n    var ctx = {\n        rowData: rowData,\n        rowsByIndex: rowsByIndex,\n        mergedCells: mergedCells\n    };\n\n    for (var i = 0; i < sorted.length; i++) {\n        fillCells(sorted[i], ctx);\n        delete sorted[i]._source;\n    }\n\n    return sortByIndex(rowData);\n}\n\nfunction indexRows(rows, callback) {\n    for (var i = 0; i < rows.length; i++) {\n        var row = rows[i];\n        if (!row) {\n            continue;\n        }\n\n        var index = row.index;\n        if (typeof index !== \"number\") {\n            index = i;\n        }\n\n        callback(row, index);\n    }\n}\n\nfunction sortByIndex(items) {\n    return items.sort(function(a, b) {\n        return a.index - b.index;\n    });\n}\n\nfunction pushUnique(array, el) {\n    if (array.indexOf(el) < 0) {\n        array.push(el);\n    }\n}\n\nfunction getSpan(mergedCells, ref) {\n    for (var i = 0; i < mergedCells.length; ++i) {\n        var range = mergedCells[i];\n        var a = range.split(\":\");\n        var topLeft = a[0];\n        if (topLeft === ref) {\n            var bottomRight = a[1];\n            topLeft = parseRef(topLeft);\n            bottomRight = parseRef(bottomRight);\n            return {\n                rowSpan: bottomRight.row - topLeft.row + 1,\n                colSpan: bottomRight.col - topLeft.col + 1\n            };\n        }\n    }\n}\n\nfunction parseRef(ref) {\n    function getcol(str) {\n        var upperStr = str.toUpperCase();\n        var col = 0;\n        for (var i = 0; i < upperStr.length; ++i) {\n            col = col * 26 + upperStr.charCodeAt(i) - 64;\n        }\n        return col - 1;\n    }\n\n    function getrow(str) {\n        return parseInt(str, 10) - 1;\n    }\n\n    var m = /^([a-z]+)(\\d+)$/i.exec(ref);\n    return {\n        row: getrow(m[2]),\n        col: getcol(m[1])\n    };\n}\n\nfunction pixelsToExcel(px) {\n    return Math.round(px * 9525);\n}\n\nfunction fillCells(data, ctx) {\n    var row = data._source;\n    var rowIndex = data.index;\n    var cells = row.cells;\n    var cellData = data.cells;\n\n    if (!cells) {\n        return;\n    }\n\n    for (var i = 0; i < cells.length; i++) {\n        var cell = cells[i] || EMPTY_CELL;\n\n        var rowSpan = cell.rowSpan || 1;\n        var colSpan = cell.colSpan || 1;\n\n        var cellIndex = insertCell(cellData, cell);\n        var topLeftRef = ref(rowIndex, cellIndex);\n\n        if (rowSpan === 1 && colSpan === 1) {\n            // could still be merged: the spreadsheet does not send\n            // rowSpan/colSpan, but mergedCells is already populated.\n            // https://github.com/telerik/kendo-ui-core/issues/2401\n            var tmp = getSpan(ctx.mergedCells, topLeftRef);\n            if (tmp) {\n                colSpan = tmp.colSpan;\n                rowSpan = tmp.rowSpan;\n            }\n        }\n\n        spanCell(cell, cellData, cellIndex, colSpan);\n\n        if (rowSpan > 1 || colSpan > 1) {\n            pushUnique(ctx.mergedCells,\n                       topLeftRef + \":\" + ref(rowIndex + rowSpan - 1,\n                                              cellIndex + colSpan - 1));\n        }\n\n        if (rowSpan > 1) {\n            for (var ri = rowIndex + 1; ri < rowIndex + rowSpan; ri++) {\n                var nextRow = ctx.rowsByIndex[ri];\n                if (!nextRow) {\n                    nextRow = ctx.rowsByIndex[ri] = { index: ri, cells: [] };\n                    ctx.rowData.push(nextRow);\n                }\n\n                spanCell(cell, nextRow.cells, cellIndex - 1, colSpan + 1);\n            }\n        }\n    }\n}\n\nfunction insertCell(data, cell) {\n    var index;\n\n    if (typeof cell.index === \"number\") {\n        index = cell.index;\n        insertCellAt(data, cell, cell.index);\n    } else {\n        index = appendCell(data, cell);\n    }\n\n    return index;\n}\n\nfunction insertCellAt(data, cell, index) {\n    data[index] = cell;\n}\n\nfunction appendCell(data, cell) {\n    var index = data.length;\n\n    for (var i = 0; i < data.length + 1; i++) {\n        if (!data[i]) {\n            data[i] = cell;\n            index = i;\n            break;\n        }\n    }\n\n    return index;\n}\n\nfunction spanCell(cell, row, startIndex, colSpan) {\n    for (var i = 1; i < colSpan; i++) {\n        var tmp = {\n            borderTop    : cell.borderTop,\n            borderRight  : cell.borderRight,\n            borderBottom : cell.borderBottom,\n            borderLeft   : cell.borderLeft\n        };\n        insertCellAt(row, tmp, startIndex + i);\n    }\n}\n\nvar SPREADSHEET_FILTERS = function (ref$1) {\n  var ref = ref$1.ref;\n  var columns = ref$1.columns;\n  var generators = ref$1.generators;\n\n  return (\"\\n<autoFilter ref=\\\"\" + ref + \"\\\">\\n  \" + (foreach(columns, function (col) { return (\"\\n    <filterColumn colId=\\\"\" + (col.index) + \"\\\">\\n      \" + (generators[col.filter](col)) + \"\\n    </filterColumn>\\n  \"); })) + \"\\n</autoFilter>\");\n};\n\nvar SPREADSHEET_CUSTOM_FILTER = function (ref) {\n  var logic = ref.logic;\n  var criteria = ref.criteria;\n\n  return (\"\\n<customFilters \" + (logic === 'and' ? 'and=\"1\"' : '') + \">\\n\" + (foreach(criteria, function (f) {\n    var op = spreadsheetFilters.customOperator(f);\n    var val = spreadsheetFilters.customValue(f);\n    return (\"<customFilter \" + (op ? (\"operator=\\\"\" + op + \"\\\"\") : '') + \" val=\\\"\" + val + \"\\\"/>\");\n})) + \"\\n</customFilters>\");\n};\n\nvar SPREADSHEET_DYNAMIC_FILTER = function (ref) {\n  var type = ref.type;\n\n  return (\"<dynamicFilter type=\\\"\" + (spreadsheetFilters.dynamicFilterType(type)) + \"\\\" />\");\n};\n\nvar SPREADSHEET_TOP_FILTER = function (ref) {\n  var type = ref.type;\n  var value = ref.value;\n\n  return (\"<top10 percent=\\\"\" + (/percent$/i.test(type) ? 1 : 0) + \"\\\"\\n       top=\\\"\" + (/^top/i.test(type) ? 1 : 0) + \"\\\"\\n       val=\\\"\" + value + \"\\\" />\");\n};\n\nvar SPREADSHEET_VALUE_FILTER = function (ref) {\n    var blanks = ref.blanks;\n    var values = ref.values;\n\n    return (\"<filters \" + (blanks ? 'blank=\"1\"' : '') + \">\\n    \" + (foreach(values, function (value) { return (\"\\n      <filter val=\\\"\" + value + \"\\\" />\"); })) + \"\\n  </filters>\");\n};\n\nfunction spreadsheetFilters(filter) {\n    return SPREADSHEET_FILTERS({\n        ref: filter.ref,\n        columns: filter.columns,\n        generators: {\n            custom  : SPREADSHEET_CUSTOM_FILTER,\n            dynamic : SPREADSHEET_DYNAMIC_FILTER,\n            top     : SPREADSHEET_TOP_FILTER,\n            value   : SPREADSHEET_VALUE_FILTER\n        }\n    });\n}\n\nspreadsheetFilters.customOperator = function(f) {\n    return {\n        eq  : \"equal\",\n        gt  : \"greaterThan\",\n        gte : \"greaterThanOrEqual\",\n        lt  : \"lessThan\",\n        lte : \"lessThanOrEqual\",\n        ne  : \"notEqual\",\n\n        // These are not in the spec, but seems to be how Excel does\n        // it (see customValue below).  For the non-negated versions,\n        // the operator attribute is missing completely.\n        doesnotstartwith: \"notEqual\",\n        doesnotendwith: \"notEqual\",\n        doesnotcontain: \"notEqual\",\n        doesnotmatch: \"notEqual\"\n    }[f.operator.toLowerCase()];\n};\n\nfunction quoteSheet(name) {\n    if (/^\\'/.test(name)) { // assume already quoted, the Spreadsheet does it.\n        return name;\n    }\n    if (/^[a-z_][a-z0-9_]*$/i.test(name)) {\n        return name;        // no need to quote it\n    }\n    return \"'\" + name.replace(/\\x27/g, \"\\\\'\") + \"'\";\n}\n\nspreadsheetFilters.customValue = function(f) {\n    function esc(str) {\n        return str.replace(/([*?])/g, \"~$1\");\n    }\n\n    switch (f.operator.toLowerCase()) {\n        case \"startswith\":\n        case \"doesnotstartwith\":\n            return esc(f.value) + \"*\";\n\n        case \"endswith\":\n        case \"doesnotendwith\":\n            return \"*\" + esc(f.value);\n\n        case \"contains\":\n        case \"doesnotcontain\":\n            return \"*\" + esc(f.value) + \"*\";\n\n        default:\n            return f.value;\n    }\n};\n\nspreadsheetFilters.dynamicFilterType = function(type) {\n    return {\n        quarter1  : \"Q1\",\n        quarter2  : \"Q2\",\n        quarter3  : \"Q3\",\n        quarter4  : \"Q4\",\n        january   : \"M1\",\n        february  : \"M2\",\n        march     : \"M3\",\n        april     : \"M4\",\n        may       : \"M5\",\n        june      : \"M6\",\n        july      : \"M7\",\n        august    : \"M8\",\n        september : \"M9\",\n        october   : \"M10\",\n        november  : \"M11\",\n        december  : \"M12\"\n    }[type.toLowerCase()] || type;\n};\n\nexport {\n    Workbook,\n    Worksheet\n};\n","import JSZip from '@progress/jszip-esm';\n\nexport default function createZip() {\n    return new JSZip();\n}\n","var __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};\nimport * as React from 'react';\nimport * as ReactDOMServer from 'react-dom/server';\n/* tslint:disable align */\n/* tslint:disable:no-use-before-declare */\nvar compileTemplate = function (Template, context, updateContext) {\n    var result = function (data) {\n        updateContext(context, data);\n        var templateResult = ReactDOMServer.renderToStaticMarkup(React.createElement(Template, __assign({}, context)));\n        var parsed = Number(templateResult);\n        return isNaN(parsed)\n            ? templateResult\n            : parsed;\n    };\n    return result;\n};\nvar updateGroupHeaderContext = function (context, data) {\n    context.$implicit = context.group = data;\n    context.field = data.field;\n    context.value = data.value;\n    context.aggregates = data.aggregates;\n};\nvar updateGroupFooterContext = function (context, data) {\n    context.group = data.group;\n    context.$implicit = context.aggregates = data;\n};\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nvar updateFooterContext = function (_context, _data) { };\n/**\n * @hidden\n */\nexport var toExporterColumns = function (sourceColumns) {\n    var exporterColumns = [];\n    var columnIndex = 0;\n    var addColumns = function (columns, result, level) {\n        columns.forEach(function (column) {\n            if (column.level === level) {\n                var exporterColumn = new ExporterColumn(column, columnIndex);\n                result.push(exporterColumn);\n                if (column.children && column.children.length > 1) {\n                    var children = exporterColumn.columns = [];\n                    addColumns(column.children, children, level + 1);\n                }\n                else {\n                    columnIndex++;\n                }\n            }\n        });\n    };\n    addColumns(sourceColumns, exporterColumns, 0);\n    return exporterColumns;\n};\n/**\n * @hidden\n */\nvar ExporterColumn = /** @class */ (function () {\n    function ExporterColumn(column, columnIndex) {\n        this.title = column.title;\n        this.field = column.field;\n        this.hidden = column.hidden;\n        this.locked = column.locked;\n        this.width = column.width;\n        this.headerCellOptions = column.headerCellOptions;\n        this.cellOptions = column.cellOptions;\n        this.groupHeaderCellOptions = column.groupHeaderCellOptions;\n        this.groupFooterCellOptions = column.groupFooterCellOptions;\n        this.footerCellOptions = column.footerCellOptions;\n        if (column.footer) {\n            this.footerTemplate = compileTemplate(column.footer, {\n                $implicit: column,\n                column: column,\n                columnIndex: columnIndex\n            }, updateFooterContext);\n        }\n        if (column.groupFooter) {\n            this.groupFooterTemplate = compileTemplate(column.groupFooter, {\n                column: column,\n                field: column.field\n            }, updateGroupFooterContext);\n        }\n        if (column.groupHeader) {\n            this.groupHeaderTemplate =\n                compileTemplate(column.groupHeader, {}, updateGroupHeaderContext);\n        }\n    }\n    return ExporterColumn;\n}());\nexport { ExporterColumn };\n","import { ExcelExporter, Workbook } from '@progress/kendo-ooxml';\nimport { toExporterColumns } from './ExporterColumns';\nvar getDepth = function (data) {\n    return Math.max.apply(Math, data.map(function (i) { return i.level; })) + 1;\n};\n/**\n * @hidden\n */\nexport var workbookOptions = function (options) {\n    var columns = toExporterColumns(options.columns);\n    var exporter = new ExcelExporter({\n        columns: columns,\n        data: options.data,\n        filterable: options.filterable,\n        groups: options.group,\n        paddingCellOptions: options.paddingCellOptions,\n        headerPaddingCellOptions: options.headerPaddingCellOptions,\n        hierarchy: options.hierarchy ? { depth: getDepth(options.data), itemLevel: function (item) { return item.level; } } : null,\n        collapsible: options.collapsible\n    });\n    var result = exporter.workbook();\n    result.creator = options.creator;\n    result.date = options.date;\n    result.rtl = options.dir === 'rtl';\n    return result;\n};\n/**\n * @hidden\n */\nexport var toDataURL = function (options) {\n    var workbook = new Workbook(options);\n    return workbook.toDataURL();\n};\n/**\n * @hidden\n */\nexport var isWorkbookOptions = function (value) {\n    return value && value.sheets;\n};\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n    name: '@progress/kendo-react-excel-export',\n    productName: 'KendoReact',\n    productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n    publishDate: 1642516698,\n    version: '',\n    licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var __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 __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};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { saveAs } from '@progress/kendo-file-saver';\nimport { workbookOptions, toDataURL, isWorkbookOptions } from './ooxml/workbook';\nimport * as licensing from '@progress/kendo-licensing';\nimport { packageMetadata } from './package-metadata';\nvar ExcelExport = /** @class */ (function (_super) {\n    __extends(ExcelExport, _super);\n    function ExcelExport(props) {\n        var _this = _super.call(this, props) || this;\n        _this.saveFile = function (dataURL) {\n            saveAs(dataURL, _this.props.fileName, {\n                forceProxy: _this.props.forceProxy,\n                proxyURL: _this.props.proxyURL\n            });\n        };\n        _this.extractColumns = function (children, level) {\n            if (level === void 0) { level = 0; }\n            return Array.isArray(children)\n                ? children.map(function (child) {\n                    return _this.extractChild(child, level);\n                })\n                : [children, _this.extractChild(children, level)];\n        };\n        _this.extractChild = function (child, level) {\n            if (level === void 0) { level = 0; }\n            return React.isValidElement(child)\n                ? __assign({}, child.props, { width: child.props.width && parseInt(\"\" + child.props.width, 10), level: level, children: child.props.children\n                        && _this.extractColumns(child.props.children, level + 1) }) : __assign({}, child, { level: level, children: child.children && _this.extractColumns(child.children, level + 1) });\n        };\n        _this.getExportData = function (exportData) {\n            var result;\n            if (exportData) {\n                if (Array.isArray(exportData)) {\n                    result = {\n                        data: exportData\n                    };\n                }\n                else {\n                    result = exportData;\n                }\n            }\n            else {\n                result = {\n                    data: _this.props.data,\n                    group: _this.props.group\n                };\n            }\n            return result;\n        };\n        if (typeof licensing !== 'undefined') {\n            licensing.validatePackage(packageMetadata);\n        }\n        else {\n            var message = \"License activation failed for \" + packageMetadata.name + \"\\n\";\n            message += 'The @progress/kendo-licensing script is not loaded.\\n';\n            message += \"See \" + packageMetadata.licensingDocsUrl + \" for more information.\\n\";\n            console.warn(message);\n        }\n        _this.save = _this.save.bind(_this);\n        _this.toDataURL = _this.toDataURL.bind(_this);\n        _this.workbookOptions = _this.workbookOptions.bind(_this);\n        return _this;\n    }\n    /**\n     * Saves the data to Excel.\n     *\n     * @param exportData - An optional parameter. Can be the data that will be exported or the [`WorkbookOptions`]({% slug api_excel-export_workbookoptions %}).\n     * @param columns - An optional parameter. If present, it will be used instead of the columns prop or the child column components.\n     */\n    ExcelExport.prototype.save = function (exportData, columns) {\n        var _this = this;\n        this.toDataURL(exportData, columns)\n            .then(function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            if (_this.props.onExportComplete) {\n                _this.props.onExportComplete.call(undefined, { target: _this });\n            }\n            _this.saveFile.apply(_this, args);\n        });\n    };\n    /**\n     * Returns a promise which will be resolved with the file data URI.\n     *\n     * @param exportData - The optional data or the [`WorkbookOptions`]({% slug api_excel-export_workbookoptions %}) that will be used to generate the data URI.\n     * @param externalColumns - The optional columns that will be used.\n     * @returns {Promise<string>} - The promise that will be resolved by the file data URI.\n     */\n    ExcelExport.prototype.toDataURL = function (exportData, columns) {\n        var options = isWorkbookOptions(exportData)\n            ? exportData\n            : this.workbookOptions(exportData, columns);\n        return toDataURL(options);\n    };\n    /**\n     * Based on the specified columns and data, returns [`WorkbookOptions`]({% slug api_excel-export_workbookoptions %}).\n     *\n     * @param exportData - The optional data that will be exported.\n     * @param externalColumns - The optional columns that will be used.\n     * @returns {WorkbookOptions} - The workbook options.\n     */\n    // tslint:enable:max-line-length\n    ExcelExport.prototype.workbookOptions = function (exportData, externalColumns) {\n        var currentData = this.getExportData(exportData);\n        var children = this.props.children;\n        var gridColumns = children && children.type &&\n            children.type.displayName === 'KendoReactGrid' &&\n            children.props && React.Children.toArray(children.props.children);\n        var columns = this.extractColumns(gridColumns ||\n            externalColumns ||\n            this.props.columns ||\n            React.Children.toArray(children));\n        var options = workbookOptions({\n            columns: columns,\n            data: currentData.data,\n            group: currentData.group,\n            filterable: this.props.filterable,\n            creator: this.props.creator,\n            date: this.props.date,\n            dir: this.props.dir,\n            hierarchy: this.props.hierarchy,\n            paddingCellOptions: this.props.paddingCellOptions,\n            headerPaddingCellOptions: this.props.headerPaddingCellOptions\n        });\n        return options;\n    };\n    /**\n     * @hidden\n     */\n    ExcelExport.prototype.render = function () {\n        return this.props.children || null;\n    };\n    /**\n     * @hidden\n     */\n    ExcelExport.propTypes = {\n        children: PropTypes.any,\n        columns: PropTypes.arrayOf(PropTypes.any),\n        creator: PropTypes.string,\n        data: PropTypes.any,\n        date: PropTypes.any,\n        filterable: PropTypes.bool,\n        fileName: PropTypes.string,\n        forceProxy: PropTypes.bool,\n        group: PropTypes.any,\n        headerPaddingCellOptions: PropTypes.any,\n        paddingCellOptions: PropTypes.any,\n        proxyURL: PropTypes.string,\n        dir: PropTypes.string,\n        hierarchy: PropTypes.bool,\n        collapsible: PropTypes.bool\n    };\n    /**\n     * @hidden\n     */\n    ExcelExport.defaultProps = {\n        fileName: 'Export.xlsx',\n        forceProxy: false,\n        collapsible: false\n    };\n    return ExcelExport;\n}(React.Component));\nexport default ExcelExport;\n","import React, { useState, useEffect, useContext } from 'react';\r\nimport ILicenseUsageReport from '../../model/ILicenseUsageReport'\r\nimport { Grid, GridColumn, GridSortChangeEvent } from '@progress/kendo-react-grid'\r\nimport ReportsService from '../../services/ReportsService'\r\nimport { Year } from '../../services/AppContext'\r\nimport { CompositeFilterDescriptor, filterBy, orderBy, SortDescriptor } from \"@progress/kendo-data-query\";\r\nimport { ExcelExport } from '@progress/kendo-react-excel-export';\r\n\r\ninterface ILocation {\r\n    licenseType:string;\r\n    changeExcelRef: any;\r\n    selectedReport: any\r\n}\r\n\r\nconst initialDataState = {\r\n    skip: 0,\r\n    take: 10,\r\n};\r\n\r\nconst initialFilter: CompositeFilterDescriptor = {\r\n    logic: \"and\",\r\n    filters: [],\r\n};\r\n\r\nconst initialSort: Array<SortDescriptor> = [\r\n    { field: \"totalCourses\", dir: \"desc\" },\r\n];\r\n\r\nexport default function LicenseUsageReport(props: ILocation) {\r\n    const { orginalSchoolYear } = useContext(Year);\r\n    const [filter, setFilter] = React.useState(initialFilter);\r\n    const [page, setPage] = React.useState(initialDataState);\r\n    const [sort, setSort] = React.useState(initialSort);\r\n    const [rowData, setRowData] = useState<ILicenseUsageReport[]>([]);\r\n    const _export = React.useRef<ExcelExport | null>(null);\r\n    const pageChange = (event: any) => {\r\n        setPage(event.page);\r\n    };\r\n\r\n    const GetLicenseUsageReport = () => {\r\n        ReportsService.GetLicenseUsageReport(+orginalSchoolYear.id,props.licenseType).then(response => {\r\n            setRowData(response.data)\r\n            props.changeExcelRef(_export)\r\n        })\r\n    }\r\n    useEffect(() => {\r\n        GetLicenseUsageReport();\r\n    }, [props.selectedReport, orginalSchoolYear.id]);\r\n\r\n    const filterReportData = (data: any, filter: any) => {\r\n        let report = rowData;\r\n        return filterBy(report, filter);\r\n      }\r\n      const onFilterChange = (e: any) => {\r\n        setPage(initialDataState)\r\n        setFilter(e.filter)\r\n      }\r\n\r\n\r\n    return (\r\n        <ExcelExport data={rowData} ref={_export} fileName={props.licenseType+\"_License_Usage_Report_\" + new Date().toDateString()}>\r\n            <Grid\r\n                data={filterReportData(orderBy(rowData, sort),filter).slice(page.skip, page.take + page.skip)}\r\n                skip={page.skip}\r\n                take={page.take}\r\n                total={rowData.length}\r\n                pageSize={page.take}\r\n                pageable={{ pageSizes: [10, 25, 50], info: true }}\r\n                onPageChange={pageChange}\r\n                sortable={true}\r\n                sort={sort}\r\n                onSortChange={(e: GridSortChangeEvent) => {\r\n                    setSort(e.sort);\r\n                }}\r\n                filterable={true}\r\n                filter={filter}\r\n                onFilterChange={onFilterChange}\r\n                style={{width:\"auto\"}}\r\n                scrollable={\"scrollable\"}>\r\n                <GridColumn field=\"studentLocationCode\"  filterable={true} width=\"180px\" title=\"Student Location\"></GridColumn>\r\n                <GridColumn field=\"studentId\" filterable={false} width=\"130px\"  title=\"Student Id\"></GridColumn>\r\n                <GridColumn field=\"firstName\" filterable={false}  title=\"First Name\"></GridColumn>\r\n                <GridColumn field=\"lastName\" filterable={false}  title=\"Last Name\"></GridColumn>\r\n                <GridColumn field=\"courseLocationCode\"  filterable={true}  width=\"180px\" title=\"Course Location\"></GridColumn>\r\n                <GridColumn field=\"vendorName\" filterable={false}  title=\"Vendor\"></GridColumn>\r\n                <GridColumn field=\"licenseType\" filterable={false}  title=\"License Type\"></GridColumn>\r\n                <GridColumn field=\"courses\" filterable={false}  title=\"Courses\" ></GridColumn>\r\n                <GridColumn field=\"licenseConsumed\" filterable={false}  title=\"License Consumed\" ></GridColumn>\r\n            </Grid>\r\n        </ExcelExport>\r\n    )\r\n}","import React, { useState, useEffect, useContext } from 'react';\r\nimport ILicenseAllocationReport from '../../model/ILicenseAllocationReport'\r\nimport { Grid, GridColumn, GridSortChangeEvent } from '@progress/kendo-react-grid'\r\nimport licenseAllocationService from '../../services/LicenseAllocation'\r\nimport { LocationContext, Year } from '../../services/AppContext'\r\nimport { CompositeFilterDescriptor, filterBy, orderBy, SortDescriptor } from \"@progress/kendo-data-query\";\r\nimport { ExcelExport } from '@progress/kendo-react-excel-export';\r\n\r\ninterface ILocation {\r\n  id: string,\r\n  changeExcelRef: any\r\n}\r\n\r\nconst initialDataState = {\r\n  skip: 0,\r\n  take: 10,\r\n};\r\n\r\nconst initialFilter: CompositeFilterDescriptor = {\r\n  logic: \"and\",\r\n  filters: [],\r\n};\r\nconst initialSort: Array<SortDescriptor> = [\r\n  { field: \"quantityAssigned\", dir: \"desc\" },\r\n];\r\n\r\nexport default function LicenseAllocationReport(props: ILocation) {\r\n  const { locationCode } = useContext(LocationContext);\r\n  const { orginalSchoolYear } = useContext(Year);\r\n  const [page, setPage] = React.useState(initialDataState);\r\n  const [filter, setFilter] = React.useState(initialFilter);\r\n  const [sort, setSort] = React.useState(initialSort);\r\n  const [rowData, setRowData] = useState<ILicenseAllocationReport[]>([]);\r\n  const _export = React.useRef<ExcelExport | null>(null);\r\n\r\n  const pageChange = (event: any) => {\r\n    setPage(event.page);\r\n  };\r\n\r\n\r\n\r\n  const GetSchoolLicenseUsageReportForSelectedSchool = () => {\r\n    licenseAllocationService.GetSchoolLicenseUsageReport(locationCode, orginalSchoolYear.id).then(response => {\r\n      setRowData(response.data)\r\n      props.changeExcelRef(_export)\r\n    })\r\n  }\r\n\r\n  const GetSchoolLicenseUsageReportForAllSchools = () => {\r\n    licenseAllocationService.GetSchoolLicenseUsageReport(props.id, orginalSchoolYear.id).then(response => {\r\n      setRowData(response.data)\r\n      props.changeExcelRef(_export)\r\n    })\r\n  }\r\n\r\n  const GetSchoolLicenseUsageReport = () => {\r\n    if (props.id != \"AllSchools\") {\r\n      GetSchoolLicenseUsageReportForSelectedSchool()\r\n    } else {\r\n      GetSchoolLicenseUsageReportForAllSchools();\r\n\r\n    }\r\n  }\r\n\r\n\r\n  const onFilterChange = (e: any) => {\r\n    setPage(initialDataState)\r\n    setFilter(e.filter)\r\n  }\r\n\r\n  const getQuantityAllocated = (props: any) => {\r\n    if (props.dataItem.unlimittedQuantityAllocated) {\r\n      return <td>Unlimited</td>\r\n    } else {\r\n      return <td>{props.dataItem.quantityAllocated}</td>\r\n    }\r\n  }\r\n\r\n  useEffect(() => {\r\n    GetSchoolLicenseUsageReport();\r\n  }, [locationCode, orginalSchoolYear.id, props.id]);\r\n\r\n\r\n  return (\r\n    <ExcelExport data={rowData} ref={_export} fileName={\"License_Allocation_Report\" + ' ' + new Date().toDateString()}>\r\n      <Grid\r\n        data={filterBy(orderBy(rowData, sort), filter).slice(page.skip, page.take + page.skip)}\r\n        skip={page.skip}\r\n        take={page.take}\r\n        total={rowData.length}\r\n        pageSize={page.take}\r\n        pageable={{ pageSizes: [10, 25, 50 , 100], info: true }}\r\n        onPageChange={pageChange}\r\n        sortable={true}\r\n        sort={sort}\r\n        onSortChange={(e: GridSortChangeEvent) => {\r\n          if (e.sort.length === 0) {\r\n            if (sort.length != 0 && sort[0].dir == \"asc\") {\r\n              setSort([{ field: \"quantityAssigned\", dir: \"desc\" }])\r\n            } else {\r\n              setSort([{ field: \"quantityAssigned\", dir: \"asc\" }])\r\n            }\r\n          } else {\r\n            setSort(e.sort);\r\n          }\r\n\r\n        }}\r\n        filterable={props.id != \"AllSchools\" ? false : true}\r\n        filter={filter}\r\n        onFilterChange={onFilterChange}\r\n        scrollable={\"none\"}>\r\n        <GridColumn field=\"district\" filterable={false} title=\"District\"></GridColumn>\r\n        <GridColumn field=\"locationCode\" filterable={props.id != \"AllSchools\" ? false : true} title=\"School Location\"></GridColumn>\r\n        <GridColumn field=\"schoolName\" filterable={false} title=\"School Name\"></GridColumn>\r\n        <GridColumn field=\"vendorName\" filterable={false} title=\"Vendor Name\"></GridColumn>\r\n        <GridColumn field=\"quantityAllocated\" cell={getQuantityAllocated} filterable={false} title=\"Quantity Allocated\" ></GridColumn>\r\n        <GridColumn field=\"quantityAssigned\" filterable={false} title=\"Quantity Assigned\"></GridColumn>\r\n      </Grid>\r\n    </ExcelExport>\r\n  )\r\n}","import React, { useState, useEffect, useContext } from 'react';\r\nimport IPublishedCoursesReport from '../../model/IPublishedCoursesReport'\r\nimport { Grid, GridColumn, GridSortChangeEvent } from '@progress/kendo-react-grid'\r\nimport ReportsService from '../../services/ReportsService'\r\nimport { Year } from '../../services/AppContext'\r\nimport { CompositeFilterDescriptor, filterBy, orderBy, SortDescriptor } from \"@progress/kendo-data-query\";\r\nimport { ExcelExport } from '@progress/kendo-react-excel-export';\r\n\r\n\r\ninterface ILocation {\r\n    changeExcelRef: any;\r\n    selectedReport: any\r\n}\r\n\r\nconst initialDataState = {\r\n    skip: 0,\r\n    take: 10,\r\n};\r\n\r\n\r\n\r\nconst initialFilter: CompositeFilterDescriptor = {\r\n    logic: \"and\",\r\n    filters: [],\r\n};\r\n\r\nconst initialSort: Array<SortDescriptor> = [\r\n    { field: \"totalCourses\", dir: \"desc\" },\r\n];\r\n\r\nexport default function PublishedCoursesReport(props: ILocation) {\r\n    const { orginalSchoolYear } = useContext(Year);\r\n    const [page, setPage] = React.useState(initialDataState);\r\n    const [filter, setFilter] = React.useState(initialFilter);\r\n    const [sort, setSort] = React.useState(initialSort);\r\n    const [rowData, setRowData] = useState<IPublishedCoursesReport[]>([]);\r\n    const _export = React.useRef<ExcelExport | null>(null);\r\n\r\n    const pageChange = (event: any) => {\r\n        setPage(event.page);\r\n    };\r\n\r\n\r\n    const onFilterChange = (e: any) => {\r\n        setPage(initialDataState)\r\n        setFilter(e.filter)\r\n    }\r\n\r\n    const GetPublishedCoursesReport = () => {\r\n        ReportsService.GetPublishedCoursesReport(+orginalSchoolYear.id).then(response => {\r\n            setRowData(response.data)\r\n            props.changeExcelRef(_export)\r\n        })\r\n    }\r\n    useEffect(() => {\r\n        GetPublishedCoursesReport();\r\n    }, [props.selectedReport, orginalSchoolYear.id]);\r\n\r\n\r\n    return (\r\n        <ExcelExport data={rowData} ref={_export} fileName={\"Published_Courses_Report\" + ' ' + new Date().toDateString()}>\r\n            <Grid\r\n                data={filterBy(orderBy(rowData, sort), filter).slice(page.skip, page.take + page.skip)}\r\n                skip={page.skip}\r\n                take={page.take}\r\n                total={rowData.length}\r\n                pageSize={page.take}\r\n                pageable={{ pageSizes: [10, 25, 50, 100], info: true }}\r\n                onPageChange={pageChange}\r\n                sortable={true}\r\n                sort={sort}\r\n                onSortChange={(e: GridSortChangeEvent) => {\r\n                    if (e.sort.length === 0) {\r\n                        if (sort.length != 0 && sort[0].dir == \"asc\") {\r\n                            setSort([{ field: \"totalCourses\", dir: \"desc\" }])\r\n                        } else {\r\n                            setSort([{ field: \"totalCourses\", dir: \"asc\" }])\r\n                        }\r\n                    } else {\r\n                        setSort(e.sort);\r\n                    }\r\n                }}\r\n                filterable={true}\r\n                filter={filter}\r\n                onFilterChange={onFilterChange}\r\n                scrollable={\"none\"}>\r\n                <GridColumn field=\"locationCode\" filterable={true} title=\"Location Code\"></GridColumn>\r\n                <GridColumn field=\"totalCourses\" filterable={false} title=\"Total\"></GridColumn>\r\n                <GridColumn field=\"publishedCourses\" filterable={false} title=\"Published\"></GridColumn>\r\n                <GridColumn field=\"starsPublishedCourses\" filterable={false} title=\"Stars Published\"></GridColumn>\r\n                <GridColumn field=\"manualPublishedCourses\" filterable={false} title=\"Manual Published\"></GridColumn>\r\n                <GridColumn field=\"sharedInstructionPublishedCourses\" filterable={false} title=\"Shared Instruction Published\"></GridColumn>\r\n\r\n            </Grid>\r\n        </ExcelExport>\r\n    )\r\n}","import React, { useState, useEffect, useContext } from 'react';\r\nimport ITotalCountReport from '../../model/ITotalCountReport'\r\nimport { Grid, GridColumn, GridSortChangeEvent } from '@progress/kendo-react-grid'\r\nimport ReportsService from '../../services/ReportsService'\r\nimport { Year } from '../../services/AppContext'\r\nimport { orderBy, SortDescriptor } from \"@progress/kendo-data-query\";\r\nimport { ExcelExport } from '@progress/kendo-react-excel-export';\r\n\r\ninterface GridData {\r\n    total: string,\r\n    stars: number,\r\n    manual: number,\r\n    totalCourses: number,\r\n    sharedInstructionCourses? : number\r\n}\r\n\r\n\r\ninterface ILocation {\r\n    changeExcelRef: any;\r\n    selectedReport: any\r\n}\r\n\r\nconst initialDataState = {\r\n    skip: 0,\r\n    take: 10,\r\n};\r\n\r\nconst initialSort: Array<SortDescriptor> = [\r\n    { field: \"totalCourses\", dir: \"desc\" },\r\n];\r\n\r\nexport default function TotalCountsReport(props: ILocation) {\r\n    const { orginalSchoolYear } = useContext(Year);\r\n    const [page, setPage] = React.useState(initialDataState);\r\n    const [sort, setSort] = React.useState(initialSort);\r\n    const [rowData, setRowData] = useState<GridData[]>([]);\r\n    const _export = React.useRef<ExcelExport | null>(null);\r\n\r\n    const pageChange = (event: any) => {\r\n        setPage(event.page);\r\n    };\r\n\r\n    const GetTotalCountsReport = () => {\r\n        ReportsService.GetTotalCountsReport(+orginalSchoolYear.id).then(response => {\r\n            let allData: ITotalCountReport[] = response.data\r\n            let gridData: GridData[] = [\r\n                { total: \"Total Courses\", stars: allData[0].starsCourses, manual: allData[0].manualCourses,sharedInstructionCourses : allData[0].sharedInstructionCourses ,totalCourses: allData[0].totalCourses },\r\n                { total: \"Total Teachers\", stars: allData[0].totalStarsTeachers, manual: allData[0].totalManualTeachers ,sharedInstructionCourses : allData[0].totalSharedInstructionTeachers, totalCourses: allData[0].totalTeachers },\r\n                { total: \"Total Students\", stars: allData[0].totalStarsStudents, manual: allData[0].totalManualStudents ,sharedInstructionCourses : allData[0].totalSharedInstructionStudents, totalCourses: allData[0].totalStudents },\r\n                { total: \"Unique Teachers\", stars: allData[0].totalStarsUniqueTeachers, manual: allData[0].totalManualUniqueTeachers ,sharedInstructionCourses : allData[0].totalSharedInstructionUniqueTeachers, totalCourses: allData[0].totalUniqueTeachers },\r\n                { total: \"Unique Students\", stars: allData[0].totalStarsUniqueStudents, manual: allData[0].totalManualUniqueStudents ,sharedInstructionCourses : allData[0].totalSharedInstructionUniqueStudents, totalCourses: allData[0].totalUniqueStudents },\r\n                { total: \"School Locations\", stars: 0, manual: 0, sharedInstructionCourses : 0 , totalCourses: allData[0].locationCode },\r\n            ]\r\n            setRowData(gridData)\r\n            props.changeExcelRef(_export)\r\n        })\r\n    }\r\n    useEffect(() => {\r\n        GetTotalCountsReport();\r\n    }, [props.selectedReport, orginalSchoolYear.id]);\r\n\r\n\r\n    return (\r\n        <ExcelExport data={rowData} ref={_export} fileName={\"Total_Counts_Report\" + ' ' + new Date().toDateString()}>\r\n            <Grid\r\n                data={orderBy(rowData.slice(page.skip, page.take + page.skip), sort)}\r\n                skip={page.skip}\r\n                take={page.take}\r\n                total={rowData.length}\r\n                pageSize={page.take}\r\n                pageable={{ pageSizes: [10, 25, 50], info: true }}\r\n                onPageChange={pageChange}\r\n                sortable={true}\r\n                sort={sort}\r\n                onSortChange={(e: GridSortChangeEvent) => {\r\n                    setSort(e.sort);\r\n                }}\r\n                scrollable={\"none\"}>\r\n                <GridColumn field=\"total\" title=\"\"></GridColumn>\r\n                <GridColumn field=\"stars\" title=\"Stars\"></GridColumn>\r\n                <GridColumn field=\"manual\" title=\"Manual\"></GridColumn>\r\n                <GridColumn field=\"sharedInstructionCourses\" title=\"Shared Instruction\"></GridColumn>\r\n                <GridColumn field=\"totalCourses\" title=\"Stars + Manual + Shared Instruction\"></GridColumn>\r\n            </Grid>\r\n        </ExcelExport>\r\n    )\r\n}","import React, { useState, useEffect, useContext } from 'react';\r\nimport ICourseStatusReport from '../../model/ICourseStatusReport'\r\nimport { Grid, GridColumn, GridSortChangeEvent } from '@progress/kendo-react-grid'\r\nimport ReportsService from '../../services/ReportsService'\r\nimport { Year } from '../../services/AppContext'\r\nimport { CompositeFilterDescriptor, filterBy, orderBy, SortDescriptor } from \"@progress/kendo-data-query\";\r\nimport { ExcelExport } from '@progress/kendo-react-excel-export';\r\n\r\ninterface ILocation {\r\n    changeExcelRef: any;\r\n    selectedReport: any\r\n}\r\n\r\nconst initialDataState = {\r\n    skip: 0,\r\n    take: 10,\r\n};\r\n\r\nconst initialFilter: CompositeFilterDescriptor = {\r\n    logic: \"and\",\r\n    filters: [],\r\n};\r\n\r\nconst initialSort: Array<SortDescriptor> = [\r\n    { field: \"totalCourses\", dir: \"desc\" },\r\n];\r\n\r\nexport default function CourseStatusReport(props: ILocation) {\r\n    const { orginalSchoolYear } = useContext(Year);\r\n    const [filter, setFilter] = React.useState(initialFilter);\r\n    const [page, setPage] = React.useState(initialDataState);\r\n    const [sort, setSort] = React.useState(initialSort);\r\n    const [rowData, setRowData] = useState<ICourseStatusReport[]>([]);\r\n    const _export = React.useRef<ExcelExport | null>(null);\r\n    const pageChange = (event: any) => {\r\n        setPage(event.page);\r\n    };\r\n\r\n    const GetCourseStatusReport = () => {\r\n        ReportsService.GetStatusWiseReport(+orginalSchoolYear.id).then(response => {\r\n            setRowData(response.data)\r\n            props.changeExcelRef(_export)\r\n        })\r\n    }\r\n    useEffect(() => {\r\n        GetCourseStatusReport();\r\n    }, [props.selectedReport, orginalSchoolYear.id]);\r\n\r\n    const filterReportData = (data: any, filter: any) => {\r\n        let report = rowData;\r\n        return filterBy(report, filter);\r\n      }\r\n      const onFilterChange = (e: any) => {\r\n        setPage(initialDataState)\r\n        setFilter(e.filter)\r\n      }\r\n\r\n\r\n    return (\r\n        <ExcelExport data={rowData} ref={_export} fileName={\"Courses_Status_Report\" + ' ' + new Date().toDateString()}>\r\n            <Grid\r\n                data={filterReportData(orderBy(rowData, sort),filter).slice(page.skip, page.take + page.skip)}\r\n                skip={page.skip}\r\n                take={page.take}\r\n                total={rowData.length}\r\n                pageSize={page.take}\r\n                pageable={{ pageSizes: [10, 25, 50], info: true }}\r\n                onPageChange={pageChange}\r\n                sortable={true}\r\n                sort={sort}\r\n                onSortChange={(e: GridSortChangeEvent) => {\r\n                    setSort(e.sort);\r\n                }}\r\n                filterable={true}\r\n                filter={filter}\r\n                onFilterChange={onFilterChange}\r\n                style={{width:\"auto\"}}\r\n                scrollable={\"scrollable\"}>\r\n                <GridColumn field=\"locationCode\" width=\"180px\" filterable={true} title=\"School\"></GridColumn>\r\n                <GridColumn field=\"totalCourses\" filterable={false} title=\"Total Courses\"></GridColumn>\r\n                <GridColumn field=\"newCourses\" filterable={false}  title=\"New\"></GridColumn>\r\n                <GridColumn field=\"publishedCourses\" filterable={false}  title=\"Published\"></GridColumn>\r\n                <GridColumn field=\"editedCourses\" filterable={false}  title=\"Edited\" ></GridColumn>\r\n                <GridColumn field=\"closedCourses\" filterable={false}  title=\"Closed\"></GridColumn>\r\n                <GridColumn field=\"starsCourses\" filterable={false}  title=\"Stars\"></GridColumn>\r\n                <GridColumn field=\"manualCourses\" filterable={false}  title=\"Manual\"></GridColumn>\r\n                <GridColumn field=\"sharedCourses\" filterable={false}  title=\"Shared\"></GridColumn>\r\n                <GridColumn field=\"totalStudents\" filterable={false}  title=\"Students\" ></GridColumn>\r\n                <GridColumn field=\"totalTeachers\" filterable={false}  title=\"Teachers\"></GridColumn>\r\n            </Grid>\r\n        </ExcelExport>\r\n    )\r\n}","import React, { useState, useEffect, useContext } from 'react';\r\nimport ILicenseTransferHistoryReport from '../../model/ILicenseTransferHistoryReport'\r\nimport { Grid, GridColumn, GridSortChangeEvent } from '@progress/kendo-react-grid'\r\nimport ReportsService from '../../services/ReportsService'\r\nimport { Year } from '../../services/AppContext'\r\nimport { CompositeFilterDescriptor, filterBy, orderBy, SortDescriptor } from \"@progress/kendo-data-query\";\r\nimport { ExcelExport } from '@progress/kendo-react-excel-export';\r\nimport Moment from 'moment';\r\n\r\ninterface ILocation {\r\n    changeExcelRef: any;\r\n    selectedReport: any\r\n}\r\n\r\nconst initialDataState = {\r\n    skip: 0,\r\n    take: 10,\r\n};\r\n\r\nconst initialFilter: CompositeFilterDescriptor = {\r\n    logic: \"and\",\r\n    filters: [],\r\n};\r\n\r\nconst initialSort: Array<SortDescriptor> = [\r\n    { field: \"license\", dir: \"desc\" },\r\n];\r\n\r\nexport default function LicenseTransferHistoryReport(props: ILocation) {\r\n    const { orginalSchoolYear } = useContext(Year);\r\n    const [filter, setFilter] = React.useState(initialFilter);\r\n    const [page, setPage] = React.useState(initialDataState);\r\n    const [sort, setSort] = React.useState(initialSort);\r\n    const [rowData, setRowData] = useState<ILicenseTransferHistoryReport[]>([]);\r\n    const _export = React.useRef<ExcelExport | null>(null);\r\n    const pageChange = (event: any) => {\r\n        setPage(event.page);\r\n    };\r\n\r\n    const GetLicenseTransferHistoryReport = () => {\r\n        ReportsService.GetLicenseTransferHistoryReport(+orginalSchoolYear.id).then(response => {\r\n            response.data.map((s:any)=>{\r\n              s.date = Moment(s.date).format('YYYY-MM-DD')\r\n            })\r\n            setRowData(response.data)\r\n            props.changeExcelRef(_export)\r\n        })\r\n    }\r\n    useEffect(() => {\r\n        GetLicenseTransferHistoryReport();\r\n    }, [props.selectedReport, orginalSchoolYear.id]);\r\n\r\n    const filterReportData = (data: any, filter: any) => {\r\n        let report = rowData;\r\n        return filterBy(report, filter);\r\n      }\r\n      const onFilterChange = (e: any) => {\r\n        setPage(initialDataState)\r\n        setFilter(e.filter)\r\n      }\r\n\r\n\r\n    return (\r\n        <ExcelExport data={rowData} ref={_export} fileName={\"License_Transfer_History\" + ' ' + new Date().toDateString()}>\r\n            <Grid\r\n                data={filterReportData(orderBy(rowData, sort),filter).slice(page.skip, page.take + page.skip)}\r\n                skip={page.skip}\r\n                take={page.take}\r\n                total={rowData.length}\r\n                pageSize={page.take}\r\n                pageable={{ pageSizes: [10, 25, 50], info: true }}\r\n                onPageChange={pageChange}\r\n                sortable={true}\r\n                sort={sort}\r\n                onSortChange={(e: GridSortChangeEvent) => {\r\n                    setSort(e.sort);\r\n                }}\r\n                filterable={true}\r\n                filter={filter}\r\n                onFilterChange={onFilterChange}\r\n                style={{width:\"auto\"}}\r\n                scrollable={\"scrollable\"}>\r\n                <GridColumn field=\"locationFrom\" width=\"180px\" filterable={true} title=\"From Location\"></GridColumn>\r\n                <GridColumn field=\"locationTo\" filterable={true} title=\"To Location\"></GridColumn>\r\n                <GridColumn field=\"vendor\" filterable={true}  title=\"Vendor\"></GridColumn>\r\n                <GridColumn field=\"license\" filterable={false}  title=\"License\"></GridColumn>\r\n                <GridColumn field=\"transferBy\" filterable={false}  title=\"Transfer By\" ></GridColumn>\r\n                <GridColumn field=\"date\" filterable={false}  title=\"Date\"></GridColumn>\r\n            </Grid>\r\n        </ExcelExport>\r\n    )\r\n}","import React, { useState, useEffect, useContext } from 'react';\r\nimport IDailyReport from '../../model/IDailyReport'\r\nimport { Grid, GridColumn, GridSortChangeEvent } from '@progress/kendo-react-grid'\r\nimport ReportsService from '../../services/ReportsService'\r\nimport { orderBy, SortDescriptor } from \"@progress/kendo-data-query\";\r\nimport { ExcelExport } from '@progress/kendo-react-excel-export';\r\n\r\n\r\ninterface ILocation {\r\n    changeExcelRef: any;\r\n    selectedReport: any\r\n}\r\n\r\nconst initialDataState = {\r\n    skip: 0,\r\n    take: 10,\r\n};\r\n\r\nconst initialSort: Array<SortDescriptor> = [\r\n    { field: \"courses\", dir: \"desc\" },\r\n];\r\n\r\nexport default function DailyReport(props: ILocation) {\r\n    const [page, setPage] = React.useState(initialDataState);\r\n    const [sort, setSort] = React.useState(initialSort);\r\n    const [rowData, setRowData] = useState<IDailyReport[]>([]);\r\n    const _export = React.useRef<ExcelExport | null>(null);\r\n\r\n    const pageChange = (event: any) => {\r\n        setPage(event.page);\r\n    };\r\n\r\n    const GetDailyReport = () => {\r\n        ReportsService.GetDailyReport().then(response => {\r\n            setRowData(response.data)\r\n            props.changeExcelRef(_export)\r\n        })\r\n    }\r\n    useEffect(() => {\r\n        GetDailyReport();\r\n    }, [props.selectedReport]);\r\n\r\n\r\n    return (\r\n        <ExcelExport data={rowData} ref={_export} fileName={\"Daily_Report\" + ' ' + new Date().toDateString()}>\r\n            <Grid\r\n                data={orderBy(rowData.slice(page.skip, page.take + page.skip), sort)}\r\n                skip={page.skip}\r\n                take={page.take}\r\n                total={rowData.length}\r\n                pageSize={page.take}\r\n                pageable={{ pageSizes: [10, 25, 50], info: true }}\r\n                onPageChange={pageChange}\r\n                sortable={true}\r\n                sort={sort}\r\n                onSortChange={(e: GridSortChangeEvent) => {\r\n                    setSort(e.sort);\r\n                }}\r\n                scrollable={\"none\"}>\r\n                <GridColumn field=\"courses\" title=\"Courses\"></GridColumn>\r\n                <GridColumn field=\"students\" title=\"Students\"></GridColumn>\r\n                <GridColumn field=\"teachers\" title=\"Teachers\"></GridColumn>\r\n            </Grid>\r\n        </ExcelExport>\r\n    )\r\n}","import React, { useState, useEffect, useContext } from 'react';\r\nimport IMissingTORReport from '../../model/IMissingTORReport'\r\nimport { Grid, GridColumn, GridSortChangeEvent } from '@progress/kendo-react-grid'\r\nimport ReportsService from '../../services/ReportsService'\r\nimport { Year } from '../../services/AppContext'\r\nimport { CompositeFilterDescriptor, filterBy, orderBy, SortDescriptor } from \"@progress/kendo-data-query\";\r\nimport { ExcelExport } from '@progress/kendo-react-excel-export';\r\n\r\ninterface ILocation {\r\n    changeExcelRef: any;\r\n    selectedReport: any\r\n}\r\n\r\nconst initialDataState = {\r\n    skip: 0,\r\n    take: 10,\r\n};\r\n\r\nconst initialFilter: CompositeFilterDescriptor = {\r\n    logic: \"and\",\r\n    filters: [],\r\n};\r\n\r\nconst initialSort: Array<SortDescriptor> = [\r\n    { field: \"totalCourses\", dir: \"desc\" },\r\n];\r\n\r\nexport default function MissingTORReport(props: ILocation) {\r\n    const { orginalSchoolYear } = useContext(Year);\r\n    const [filter, setFilter] = React.useState(initialFilter);\r\n    const [page, setPage] = React.useState(initialDataState);\r\n    const [sort, setSort] = React.useState(initialSort);\r\n    const [rowData, setRowData] = useState<IMissingTORReport[]>([]);\r\n    const _export = React.useRef<ExcelExport | null>(null);\r\n    const pageChange = (event: any) => {\r\n        setPage(event.page);\r\n    };\r\n\r\n    const GetMissingTORReport = () => {\r\n        ReportsService.GetMissingTORReport(+orginalSchoolYear.id).then(response => {\r\n            setRowData(response.data)\r\n            props.changeExcelRef(_export)\r\n        })\r\n    }\r\n    useEffect(() => {\r\n        GetMissingTORReport();\r\n    }, [props.selectedReport, orginalSchoolYear.id]);\r\n\r\n    const filterReportData = (data: any, filter: any) => {\r\n        let report = rowData;\r\n        return filterBy(report, filter);\r\n      }\r\n      const onFilterChange = (e: any) => {\r\n        setPage(initialDataState)\r\n        setFilter(e.filter)\r\n      }\r\n\r\n\r\n    return (\r\n        <ExcelExport data={rowData} ref={_export} fileName={\"Missing_TOR_Report_\" + new Date().toDateString()}>\r\n            <Grid\r\n                data={filterReportData(orderBy(rowData, sort),filter).slice(page.skip, page.take + page.skip)}\r\n                skip={page.skip}\r\n                take={page.take}\r\n                total={rowData.length}\r\n                pageSize={page.take}\r\n                pageable={{ pageSizes: [10, 25, 50], info: true }}\r\n                onPageChange={pageChange}\r\n                sortable={true}\r\n                sort={sort}\r\n                onSortChange={(e: GridSortChangeEvent) => {\r\n                    setSort(e.sort);\r\n                }}\r\n                filterable={true}\r\n                filter={filter}\r\n                onFilterChange={onFilterChange}\r\n                style={{width:\"auto\"}}\r\n                scrollable={\"scrollable\"}>\r\n                <GridColumn field=\"locationCode\"  filterable={true} width=\"180px\" title=\"Course Location\"></GridColumn>\r\n                <GridColumn field=\"courseName\" filterable={true}  title=\"Courses Missing TOR\" ></GridColumn>\r\n                <GridColumn field=\"courseStatus\" filterable={false}  title=\"Course Status\" ></GridColumn>\r\n                <GridColumn field=\"courseType\" filterable={false}  title=\"Course Type\" ></GridColumn>\r\n                <GridColumn field=\"createdOn\" filterable={false}  title=\"Created On\" ></GridColumn>\r\n            </Grid>\r\n        </ExcelExport>\r\n    )\r\n}","import * as PropTypes from 'prop-types';\n/**\n * Represents the columns of the KendoReact ExcelExport component.\n *\n * @returns null\n */\nvar ExcelExportColumn = function (_) { return null; };\nExcelExportColumn.propTypes = {\n    cellOptions: PropTypes.any,\n    field: PropTypes.string,\n    footerCellOptions: PropTypes.any,\n    footer: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n    groupFooterCellOptions: PropTypes.any,\n    groupFooter: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n    groupHeaderCellOptions: PropTypes.any,\n    groupHeader: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n    headerCellOptions: PropTypes.any,\n    hidden: PropTypes.bool,\n    level: PropTypes.number,\n    locked: PropTypes.bool,\n    title: PropTypes.string,\n    width: PropTypes.number\n};\nexport default ExcelExportColumn;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"active\", \"disabled\", \"className\", \"variant\", \"action\", \"as\", \"onClick\"];\nimport classNames from 'classnames';\nimport React, { useCallback } from 'react';\nimport AbstractNavItem from './AbstractNavItem';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n  variant: undefined,\n  active: false,\n  disabled: false\n};\nvar ListGroupItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      active = _ref.active,\n      disabled = _ref.disabled,\n      className = _ref.className,\n      variant = _ref.variant,\n      action = _ref.action,\n      as = _ref.as,\n      onClick = _ref.onClick,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'list-group-item');\n  var handleClick = useCallback(function (event) {\n    if (disabled) {\n      event.preventDefault();\n      event.stopPropagation();\n      return;\n    }\n\n    if (onClick) onClick(event);\n  }, [disabled, onClick]);\n\n  if (disabled && props.tabIndex === undefined) {\n    props.tabIndex = -1;\n    props['aria-disabled'] = true;\n  }\n\n  return /*#__PURE__*/React.createElement(AbstractNavItem, _extends({\n    ref: ref\n  }, props, {\n    // eslint-disable-next-line no-nested-ternary\n    as: as || (action ? props.href ? 'a' : 'button' : 'div'),\n    onClick: handleClick,\n    className: classNames(className, bsPrefix, active && 'active', disabled && 'disabled', variant && bsPrefix + \"-\" + variant, action && bsPrefix + \"-action\")\n  }));\n});\nListGroupItem.defaultProps = defaultProps;\nListGroupItem.displayName = 'ListGroupItem';\nexport default ListGroupItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"bsPrefix\", \"variant\", \"horizontal\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport warning from 'warning';\nimport { useUncontrolled } from 'uncontrollable';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AbstractNav from './AbstractNav';\nimport ListGroupItem from './ListGroupItem';\nvar defaultProps = {\n  variant: undefined,\n  horizontal: undefined\n};\nvar ListGroup = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var _useUncontrolled = useUncontrolled(props, {\n    activeKey: 'onSelect'\n  }),\n      className = _useUncontrolled.className,\n      initialBsPrefix = _useUncontrolled.bsPrefix,\n      variant = _useUncontrolled.variant,\n      horizontal = _useUncontrolled.horizontal,\n      _useUncontrolled$as = _useUncontrolled.as,\n      as = _useUncontrolled$as === void 0 ? 'div' : _useUncontrolled$as,\n      controlledProps = _objectWithoutPropertiesLoose(_useUncontrolled, _excluded);\n\n  var bsPrefix = useBootstrapPrefix(initialBsPrefix, 'list-group');\n  var horizontalVariant;\n\n  if (horizontal) {\n    horizontalVariant = horizontal === true ? 'horizontal' : \"horizontal-\" + horizontal;\n  } else {\n    horizontalVariant = null;\n  }\n\n  process.env.NODE_ENV !== \"production\" ? warning(!(horizontal && variant === 'flush'), '`variant=\"flush\"` and `horizontal` should not be used together.') : void 0;\n  return /*#__PURE__*/React.createElement(AbstractNav, _extends({\n    ref: ref\n  }, controlledProps, {\n    as: as,\n    className: classNames(className, bsPrefix, variant && bsPrefix + \"-\" + variant, horizontalVariant && bsPrefix + \"-\" + horizontalVariant)\n  }));\n});\nListGroup.defaultProps = defaultProps;\nListGroup.displayName = 'ListGroup';\nListGroup.Item = ListGroupItem;\nexport default ListGroup;","import React, { useState, useEffect, useContext } from 'react';\r\nimport ITeacherCreatedCourse from '../../model/ITeacherCreatedCourseReport'\r\nimport { Grid, GridColumn, GridSortChangeEvent } from '@progress/kendo-react-grid'\r\nimport reportsService from '../../services/ReportsService'\r\nimport { Year } from '../../services/AppContext'\r\nimport { CompositeFilterDescriptor, filterBy, orderBy, SortDescriptor } from \"@progress/kendo-data-query\";\r\nimport { ExcelExport, ExcelExportColumn, ExcelExportColumnGroup } from '@progress/kendo-react-excel-export';\r\nimport moment from 'moment';\r\nimport { ListGroup } from 'react-bootstrap';\r\nimport SplashScreen from '../../shared/SplashScreen';\r\n\r\n\r\ninterface IProps {\r\n    changeExcelRef: any\r\n}\r\n\r\nconst initialDataState = {\r\n    skip: 0,\r\n    take: 10,\r\n};\r\n\r\nconst initialFilter: CompositeFilterDescriptor = {\r\n    logic: \"and\",\r\n    filters: [],\r\n};\r\nconst initialSort: Array<SortDescriptor> = [\r\n    { field: \"courseName\", dir: \"asc\" },\r\n];\r\n\r\nexport default function TeacherCreatedCourseReport(props: IProps) {\r\n    const { orginalSchoolYear } = useContext(Year);\r\n    const [page, setPage] = React.useState(initialDataState);\r\n    const [filter, setFilter] = React.useState(initialFilter);\r\n    const [sort, setSort] = React.useState(initialSort);\r\n    const [isLoading, setIsLoading] = useState(true);\r\n    const [rowData, setRowData] = useState<ITeacherCreatedCourse[]>([]);\r\n    const _export = React.useRef<ExcelExport | null>(null);\r\n\r\n    const pageChange = (event: any) => {\r\n        setPage(event.page);\r\n    };\r\n\r\n\r\n\r\n\r\n\r\n    const GetTeacherCreatedCourseReport = () => {\r\n        reportsService.GetTeacherCreatedCourseReport(+orginalSchoolYear.id).then(response => {\r\n            setRowData(response.data)\r\n            props.changeExcelRef(_export)\r\n            setIsLoading(false);\r\n        }).catch((ex) => {\r\n            setIsLoading(false);\r\n\r\n        }).finally(() => {\r\n            setIsLoading(false);\r\n        })\r\n    }\r\n\r\n    const GridColumnDetails = (props: any) => {\r\n        return (\r\n            <td>\r\n                <div>\r\n                    {moment(props.dataItem.createdOn).format('MM/DD/YYYY')}\r\n                </div>\r\n            </td>\r\n        )\r\n    }\r\n\r\n    const GetILearnBadgeCssClass = (status: boolean) => {\r\n\r\n        if (status === true) {\r\n            return \"badge badge-success\"\r\n        }\r\n        else if (status === false) {\r\n            return \"badge badge-danger\"\r\n        }\r\n    }\r\n\r\n    const GridILearnCell = (props: any) => {\r\n        return (\r\n            <td >\r\n                <div className={GetILearnBadgeCssClass(props.dataItem.iLearnFlag)}>{props.dataItem.iLearnFlag ? 'Yes' : 'No'}</div>\r\n            </td>\r\n        )\r\n    }\r\n    const GridTeacherCell = (props: any) => {\r\n\r\n        return (\r\n            <td style={{ minWidth: \"300px\" }}>\r\n                <div>\r\n                    <ListGroup variant=\"flush\" >\r\n                        {props.dataItem.teachers.length && props.dataItem.teachers.map((item: any) => {\r\n\r\n                            return (<ListGroup.Item style={{ backgroundColor: \"transparent\", border: \"none\" }} key={item.ein}>{item.ein} | {item.lastName + ' ' + item.firstName + ' ' + '(' + item.teacherEmail + ')'} </ListGroup.Item>)\r\n                        })}\r\n                    </ListGroup>\r\n                </div>\r\n            </td>\r\n        )\r\n    }\r\n\r\n    const Custom = (props: any) => {\r\n\r\n        return (\r\n            <td style={{ minWidth: \"300px\" }}>\r\n                <div>\r\n                    <ListGroup variant=\"flush\" >\r\n                        {props.dataItem.teachers.length && props.dataItem.teachers.map((item: any) => {\r\n\r\n                            return (<ListGroup.Item style={{ backgroundColor: \"transparent\", border: \"none\" }} key={item.ein}>{item.ein} | {item.lastName + ' ' + item.firstName + ' ' + '(' + item.teacherEmail + ')'} </ListGroup.Item>)\r\n                        })}\r\n                    </ListGroup>\r\n                </div>\r\n            </td>\r\n        )\r\n    }\r\n\r\n\r\n    const GetStatusBadgeCssClass = (status: string) => {\r\n\r\n        if (status.toLowerCase() === \"new\") {\r\n            return \"badge badge-blue-gray\"\r\n        }\r\n        else if (status.toLowerCase() === \"edited\") {\r\n            return \"badge badge-secondary\"\r\n        }\r\n        else if (status.toLowerCase() === \"published\") {\r\n            return \"badge badge-success\"\r\n        }\r\n        else if (status.toLowerCase() === \"closed\") {\r\n            return \"badge badge-danger\"\r\n        }\r\n        else if (status.toLowerCase() === \"reopened\") {\r\n            return \"badge badge-info\"\r\n        }\r\n    }\r\n\r\n    const GridStatusCell = (props: any) => {\r\n        return (\r\n            <td >\r\n                <div className={GetStatusBadgeCssClass(props.dataItem.courseStatus)}>{props.dataItem.courseStatus}</div>\r\n            </td>\r\n        )\r\n    }\r\n\r\n    const filterReportData = (data: any, filter: any) => {\r\n        let report = rowData;\r\n        return filterBy(report, filter);\r\n    }\r\n    const onFilterChange = (e: any) => {\r\n        setPage(initialDataState)\r\n        setFilter(e.filter)\r\n    }\r\n\r\n    useEffect(() => {\r\n        GetTeacherCreatedCourseReport();\r\n    }, [orginalSchoolYear.id]);\r\n\r\n\r\n    return (\r\n        <div>\r\n            {isLoading && <div className=\"d-flex justify-content-center\"><SplashScreen /></div>}\r\n            <ExcelExport data={rowData} ref={_export} fileName={\"Teacher_Created_Course_Report\" + ' ' + new Date().toDateString()}>\r\n                <ExcelExportColumn field=\"locationCode\" title=\"School Location\"></ExcelExportColumn>\r\n                <ExcelExportColumn field=\"courseName\"  title=\"Course Name\"></ExcelExportColumn>\r\n                <ExcelExportColumn field=\"courseStatus\"  title=\"Course Status\"></ExcelExportColumn>\r\n                <ExcelExportColumn field=\"iLearnFlag\"  title=\"isILearn?\"></ExcelExportColumn>\r\n                <ExcelExportColumn field=\"createdOn\"  title=\"Created On\" ></ExcelExportColumn>\r\n            </ExcelExport>\r\n            <Grid\r\n                data={filterReportData(orderBy(rowData, sort), filter).slice(page.skip, page.take + page.skip)}\r\n                skip={page.skip}\r\n                take={page.take}\r\n                total={rowData.length}\r\n                pageSize={page.take}\r\n                pageable={{ pageSizes: [10, 25, 50], info: true }}\r\n                onPageChange={pageChange}\r\n                sortable={true}\r\n                sort={sort}\r\n                onSortChange={(e: GridSortChangeEvent) => {\r\n                    setSort(e.sort);\r\n                }}\r\n                filter={filter}\r\n                onFilterChange={onFilterChange}\r\n                scrollable={\"none\"}>\r\n                <GridColumn field=\"locationCode\" filterable={true} title=\"School Location\"></GridColumn>\r\n                <GridColumn field=\"courseName\" filterable={true} title=\"Course Name\"></GridColumn>\r\n                <GridColumn field=\"courseStatus\" cell={GridStatusCell} filterable={false} title=\"Course Status\"></GridColumn>\r\n                <GridColumn field=\"teachers\" cell={GridTeacherCell} filterable={false} title=\"Teachers\"></GridColumn>\r\n                <GridColumn field=\"iLearnFlag\" cell={GridILearnCell} filterable={false} title=\"isILearn?\"></GridColumn>\r\n                <GridColumn field=\"createdOn\" cell={GridColumnDetails} filterable={false} title=\"Created On\" ></GridColumn>\r\n\r\n            </Grid>\r\n\r\n\r\n        </div>\r\n    )\r\n}","import React, { useState, useEffect, useContext } from 'react';\r\nimport ITeacherCreatedCourse from '../../model/ITeacherCreatedCourseReport'\r\nimport { Grid, GridColumn, GridSortChangeEvent } from '@progress/kendo-react-grid'\r\nimport reportsService from '../../services/ReportsService'\r\nimport { Year } from '../../services/AppContext'\r\nimport { CompositeFilterDescriptor, filterBy, orderBy, SortDescriptor } from \"@progress/kendo-data-query\";\r\nimport { ExcelExport, ExcelExportColumn, ExcelExportColumnGroup } from '@progress/kendo-react-excel-export';\r\nimport moment from 'moment';\r\nimport { Button, ListGroup, OverlayTrigger, Tooltip } from 'react-bootstrap';\r\nimport SplashScreen from '../../shared/SplashScreen';\r\nimport { IAssignedTeachers } from '../../model/IAssignedTeachers';\r\n\r\n\r\ninterface IProps {\r\n    changeExcelRef: any\r\n    getReportData: any\r\n}\r\n\r\nconst initialDataState = {\r\n    skip: 0,\r\n    take: 10,\r\n};\r\n\r\nconst initialFilter: CompositeFilterDescriptor = {\r\n    logic: \"and\",\r\n    filters: [],\r\n};\r\n\r\nexport default function SharedInstructionCourseReport(props: IProps) {\r\n    const { orginalSchoolYear } = useContext(Year);\r\n    const [page, setPage] = React.useState(initialDataState);\r\n    const [filter, setFilter] = React.useState(initialFilter);\r\n    const [isLoading, setIsLoading] = useState(true);\r\n    const [rowData, setRowData] = useState<any[]>([]);\r\n    const _export = React.useRef<ExcelExport | null>(null);\r\n\r\n    const pageChange = (event: any) => {\r\n        setPage(event.page);\r\n    };\r\n\r\n\r\n    const GetSharedInstructionCourseReport = () => {\r\n        reportsService.GetSharedInstructionCoursesReport(+orginalSchoolYear.id).then(response => {\r\n            setRowData(response.data)\r\n            props.changeExcelRef(_export)\r\n            props.getReportData(response.data)\r\n            setIsLoading(false);\r\n        }).catch((ex) => {\r\n            setIsLoading(false);\r\n\r\n        }).finally(() => {\r\n            setIsLoading(false);\r\n        })\r\n    }\r\n\r\n    const GridColumnDetails = (props: any) => {\r\n        return (\r\n            <td>\r\n                <div>\r\n                    {moment(props.dataItem.sharedCourseCreationDate).format('MM/DD/YYYY')}\r\n                </div>\r\n            </td>\r\n        )\r\n    }\r\n\r\n   \r\n\r\n    const GridStarsCoursesCell = (props: any) => {\r\n\r\n        return (\r\n            <td style={{ minWidth: \"300px\" }}>\r\n                <div>\r\n                    <ListGroup variant=\"flush\">\r\n                        {props.dataItem.assignedStarsCourses.length ? (\r\n                            props.dataItem.assignedStarsCourses.map((item: any) => (\r\n                                (item.starsCourseName && item.starsCourseName !== \"\") ? (\r\n                                    <ListGroup.Item\r\n                                        style={{ backgroundColor: \"transparent\", border: \"none\" }}\r\n                                        key={item.starsCourseName}\r\n                                    >\r\n                                        {item.starsCourseName} {\r\n                                            item.assignedStarsCoursesTeachers && item.assignedStarsCoursesTeachers.length && item.assignedStarsCoursesTeachers.map((i: any) => (\r\n                                                i.teacherName && i.teacherName != \"\" &&\r\n                                                <OverlayTrigger\r\n                                                    key={i.teacherId}\r\n                                                    placement='top'\r\n                                                    overlay={\r\n                                                        <Tooltip id={`tooltip-${item.teacherId}`}>\r\n                                                            {i.teacherName + '-' + i.teacherEIN + '(' + i.teacherDBN + ')'}\r\n                                                        </Tooltip>\r\n                                                    }\r\n                                                >\r\n                                                    <Button key={item.teacherEIN} className={\"btn badge badge-warning border-0 mr-1\"}>{i.teacherName.split(' ').map((word: string) => word[0]).join('')}</Button>\r\n                                                </OverlayTrigger>\r\n                                            ))\r\n                                        } | {item.starsCourseLocationCode} | {item.studentsCount} students\r\n                                    </ListGroup.Item>\r\n                                ) : (<ListGroup.Item style={{ backgroundColor: \"transparent\", border: \"none\" }}>No sections</ListGroup.Item>)\r\n                            ))\r\n                        ) : (\r\n                            <p>No sections</p>\r\n                        )}\r\n                    </ListGroup>\r\n                </div>\r\n            </td>\r\n        );\r\n\r\n    }\r\n\r\n\r\n\r\n    const GetStatusBadgeCssClass = (status: string) => {\r\n\r\n        if (status.toLowerCase() === \"new\") {\r\n            return \"badge badge-blue-gray\"\r\n        }\r\n        else if (status.toLowerCase() === \"edited\") {\r\n            return \"badge badge-secondary\"\r\n        }\r\n        else if (status.toLowerCase() === \"published\") {\r\n            return \"badge badge-success\"\r\n        }\r\n        else if (status.toLowerCase() === \"closed\") {\r\n            return \"badge badge-danger\"\r\n        }\r\n        else if (status.toLowerCase() === \"reopened\") {\r\n            return \"badge badge-info\"\r\n        }\r\n    }\r\n\r\n    const GridStatusCell = (props: any) => {\r\n        return (\r\n            <td >\r\n                <div className={GetStatusBadgeCssClass(props.dataItem.sharedCourseStatus)}>{props.dataItem.sharedCourseStatus}</div>\r\n            </td>\r\n        )\r\n    }\r\n\r\n    const filterReportData = (data: any, filter: any) => {\r\n        let report = rowData;\r\n        return filterBy(report, filter);\r\n    }\r\n    const onFilterChange = (e: any) => {\r\n        setPage(initialDataState)\r\n        setFilter(e.filter)\r\n    }\r\n\r\n    useEffect(() => {\r\n        GetSharedInstructionCourseReport();\r\n    }, [orginalSchoolYear.id]);\r\n\r\n\r\n    return (\r\n        <div>\r\n            {isLoading && <div className=\"d-flex justify-content-center\"><SplashScreen /></div>}\r\n            <ExcelExport data={rowData} ref={_export} fileName={\"Shared_Instruction_Courses_Report\" + ' ' + new Date().toDateString()}>\r\n                <ExcelExportColumn field=\"sharedCourseName\" title=\"Shared Course Name\"></ExcelExportColumn>\r\n                <ExcelExportColumn field=\"sharedCourseLocationCode\" title=\"Shared Course Location Code\"></ExcelExportColumn>\r\n                <ExcelExportColumn field=\"sharedCourseStatus\" title=\"Shared Course Status\"></ExcelExportColumn>\r\n                <ExcelExportColumn field=\"teacherofRecordEIN\" title=\"Teacher of Record EIN\"></ExcelExportColumn>\r\n                <ExcelExportColumn field=\"teacherofRecordName\" title=\"Teacher of Record Name\"></ExcelExportColumn>\r\n                <ExcelExportColumn field=\"sharedCourseCreationDate\" title=\"Shared Course Creation Date\" ></ExcelExportColumn>\r\n                <ExcelExportColumn field=\"starsCourseName\" title=\"Stars Course Name\" ></ExcelExportColumn>\r\n                <ExcelExportColumn field=\"starsCourseLocationCode\" title=\"Stars Course Location Code\" ></ExcelExportColumn>\r\n                <ExcelExportColumn field=\"starsCourseCode\" title=\"STARS Course code\" ></ExcelExportColumn>\r\n                <ExcelExportColumn field=\"starsMappingId\" title=\"STARS Course Mapping ID\" ></ExcelExportColumn>\r\n                <ExcelExportColumn field=\"termId\" title=\"STARS Course Term ID\" ></ExcelExportColumn>\r\n                <ExcelExportColumn field=\"assignedStarsCoursesTeachers\" title=\"STARS Course Teachers\" ></ExcelExportColumn>\r\n                <ExcelExportColumn field=\"studentsCount\"  title=\"Number of Students\" ></ExcelExportColumn>\r\n            </ExcelExport>\r\n            <Grid\r\n                data={filterReportData(rowData, filter).slice(page.skip, page.take + page.skip)}\r\n                skip={page.skip}\r\n                take={page.take}\r\n                total={rowData.length}\r\n                pageSize={page.take}\r\n                pageable={{ pageSizes: [10, 25, 50], info: true }}\r\n                onPageChange={pageChange}\r\n                filter={filter}\r\n                filterable={true}\r\n                onFilterChange={onFilterChange}\r\n                style={{ overflowX: \"auto\" }}\r\n                scrollable={\"none\"}>\r\n                <GridColumn field=\"sharedCourseLocationCode\" filterable={true} title=\"SI Course DBN\"></GridColumn>\r\n                <GridColumn field=\"sharedCourseName\" filterable={true} title=\"SI Course Name\"></GridColumn>\r\n                <GridColumn field=\"sharedCourseCreationDate\" cell={GridColumnDetails} filterable={false} title=\"SI Creation Date\" ></GridColumn>\r\n                <GridColumn field=\"courseStatus\" cell={GridStatusCell} filterable={false} title=\"Course Status\"></GridColumn>\r\n                <GridColumn field=\"teacherofRecordEIN\" filterable={false} title=\"TOR EIN\"></GridColumn>\r\n                <GridColumn field=\"teacherofRecordName\" filterable={false} title=\"TOR Name\"></GridColumn>\r\n                <GridColumn field=\"teachers\" cell={GridStarsCoursesCell} filterable={false} title=\"Stars Courses\"></GridColumn>\r\n            </Grid>\r\n\r\n\r\n        </div>\r\n    )\r\n}","import React, { useState, useEffect, useContext } from 'react';\r\nimport ICourseEnrollmentSummaryReport from '../../model/ICourseEnrollmentSummaryReport'\r\nimport { Grid, GridColumn, GridSortChangeEvent } from '@progress/kendo-react-grid'\r\nimport ReportsService from '../../services/ReportsService'\r\nimport { Year } from '../../services/AppContext'\r\nimport { CompositeFilterDescriptor, filterBy, orderBy, SortDescriptor } from \"@progress/kendo-data-query\";\r\nimport { ExcelExport } from '@progress/kendo-react-excel-export';\r\nimport moment from 'moment';\r\n\r\n\r\ninterface ILocation {\r\n    changeExcelRef: any;\r\n    \r\n}\r\n\r\nconst initialDataState = {\r\n    skip: 0,\r\n    take: 10,\r\n};\r\n\r\n\r\n\r\nconst initialFilter: CompositeFilterDescriptor = {\r\n    logic: \"and\",\r\n    filters: [],\r\n};\r\n\r\nconst initialSort: Array<SortDescriptor> = [\r\n    { field: \"studentCount\", dir: \"desc\" },\r\n];\r\n\r\nexport default function CourseEnrollmentSummaryReport(props: ILocation) {\r\n    const { orginalSchoolYear } = useContext(Year);\r\n    const [page, setPage] = React.useState(initialDataState);\r\n    const [filter, setFilter] = React.useState(initialFilter);\r\n    const [sort, setSort] = React.useState(initialSort);\r\n    const [rowData, setRowData] = useState<ICourseEnrollmentSummaryReport[]>([]);\r\n    const _export = React.useRef<ExcelExport | null>(null);\r\n\r\n    const pageChange = (event: any) => {\r\n        setPage(event.page);\r\n    };\r\n\r\n\r\n    const onFilterChange = (e: any) => {\r\n        setPage(initialDataState)\r\n        setFilter(e.filter)\r\n    }\r\n\r\n    const GetPublishedCoursesReport = () => {\r\n        ReportsService.GetCourseEnrollmentSummaryReport(+orginalSchoolYear.id).then(response => {\r\n            setRowData(response.data)\r\n            props.changeExcelRef(_export)\r\n        })\r\n    }\r\n    useEffect(() => {\r\n        GetPublishedCoursesReport();\r\n    }, [orginalSchoolYear.id]);\r\n\r\n    const GridColumnDetails = (props: any) => {\r\n        return (\r\n            <td>\r\n                <div>\r\n                    {moment(props.dataItem.createdOn).format('MM/DD/YYYY')}\r\n                </div>\r\n            </td>\r\n        )\r\n    }\r\n\r\n\r\n    return (\r\n        <ExcelExport data={rowData} ref={_export} fileName={\"Course_Enrollment_Summary_Report\" + ' ' + new Date().toDateString()}>\r\n            <Grid\r\n                data={filterBy(orderBy(rowData, sort), filter).slice(page.skip, page.take + page.skip)}\r\n                skip={page.skip}\r\n                take={page.take}\r\n                total={rowData.length}\r\n                pageSize={page.take}\r\n                pageable={{ pageSizes: [10, 25, 50, 100], info: true }}\r\n                onPageChange={pageChange}\r\n                sortable={true}\r\n                sort={sort}\r\n                onSortChange={(e: GridSortChangeEvent) => {\r\n                    if (e.sort.length === 0) {\r\n                        if (sort.length != 0 && sort[0].dir == \"asc\") {\r\n                            setSort([{ field: \"studentCount\", dir: \"desc\" }])\r\n                        } else {\r\n                            setSort([{ field: \"studentCount\", dir: \"asc\" }])\r\n                        }\r\n                    } else {\r\n                        setSort(e.sort);\r\n                    }\r\n                }}\r\n                filterable={true}\r\n                filter={filter}\r\n                onFilterChange={onFilterChange}\r\n                scrollable={\"none\"}>\r\n                <GridColumn field=\"locationCode\" filterable={true} title=\"Location Code\"></GridColumn>\r\n                <GridColumn field=\"courseName\" filterable={true} title=\"Course Name\"></GridColumn>\r\n                <GridColumn field=\"courseStatus\" filterable={false} title=\"Course Status\"></GridColumn>\r\n                <GridColumn field=\"courseType\" filterable={false} title=\"Course Type\"></GridColumn>\r\n                <GridColumn field=\"studentCount\" filterable={false} title=\"Student Count\"></GridColumn>\r\n                <GridColumn field=\"createdOn\" cell={GridColumnDetails} filterable={false} title=\"Created On\"></GridColumn>\r\n\r\n            </Grid>\r\n        </ExcelExport>\r\n    )\r\n}","import { useState, useEffect, useContext } from 'react';\r\nimport { LocationContext, Year } from '../../services/AppContext'\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport { Row, Col } from 'react-bootstrap';\r\nimport LicenseUsageReport from './LicenseUsageReport';\r\nimport LicenseAllocationReport from './LicenseAllocationReport';\r\nimport PublishedCoursesReport from './PublishedCoursesReport';\r\nimport TotalCountsReport from './TotalCountsReport'\r\nimport CourseStatusReport from './StatusWiseReport';\r\nimport LicenseTransferHistoryReport from './LicenseTransferHistoryReport'\r\nimport DailyReport from './DailyReport';\r\nimport MissingTORReport from './MissingTORReport';\r\nimport ReportsService from '../../services/ReportsService'\r\nimport TeacherCreatedCourseReport from './TeacherCreatedCourseReport';\r\nimport { KendoOoxml } from '@progress/kendo-react-excel-export';\r\nimport SharedInstructionCourseReport from './SharedInstructionCourseReport';\r\nimport { Workbook } from '@progress/kendo-ooxml';\r\nimport CourseEnrollmentSummaryReport from './CourseEnrollmentSummary';\r\n\r\n\r\n\r\ninterface ILocation {\r\n  id: string\r\n}\r\n\r\ninterface Reports {\r\n  reportName: string;\r\n  reportValue: string;\r\n  isDefaultSelected: number;\r\n}\r\nconst dropDownData = ['Transferrable-Unlimited', 'NonTransferrable-Unlimited', 'NonTransferrable-Per Enrollment']\r\n\r\nexport default function Report(location: ILocation) {\r\n  const { locationCode } = useContext(LocationContext);\r\n  const { orginalSchoolYear } = useContext(Year);\r\n  const [licenseType, setLicenseType] = useState('Transferrable-Unlimited');\r\n  const [allReports, setAllReports] = useState<Reports[]>([{ reportName: '', reportValue: '', isDefaultSelected: 0 }]);\r\n  const [selectedReport, setSelectedReports] = useState<Reports>({ reportName: '', reportValue: '', isDefaultSelected: 0 });\r\n  const [excelRef, setExcelRef] = useState<any>(null);\r\n  const [rowData, setRowData] = useState<any[]>([]);\r\n\r\n\r\n  const excelExport = () => {\r\n    if (excelRef.current !== null) {\r\n      if (excelRef.current.props.fileName.indexOf('Teacher_Created_Course_Report') == 0) {\r\n        let workbook = excelRef.current.workbookOptions()\r\n        let rows = workbook.sheets[0].rows;\r\n        let headerOptions = rows[0].cells[0];\r\n        let data = excelRef.current.props.data\r\n        for (let idx = data.length - 1; idx >= 0; idx--) {\r\n          let teachers = data[idx].teachers\r\n          for (let teacherIdx = teachers.length - 1; teacherIdx >= 0; teacherIdx--) {\r\n            const teacher = teachers[teacherIdx];\r\n            rows.splice(idx + 2, 0, { cells: [{}, { value: teacher.ein }, { value: teacher.firstName }, { value: teacher.lastName }, { value: teacher.teacherEmail }] });\r\n          }\r\n          rows.splice(idx + 2, 0, {\r\n            cells: [\r\n              {},\r\n              Object.assign({}, headerOptions, { value: 'EIN' }),\r\n              Object.assign({}, headerOptions, { value: 'First Name' }),\r\n              Object.assign({}, headerOptions, { value: 'Last Name' }),\r\n              Object.assign({}, headerOptions, { value: 'Email' })\r\n            ]\r\n          });\r\n\r\n        }\r\n        new KendoOoxml.Workbook(workbook).toDataURL().then((dataUrl) => {\r\n          excelRef.current.save(workbook)\r\n        })\r\n      } else if (excelRef.current.props.fileName.indexOf('Shared_Instruction_Courses_Report') == 0) {\r\n        let workbook = excelRef.current.workbookOptions();\r\n\r\n        let rows = workbook.sheets[0].rows;\r\n        let headerOptions = rows[0];\r\n        let data = excelRef.current.props.data;\r\n\r\n        rows = [headerOptions]; // Initialize rows with headerOptions\r\n        data.forEach((course: any) => {\r\n          course.assignedStarsCourses.forEach((ele: any) => {\r\n            rows.push({\r\n              cells: [\r\n                { value: course.sharedCourseName },\r\n                { value: course.sharedCourseLocationCode },\r\n                { value: course.sharedCourseStatus },\r\n                { value: course.teacherofRecordEIN },\r\n                { value: course.teacherofRecordName },\r\n                { value: course.sharedCourseCreationDate },\r\n                { value: ele.starsCourseName },\r\n                { value: ele.starsCourseLocationCode },\r\n                { value: ele.starsCourseCode },\r\n                { value: ele.starsMappingId },\r\n                { value: ele.termId },\r\n                {\r\n                  value: ele.assignedStarsCoursesTeachers && ele.assignedStarsCoursesTeachers.length && ele.assignedStarsCoursesTeachers.map((teacher: any) => {\r\n                    if (teacher.teacherEIN && teacher.teacherEIN != \"\") {\r\n                      return `${teacher.teacherName} - ${teacher.teacherEIN} (${teacher.teacherDBN})`;\r\n                    }\r\n\r\n                  }).join(', ')\r\n                },\r\n                { value: ele.studentsCount }\r\n              ],\r\n            });\r\n          });\r\n        });\r\n\r\n        workbook.sheets[0].rows = rows;\r\n\r\n        new KendoOoxml.Workbook(workbook).toDataURL().then((dataUrl) => {\r\n          excelRef.current.save(workbook);\r\n        });\r\n\r\n      } else {\r\n        excelRef.current.save();\r\n      }\r\n    }\r\n\r\n\r\n\r\n\r\n\r\n  };\r\n\r\n\r\n\r\n  const changeExcelRef = (ref: any) => {\r\n    setExcelRef(ref)\r\n  }\r\n\r\n  const getReportData = (data: any) => {\r\n    setRowData(data)\r\n  }\r\n\r\n  const onReportSelectionChange = (e: any) => {\r\n    setSelectedReports(e.target.value)\r\n  }\r\n\r\n  const onSelectionChange = (e: any) => {\r\n    setSelectedReports(selectedReport)\r\n    setLicenseType(e.target.value)\r\n\r\n  }\r\n\r\n  useEffect(() => {\r\n    if (location.id == \"AllSchools\") {\r\n      ReportsService.GetAllReports().then(response => {\r\n        setAllReports(response.data)\r\n        let defaultSelectedReport = response.data.find((d: Reports) => d.isDefaultSelected == 1)\r\n        setSelectedReports(defaultSelectedReport)\r\n      })\r\n    } else {\r\n      let reports: Reports[] = [{ reportName: 'License Allocation Report', reportValue: 'License Allocation Report', isDefaultSelected: 1 }\r\n        , { reportName: 'Course Status Report', reportValue: 'Course Status Report', isDefaultSelected: 0 }]\r\n      setAllReports(reports)\r\n      let defaultSelectedReport = reports.find((d: Reports) => d.isDefaultSelected == 1) ?? { reportName: 'License Allocation Report', reportValue: 'License Allocation Report', isDefaultSelected: 1 }\r\n      setSelectedReports(defaultSelectedReport)\r\n    }\r\n  }, [locationCode, orginalSchoolYear.id, location.id]);\r\n\r\n\r\n  return (\r\n    <div>\r\n      <Row className=\"mb-3\">\r\n        <Col xs={9} sm={8} md={6} lg={4}>\r\n          <DropDownList\r\n            data={allReports}\r\n            defaultValue={selectedReport}\r\n            popupSettings={{ width: 350 }}\r\n            style={{ width: \"100%\" }}\r\n            value={selectedReport}\r\n            onChange={onReportSelectionChange}\r\n            textField=\"reportName\"\r\n          />\r\n        </Col>\r\n        <Col xs={3} sm={4} md={6} lg={8} className=\"text-right\">\r\n          <button type=\"button\" className=\"btn btn-primary\" onClick={excelExport}>\r\n            <i className=\"fas fa-download\"></i>\r\n          </button>\r\n        </Col>\r\n      </Row>\r\n      {selectedReport.reportValue == \"License Usage Report\" &&\r\n        <Row className=\"mb-3\">\r\n          <Col sm=\"4\" className=\"text-right\">\r\n            <DropDownList\r\n              data={dropDownData}\r\n              defaultValue={dropDownData[0]}\r\n              onChange={onSelectionChange}\r\n              style={{ maxWidth: '350px', width: \"100%\" }}\r\n            />\r\n          </Col>\r\n        </Row>\r\n      }\r\n      {selectedReport.reportValue == \"License Allocation Report\" && <LicenseAllocationReport id={location.id} changeExcelRef={changeExcelRef} />}\r\n      {selectedReport.reportValue == \"Course Status Report\" && <CourseStatusReport selectedReport={selectedReport} changeExcelRef={changeExcelRef} />}\r\n      {selectedReport.reportValue == \"Published Courses Report\" && <PublishedCoursesReport selectedReport={selectedReport} changeExcelRef={changeExcelRef} />}\r\n      {selectedReport.reportValue == \"Total Counts Report\" && <TotalCountsReport selectedReport={selectedReport} changeExcelRef={changeExcelRef} />}\r\n      {selectedReport.reportValue == \"License Transfer History Report\" && <LicenseTransferHistoryReport selectedReport={selectedReport} changeExcelRef={changeExcelRef} />}\r\n      {selectedReport.reportValue == \"Daily Report\" && <DailyReport selectedReport={selectedReport} changeExcelRef={changeExcelRef} />}\r\n      {selectedReport.reportValue == \"License Usage Report\" && licenseType == 'Transferrable-Unlimited'\r\n        && <LicenseUsageReport licenseType={licenseType} selectedReport={selectedReport} changeExcelRef={changeExcelRef} />}\r\n      {selectedReport.reportValue == \"License Usage Report\" && licenseType == 'NonTransferrable-Unlimited'\r\n        && <LicenseUsageReport licenseType={licenseType} selectedReport={selectedReport} changeExcelRef={changeExcelRef} />}\r\n      {selectedReport.reportValue == \"License Usage Report\" && licenseType == 'NonTransferrable-Per Enrollment'\r\n        && <LicenseUsageReport licenseType={licenseType} selectedReport={selectedReport} changeExcelRef={changeExcelRef} />}\r\n      {selectedReport.reportValue == \"Teacher Created Course Report\" && <TeacherCreatedCourseReport changeExcelRef={changeExcelRef} />}\r\n      {selectedReport.reportValue == \"Course Enrollment Summary\" && <CourseEnrollmentSummaryReport changeExcelRef={changeExcelRef} />}\r\n      {selectedReport.reportValue == \"Shared Instruction Courses Report\" && <SharedInstructionCourseReport changeExcelRef={changeExcelRef} getReportData={getReportData} />}\r\n      {selectedReport.reportValue == \"Missing TOR Report\"   && <MissingTORReport selectedReport={selectedReport} changeExcelRef={changeExcelRef} />}\r\n    </div>\r\n\r\n  )\r\n}\r\n\r\n\r\n","import React, { useContext, useEffect, useState } from 'react';\r\nimport { AuthContext, AuthContextType, UserProfileType } from '../services/AppContext'\r\nimport { Dropdown } from 'react-bootstrap';\r\nimport { Link, useHistory, useLocation } from 'react-router-dom'\r\nimport LocalStorageService from '../services/LocalStorage';\r\n\r\ntype ProfileMenuType = {\r\n    userProfile: UserProfileType\r\n    onNavigation: (event: React.MouseEvent<HTMLElement, MouseEvent>, data: string) => void\r\n}\r\n\r\nexport default function ProfileMenu(props: ProfileMenuType) {\r\n    const [userProfile, setUserProfile] = useState<UserProfileType>();\r\n    let history = useHistory();\r\n    const onMenuClick = (e: any, menuName: string) => {\r\n        history.replace(menuName)\r\n        props.onNavigation(e, menuName)\r\n        e.preventDefault();\r\n    }\r\n\r\n    useEffect(() => {\r\n        //const userProf = LocalStorageService.getUserProfile()\r\n        setUserProfile(props.userProfile);\r\n    }, [props.userProfile])\r\n\r\n    return (\r\n        <div>\r\n            <Dropdown className=\"user-sign-in link-mobile-visible link-mobile-user\">\r\n                <Dropdown.Toggle variant=\"link\" id=\"user_dropdown\">\r\n                    <svg className=\"icon-user-circle\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 35 35\">\r\n                        <path data-name=\"Path 27\" d=\"M17.5,0A17.5,17.5,0,1,0,35,17.5,17.52,17.52,0,0,0,17.5,0ZM28.944,26.363a15.491,15.491,0,0,0-3.756-5.542,10.356,10.356,0,0,1-2.353,1.964,12.75,12.75,0,0,1,3.77,5.974A14.428,14.428,0,0,1,8.374,28.74a12.32,12.32,0,0,1,3.76-5.974A10.287,10.287,0,0,1,9.78,20.785a14.712,14.712,0,0,0-3.753,5.54,14.493,14.493,0,1,1,22.916.038Z\" fill=\"#fff\"></path>\r\n                        <path data-name=\"Path 28\" d=\"M43.455,23.314a7.518,7.518,0,1,0,7.516,7.518A7.526,7.526,0,0,0,43.455,23.314Zm0,12.028a4.511,4.511,0,1,1,4.51-4.511A4.516,4.516,0,0,1,43.455,35.342Z\" transform=\"translate(-25.955 -16.838)\" fill=\"#fff\"></path>\r\n                    </svg>\r\n                </Dropdown.Toggle>\r\n                <Dropdown.Menu className=\"dropdown-menu-right\">\r\n                    <div className=\"dropdown-username d-flex\">\r\n                        {/* <!-- User icon SVG image --> */}\r\n                        <svg className=\"icon-user-circle\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 35 35\">\r\n                            <path data-name=\"Path 27\" d=\"M17.5,0A17.5,17.5,0,1,0,35,17.5,17.52,17.52,0,0,0,17.5,0ZM28.944,26.363a15.491,15.491,0,0,0-3.756-5.542,10.356,10.356,0,0,1-2.353,1.964,12.75,12.75,0,0,1,3.77,5.974A14.428,14.428,0,0,1,8.374,28.74a12.32,12.32,0,0,1,3.76-5.974A10.287,10.287,0,0,1,9.78,20.785a14.712,14.712,0,0,0-3.753,5.54,14.493,14.493,0,1,1,22.916.038Z\" fill=\"#fff\"></path>\r\n                            <path data-name=\"Path 28\" d=\"M43.455,23.314a7.518,7.518,0,1,0,7.516,7.518A7.526,7.526,0,0,0,43.455,23.314Zm0,12.028a4.511,4.511,0,1,1,4.51-4.511A4.516,4.516,0,0,1,43.455,35.342Z\" transform=\"translate(-25.955 -16.838)\" fill=\"#fff\"></path>\r\n                        </svg>\r\n                        <div>\r\n                            <div className=\"dropdown-user-name text-nowrap\">{userProfile?.userName}</div>\r\n                            <div className=\"dropdown-user-title text-nowrap\">{userProfile?.role?.roleName}</div>\r\n                        </div>\r\n                    </div>\r\n                    <Dropdown.Divider />\r\n                    {\r\n                        (history.location.pathname != '/Home') && <div>\r\n                            {\r\n                                (userProfile?.role?.roleName == 'System Administrator') && <div>\r\n                            <Dropdown.Header>Manage</Dropdown.Header>\r\n                                    <Dropdown.Item onClick={(e) => onMenuClick(e, '/ILearn/manage/announcements')}>Announcements</Dropdown.Item>\r\n                                    <Dropdown.Item onClick={(e) => onMenuClick(e, '/ILearn/manage/vendors')}>Vendors</Dropdown.Item>\r\n                                    <Dropdown.Item onClick={(e) => onMenuClick(e, '/ILearn/manage/schools')}>Schools</Dropdown.Item>\r\n                                    <Dropdown.Item onClick={(e) => onMenuClick(e, '/ILearn/manage/years')}>School Year</Dropdown.Item>\r\n                                </div>}\r\n                            {\r\n                                (userProfile?.role?.roleName == 'System Administrator' || userProfile?.role?.roleName == 'Central Staff' ) && <div>\r\n                                    <Dropdown.Item onClick={(e) => onMenuClick(e, '/ILearn/manage/reports')}>Reports</Dropdown.Item>\r\n                                </div>}\r\n                            <Dropdown.Divider />\r\n                        </div>\r\n                    }\r\n                    <Dropdown.Item href=\"/?logout\">Sign Out</Dropdown.Item>\r\n                </Dropdown.Menu>\r\n            </Dropdown>\r\n        </div>\r\n    )\r\n}","import React, { useState, useEffect } from 'react';\r\nimport VendorContentService from '../../../services/VendorContentService';\r\nimport IVendorContent from '../../../model/VendorContent';\r\nimport { Grid, GridColumn, GridFilterChangeEvent, GridToolbar } from '@progress/kendo-react-grid';\r\nimport { filterBy, CompositeFilterDescriptor, } from \"@progress/kendo-data-query\";\r\nimport { Modal, Button, Dropdown, Form, Row } from 'react-bootstrap';\r\nimport { FormMode } from '../../../services/Utility'\r\ninterface IContentDisplay {\r\n    vendorId: number,\r\n    updateCourseCount: (counter: number, vendorId: number, childFormMode : FormMode) => void,\r\n    childFormMode: FormMode\r\n}\r\nconst initialFilter: CompositeFilterDescriptor = {\r\n    logic: \"and\",\r\n    filters: [],\r\n  };\r\n  const initialDataState = {\r\n    skip: 0,\r\n    take: 10,\r\n};\r\nexport default function VendorContentManagement(props: IContentDisplay) {\r\n    const [rowData, setCourseContentData] = useState<IVendorContent[]>([]);\r\n    const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n    const [formValue, setFormValue] = useState<IVendorContent>({\r\n        id: 0,\r\n        vendorCourseCode: '',\r\n        vendorCourseContentName: '',\r\n        vendorId: 0,\r\n        vendorName: '',\r\n        TotalCourses: 0,\r\n        TotalStudents : 0,\r\n        isActive: true,\r\n        modifiedBy: ''\r\n    });\r\n  \r\n    const [filter, setFilter] = useState(initialFilter);\r\n    const [page, setPage] = React.useState(initialDataState);\r\n    const [errorMsg, setErrorMsg] = useState<string>('');\r\n\r\n    const pageChange = (event: any) => {\r\n        setPage(event.page); \r\n    };\r\n\r\n    const getVendorContentData = () =>{\r\n        VendorContentService.getByVendorId(props.vendorId).then(response => {\r\n            setCourseContentData(response.data)           \r\n        })\r\n    }\r\n    useEffect(() => {\r\n        getVendorContentData();\r\n        setFormMode(props.childFormMode);\r\n    }, []);\r\n\r\n    const handleChange = (event: any) => {\r\n        const target = event.target //as HTMLSelectElement\r\n        const value = target.type === 'checkbox' ? target.checked : target.value\r\n\r\n        setFormValue({ ...formValue, [target.name]: value });\r\n    };\r\n\r\n    const onFormAction = (vendorContentId: number, actionType: FormMode) => {\r\n        setErrors({\r\n            vendorContentCourseNameError: '',\r\n            vendorCourseCodeError: '',\r\n        });\r\n        switch (actionType) {\r\n            case FormMode.New:\r\n                setFormMode(FormMode.New)\r\n                //Clear Existing vlues\r\n                let vendorContentReset: IVendorContent = {\r\n                    id: 0,\r\n                    vendorCourseCode: '',\r\n                    vendorCourseContentName: '',\r\n                    vendorId: 0,\r\n                    vendorName: '',\r\n                    TotalCourses: 0,\r\n                    TotalStudents : 0,\r\n                    isActive: true,\r\n                    modifiedBy: ''\r\n                };\r\n                setFormValue(vendorContentReset)\r\n                break;\r\n            case FormMode.Edit:\r\n                setFormMode(FormMode.Edit)\r\n                VendorContentService.getById(vendorContentId).then(response => {\r\n                    setFormValue(response.data);\r\n                });\r\n                break;\r\n            case FormMode.Delete:\r\n                let vendorContentDetails: IVendorContent = {\r\n                    id: vendorContentId,\r\n                    vendorCourseCode: '',\r\n                    vendorCourseContentName: '',\r\n                    vendorId: 0,\r\n                    vendorName: '',\r\n                    TotalCourses: 0,\r\n                    TotalStudents : 0,\r\n                    isActive: true,\r\n                    modifiedBy: ''\r\n                };\r\n                setFormValue(vendorContentDetails)\r\n                setFormMode(FormMode.Delete)\r\n                break;\r\n            default: {\r\n                setFormMode(FormMode.None)\r\n                break;\r\n            }\r\n        }\r\n    }\r\n\r\n    const onSave = (event: any, actionType: FormMode) => {\r\n        let vendorContent: IVendorContent = {\r\n            id: formValue.id,\r\n            vendorCourseCode: formValue.vendorCourseCode ,\r\n            vendorCourseContentName: formValue.vendorCourseContentName,\r\n            vendorName: '',\r\n            vendorId: props?.vendorId,\r\n            TotalCourses: 0,\r\n            TotalStudents : 0,\r\n            isActive: formValue.isActive,\r\n            modifiedBy: ''\r\n        };\r\n        switch (actionType) {\r\n            case FormMode.New:\r\n                event.preventDefault();\r\n                if(validate()){\r\n                    VendorContentService.post(vendorContent).then(response => {\r\n                        // Display Success message\r\n                        \r\n                        getVendorContentData();                        \r\n                        const target = event.target \r\n                        if(target.id == \"save-add-another-content\"){\r\n                            let vendorContentReset: IVendorContent = {\r\n                                id: 0,\r\n                                vendorCourseCode: '',\r\n                                vendorCourseContentName: '',\r\n                                vendorId: 0,\r\n                                vendorName: '',\r\n                                TotalCourses: 0,\r\n                                TotalStudents : 0,\r\n                                isActive: true,\r\n                                modifiedBy: ''\r\n                            };\r\n                            props.updateCourseCount(1,props.vendorId,FormMode.New);\r\n                            setFormValue(vendorContentReset)\r\n                            setFormMode(FormMode.New)\r\n                        }else{               \r\n                            props.updateCourseCount(1,props.vendorId,FormMode.None);             \r\n                            setFormMode(FormMode.None)\r\n                        }\r\n                        \r\n                    },error =>{\r\n                        setErrorMsg(error.response.data.errors.join())\r\n                    })\r\n                }                              \r\n                //Clear Existing vlues\r\n                break;\r\n            case FormMode.Edit:\r\n                event.preventDefault();\r\n                if(validate()){\r\n                    VendorContentService.edit(vendorContent).then(response => {\r\n                        // Display Success message\r\n                        getVendorContentData();\r\n                        setFormMode(FormMode.None)\r\n                    },error =>{\r\n                        setErrorMsg(error.response.data.errors.join())\r\n                    })\r\n                }\r\n                break;\r\n            case FormMode.Delete:\r\n                var vendorContentId = Number(vendorContent.id);\r\n                VendorContentService.delete(vendorContentId).then(response => {\r\n                    // Display Success message\r\n                    props.updateCourseCount(-1,props.vendorId,FormMode.None);\r\n                    getVendorContentData();\r\n                    setFormMode(FormMode.None)\r\n                })\r\n                break;\r\n            default: {\r\n                setFormMode(FormMode.None)\r\n                break;\r\n            }\r\n        }\r\n    }\r\n\r\n    const GridColumnButton = (props: any) => {\r\n        return (\r\n            <td className=\"text-right\" style={{ overflow: 'visible' }}>\r\n                <Dropdown>\r\n                    <Dropdown.Toggle className=\"menu-bars\" size=\"sm\" variant=\"outline-primary\">\r\n                        <i className=\"fas fa-bars\"></i>\r\n                    </Dropdown.Toggle>\r\n                    <Dropdown.Menu>\r\n                        <Dropdown.Item onClick={() => { onFormAction(props.dataItem?.id,FormMode.Edit )}}>Edit</Dropdown.Item>\r\n                        <Dropdown.Item onClick={() => { onFormAction(props.dataItem?.id,FormMode.Delete )}}>Delete</Dropdown.Item>\r\n                    </Dropdown.Menu>\r\n                </Dropdown>\r\n            </td>)\r\n    }\r\n\r\n    const [errors, setErrors] = useState({\r\n        vendorContentCourseNameError: '',\r\n        vendorCourseCodeError: '',\r\n      })\r\n    const validate = () => {\r\n        let error = {\r\n            vendorContentCourseNameError: '',\r\n            vendorCourseCodeError: '',\r\n        };\r\n\r\n        if (formMode == FormMode.New || formMode == FormMode.Edit ) {\r\n          if (!formValue.vendorCourseContentName) { error.vendorContentCourseNameError = \"Course Name is required\"; }\r\n    \r\n          if (!formValue.vendorCourseCode) { error.vendorCourseCodeError = \"Course Code is required\" ; }\r\n    \r\n          setErrors(error);\r\n          if (error.vendorContentCourseNameError || error.vendorCourseCodeError ) {\r\n            return false;\r\n          }\r\n        }\r\n        return true;    \r\n      };\r\n    \r\n    return (\r\n        <div>\r\n            <Modal backdrop=\"static\" keyboard={false} animation={false} show={formMode == FormMode.Edit || formMode == FormMode.New} onHide={() => { setFormMode(FormMode.None) }}>\r\n                <Modal.Header closeButton className=\"bg-primary text-white\">\r\n                    <Modal.Title>{formMode == FormMode.Edit? \"Edit\" : \"Add\" } Vendor Content</Modal.Title>\r\n                </Modal.Header>\r\n                <Modal.Body>\r\n                <div hidden={errorMsg.length == 0}>\r\n                        <div className=\"alert alert-danger alert-dismissible fade show\" role=\"alert\">\r\n                            {errorMsg}\r\n                            <button type=\"button\" className=\"close\" data-dismiss=\"alert\" aria-label=\"Close\">\r\n                                <span aria-hidden=\"true\">&times;</span>\r\n                            </button>\r\n                        </div>\r\n                </div>\r\n                <Form>\r\n                <input type=\"hidden\" name=\"id\" value={formValue.id ?? ''} onChange={handleChange} />\r\n                    <Row>\r\n                        <Form.Group controlId=\"vendorCourseContentName\" className=\"col-sm-12\">\r\n                            <Form.Label>Vendor Course Name</Form.Label>\r\n                            <Form.Control type=\"text\" name=\"vendorCourseContentName\" value={formValue.vendorCourseContentName ?? ''} onChange={handleChange} />\r\n                            <Form.Text className=\"text-danger\">{errors.vendorContentCourseNameError}</Form.Text>\r\n                        </Form.Group>\r\n                        <Form.Group controlId=\"vendorCourseCode\" className=\"col-sm-12\">\r\n                            <Form.Label>Course Code</Form.Label>\r\n                            <Form.Control type=\"text\" name=\"vendorCourseCode\" value={formValue.vendorCourseCode ?? ''} onChange={handleChange} />\r\n                            <Form.Text className=\"text-danger\">{errors.vendorCourseCodeError}</Form.Text>\r\n                        </Form.Group>\r\n                    </Row>                  \r\n                    </Form>\r\n                </Modal.Body>\r\n                <Modal.Footer>\r\n                    <Button variant=\"secondary\" onClick={() => { setFormMode(FormMode.None) }}>Close</Button>\r\n                    <Button style={{ display: formMode == FormMode.New ? \"flex\" : \"none\" }} id=\"save-add-another-content\" variant=\"dark\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Save and Add Another</Button>\r\n                    <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Save</Button>\r\n                </Modal.Footer>\r\n            </Modal>\r\n\r\n            <Modal\r\n                show={formMode == FormMode.Delete}\r\n                onHide={() => { setFormMode(FormMode.None) }}\r\n                animation={false}\r\n                backdrop=\"static\"\r\n                keyboard={false}>\r\n\r\n                <Modal.Header closeButton className=\"bg-primary text-white\">\r\n                    <Modal.Title>Delete Vendor Content </Modal.Title>\r\n                </Modal.Header>\r\n                <Modal.Body>\r\n                    Are you sure you want to delete the Vendor Content?\r\n                </Modal.Body>\r\n                <Modal.Footer>\r\n                    <Button variant=\"secondary\" onClick={(e) => { setFormMode(FormMode.None) }}>Cancel</Button>\r\n                    <Button variant=\"primary\" type=\"button\" onClick={(e) => { onSave(e, formMode) }}>Delete</Button>\r\n                </Modal.Footer>\r\n            </Modal>\r\n\r\n            <div className=\"card mt-4\">\r\n            <div className=\"card-header font-weight-bold bg-secondary-light\">\r\n                <div className=\"row align-items-center\">\r\n                    <div className=\"col-10\">Vendor Content</div>\r\n                    <div className=\"col-2  text-right\">\r\n                        <button type=\"button\" className=\"btn btn-sm btn-primary\" onClick={(e) => { onFormAction(0, FormMode.New)}}>\r\n                            <i className=\"fas fa-plus\"></i>\r\n                        </button>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div className=\"card-body\">\r\n                <Grid \r\n                    data={filterBy(rowData, filter).slice(page.skip, page.take + page.skip)} \r\n                    filter={filter}\r\n                    filterable={true} \r\n                    skip={page.skip}\r\n                    take={page.take}\r\n                    total={rowData.length}\r\n                    pageable={true}\r\n                    sortable={false}\r\n                    scrollable={\"none\"}\r\n                    onPageChange={pageChange}\r\n                    onFilterChange={(e: GridFilterChangeEvent) => setFilter(e.filter)}>\r\n\r\n                    <GridColumn field=\"vendorCourseContentName\" title=\"Vendor Course Name\" />\r\n                    <GridColumn field=\"vendorCourseCode\" title=\"Course Code\" />\r\n                    <GridColumn field=\"id\" title=\" \" filterable={false} cell={GridColumnButton} width={90} />\r\n                </Grid>\r\n            </div>\r\n        </div>\r\n        </div>\r\n    )\r\n}\r\n\r\n","import React, { useState, useEffect } from 'react';\r\nimport productService from '../../../services/ProductService';\r\nimport vendorService from '../../../services/VendorService';\r\nimport codesetService from '../../../services/CodesetService';\r\nimport IProduct from '../../../model/Product'\r\nimport { Modal, Button, Dropdown, DropdownButton, Form, Row, Col, Card } from 'react-bootstrap';\r\nimport { Grid, GridColumn, GridFilterChangeEvent,GridSortChangeEvent, GridToolbar } from '@progress/kendo-react-grid';\r\nimport { filterBy, CompositeFilterDescriptor, orderBy, SortDescriptor} from \"@progress/kendo-data-query\";\r\nimport IVendor from '../../../model/Vendor';\r\nimport ICodeSet from '../../../model/Codeset';\r\nimport { FormMode } from '../../../services/Utility'\r\nimport { CaseOrDefaultClause } from 'typescript';\r\n\r\nexport default function Product(props: any) {\r\n    const [rowData, setRowData] = useState<IProduct[]>([]);\r\n    const [vendors, setVendorList] = useState<IVendor[]>([]);\r\n    const options = vendors.map(v => ({\r\n        label: v.vendorName,\r\n        value: v.id\r\n    }));\r\n    const [codesetData, setCodeSetData] = useState<ICodeSet[]>([]);\r\n    const [priceTypeList, setpriceTypeList] = useState<ICodeSet[]>([]);\r\n    const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n    const [formValue, setFormValue] = useState<IProduct>({\r\n        id: 0,\r\n        productSKU: '',\r\n        productName: '',\r\n        productDescription: '',\r\n        price: 0,\r\n        vendorId: 0,\r\n        vendorName: '',\r\n        priceTypeId: 0,\r\n        //priceType: '',\r\n        isActive: true,\r\n        modifiedBy: ''\r\n    });\r\n    const initialFilter: CompositeFilterDescriptor = {\r\n        logic: \"and\",\r\n        filters: [],\r\n      };\r\n    const [filter, setFilter] = useState(initialFilter);\r\n\r\n    const initialSort: Array<SortDescriptor> = [\r\n    ];\r\n    const [sort, setSort] = React.useState(initialSort);\r\n    const handleChange = (event: any) => {\r\n        const target = event.target //as HTMLSelectElement\r\n        const value = target.type === 'checkbox' ? target.checked : target.value\r\n\r\n        setFormValue({ ...formValue, [target.name]: value });\r\n    };\r\n\r\n    const post = (event: any) => {\r\n        let product: IProduct = {\r\n            productSKU: formValue.productSKU,\r\n            productName: formValue.productName,\r\n            productDescription: formValue.productDescription,\r\n            price: Number(formValue.price),\r\n            vendorId: Number(formValue.vendorId),\r\n            priceTypeId: Number(formValue.priceTypeId),\r\n            //priceType: '',\r\n            isActive: formValue.isActive,\r\n            modifiedBy: ''\r\n        };\r\n        productService.post(product).then(response => {\r\n            // Display Success message\r\n        })\r\n        event.preventDefault();\r\n    }\r\n\r\n    const onFormAction = (productId: number, actionType: FormMode) => {\r\n        setErrors({\r\n            productNameError: '',\r\n            productSKUError: '',\r\n            priceError: '',\r\n            priceTypeError: '',\r\n        });\r\n        switch (actionType) {\r\n            case FormMode.New:\r\n                setFormMode(FormMode.New)\r\n                //Clear Existing vlues\r\n                let productReset: IProduct = {\r\n                    id: 0,\r\n                    productSKU: '',\r\n                    productName: '',\r\n                    productDescription: '',\r\n                    price: 0,\r\n                    vendorId: props?.selectedVendorId,\r\n                    priceTypeId: 0,\r\n                    //priceType: '',\r\n                    isActive: true,\r\n                    modifiedBy: ''\r\n                };\r\n                setFormValue(productReset)\r\n                vendorService.getData().then(response => {\r\n                    setVendorList(response.data)\r\n                });\r\n                codesetService.getData().then(response => {\r\n                    setCodeSetData(response.data);\r\n                    let data = response.data as ICodeSet[]\r\n                    let priceTypeList = data.filter(x => x.codeSetName.toLowerCase().includes('pricetype'));\r\n                    setpriceTypeList(priceTypeList);\r\n                });\r\n\r\n                break;\r\n            case FormMode.Edit:\r\n                setFormMode(FormMode.Edit)\r\n\r\n                vendorService.getData().then(response => {\r\n                    setVendorList(response.data);\r\n                });\r\n\r\n                productService.getById(productId).then(productResponse => {\r\n                    setFormValue(productResponse.data);\r\n                });\r\n\r\n                codesetService.getData().then(response => {\r\n                    setCodeSetData(response.data);\r\n                    let data = response.data as ICodeSet[]\r\n                    let priceTypeList = data.filter(x => x.codeSetName.toLowerCase().includes('pricetype'));\r\n                    setpriceTypeList(priceTypeList);\r\n                });\r\n\r\n                break;\r\n            case FormMode.Delete:\r\n                let productDetails: IProduct = {\r\n                    id: productId,\r\n                    productSKU: '',\r\n                    productName: '',\r\n                    productDescription: '',\r\n                    price: 0,\r\n                    vendorId: 0,\r\n                    priceTypeId: 0,\r\n                    //priceType: '',\r\n                    isActive: true,\r\n                    modifiedBy: ''\r\n                };\r\n                setFormValue(productDetails)\r\n                setFormMode(FormMode.Delete)\r\n                break;\r\n            default: {\r\n                setFormMode(FormMode.None)\r\n                break;\r\n            }\r\n        }\r\n    }\r\n\r\n    const onSave = (event: any, actionType: FormMode) => {\r\n        let product: IProduct = {\r\n            id: formValue.id,\r\n            productSKU: formValue.productSKU,\r\n            productName: formValue.productName,\r\n            productDescription: formValue.productDescription,\r\n            price: Number(formValue.price),\r\n            vendorId: Number(formValue.vendorId),\r\n            priceTypeId: Number(formValue.priceTypeId),\r\n            //priceType: '',\r\n            isActive: formValue.isActive,\r\n            modifiedBy: ''\r\n        };\r\n        switch (actionType) {\r\n            case FormMode.New:\r\n                event.preventDefault();\r\n                if (validate()) {\r\n                    productService.post(product).then(response => {\r\n                        // Display Success message\r\n                        getProductData();\r\n                        const target = event.target \r\n                        if(target.id == \"save-add-another-product\"){\r\n                            let productReset: IProduct = {\r\n                                id: 0,\r\n                                productSKU: '',\r\n                                productName: '',\r\n                                productDescription: '',\r\n                                price: 0,\r\n                                vendorId: props?.selectedVendorId,\r\n                                priceTypeId: 0,\r\n                                //priceType: '',\r\n                                isActive: true,\r\n                                modifiedBy: ''\r\n                            };\r\n                            setFormValue(productReset)\r\n                            setFormMode(FormMode.New)\r\n                        }else{\r\n                            setFormMode(FormMode.None)\r\n                        }\r\n                        \r\n                    })\r\n                }\r\n                //Clear Existing vlues\r\n                break;\r\n            case FormMode.Edit:\r\n                setFormMode(FormMode.Edit)\r\n                event.preventDefault();\r\n                if (validate()) {\r\n                    productService.edit(product).then(response => {\r\n                        // Display Success message\r\n                        getProductData();\r\n                        setFormMode(FormMode.None)\r\n                    })\r\n                }\r\n                break;\r\n            case FormMode.Delete:\r\n                setFormMode(FormMode.Delete)\r\n                var productId = Number(product.id);\r\n                productService.delete(productId).then(response => {\r\n                    // Display Success message\r\n                    getProductData();\r\n                    setFormMode(FormMode.None)\r\n                })\r\n                break;\r\n            default: {\r\n                setFormMode(FormMode.None)\r\n                break;\r\n            }\r\n        }\r\n    }\r\n    const getProductData = () => {\r\n        productService.getByVendorId(props?.selectedVendorId).then(response => {\r\n            setRowData(response.data)\r\n        })\r\n    }\r\n    useEffect(() => {\r\n        getProductData();\r\n    }, []);\r\n\r\n    const [errors, setErrors] = useState({\r\n        productNameError: '',\r\n        productSKUError: '',\r\n        priceError: '',\r\n        priceTypeError: '',\r\n    })\r\n    const validate = () => {\r\n        let error = {\r\n            productNameError: '',\r\n            productSKUError: '',\r\n            priceError: '',\r\n            priceTypeError: '',\r\n        };\r\n\r\n        if (formMode == FormMode.New || formMode == FormMode.Edit) {\r\n            if (!formValue.productName) { error.productNameError = \"Name is required\"; }\r\n            if (!formValue.productSKU) { error.productSKUError = \"SKU is required\"; }\r\n            if (!formValue.priceTypeId) { error.priceTypeError = \"Choose Price Type\"; }\r\n            if (!formValue.price) { error.priceError = \"Cost is required\"; }\r\n\r\n            setErrors(error);\r\n            if (error.productNameError || error.productSKUError || error.priceTypeError || error.priceError) {\r\n                return false;\r\n            }\r\n        }\r\n        return true;\r\n    };\r\n\r\n    const GridColumnButton = (props: any) => {\r\n        return (\r\n            <td className=\"text-right\" style={{ overflow: 'visible' }}>\r\n                <DropdownButton\r\n                    menuAlign=\"right\"\r\n                    title={<i className='fas fa-bars'></i>}\r\n                    id=\"dropdown-menu-align-right\"\r\n                    size=\"sm\"\r\n                    variant=\"outline-primary\"\r\n                    className=\"menu-bars\"\r\n                >\r\n                    <Dropdown.Item onClick={() => { onFormAction(props.dataItem?.id, FormMode.Edit) }}>Edit Pricing</Dropdown.Item>\r\n                    <Dropdown.Item onClick={() => { onFormAction(props.dataItem?.id, FormMode.Delete) }}>Delete Pricing</Dropdown.Item>\r\n                </DropdownButton>\r\n            </td>\r\n        )\r\n    }\r\n\r\n    return (\r\n        <div>\r\n            <Modal backdrop=\"static\" keyboard={false} animation={false} show={formMode == FormMode.Edit || formMode == FormMode.New} onHide={() => { setFormMode(FormMode.None) }}>\r\n                <Modal.Header closeButton className=\"bg-primary text-white\">\r\n                    <Modal.Title>{formMode == FormMode.Edit ? \"Edit\" : \"Add\"} Vendor Pricing</Modal.Title>\r\n                </Modal.Header>\r\n                <Modal.Body>\r\n                    <Form>\r\n                        <input type=\"hidden\" name=\"id\" value={formValue.id ?? ''} onChange={handleChange} />\r\n                        <Row>\r\n                            <Form.Group controlId=\"productName\" className=\"col-sm-12\">\r\n                                <Form.Label>Name</Form.Label>\r\n                                <Form.Control type=\"text\" name=\"productName\" value={formValue.productName ?? ''} onChange={handleChange} />\r\n                                <Form.Text className=\"text-danger\">{errors.productNameError}</Form.Text>\r\n                            </Form.Group>\r\n                            <Form.Group controlId=\"productSKU\" className=\"col-sm-12\">\r\n                                <Form.Label>famis # (Sku)</Form.Label>\r\n                                <Form.Control type=\"text\" name=\"productSKU\" value={formValue.productSKU ?? ''} onChange={handleChange} />\r\n                                <Form.Text className=\"text-danger\">{errors.productSKUError}</Form.Text>\r\n                            </Form.Group>\r\n                            <Form.Group controlId=\"price\" className=\"col-sm-6\">\r\n                                <Form.Label>Cost</Form.Label>\r\n                                <Form.Control type=\"text\" name=\"price\" value={formValue.price ?? ''} onChange={handleChange} />\r\n                                <Form.Text className=\"text-danger\">{errors.priceError}</Form.Text>\r\n                            </Form.Group>\r\n                            <Form.Group controlId=\"state\" className=\"col-md-6 col-sm-6\">\r\n                                <Form.Label>Type</Form.Label>\r\n                                <Form.Control as=\"select\" name=\"priceTypeId\" value={formValue.priceTypeId} onChange={handleChange}>\r\n                                    <option key={0} defaultValue={0} selected hidden>Choose</option>\r\n                                    {priceTypeList.map((priceTypeOptions) => (\r\n                                        <option key={priceTypeOptions.id} value={priceTypeOptions.id}>{priceTypeOptions.displayText}</option>\r\n                                    ))}\r\n                                </Form.Control>\r\n                                <Form.Text className=\"text-danger\">{errors.priceTypeError}</Form.Text>\r\n                            </Form.Group>\r\n                        </Row>\r\n                    </Form>\r\n                </Modal.Body>\r\n                <Modal.Footer>\r\n                    <Button variant=\"secondary\" onClick={() => { setFormMode(FormMode.None) }}>Close</Button>\r\n                    <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Save</Button>\r\n                </Modal.Footer>\r\n            </Modal>\r\n\r\n            <Modal\r\n                show={formMode == FormMode.Delete}\r\n                onHide={() => { setFormMode(FormMode.None) }}\r\n                animation={false}\r\n                backdrop=\"static\"\r\n                keyboard={false}\r\n            >\r\n                <Modal.Header closeButton className=\"bg-primary text-white\">\r\n                    <Modal.Title>Delete Product</Modal.Title>\r\n                </Modal.Header>\r\n                <Modal.Body>\r\n                    Are you sure you want to delete the Product ?\r\n                </Modal.Body>\r\n                <Modal.Footer>\r\n                    <Button variant=\"secondary\" onClick={(e) => { setFormMode(FormMode.None) }}>Cancel</Button>\r\n                    <Button variant=\"primary\" type=\"button\" onClick={(e) => { onSave(e, formMode) }}>Delete</Button>\r\n                </Modal.Footer>\r\n            </Modal>\r\n\r\n            <Card className=\"mt-4\">\r\n                <Card.Header className=\"card-header font-weight-bold bg-secondary-light\">\r\n                    <Row className=\"align-items-center\">\r\n                        <Col xs={10}>Vendor Pricing</Col>\r\n                        <Col xs={2} className=\"text-right\">\r\n                            <Button variant=\"primary\" size=\"sm\" onClick={(e) => { onFormAction(0, FormMode.New)}}>\r\n                                <i className=\"fas fa-plus\"></i>\r\n                            </Button>\r\n                        </Col>\r\n                    </Row>\r\n                </Card.Header>\r\n                <Card.Body>\r\n                    <Grid data={filterBy(rowData, filter)} \r\n                        filter={filter}\r\n                        filterable={false} \r\n                        pageable={false} \r\n                        sortable={true}\r\n                        scrollable={\"none\"}                            \r\n                        sort={sort}\r\n                        onFilterChange={(e: GridFilterChangeEvent) => setFilter(e.filter)}\r\n                        onSortChange={(e: GridSortChangeEvent) => {setSort(e.sort);}}\r\n                        className=\"k-grid-no-header\"\r\n                    >\r\n                        <GridColumn field=\"productName\" title=\"Name\" />\r\n                        <GridColumn field=\"productSKU\" title=\"FAMIS # (SKU)\" />\r\n                        <GridColumn field=\"Pricing\" filterable={false} sortable={false} title=\"Pricing\" cell={\r\n                            props => (\r\n                                <td>\r\n                                    <div>{props.dataItem.price} {props.dataItem.priceType}</div>\r\n                                </td>\r\n                            )} />\r\n                        <GridColumn field=\"ProductId\" filterable={false} title=\" \" cell={GridColumnButton} />\r\n                    </Grid>\r\n                </Card.Body>\r\n            </Card>            \r\n        </div>\r\n    )\r\n}\r\n\r\n","import React, { useState, useEffect, useReducer, useRef } from 'react';\r\nimport { Modal, Button, Dropdown, DropdownButton, Form, Row } from 'react-bootstrap';\r\nimport { Grid, GridColumn, GridFilterChangeEvent } from '@progress/kendo-react-grid';\r\nimport { filterBy, CompositeFilterDescriptor, } from \"@progress/kendo-data-query\";\r\nimport vendorService from '../../../services/VendorService';\r\nimport codesetService from '../../../services/CodesetService';\r\nimport IVendor from '../../../model/Vendor'\r\nimport ICodeSet from '../../../model/Codeset'\r\nimport IStateCode from '../../../model/StateCode'\r\nimport VendorDetail from '../../../shared/VendorDetail'\r\nimport VendorContentManagement from './VendorContentManagement'\r\nimport GridHierarchyExpand from '../../../shared/GridHierarchyExpand'\r\nimport VendorService from '../../../services/VendorService';\r\nimport Product from './Product';\r\nimport { FormMode } from '../../../services/Utility'\r\nimport IconWindowGear from '../../../assets/icons/icon-window-gear';\r\n\r\nconst initialFilter: CompositeFilterDescriptor = {\r\n    logic: \"and\",\r\n    filters: [],\r\n};\r\nconst initialDataState = {\r\n    skip: 0,\r\n    take: 10,\r\n};\r\nexport default function VendorManage() {\r\n\r\n    const mountedRef = useRef(true);\r\n    //Page Load event - Get data from Service\r\n    const [data, setRowData] = useState<IVendor[]>([]);\r\n    //Force re-render the child component on Expand\r\n    const [ignored, forceUpdate] = useReducer(x => x + 1, 0);\r\n\r\n    const [filter, setFilter] = useState(initialFilter);\r\n    const [page, setPage] = React.useState(initialDataState);\r\n\r\n    const pageChange = (event: any) => {\r\n        setChildFormMode(FormMode.None)\r\n        setPage(event.page);\r\n    };\r\n    const getVendorData = () => {\r\n        VendorService.getData().then(response => {\r\n            setRowData(response.data)\r\n        })\r\n        return () => { mountedRef.current = false }\r\n    }\r\n\r\n    useEffect(() => {\r\n        getVendorData();\r\n        data.map((item: any) => {\r\n            item.expanded = false;\r\n            item.isSelected = false\r\n            return item;\r\n        })\r\n        return () => { mountedRef.current = false }\r\n    }, []);\r\n\r\n    //On click of expand this function will call\r\n    const SubGridHost = (props: any) => {\r\n        // feed data to below components, Call the service Based on the prop.Id\r\n        return (\r\n            <div className=\"m-0\">\r\n                <VendorDetail data={props.dataItem} />\r\n                <Product selectedVendorId={props.dataItem?.id} />\r\n                <VendorContentManagement vendorId={props.dataItem?.id} updateCourseCount={updateCourseCount} childFormMode={childFormMode} />\r\n            </div>\r\n        )\r\n    }\r\n\r\n    const GridColumnButton = (props: any) => {\r\n        return (\r\n            <td className=\"text-right\" style={{ overflow: 'visible' }}>\r\n                <DropdownButton\r\n                    menuAlign=\"right\"\r\n                    title={<i className='fas fa-bars'></i>}\r\n                    id=\"dropdown-menu-align-right\"\r\n                    size=\"sm\"\r\n                    variant=\"outline-primary\"\r\n                    className=\"menu-bars\"\r\n                >\r\n                    <Dropdown.Item onClick={() => { onFormAction(props.dataItem?.id, FormMode.Edit) }}>Edit Vendor</Dropdown.Item>\r\n                    {\r\n                        props.dataItem?.vendorCourseAssignedCount > 0 ? ' ' :\r\n                            <Dropdown.Item onClick={() => { onFormAction(props.dataItem?.id, FormMode.Delete) }}>Delete Vendor</Dropdown.Item>\r\n                    }\r\n                </DropdownButton>\r\n            </td>\r\n        )\r\n    }\r\n\r\n    const GridColumnHierarchyExpand = (props: any) => <GridHierarchyExpand {...props} expandChange={onGridExpand} />\r\n    const GridColumnHighLightText = (props: any) => {\r\n        return (\r\n            <td>\r\n                <div className=\"d-flex\">\r\n                    <div className=\"svg-app-icon text-blue-gray mr-3\" style={{ height: \"60px\" }}>\r\n                        <IconWindowGear />\r\n                    </div>\r\n                    <div>\r\n                        <div className=\"text-dark mb-0 h4 p-0 font-weight-bold\">{props.dataItem.vendorName}</div>\r\n                        <div>{props.dataItem.city}, {props.dataItem.state}</div>\r\n                        <div>{props.dataItem.phoneNumber}</div>\r\n                    </div>\r\n                </div>\r\n            </td>\r\n        )\r\n    }\r\n\r\n    const onGridExpand = (dataItem: any) => {\r\n        setChildFormMode(FormMode.None)\r\n        dataItem.expanded = !dataItem.expanded;\r\n        forceUpdate();\r\n    }\r\n\r\n    const [stateCodes, setStateCodes] = useState<IStateCode[]>([]);\r\n    const [codesetData, setCodeSetData] = useState<ICodeSet[]>([]);\r\n    const [licenseModel, setLicenseModelList] = useState<ICodeSet[]>([]);\r\n    const [licenseType, setLicenseTypeList] = useState<ICodeSet[]>([]);\r\n    const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n    const [formValue, setFormValue] = useState<IVendor>({\r\n        id: 0,\r\n        vendorName: '',\r\n        vendorDescription: '',\r\n        vendorShortName: '',\r\n        phoneNumber: '',\r\n        vendorEmail: '',\r\n        addressLine1: '',\r\n        addressLine2: '',\r\n        city: '',\r\n        state: '',\r\n        zip: '',\r\n        licenseModelId: 0,\r\n        licenseTypeId: 0,\r\n        licenseModel: '',\r\n        licenseType: '',\r\n        assignedContent: 0,\r\n        totalContent: 0,\r\n        courseCount: 0,\r\n        availableLicenses: 0,\r\n        totalLicenses: 0,\r\n        isActive: true,\r\n        modifiedBy: '',\r\n        vendorCourseAssignedCount: 0\r\n    });\r\n\r\n    const handleChange = (event: any) => {\r\n        if (event.target.name == 'licenseModelId') {\r\n            if ((event.target.value == licenseModel.find(l => l.displayText == 'Per student per enrollment/course')?.id || event.target.value == licenseModel.find(l => l.displayText == 'Unlimited use of catalog for unlimited users')?.id)) {\r\n                let data = licenseType\r\n                let licenseTypeList = data.filter(x => x.displayText == licenseType.find(t => t.displayText == 'Non-Transferrable')?.displayText);\r\n                setLicenseTypeList(licenseTypeList)\r\n                let NonTransferrableLicense = licenseType.find(t => t.displayText == 'Non-Transferrable')\r\n                if (NonTransferrableLicense) {\r\n                    formValue.licenseTypeId = NonTransferrableLicense.id ? NonTransferrableLicense.id : 0\r\n                    setFormValue(formValue);\r\n                }\r\n\r\n            } else {\r\n                let licenseTypeList = codesetData.filter(x => x.codeSetName.toLowerCase().includes('licensetype'));\r\n                setLicenseTypeList(licenseTypeList);\r\n            }\r\n        }\r\n        const target = event.target //as HTMLSelectElement\r\n        const value = target.type === 'checkbox' ? target.checked : target.value\r\n        setFormValue({ ...formValue, [target.name]: value });\r\n    };\r\n\r\n    const post = (event: any) => {\r\n        let vendor: IVendor = {\r\n            vendorName: formValue.vendorName,\r\n            vendorDescription: formValue.vendorDescription,\r\n            vendorShortName: formValue.vendorShortName,\r\n            phoneNumber: formValue.phoneNumber,\r\n            vendorEmail: formValue.vendorEmail,\r\n            addressLine1: formValue.addressLine1,\r\n            addressLine2: formValue.addressLine2,\r\n            city: formValue.city,\r\n            state: formValue.state,\r\n            zip: formValue.zip,\r\n            isActive: formValue.isActive,\r\n            licenseModelId: Number(formValue.licenseModelId),\r\n            licenseTypeId: Number(formValue.licenseTypeId),\r\n            assignedContent: 0,\r\n            totalContent: 0,\r\n            courseCount: 0,\r\n            availableLicenses: 0,\r\n            totalLicenses: 0,\r\n            modifiedBy: '',\r\n            vendorCourseAssignedCount: 0\r\n        };\r\n        vendorService.post(vendor).then(response => {\r\n            // Display Success message\r\n        })\r\n        event.preventDefault();\r\n    }\r\n\r\n    const frameworkComponents = {\r\n        btnCellRenderer: (props: any) => {\r\n            return (<Button variant=\"primary\" onClick={() => {\r\n                props.onClick(props.value, props.formAction)\r\n            }}>\r\n                {props.buttonText}\r\n            </Button>)\r\n        }\r\n    }\r\n\r\n\r\n    const onFormAction = (vendorId: number, actionType: FormMode) => {\r\n        setChildFormMode(FormMode.None)\r\n        setErrors({\r\n            vendorNameError: '',\r\n            licenseModelError: '',\r\n            licenseTypeError: '',\r\n        });\r\n        switch (actionType) {\r\n            case FormMode.New:\r\n                let addVendorDetails: IVendor = {\r\n                    id: vendorId,\r\n                    vendorName: '',\r\n                    vendorDescription: '',\r\n                    vendorShortName: '',\r\n                    phoneNumber: '',\r\n                    vendorEmail: '',\r\n                    addressLine1: '',\r\n                    addressLine2: '',\r\n                    city: '',\r\n                    state: '',\r\n                    zip: '',\r\n                    licenseModelId: 0,\r\n                    licenseTypeId: 0,\r\n                    licenseModel: '',\r\n                    licenseType: '',\r\n                    assignedContent: 0,\r\n                    totalContent: 0,\r\n                    availableLicenses: 0,\r\n                    totalLicenses: 0,\r\n                    courseCount: 0,\r\n                    isActive: true,\r\n                    modifiedBy: '',\r\n                    vendorCourseAssignedCount: 0\r\n                };\r\n                setFormValue(addVendorDetails)\r\n                vendorService.getStates().then(response => {\r\n                    setStateCodes(response.data)\r\n                });\r\n                codesetService.getData().then(response => {\r\n                    setCodeSetData(response.data);\r\n                    let data = response.data as ICodeSet[];\r\n                    let licenseModelList = data.filter(x => x.codeSetName.toLowerCase().includes('licensemodel'));\r\n                    setLicenseModelList(licenseModelList);\r\n                    let licenseTypeList = data.filter(x => x.codeSetName.toLowerCase().includes('licensetype'));\r\n                    setLicenseTypeList(licenseTypeList);\r\n                });\r\n                setFormMode(FormMode.New);\r\n                //Clear Existing vlues\r\n                break;\r\n            case FormMode.Edit:\r\n                vendorService.getStates().then(response => {\r\n                    setStateCodes(response.data)\r\n                });\r\n                codesetService.getData().then(response => {\r\n                    setCodeSetData(response.data);\r\n                    let data = response.data as ICodeSet[];\r\n                    let licenseModelList = data.filter(x => x.codeSetName.toLowerCase().includes('licensemodel'));\r\n                    setLicenseModelList(licenseModelList);\r\n                    let licenseTypeList = data.filter(x => x.codeSetName.toLowerCase().includes('licensetype'));\r\n                    setLicenseTypeList(licenseTypeList);\r\n                });\r\n                vendorService.getById(vendorId).then(response => {\r\n                    setFormValue(response.data)\r\n                    let vendorDetails = response.data as IVendor;\r\n                    formValue.licenseModelId = vendorDetails.licenseModelId;\r\n                    formValue.licenseTypeId = vendorDetails.licenseTypeId;\r\n                })\r\n                setFormMode(FormMode.Edit)\r\n                break;\r\n            case FormMode.Delete:\r\n                //TODO: why vendorDetails Intilized\r\n                let vendorDetails: IVendor = {\r\n                    id: vendorId,\r\n                    vendorName: '',\r\n                    vendorDescription: '',\r\n                    vendorShortName: '',\r\n                    phoneNumber: '',\r\n                    vendorEmail: '',\r\n                    addressLine1: '',\r\n                    addressLine2: '',\r\n                    city: '',\r\n                    state: '',\r\n                    zip: '',\r\n                    licenseModelId: 0,\r\n                    licenseTypeId: 0,\r\n                    licenseModel: '',\r\n                    licenseType: '',\r\n                    assignedContent: 0,\r\n                    totalContent: 0,\r\n                    availableLicenses: 0,\r\n                    totalLicenses: 0,\r\n                    courseCount: 0,\r\n                    isActive: true,\r\n                    modifiedBy: '',\r\n                    vendorCourseAssignedCount: 0\r\n                };\r\n                setFormValue(vendorDetails)\r\n                setFormMode(FormMode.Delete)\r\n                break;\r\n            default: {\r\n                setFormMode(FormMode.None)\r\n                break;\r\n            }\r\n        }\r\n    }\r\n\r\n    const onSave = (event: any, actionType: FormMode) => {\r\n\r\n        let vendor: IVendor = {\r\n            id: formValue.id,\r\n            vendorName: formValue.vendorName,\r\n            vendorDescription: formValue.vendorDescription,\r\n            vendorShortName: formValue.vendorShortName,\r\n            phoneNumber: formValue.phoneNumber,\r\n            vendorEmail: formValue.vendorEmail,\r\n            addressLine1: formValue.addressLine1,\r\n            addressLine2: formValue.addressLine2,\r\n            city: formValue.city,\r\n            state: formValue.state,\r\n            zip: formValue.zip,\r\n            isActive: formValue.isActive,\r\n            licenseModelId: Number(formValue.licenseModelId),\r\n            licenseTypeId: Number(formValue.licenseTypeId),\r\n            assignedContent: 0,\r\n            totalContent: 0,\r\n            availableLicenses: 0,\r\n            totalLicenses: 0,\r\n            courseCount: 0,\r\n            modifiedBy: '',\r\n            vendorCourseAssignedCount: 0\r\n        };\r\n        switch (actionType) {\r\n            case FormMode.New:\r\n                event.preventDefault();\r\n                if (validate()) {\r\n                    vendorService.post(vendor).then(response => {\r\n                        // Display Success message\r\n                        getVendorData();\r\n                        setFormMode(FormMode.None)\r\n                    })\r\n                }\r\n                //Clear Existing vlues\r\n\r\n                break;\r\n            case FormMode.Edit:\r\n\r\n                event.preventDefault();\r\n                if (validate()) {\r\n                    vendorService.edit(vendor).then(response => {\r\n                        // Display Success message\r\n                        getVendorData(); // TODO : update item in collection instead\r\n                        setFormMode(FormMode.None)\r\n                    })\r\n                }\r\n                break;\r\n            case FormMode.Delete:\r\n                var vendorId = Number(vendor.id);\r\n                vendorService.delete(vendorId).then(response => {\r\n                    // Display Success message\r\n                    getVendorData();   // TODO : remove item from collection instead\r\n                    setFormMode(FormMode.None)\r\n                })\r\n                break;\r\n            default: {\r\n                setFormMode(FormMode.None)\r\n                break;\r\n            }\r\n        }\r\n    }\r\n    const [errors, setErrors] = useState({\r\n        vendorNameError: '',\r\n        licenseModelError: '',\r\n        licenseTypeError: '',\r\n    })\r\n    const validate = () => {\r\n        let error = {\r\n            vendorNameError: '',\r\n            licenseModelError: '',\r\n            licenseTypeError: '',\r\n        };\r\n\r\n        if (formMode == FormMode.New || formMode == FormMode.Edit) {\r\n            if (!formValue.vendorName) { error.vendorNameError = \"Name is required\"; }\r\n\r\n            if (!formValue.licenseModelId) { error.licenseModelError = \"Choose License Usage\"; }\r\n\r\n            if (!formValue.licenseTypeId) { error.licenseTypeError = \"Choose License Type\"; }\r\n\r\n            setErrors(error);\r\n            if (error.vendorNameError || error.licenseModelError || error.licenseTypeError) {\r\n                return false;\r\n            }\r\n        }\r\n        return true;\r\n    };\r\n\r\n    const [childFormMode, setChildFormMode] = useState<FormMode>(FormMode.None);\r\n    const updateCourseCount = (counter: number, vendorId: number, currentFormMode: FormMode) => {\r\n        let vendorArray = data;\r\n        let vendorIndex = vendorArray.findIndex(o => o.id == vendorId);\r\n        vendorArray[vendorIndex].courseCount += counter\r\n        setRowData([...vendorArray.slice(0, vendorIndex), vendorArray[vendorIndex], ...vendorArray.slice(vendorIndex + 1)])\r\n        setChildFormMode(currentFormMode);\r\n    }\r\n\r\n    return (\r\n        <div>\r\n            <div className=\"text-right mb-2\">\r\n                <Button variant=\"primary\" onClick={(e) => { onFormAction(0, FormMode.New) }}><i className=\"fas fa-plus\"></i></Button>\r\n            </div>\r\n            <Grid\r\n                data={filterBy(data, filter).slice(page.skip, page.take + page.skip)}\r\n                filter={filter}\r\n                filterable={true}\r\n                skip={page.skip}\r\n                take={page.take}\r\n                total={data.length}\r\n                pageable={true}\r\n                detail={SubGridHost}\r\n                expandField={'expanded'}\r\n                onPageChange={pageChange}\r\n                onFilterChange={(e: GridFilterChangeEvent) => setFilter(e.filter)}\r\n                scrollable={\"none\"}\r\n            >\r\n\r\n                <GridColumn field=\"expanded\" filterable={false} cell={GridColumnHierarchyExpand} title=' ' />\r\n                <GridColumn field=\"vendorName\" filterable={true} title=\"Vendor\" cell={GridColumnHighLightText} />\r\n                <GridColumn field=\"Courses\" filterable={false} title=\"Courses\" cell={\r\n                    props => (\r\n                        <td>\r\n                            <div>{props.dataItem.courseCount}</div>\r\n                        </td>\r\n                    )} />\r\n                <GridColumn field=\"id\" title=\" \" filterable={false} className=\"text-right\" cell={GridColumnButton} />\r\n            </Grid>\r\n\r\n            <Modal size=\"lg\" backdrop=\"static\" keyboard={false} animation={false} show={formMode == FormMode.Edit || formMode == FormMode.New} onHide={() => { setFormMode(FormMode.None) }}>\r\n                <Modal.Header closeButton className=\"bg-primary text-white\">\r\n                    <Modal.Title>{formMode == FormMode.Edit ? \"Edit\" : \"New Vendor Account\"}</Modal.Title>\r\n                </Modal.Header>\r\n                <Modal.Body>\r\n                    <Form>\r\n                        <input type=\"hidden\" name=\"id\" value={formValue.id ?? ''} onChange={handleChange} />\r\n                        <Row>\r\n                            <div className=\"form-group col-12\">\r\n                                <h4 className=\"mb-0\">Vendor Information</h4>\r\n                            </div>\r\n                            <Form.Group controlId=\"vendorName\" className=\"col-sm-6\">\r\n                                <Form.Label>Vendor Name</Form.Label>\r\n                                <Form.Control type=\"text\" name=\"vendorName\" value={formValue.vendorName ?? ''} onChange={handleChange} />\r\n                                <Form.Text className=\"text-danger\">{errors.vendorNameError}</Form.Text>\r\n                            </Form.Group>\r\n                            <Form.Group controlId=\"vendorShortName\" className=\"col-sm-6\">\r\n                                <Form.Label>Short Name</Form.Label>\r\n                                <Form.Control type=\"text\" name=\"vendorShortName\" value={formValue.vendorShortName ?? ''} onChange={handleChange} />\r\n                                <Form.Text className=\"text-danger\"></Form.Text>\r\n                            </Form.Group>\r\n                            <Form.Group controlId=\"addressLine1\" className=\"col-sm-6\">\r\n                                <Form.Label>Address Line</Form.Label>\r\n                                <Form.Control type=\"text\" name=\"addressLine1\" value={formValue.addressLine1 ?? ''} onChange={handleChange} />\r\n                                <Form.Text className=\"text-danger\"></Form.Text>\r\n                            </Form.Group>\r\n                            <Form.Group controlId=\"addressLine2\" className=\"col-sm-6\">\r\n                                <Form.Label>Address Line 2</Form.Label>\r\n                                <Form.Control type=\"text\" name=\"addressLine2\" value={formValue.addressLine2 ?? ''} onChange={handleChange} />\r\n                                <Form.Text className=\"text-danger\"></Form.Text>\r\n                            </Form.Group>\r\n                            <Form.Group controlId=\"city\" className=\"col-sm-6\">\r\n                                <Form.Label>City</Form.Label>\r\n                                <Form.Control type=\"text\" name=\"city\" value={formValue.city ?? ''} onChange={handleChange} />\r\n                                <Form.Text className=\"text-danger\"></Form.Text>\r\n                            </Form.Group>\r\n                            <Form.Group controlId=\"state\" className=\"col-md-3 col-sm-6\">\r\n                                <Form.Label>State</Form.Label>\r\n                                <Form.Control as=\"select\" name=\"state\" value={formValue.state} onChange={handleChange}>\r\n                                    <option key={0} defaultValue={0} selected hidden>Choose</option>\r\n                                    {stateCodes.map((stateCodesOptions) => (\r\n                                        <option defaultValue=\"Choose\" key={stateCodesOptions.stateCode} value={stateCodesOptions.stateCode}>{stateCodesOptions.stateCode}</option>\r\n                                    ))}\r\n                                </Form.Control>\r\n                                <Form.Text className=\"text-danger\"></Form.Text>\r\n                            </Form.Group>\r\n                            <Form.Group controlId=\"zip\" className=\"col-md-3 col-sm-6\">\r\n                                <Form.Label>Zip</Form.Label>\r\n                                <Form.Control type=\"text\" name=\"zip\" value={formValue.zip ?? ''} onChange={handleChange} />\r\n                                <Form.Text className=\"text-danger\"></Form.Text>\r\n                            </Form.Group>\r\n                            <Form.Group controlId=\"phoneNumber\" className=\"col-sm-6\">\r\n                                <Form.Label>Phone</Form.Label>\r\n                                <Form.Control type=\"text\" name=\"phoneNumber\" value={formValue.phoneNumber ?? ''} onChange={handleChange} />\r\n                                <Form.Text className=\"text-danger\"></Form.Text>\r\n                            </Form.Group>\r\n                            <Form.Group controlId=\"vendorEmail\" className=\"col-sm-6\">\r\n                                <Form.Label>Email</Form.Label>\r\n                                <Form.Control type=\"email\" name=\"vendorEmail\" value={formValue.vendorEmail ?? ''} onChange={handleChange} />\r\n                                <Form.Text className=\"text-danger\"></Form.Text>\r\n                            </Form.Group>\r\n                            <div className=\"form-group col-12\">\r\n                                <h4 className=\"mb-0\">Vendor Pricing</h4>\r\n                            </div>\r\n                            <Form.Group controlId=\"vendorDescription\" className=\"col-12\">\r\n                                <Form.Label>License Description</Form.Label>\r\n                                <Form.Control as=\"textarea\" rows={3} name=\"vendorDescription\" value={formValue.vendorDescription ?? ''} onChange={handleChange} />\r\n                                <Form.Text className=\"text-danger\"></Form.Text>\r\n                            </Form.Group>\r\n                            <Form.Group controlId=\"licenseModelId\" className=\"col-sm-6\">\r\n                                <Form.Label>License Usage</Form.Label>\r\n                                <Form.Control as=\"select\" name=\"licenseModelId\" value={formValue.licenseModelId ?? 0} onChange={handleChange}>\r\n                                    <option key={0} defaultValue={0} selected hidden>Choose</option>\r\n                                    {licenseModel.map((licenseModelOptions) => (\r\n                                        <option key={licenseModelOptions.id} value={licenseModelOptions.id}>{licenseModelOptions.displayText}</option>\r\n                                    ))}\r\n                                </Form.Control>\r\n                                <Form.Text className=\"text-danger\">{errors.licenseModelError}</Form.Text>\r\n                            </Form.Group>\r\n                            <Form.Group controlId=\"licenseTypeId\" className=\"col-sm-6\">\r\n                                <Form.Label>License Type</Form.Label>\r\n                                <Form.Control as=\"select\" name=\"licenseTypeId\" value={formValue.licenseTypeId ?? 0} onChange={handleChange}>\r\n                                    <option key={0} defaultValue={0} selected hidden>Choose</option>\r\n                                    {licenseType.map((licenseTypeOptions) => (\r\n                                        <option key={licenseTypeOptions.id} value={licenseTypeOptions.id}>{licenseTypeOptions.displayText}</option>\r\n                                    ))}\r\n                                </Form.Control>\r\n                                <Form.Text className=\"text-danger\">{errors.licenseTypeError}</Form.Text>\r\n                            </Form.Group>\r\n                        </Row>\r\n                    </Form>\r\n                </Modal.Body>\r\n                <Modal.Footer>\r\n                    <Button variant=\"secondary\" onClick={() => { setFormMode(FormMode.None) }}>Close</Button>\r\n                    <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Save</Button>\r\n                </Modal.Footer>\r\n            </Modal>\r\n\r\n            <Modal\r\n                show={formMode == FormMode.Delete}\r\n                onHide={() => { setFormMode(FormMode.None) }}\r\n                animation={false}\r\n                backdrop=\"static\"\r\n                keyboard={false}>\r\n\r\n                <Modal.Header closeButton className=\"bg-primary text-white\">\r\n                    <Modal.Title>Delete Vendor</Modal.Title>\r\n                </Modal.Header>\r\n                <Modal.Body>\r\n                    Are you sure you want to delete the vendor ?\r\n                </Modal.Body>\r\n                <Modal.Footer>\r\n                    <Button variant=\"secondary\" onClick={(e) => { setFormMode(FormMode.None) }}>Cancel</Button>\r\n                    <Button variant=\"primary\" type=\"button\" onClick={(e) => { onSave(e, formMode) }}>Delete</Button>\r\n                </Modal.Footer>\r\n            </Modal>\r\n\r\n        </div>\r\n    )\r\n}","import { AxiosInstances as AxiosInstance} from './BaseService'\r\n\r\nexport default {\r\n    getTeachersFromDaap: (locationCode : string) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Teacher/Daap/${locationCode}`\r\n        }),\r\n\r\n        addSchoolLeaders: (req:any) =>\r\n        AxiosInstance({\r\n            'method': 'POST',\r\n            'url': '/AddSchoolLeader',\r\n            'data':req\r\n        }),\r\n\r\n\r\n        getSchoolLeadersDetails: (locationCode : string) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/GetSchoolLeaders/${locationCode}`\r\n        }),\r\n}","import React, { useState, useEffect, useRef } from 'react';\r\nimport { Modal, Button, Dropdown, Form, Row } from 'react-bootstrap';\r\nimport {\r\n    Grid, GridColumn as Column, GridFilterChangeEvent, GridColumnMenuFilter,\r\n    GridColumnMenuProps,\r\n    GridSortChangeEvent,\r\n    GridColumn\r\n} from '@progress/kendo-react-grid';\r\nimport { filterBy, CompositeFilterDescriptor, } from \"@progress/kendo-data-query\";\r\nimport schoolService from '../../../services/SchoolService'\r\nimport ISchoolSetup from '../../../model/ISchoolSetup'\r\nimport IPrincipalInfo from '../../../model/IPrincipalInfo'\r\nimport ISchoolDaap from '../../../model/ISchoolDaap'\r\nimport { FormMode } from '../../../services/Utility'\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport { UserProfileType } from '../../../services/AppContext'\r\nimport LocalStorageService from '../../../services/LocalStorage';\r\nimport { orderBy, SortDescriptor } from \"@progress/kendo-data-query\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport schoolLeaderService from \"../../../services/SchoolLeaderService\";\r\nimport ITeacherFromDaap from \"../../../model/ITeachersFromDaap\";\r\nimport ISchoolLeader from \"../../../model/ISchoolLeader\"\r\nimport { isTemplateSpan } from 'typescript';\r\nimport { propTypes } from 'react-bootstrap/esm/Image';\r\nconst initialDataState = {\r\n    skip: 0,\r\n    take: 25,\r\n}; \r\n\r\ninterface dropDownData {\r\n    id: string\r\n    text: string\r\n}\r\n\r\nconst initialSort: Array<SortDescriptor> = [\r\n    { field: \"locationCode\", dir: \"asc\" },\r\n];\r\n\r\n\r\n\r\nexport default function SchoolManage() {\r\n\r\n    const mountedRef = useRef(true);\r\n    const [data, setRowData] = useState<ISchoolSetup[]>([]);\r\n    const [principalInfo, setPrincipalInfo] = useState<IPrincipalInfo>({\r\n        id: 0,\r\n    locationName: '',\r\n    locationCode: '',\r\n    principalFullName: '',\r\n    principalEmail: ''\r\n    });\r\n    const [schoolsFromDaap, setSchoolsFromDaap] = useState<dropDownData[]>([]);\r\n    const [schoolsDaap, setSchoolsDaap] = useState<dropDownData[]>([]);\r\n    let [userProfile, setUserProfile] = useState<UserProfileType>();\r\n    const [schoolList, setSchoolList] = useState<ISchoolDaap[]>([]);\r\n\r\n    const [checkedTeachers, setCheckedTeachers] = useState<ISchoolLeader[]>([]);\r\n    const initialFilter: CompositeFilterDescriptor = {\r\n        logic: \"and\",\r\n        filters: [],\r\n    };\r\n    const [filter, setFilter] = useState(initialFilter);\r\n\r\n    // school leaders filter\r\n    const [schoolLeadersFilter, setSchoolLeadersFilter] = useState(initialFilter);\r\n\r\n    const [sort, setSort] = React.useState(initialSort);\r\n    const [page, setPage] = React.useState(initialDataState);\r\n    const pageChange = (event: any) => {\r\n        setPage(event.page);\r\n    };\r\n\r\n    const [locationCode, setLocationCode] = React.useState(\"\");\r\n    const [teacherList, setTeacherList] = useState<ITeacherFromDaap[]>([]);\r\n\r\n    const [headerCheckBoxValue, setHeaderCheckBox] = useState(false);\r\n    const onHeaderCheckBoxClick = (event: any, products?: any) => {\r\n        let checked = event.target.checked;\r\n        if(checked == true){\r\n            data.map((t:any)=>t.isSelected = true)\r\n        }else{\r\n            data.map((t:any)=>t.isSelected = false)\r\n        }\r\n        setHeaderCheckBox(checked)\r\n    }\r\n    const onGridCheckBoxClick = (dataItem: any) => {\r\n        dataItem.isSelected = !dataItem.isSelected;\r\n        if (dataItem.isSelected) {\r\n            let items: ISchoolLeader = {\r\n                staffID: dataItem.pmsId,\r\n                email: dataItem.doeEmail ? dataItem.doeEmail : \"\",\r\n                firstName: dataItem.firstName,\r\n                lastName: dataItem.lastName,\r\n                actionCode: \"A\",\r\n                createdBy: LocalStorageService.getUserProfile().userName,\r\n                loginID: dataItem.doeEmail ? dataItem.doeEmail.substring(0, dataItem.doeEmail.indexOf(\"@\")) : \"\",\r\n            }\r\n            if (items.email == \"\") {\r\n                setErrors(\"Email is required\")\r\n                dataItem.isSelected = !dataItem.isSelected\r\n                return\r\n            } else {\r\n                setCheckedTeachers([...checkedTeachers, items])\r\n            }\r\n\r\n        } else {\r\n            const items = checkedTeachers.filter(item => item.staffID !== dataItem.pmsId);\r\n            setCheckedTeachers(items);\r\n        }\r\n    }\r\n\r\n    const addSchoolLeader = (props: any) => {\r\n\r\n        let schoolLeader = {\r\n            schoolLeader: checkedTeachers,\r\n            associatedLocation: locationCode\r\n        }\r\n        schoolLeaderService.addSchoolLeaders(schoolLeader).then(res => {\r\n            if (res.data.isValidResponse == true) {\r\n                setSchoolLeaderVisible(!schoolLeaderVisible);\r\n                setCheckedTeachers([])\r\n                getSchoolData()\r\n                setErrors(\"\")\r\n            } else {\r\n                setErrors(res.data.errors[0])\r\n            }\r\n        }, error => setErrors(\"Unable to add school leader to D2L\"))\r\n    }\r\n\r\n    const [visible, setVisible] = React.useState(false);\r\n\r\n    const toggleDialog = () => {\r\n        setVisible(!visible);\r\n        let addSchoolDetails: ISchoolDaap = {\r\n            schoolName: '',\r\n            districtNumber: '',\r\n            boroughCode: '',\r\n            locationCode: '',\r\n            addressLine1: '',\r\n            addressLine2: '',\r\n            city: '',\r\n            principalName: '',\r\n            principalTitle: '',\r\n        };\r\n        setFormValue(addSchoolDetails)\r\n        setErrors(\"\")\r\n    };\r\n\r\n    const [schoolLeaderVisible, setSchoolLeaderVisible] = React.useState(false);\r\n\r\n    const toggleSchoolLeaderDialog = (props: any) => {\r\n        if (schoolLeaderVisible == false) {\r\n            setLocationCode(props.dataItem.locationCode)\r\n            schoolLeaderService.getTeachersFromDaap(props.dataItem.locationCode).then(res => {\r\n                setTeacherList(res.data)\r\n            })\r\n        }\r\n        setSchoolLeaderVisible(!schoolLeaderVisible);\r\n        setCheckedTeachers([])\r\n        setErrors(\"\")\r\n    };\r\n\r\n    const [principalUpdateVisible, setPrincipalUpdateVisible] = React.useState(false);\r\n\r\n    const togglePrincipalUpdateDialog = (props: any) => {\r\n        let data:IPrincipalInfo={\r\n            id: 0,\r\n        locationName: '',\r\n        locationCode: '',\r\n        principalFullName: '',\r\n        principalEmail: ''\r\n        }\r\n        setPrincipalInfo(data)\r\n        if (principalUpdateVisible == false) {\r\n            setLocationCode(props.dataItem.locationCode)\r\n            schoolService.getPrincipalInfoBySchoolDBN(props.dataItem.locationCode).then(res => {\r\n                setPrincipalInfo(res.data)\r\n            })\r\n        }\r\n        setPrincipalUpdateVisible(!principalUpdateVisible);\r\n        setErrors(\"\")\r\n    };\r\n\r\n\r\n    const [schoolLeaderListVisible, setSchoolLeaderListVisible] = React.useState(false);\r\n    const [schoolLeaderList, setSchoolLeaderList] = useState<ITeacherFromDaap[]>([]);\r\n\r\n    const toggleSchoolLeaderListDialog = (props: any) => {\r\n        if (schoolLeaderListVisible == false) {\r\n            setLocationCode(props.dataItem.locationCode)\r\n            schoolLeaderService.getSchoolLeadersDetails(props.dataItem.locationCode).then(res => {\r\n                setSchoolLeaderList(res.data)\r\n            })\r\n        } else {\r\n            setSchoolLeaderList([])\r\n            setErrors(\"\")\r\n        }\r\n        setSchoolLeaderListVisible(!schoolLeaderListVisible);\r\n\r\n    };\r\n\r\n    const getSchoolData = () => {\r\n        schoolService.getData().then(response => {\r\n          \r\n            let data = response.data.map((s: any) => ({\r\n                schoolDetails: s.locationCode + s.schoolName,\r\n                locationCode: s.locationCode,\r\n                schoolName: s.schoolName,\r\n                id: s.id,\r\n                districtCode: s.districtCode,\r\n                boroughCode: s.boroughCode,\r\n                address: s.address,\r\n                principalFullName: s.principalFullName,\r\n                learningEnvironmentID: s.learningEnvironmentID,\r\n                createdBy: s.createdBy,\r\n                schoolLeadersCount: s.schoolLeadersCount,\r\n            }))\r\n            setRowData(data)\r\n        })\r\n        return () => { mountedRef.current = false }\r\n    }\r\n\r\n\r\n\r\n    const getSchoolDataFromDaap = () => {\r\n        schoolService.getSchoolsFromDaap().then(response => {\r\n            let data = response.data.map((sl: any) => ({\r\n                id: sl.locationCode,\r\n                text: sl.locationCode + ' -- ' + sl.schoolName\r\n            }))\r\n            setSchoolsFromDaap(data)\r\n            setSchoolsDaap(data)\r\n            setSchoolList(response.data)\r\n        })\r\n        return () => { mountedRef.current = false }\r\n    }\r\n\r\n    useEffect(() => {\r\n        getSchoolData();\r\n        getSchoolDataFromDaap()\r\n        return () => { mountedRef.current = false }\r\n    }, []);\r\n\r\n\r\n\r\n    const GridColumnButton = (props: any) => {\r\n        return (\r\n            <td style={{ overflow: 'visible' }}>\r\n                <Dropdown>\r\n                    <Dropdown.Toggle className=\"menu-bars\" size=\"sm\" variant=\"outline-primary\" id=\"dropdown-basic\">\r\n                        <i className=\"fas fa-bars\"></i>\r\n                    </Dropdown.Toggle>\r\n                    <Dropdown.Menu>\r\n                        <Dropdown.Item onClick={() => { toggleSchoolLeaderDialog(props) }}>Add School Leaders</Dropdown.Item>\r\n                        <Dropdown.Item onClick={() => { togglePrincipalUpdateDialog(props) }}>Update Principal</Dropdown.Item>\r\n                    </Dropdown.Menu>\r\n                </Dropdown>\r\n            </td>)\r\n    }\r\n\r\n\r\n    const GridColumnHighLightText = (props: any) => {\r\n        return (\r\n            <td>\r\n                <div className=\"d-flex\">\r\n                    <div>\r\n                        <div className=\"text-dark mb-0 h4 p-0 font-weight-bold\">{props.dataItem.locationCode} - {props.dataItem.schoolName}</div>\r\n                        <div style={{ color: \"#707782\", margin: \"2px\" }}>{props.dataItem.address}</div>\r\n                        <div style={{ color: \"#707782\" }}> Principal: {props.dataItem.principalFullName}</div>\r\n                    </div>\r\n                </div>\r\n            </td>\r\n        )\r\n    }\r\n    const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n    const [formValue, setFormValue] = useState<ISchoolDaap>({\r\n        schoolName: '',\r\n        districtNumber: '',\r\n        boroughCode: '',\r\n        locationCode: '',\r\n        addressLine1: '',\r\n        addressLine2: '',\r\n        city: '',\r\n        principalName: '',\r\n        principalTitle: '',\r\n    });\r\n\r\n\r\n    const filterData = (filter: any) => {\r\n        let data = schoolsFromDaap.slice();\r\n        return filterBy(data, filter);\r\n    }\r\n\r\n    const filterChange = (event: any) => {\r\n        let data = filterData(event.filter)\r\n        setSchoolsDaap(data)\r\n    }\r\n\r\n    const handleChange = (event: any) => {\r\n        setErrors(\"\");\r\n        let school = schoolList.find(s => s.locationCode == event.target.value.id)\r\n        if (school) {\r\n\r\n            let addSchoolDetails: ISchoolDaap = {\r\n                schoolName: school.schoolName,\r\n                districtNumber: school.districtNumber,\r\n                boroughCode: school.boroughCode,\r\n                locationCode: school.locationCode,\r\n                addressLine1: school.addressLine1,\r\n                addressLine2: school.addressLine2,\r\n                city: school.city,\r\n                principalName: school.principalName,\r\n                principalTitle: school.principalTitle,\r\n            };\r\n            setFormValue(addSchoolDetails)\r\n        }\r\n    };\r\n    const handlePrincipalChange = (event: any) => {\r\n        if (event.target.name == 'principalFullName') {\r\n            let data ={\r\n                \"id\":principalInfo?.id,\r\n                \"locationCode\": principalInfo?.locationCode,\r\n                \"locationName\": principalInfo?.locationName,\r\n                \"principalFullName\": event.target.value,\r\n                \"principalEmail\": principalInfo.principalEmail,\r\n            }\r\n            setPrincipalInfo(data)\r\n        }\r\n        if (event.target.name == 'principalEmail') {\r\n            let data ={\r\n                \"id\":principalInfo?.id,\r\n                \"locationCode\": principalInfo?.locationCode,\r\n                \"locationName\": principalInfo?.locationName,\r\n                \"principalFullName\": principalInfo?.principalFullName,\r\n                \"principalEmail\": event.target.value,\r\n            }\r\n            setPrincipalInfo(data)\r\n        }\r\n    };\r\n    const onFormAction = (schoolId: number, actionType: FormMode) => {\r\n        setErrors(\"\");\r\n        switch (actionType) {\r\n            case FormMode.New:\r\n                getSchoolDataFromDaap();\r\n                if (schoolList && schoolList.length > 0) {\r\n                    let addSchoolDetails: ISchoolDaap = {\r\n                        schoolName: schoolList[1].schoolName,\r\n                        districtNumber: schoolList[1].districtNumber,\r\n                        boroughCode: schoolList[1].boroughCode,\r\n                        locationCode: schoolList[1].locationCode,\r\n                        addressLine1: schoolList[1].addressLine1,\r\n                        addressLine2: schoolList[1].addressLine2,\r\n                        city: schoolList[1].city,\r\n                        principalName: schoolList[1].principalName,\r\n                        principalTitle: schoolList[1].principalTitle,\r\n                    };\r\n                    setFormValue(addSchoolDetails)\r\n                } else {\r\n                    let addSchoolDetails: ISchoolDaap = {\r\n                        schoolName: '',\r\n                        districtNumber: '',\r\n                        boroughCode: '',\r\n                        locationCode: '',\r\n                        addressLine1: '',\r\n                        addressLine2: '',\r\n                        city: '',\r\n                        principalName: '',\r\n                        principalTitle: '',\r\n                    };\r\n                    setFormValue(addSchoolDetails)\r\n                }\r\n                setFormMode(FormMode.New);\r\n                setErrors(\"\");\r\n                break;\r\n\r\n            default: {\r\n                setFormMode(FormMode.None)\r\n                setFormValue({\r\n                    schoolName: '',\r\n                    districtNumber: '',\r\n                    boroughCode: '',\r\n                    locationCode: '',\r\n                    addressLine1: '',\r\n                    addressLine2: '',\r\n                    city: '',\r\n                    principalName: '',\r\n                    principalTitle: '',\r\n                })\r\n                setErrors(\"\");\r\n\r\n                break;\r\n            }\r\n        }\r\n    }\r\n\r\n    const onSave = (event: any, actionType: FormMode) => {\r\n        if (!formValue.locationCode || formValue.locationCode == \"\") {\r\n            setErrors(\"Please select school \");\r\n            return\r\n        }\r\n\r\n        if (!formValue.schoolName || formValue.schoolName == \"\") {\r\n            setErrors(\"Please select school \");\r\n            return\r\n        }\r\n\r\n        if (!formValue.districtNumber || formValue.districtNumber == \"\") {\r\n            setErrors(\"Please select school \");\r\n            return\r\n        }\r\n\r\n        if (!formValue.boroughCode || formValue.boroughCode == \"\") {\r\n            setErrors(\"Please select school \");\r\n            return\r\n        }\r\n        let checkSchool = data.find(s => s.locationCode == formValue.locationCode)\r\n        if (checkSchool) {\r\n            setErrors(\"School already setup\")\r\n            return\r\n        }\r\n        userProfile = LocalStorageService.getUserProfile()\r\n        let school = {\r\n            \"iLearnNYCUserID\": userProfile.userName,\r\n            \"locationCode\": formValue.locationCode,\r\n            \"schoolName\": formValue.schoolName,\r\n            \"districtCode\": formValue.districtNumber,\r\n            \"boroughCode\": formValue.boroughCode,\r\n            \"principalFullName\": formValue.principalName,\r\n        }\r\n        schoolService.getSchoolOrgFromEndPoint(school)\r\n            .then(response => {\r\n                if (response.data.isValidResponse == true) {\r\n                    toggleDialog();\r\n                    getSchoolData();\r\n                } else {\r\n                    setErrors(response.data.errors)\r\n                }\r\n            }, error => {\r\n                setErrors(error.message)\r\n            });\r\n\r\n    }\r\n\r\n    const onPrincipalSave = (event: any, actionType: FormMode) => {\r\n        let principal = {\r\n            \"id\":principalInfo.id,\r\n            \"locationCode\": principalInfo.locationCode,\r\n            \"locationName\": principalInfo.locationName,\r\n            \"principalFullName\": principalInfo.principalFullName,\r\n            \"principalEmail\": principalInfo.principalEmail\r\n        }\r\n        if (principalInfo.principalFullName===\"\" && principalInfo.principalEmail===\"\")\r\n        {\r\n            setErrors(\"Principal Name and Email are required.\")\r\n        }\r\n        else if(principalInfo.principalFullName===\"\")\r\n        {\r\n            setErrors(\"Principal Name is required.\")\r\n        }\r\n        else if(principalInfo.principalEmail===\"\")\r\n        {\r\n            setErrors(\"Principal Email is required.\")\r\n        }\r\n        else{\r\n        schoolService.updatePrincipal(principal)\r\n            .then(response => {\r\n                if (response.data.isValidResponse == true) {\r\n                    setPrincipalUpdateVisible(!principalUpdateVisible);\r\n                    getSchoolData();\r\n                } else {\r\n                    setErrors(response.data.errors)\r\n                }\r\n            }, error => {\r\n                setErrors(error.message)\r\n            });\r\n        }\r\n\r\n    }\r\n    const [errors, setErrors] = useState(\"\");\r\n    return (\r\n        <div>\r\n            <div className=\"text-right mb-2\">\r\n                <Button variant=\"primary\" onClick={toggleDialog}><i className=\"fas fa-plus\"></i></Button>\r\n\r\n            </div>\r\n            <Grid\r\n                data={filterBy(orderBy(data, sort), filter).slice(page.skip, page.take + page.skip)}\r\n                filter={filter}\r\n                filterable={true}\r\n                sortable={true}\r\n                sort={sort}\r\n                onSortChange={(e: GridSortChangeEvent) => {\r\n                    setSort(e.sort);\r\n                }}\r\n                pageable={true}\r\n                skip={page.skip}\r\n                take={page.take}\r\n                total={data.length}\r\n                onPageChange={pageChange}\r\n                onFilterChange={(e: GridFilterChangeEvent) =>{\r\n                    setFilter(e.filter)\r\n                } }>\r\n                <Column field=\"School Leaders\" width=\"100px\" filterable={false} title=\" \" cell={\r\n                    props => (\r\n                        <td>\r\n                            <div className=\"d-flex\">\r\n                                <div className=\"svg-app-icon text-secondary\" style={{ width: \"50px\" }}>\r\n                                    <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 49.551 50\">\r\n                                        <title>School</title>\r\n                                        <g transform=\"translate(-797.418 -33.62)\">\r\n                                            <path d=\"M828.852,59.886a5.756,5.756,0,1,0,5.757,5.756A5.762,5.762,0,0,0,828.852,59.886Zm0,9.29a3.534,3.534,0,1,1,3.535-3.534A3.537,3.537,0,0,1,828.852,69.176Z\" transform=\"translate(-6.659 -6.811)\"></path>\r\n                                            <rect width=\"2.592\" height=\"3.824\" transform=\"translate(805.741 70.388)\"></rect>\r\n                                            <rect width=\"2.592\" height=\"3.824\" transform=\"translate(805.741 76.316)\"></rect>\r\n                                            <path d=\"M832.658,86.042h-6.995a1.3,1.3,0,0,0-1.3,1.3c0,.013,0,.025,0,.037s0,.025,0,.038v8.458a1.3,1.3,0,1,0,2.592,0V88.634H831.4v7.237a1.3,1.3,0,0,0,2.592,0V87.413a1.409,1.409,0,0,0-1.338-1.371Z\" transform=\"translate(-6.988 -13.593)\"></path>\r\n                                            <rect width=\"2.592\" height=\"3.824\" transform=\"translate(836.055 70.388)\"></rect>\r\n                                            <rect width=\"2.592\" height=\"3.824\" transform=\"translate(836.055 76.316)\"></rect>\r\n                                            <path d=\"M857.286,65.881H844.8V62.4l-2.592-1.341V89.439a1.3,1.3,0,1,0,2.592,0V73.679h12.489a1.3,1.3,0,0,0,1.3-1.3v-5.2A1.3,1.3,0,0,0,857.286,65.881Zm-1.3,5.2H844.84V68.474h11.15Z\" transform=\"translate(-11.614 -7.116)\"></path>\r\n                                            <path d=\"M801.168,94.575a1.3,1.3,0,0,0,2.592,0V81.043h-2.592Z\" transform=\"translate(-0.972 -12.297)\"></path>\r\n                                            <path d=\"M857.067,94.575a1.3,1.3,0,0,0,2.592,0V81.043h-2.592Z\" transform=\"translate(-15.467 -12.297)\"></path>\r\n                                            <path d=\"M811.2,65.863h-12.49a1.3,1.3,0,0,0-1.3,1.3v5.2a1.3,1.3,0,0,0,1.3,1.3H811.2V89.42a1.3,1.3,0,1,0,2.592,0V60.988L811.2,62.329Zm-.042,5.2H800.01V68.455h11.151Z\" transform=\"translate(0 -7.097)\"></path>\r\n                                            <path d=\"M811.656,54.125a1.283,1.283,0,0,0,.595-.146l13.3-6.881,13.3,6.881a1.283,1.283,0,0,0,.595.146,1.3,1.3,0,0,0,.6-2.448l-13.114-6.786a1.293,1.293,0,0,0-.121-.184,1.263,1.263,0,0,0,.026-.256v-2.03l7.394-2.989a1.284,1.284,0,0,0,.226-.119l0,0a1.294,1.294,0,0,0,.253-.227c.018-.02.033-.041.051-.061a1.394,1.394,0,0,0,.178-.3l0-.006c.01-.025.014-.051.023-.076a1.36,1.36,0,0,0,.047-.161c.007-.039.009-.076.013-.114s.012-.09.013-.137a1.226,1.226,0,0,0-.012-.128c0-.041-.005-.081-.013-.123a1.2,1.2,0,0,0-.045-.153c-.009-.027-.013-.056-.024-.083l0-.008a1.177,1.177,0,0,0-.093-.176c-.01-.016-.016-.035-.027-.05a1.293,1.293,0,0,0-.3-.315c-.018-.013-.032-.028-.05-.04s-.049-.026-.073-.04a1.5,1.5,0,0,0-.152-.081l-.009,0L826.1,33.715a1.4,1.4,0,0,0-1.86,1.273v9.464a1.27,1.27,0,0,0,.035.287,1.323,1.323,0,0,0-.1.152L811.06,51.677a1.3,1.3,0,0,0,.6,2.448Zm15.175-17.312,3.463,1.411-3.463,1.4Z\" transform=\"translate(-3.356)\"></path>\r\n                                        </g>\r\n                                    </svg>\r\n                                </div>\r\n                            </div>\r\n                        </td>\r\n                    )} />\r\n                <Column field=\"schoolDetails\" title=\"Schools\" cell={GridColumnHighLightText} />\r\n                <Column filterable={false} cell={\r\n                    props => (\r\n                        <td>\r\n\r\n                            <div style={{ cursor: 'pointer' }} onClick={() => toggleSchoolLeaderListDialog(props)} ><b>School Leaders({props.dataItem.schoolLeadersCount ? props.dataItem.schoolLeadersCount : 0})</b></div>\r\n\r\n                        </td>\r\n                    )} />\r\n                <Column field=\"id\" title=\" \" filterable={false} className=\"text-right\" cell={GridColumnButton} width={90} />\r\n            </Grid>\r\n            {visible &&\r\n                <Dialog title={\"Add New School\"} onClose={toggleDialog}>\r\n\r\n                    {/* <Modal.Header closeButton className=\"bg-primary text-white\">\r\n                     <Modal.Title>{formMode == FormMode.Edit ? \"Edit\" : \"New School Setup\"}</Modal.Title>\r\n                 </Modal.Header> */}\r\n                    {/* <Modal.Body> */}\r\n                    {\r\n                        errors != \"\" ?\r\n                            <div className=\"alert alert-danger\" >\r\n                                {errors}\r\n                            </div> : <div></div>\r\n                    }\r\n                    <Row>\r\n                        <div className=\"form-group col-12\">\r\n                            <DropDownList style={{ width: \"350px\" }}\r\n                                data={schoolsDaap}\r\n                                textField=\"text\"\r\n                                filterable={true}\r\n                                onChange={handleChange}\r\n                                onFilterChange={filterChange}\r\n                            />\r\n                        </div>\r\n                    </Row>\r\n\r\n                    <Form>\r\n                        <Row>\r\n                            <Form.Group controlId=\"principalName\" className=\"col-12\">\r\n                                <Form.Label>Principal Name</Form.Label>\r\n                                <Form.Control readOnly type=\"text\" name=\"principalName\" value={formValue.principalName ?? ''} />\r\n                            </Form.Group>\r\n                            <Form.Group controlId=\"districtNumber\" className=\"col-sm-6\">\r\n                                <Form.Label>District Number</Form.Label>\r\n                                <Form.Control readOnly type=\"text\" name=\"districtNumber\" value={formValue.districtNumber ?? ''} />\r\n                            </Form.Group>\r\n                            <Form.Group controlId=\"boroughCode\" className=\"col-sm-6\">\r\n                                <Form.Label>Borough Code</Form.Label>\r\n                                <Form.Control readOnly type=\"text\" name=\"boroughCode\" value={formValue.boroughCode ?? ''} />\r\n                            </Form.Group>\r\n                        </Row>\r\n                    </Form>\r\n                    {/* </Modal.Body> */}\r\n                    <DialogActionsBar>\r\n                        <Button className=\"m-2\" variant=\"secondary\" onClick={toggleDialog}>Close</Button>\r\n                        <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Save</Button>\r\n                    </DialogActionsBar>\r\n                </Dialog>\r\n            }\r\n\r\n{principalUpdateVisible &&\r\n                <Dialog title={\"Update Principal\"} onClose={togglePrincipalUpdateDialog}>\r\n                    {\r\n                        errors != \"\" ?\r\n                            <div className=\"alert alert-danger\" >\r\n                                {errors}\r\n                            </div> : <div></div>\r\n                    }\r\n                    <Row>\r\n                        <div className=\"form-group col-12\">\r\n                           {principalInfo?.locationCode} - {principalInfo?.locationName}\r\n                        </div>\r\n                    </Row>\r\n\r\n                    <Form>\r\n                        <Row>\r\n                            <Form.Group controlId=\"principalFullName\" className=\"col-12\">\r\n                                <Form.Label>Principal Name</Form.Label>\r\n                                <Form.Control required type=\"text\" name=\"principalFullName\" defaultValue={principalInfo.principalFullName}onBlur={handlePrincipalChange} />\r\n                            </Form.Group>\r\n                            <Form.Group controlId=\"principalEmail\" className=\"col-sm-6\">\r\n                                <Form.Label>Principal Email</Form.Label>\r\n                                <Form.Control required type=\"text\" name=\"principalEmail\" defaultValue={principalInfo.principalEmail} onBlur={handlePrincipalChange} />\r\n                            </Form.Group>                     \r\n                        </Row>\r\n                    </Form>\r\n                    <DialogActionsBar>\r\n                        <Button className=\"m-2\" variant=\"secondary\" onClick={togglePrincipalUpdateDialog}>Close</Button>\r\n                        <Button variant=\"primary\" type=\"button\" onClick={(e) => onPrincipalSave(e, formMode)}>Save</Button>\r\n                    </DialogActionsBar>\r\n                </Dialog>\r\n            }\r\n\r\n\r\n            {schoolLeaderVisible &&\r\n                <Dialog title={\"Add New School Leader\"} onClose={toggleSchoolLeaderDialog} style={{ width: \"75%\", position: \"fixed\", left: \"15%\" }} >\r\n                    {\r\n                        errors != \"\" ?\r\n                            <div className=\"alert alert-danger\" >\r\n                                {errors}\r\n                            </div> : <div></div>\r\n                    }\r\n\r\n                    <Grid\r\n                        data={filterBy(teacherList, schoolLeadersFilter)}\r\n                        filter={schoolLeadersFilter}\r\n                        filterable={true}\r\n                        onFilterChange={(e: GridFilterChangeEvent) => setSchoolLeadersFilter(e.filter)}\r\n                        style={{ height: '350px' }}>\r\n                        <GridColumn field=\"isSelected\" filterable={false} width=\"40px\" headerCell={props => (<input type=\"checkbox\" checked={headerCheckBoxValue} onChange={(e) => onHeaderCheckBoxClick(e)} />)} cell={props => (\r\n                            <td>\r\n                                <input type=\"checkbox\" checked={props.dataItem.isSelected} onChange={() => onGridCheckBoxClick(props.dataItem)} />\r\n                            </td>\r\n                        )} />\r\n\r\n                        <GridColumn field=\"firstName\" title=\"First Name\" />\r\n                        <GridColumn field=\"lastName\" title=\"Last Name\" />\r\n                        <GridColumn field=\"doeEmail\" title=\"Email\" />\r\n\r\n                    </Grid>\r\n\r\n\r\n                    <DialogActionsBar>\r\n                        <Button className=\"m-2\" variant=\"secondary\" onClick={toggleSchoolLeaderDialog}>Close</Button>\r\n                        <Button variant=\"primary\" type=\"button\" onClick={(e) => addSchoolLeader(e)}>Save</Button>\r\n                    </DialogActionsBar>\r\n                </Dialog>\r\n            }\r\n\r\n\r\n            {schoolLeaderListVisible &&\r\n                <Dialog title={\"School Leaders\"} onClose={toggleSchoolLeaderListDialog} style={{ width: \"75%\", position: \"fixed\", left: \"15%\" }} >\r\n                    {\r\n                        errors != \"\" ?\r\n                            <div className=\"alert alert-danger\" >\r\n                                {errors}\r\n                            </div> : <div></div>\r\n                    }\r\n\r\n                    <Grid\r\n                        data={schoolLeaderList}\r\n\r\n                        style={{ height: '350px' }}>\r\n\r\n                        <GridColumn field=\"firstName\" title=\"First Name\" />\r\n                        <GridColumn field=\"lastName\" title=\"Last Name\" />\r\n                        <GridColumn field=\"doeEmail\" title=\"Email\" />\r\n                    </Grid>\r\n                    <DialogActionsBar>\r\n                        <Button className=\"m-2\" variant=\"secondary\" onClick={toggleSchoolLeaderListDialog}>Close</Button>\r\n                    </DialogActionsBar>\r\n                </Dialog>\r\n            }\r\n\r\n        </div>\r\n    )\r\n}","import { AxiosInstances as AxiosInstance } from './BaseService'\r\nexport default {\r\n    getStudentByLocationCode: (locationCode: string, schoolYear: number, pageNumber: number, pageSize: number) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Student/${locationCode}/${schoolYear}/${pageNumber}/${pageSize}`\r\n        }),\r\n\r\n\r\n    getStaffByLocationCode: (locationCode: string, schoolYear: number, pageNumber: number, pageSize: number) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Staff/${locationCode}/${schoolYear}/${pageNumber}/${pageSize}`\r\n        }),\r\n\r\n    SearchStudentByLocationCode: (locationCode: string, schoolYear: number, pageNumber: number, pageSize: number, search: string) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Student/${locationCode}/${schoolYear}/${pageNumber}/${pageSize}/${search}`\r\n        }),\r\n\r\n    SearchStaffByLocationCode: (locationCode: string, schoolYear: number, pageNumber: number, pageSize: number, search: string) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/Staff/${locationCode}/${schoolYear}/${pageNumber}/${pageSize}/${search}`\r\n        }),\r\n\r\n    getStudentCoursesById: (locationCode: string, schoolYear: number, id: number) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/StudentCourses/${locationCode}/${schoolYear}/${id}`\r\n        }),\r\n\r\n    getStaffCoursesById: (locationCode: string, schoolYear: number, id: string) =>\r\n        AxiosInstance({\r\n            'method': 'GET',\r\n            'url': `/StaffCourses/${locationCode}/${schoolYear}/${id}`\r\n        }),\r\n}","import { useEffect, useState, useContext } from \"react\";\r\nimport studentAndStaffService from '../../services/StudentAndStaffService'\r\nimport { Grid, GridColumn } from '@progress/kendo-react-grid';\r\nimport { Year } from '../../services/AppContext';\r\nimport IconCourseEnvelop from '../../assets/icons/icon-envelop-course';\r\ninterface StudentAndStaffCourses {\r\n    courseName: string,\r\n    courseCode: string,\r\n    courseOrginType: string,\r\n    courseStatus: string,\r\n    isMerged: boolean\r\n}\r\n\r\ninterface StudentAndStaffProps {\r\n    id: number,\r\n    locationCode: string\r\n}\r\n\r\nexport default function StudentCoursesDetails(props: StudentAndStaffProps) {\r\n    const { orginalSchoolYear } = useContext(Year);\r\n    const [data, setRowData] = useState<StudentAndStaffCourses[]>([]);\r\n    const getAllStudentAndStaffCourses = () => {\r\n        studentAndStaffService.getStudentCoursesById(props.locationCode, +orginalSchoolYear.id, props.id).then(response => {\r\n            setRowData(response.data)\r\n        })\r\n    }\r\n\r\n    useEffect(() => {\r\n        getAllStudentAndStaffCourses();\r\n    }, [props]);\r\n\r\n    return (\r\n        <div>\r\n            <div className=\"card mt-4\">\r\n                <div className=\"card-header font-weight-bold bg-secondary-light\">\r\n                    <div className=\"row align-items-center\">\r\n                        <div className=\"col-10\">\r\n                            {\"Enrolled in \" + data.length + \" Courses\"}\r\n                        </div>\r\n\r\n                    </div>\r\n                </div>\r\n                <div className=\"card-body\">\r\n                    <Grid\r\n                        data={data}\r\n                        className=\"k-grid-no-header\"\r\n                    >\r\n                        <GridColumn filterable={false} width=\"80px\" field=\"expanded\" title=' ' cell={props => (\r\n                            <td className=\"pr-0\">\r\n                                <div className={`svg-app-icon ${props.dataItem.courseStatus.toLowerCase() === \"published\" ? \" text-success\" : \" text-blue-gray\"} mr-3\"`} style={{ height: \"40px\" }}>\r\n                                    <IconCourseEnvelop  courseType= {props.dataItem.courseType} courseOrginType={props.dataItem.courseOrginType} merge={props.dataItem.isMerged}></IconCourseEnvelop>\r\n                                </div>\r\n                            </td>\r\n\r\n                        )} />\r\n                        <GridColumn field=\"\" title=\"\"\r\n                            cell={\r\n                                props => (\r\n                                    <td>\r\n                                        <div>{props.dataItem.courseName}</div>\r\n                                        {props.dataItem.courseCode && <div>{props.dataItem.courseCode}</div>}\r\n                                    </td>\r\n                                )} />\r\n                    </Grid>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    )\r\n}","import { useEffect, useRef, useState } from \"react\";\r\nimport { IStudentInfo } from '../../model/IStudentAndStaffInfo';\r\nimport studentAndStaffService from '../../services/StudentAndStaffService'\r\nimport { Grid, GridColumn, GridNoRecords } from '@progress/kendo-react-grid';\r\nimport IconStudnetOutline from \"../../assets/icons/icon-student-outline\";\r\nimport StudentCoursesDetails from './StudentCoursesDetails';\r\nimport SplashScreen from '../../shared/SplashScreen'\r\n\r\ninterface Props {\r\n    locationCode: string,\r\n    schoolYear: number,\r\n    searchNameOrId: string,\r\n    searchForData: boolean\r\n}\r\n\r\nconst initialDataState = {\r\n    skip: 0,\r\n    take: 10,\r\n};\r\n\r\nexport default function Student(props: Props) {\r\n    const [data, setRowData] = useState<IStudentInfo[]>([]);\r\n    const [page, setPage] = useState(initialDataState);\r\n    const [searchForData, setSearchForData] = useState(false);\r\n    const [search, setSearch] = useState(false);\r\n    const [loading, setIsLoading] = useState(false);\r\n    const [pageAlert, setPageAlert] = useState<string>('');\r\n    const mountedRef = useRef(true)\r\n\r\n    const pageChange = (event: any) => {\r\n        setPage(event.page);\r\n        let currentPage = (event.page.skip / event.page.take) + 1\r\n        getStudentDataByLocationCode(currentPage, event.page.take, props.searchNameOrId)\r\n    };\r\n\r\n    const onGridExpand = (event: any) => {\r\n        let newData = data.map(item => {\r\n            if (item.id === event.dataItem.id) {\r\n                item.expanded = !event.dataItem.expanded;\r\n            }\r\n            return item;\r\n        });\r\n        setRowData(newData);\r\n    }\r\n\r\n    const SubGridHost = (courses: any) => {\r\n        return (\r\n            <div>\r\n                <StudentCoursesDetails id={courses.dataItem.id} locationCode={props.locationCode} />\r\n            </div>\r\n        )\r\n    }\r\n\r\n    const getStudentDataByLocationCode = async (pageNumber: number, pageSize: number, search: string) => {\r\n        if (props.schoolYear != 0 && props.locationCode != '') {\r\n            setIsLoading(true)\r\n            if (search != '') {\r\n                await studentAndStaffService.SearchStudentByLocationCode(props.locationCode, props.schoolYear, pageNumber, pageSize, search.replaceAll(' ', '')).then(response => {\r\n                    setRowData(response.data);\r\n                    setSearch(true)\r\n                    setIsLoading(false)\r\n                    setPageAlert('')\r\n                    mountedRef.current = false\r\n                }).catch((ex) => {\r\n                    setRowData([]);\r\n                    setSearch(true)\r\n                    setIsLoading(false);\r\n                    setPageAlert('Oops!, Something went wrong. Please Try searching by first name last name or search by EIN or OSIS number if available.')\r\n                    setTimeout(() => { setPageAlert('') }, 15000);\r\n                })\r\n            }\r\n            else {\r\n                await studentAndStaffService.getStudentByLocationCode(props.locationCode, props.schoolYear, pageNumber, pageSize).then(response => {\r\n                    setRowData(response.data);\r\n                    setIsLoading(false)\r\n                    setPageAlert('')\r\n                    mountedRef.current = false\r\n                }).catch((ex) => {\r\n                    setRowData([]);\r\n                    setIsLoading(false)\r\n                    setPageAlert('Oops!, Something went wrong. Please try again.')\r\n                    setTimeout(() => { setPageAlert('') }, 15000);\r\n                })\r\n            }\r\n        }\r\n    }\r\n\r\n    useEffect(() => {\r\n        setPage(initialDataState)\r\n        setSearchForData(false)\r\n        getStudentDataByLocationCode(1, initialDataState.take, '')\r\n        return () => { mountedRef.current = false }\r\n    }, [props.locationCode, props.schoolYear]);\r\n\r\n    useEffect(() => {\r\n        if (mountedRef.current == false) {\r\n            setPage(initialDataState)\r\n            getStudentDataByLocationCode(1, initialDataState.take, props.searchNameOrId)\r\n        }\r\n    }, [props.searchForData]);\r\n\r\n    return (\r\n        <div>\r\n            {pageAlert && pageAlert != \"\" && <div className=\"alert alert-danger\" role=\"alert\">\r\n                {pageAlert}\r\n            </div>}\r\n            {loading && <div className=\"d-flex justify-content-center\"><SplashScreen /></div>}\r\n\r\n\r\n            <div className=\"card\">\r\n                <div className=\"card-header font-weight-bold bg-secondary-light\">\r\n                    <div className=\"row align-items-center\">\r\n                        <div className=\"col-10\">\r\n                            {\"Enrolled students at\" + ' ' + props.locationCode + ' ' + '(' + (data && data.length > 0 ? data[0].totalPages : 0) + ')'}\r\n                        </div>\r\n\r\n                    </div>\r\n                </div>\r\n                <div className=\"card-body\">\r\n\r\n                    <Grid\r\n                        data={data.slice(0, page.take)}\r\n                        skip={page.skip}\r\n                        take={page.take}\r\n                        total={data && data.length > 0 ? data[0].totalPages : 0}\r\n                        scrollable={\"none\"}\r\n                        onPageChange={pageChange}\r\n                        expandField=\"expanded\"\r\n                        onExpandChange={onGridExpand}\r\n                        detail={SubGridHost}\r\n                        pageable={{ pageSizes: [10, 25, 50], info: true }}\r\n                        className=\"k-grid-no-header\"\r\n                    >\r\n                        <GridNoRecords>\r\n                            No Records\r\n                            {props.searchNameOrId && props.searchNameOrId != \"\" && search &&\r\n                                <div style={{ color: \"#8D8887\", fontFamily: 'Roboto, sans-serif' }}><small>Try searching by first name last name or search by EIN or OSIS number if available</small> </div>}\r\n                        </GridNoRecords>\r\n                        <GridColumn width=\"80px\" cell={\r\n                            props => (\r\n                                <td>\r\n                                    <div className=\"d-flex\">\r\n                                        <div className=\"svg-app-icon text-rust mr-3\" style={{ height: \"40px\" }}>\r\n                                            <IconStudnetOutline />\r\n                                        </div>\r\n                                    </div>\r\n                                </td>\r\n                            )} />\r\n\r\n                        <GridColumn field=\"\" cell={\r\n                            props => (\r\n                                <td>\r\n                                    <div>{props.dataItem.fullName}</div>\r\n                                    <div className=\"small\"> OSIS:{props.dataItem.id}</div>\r\n                                </td>\r\n                            )} />\r\n\r\n                        <GridColumn field=\"\" cell={\r\n                            props => (\r\n                                <td>\r\n                                    <>\r\n                                        <div className=\"small\">Username:</div>\r\n                                        <div>{props.dataItem.emailId}</div>\r\n                                    </>\r\n                                </td>\r\n                            )} />\r\n\r\n                        <GridColumn field=\"\" title=\"\" cell={\r\n                            props => (\r\n                                <td>\r\n                                    <div className=\"small\">Courses</div>\r\n                                    <div>{props.dataItem.courseCount}</div>\r\n                                </td>\r\n                            )} />\r\n\r\n                        <GridColumn field=\"\" cell={\r\n                            props => (\r\n                                <td>\r\n                                    <>\r\n                                        <div className=\"small\">Grade:</div>\r\n                                        <div>{props.dataItem.gradeLevelCode}</div>\r\n                                    </>\r\n                                </td>\r\n                            )} />\r\n                    </Grid>\r\n                </div>\r\n            </div>\r\n        </div >\r\n    )\r\n}","import { useEffect, useState, useContext } from \"react\";\r\nimport studentAndStaffService from '../../services/StudentAndStaffService'\r\nimport { Grid, GridColumn } from '@progress/kendo-react-grid';\r\nimport { Year } from '../../services/AppContext';\r\nimport IconCourseEnvelop from '../../assets/icons/icon-envelop-course';\r\ninterface StudentAndStaffCourses {\r\n    courseName: string,\r\n    courseCode: string,\r\n    courseOrginType: string,\r\n    courseStatus: string,\r\n    isMerged: boolean\r\n}\r\n\r\ninterface StudentAndStaffProps {\r\n    id: string,\r\n    locationCode: string\r\n}\r\n\r\nexport default function StaffCoursesDetails(props: StudentAndStaffProps) {\r\n    const { orginalSchoolYear } = useContext(Year);\r\n    const [data, setRowData] = useState<StudentAndStaffCourses[]>([]);\r\n    const getAllStudentAndStaffCourses = () => {\r\n        studentAndStaffService.getStaffCoursesById(props.locationCode, +orginalSchoolYear.id, props.id).then(response => {\r\n            setRowData(response.data)\r\n        })\r\n    }\r\n\r\n    useEffect(() => {\r\n        getAllStudentAndStaffCourses();\r\n    }, [props]);\r\n\r\n    return (\r\n        <div>\r\n            <div className=\"card mt-4\">\r\n                <div className=\"card-header font-weight-bold bg-secondary-light\">\r\n                    <div className=\"row align-items-center\">\r\n                        <div className=\"col-10\">\r\n                            {\"Enrolled in \" + data.length + \" Courses\"}\r\n                        </div>\r\n\r\n                    </div>\r\n                </div>\r\n                <div className=\"card-body\">\r\n                    <Grid\r\n                        data={data}\r\n                        className=\"k-grid-no-header\"\r\n                    >\r\n                        <GridColumn filterable={false} width=\"80px\" field=\"expanded\" title=' ' cell={props => (\r\n                            <td className=\"pr-0\">\r\n                                <div className={`svg-app-icon ${props.dataItem.courseStatus.toLowerCase() === \"published\" ? \" text-success\" : \" text-blue-gray\"} mr-3\"`} style={{ height: \"40px\" }}>\r\n                                    <IconCourseEnvelop courseType= {props.dataItem.courseType}  courseOrginType={props.dataItem.courseOrginType} merge={props.dataItem.isMerged}></IconCourseEnvelop>\r\n                                </div>\r\n                            </td>\r\n\r\n                        )} />\r\n                        <GridColumn field=\"\" title=\"\"\r\n                            cell={\r\n                                props => (\r\n                                    <td>\r\n                                        <div>{props.dataItem.courseName}</div>\r\n                                        {props.dataItem.courseCode && <div>{props.dataItem.courseCode}</div>}\r\n                                    </td>\r\n                                )} />\r\n                    </Grid>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    )\r\n}","import { useCallback, useEffect, useRef, useState } from \"react\";\r\nimport { IStaffInfo } from '../../model/IStudentAndStaffInfo';\r\nimport studentAndStaffService from '../../services/StudentAndStaffService'\r\nimport { Grid, GridColumn, GridNoRecords } from '@progress/kendo-react-grid';\r\nimport IconPersonCircle from \"../../assets/icons/icon-person-circle\";\r\nimport StaffCoursesDetails from './StaffCoursesDetails';\r\nimport SplashScreen from '../../shared/SplashScreen'\r\n\r\ninterface Props {\r\n    locationCode: string,\r\n    schoolYear: number,\r\n    searchNameOrId: string,\r\n    searchForData: boolean\r\n}\r\n\r\nconst initialDataState = {\r\n    skip: 0,\r\n    take: 10,\r\n};\r\n\r\n\r\n\r\nexport default function Staff(props: Props) {\r\n    const [data, setRowData] = useState<IStaffInfo[]>([]);\r\n    const [page, setPage] = useState(initialDataState);\r\n    const [searchForData, setSearchForData] = useState(false);\r\n    const [search, setSearch] = useState(false);\r\n    const [loading, setIsLoading] = useState(false);\r\n    const [pageAlert, setPageAlert] = useState<string>('');\r\n    const mountedRef = useRef(true)\r\n\r\n\r\n\r\n    const pageChange = (event: any) => {\r\n        setPage(event.page);\r\n        let currentPage = (event.page.skip / event.page.take) + 1\r\n        getStaffDataByLocationCode(currentPage, event.page.take, props.searchNameOrId)\r\n    };\r\n\r\n\r\n\r\n    const onGridExpand = (event: any) => {\r\n        let newData = data.map(item => {\r\n            if (item.id === event.dataItem.id) {\r\n                item.expanded = !event.dataItem.expanded;\r\n            }\r\n            return item;\r\n        });\r\n        setRowData(newData);\r\n    }\r\n\r\n    const SubGridHost = (courses: any) => {\r\n        return (\r\n            <div>\r\n                <StaffCoursesDetails id={courses.dataItem.id} locationCode={props.locationCode} />\r\n            </div>\r\n        )\r\n    }\r\n\r\n\r\n    const getStaffDataByLocationCode = async (pageNumber: number, pageSize: number, search: string) => {\r\n        if (props.schoolYear != 0 && props.locationCode != '') {\r\n            setIsLoading(true)\r\n            if (search == \"\") {\r\n                await studentAndStaffService.getStaffByLocationCode(props.locationCode, props.schoolYear, pageNumber, pageSize).then(response => {\r\n                    setRowData(response.data);\r\n                    setIsLoading(false)\r\n                    setPageAlert('')\r\n                    mountedRef.current = false\r\n                }).catch((ex) => {\r\n                    setRowData([]);\r\n                    setIsLoading(false)\r\n                    setPageAlert('Oops!, Something went wrong. Please try again.')\r\n                    setTimeout(() => { setPageAlert('') }, 15000);\r\n                })\r\n\r\n            } else {\r\n                await studentAndStaffService.SearchStaffByLocationCode(props.locationCode, props.schoolYear, pageNumber, pageSize, search.replaceAll(' ', '')).then(response => {\r\n                    setRowData(response.data);\r\n                    setSearch(true)\r\n                    setIsLoading(false)\r\n                    setPageAlert('')\r\n                    mountedRef.current = false\r\n                }).catch((ex) => {\r\n                    setRowData([]);\r\n                    setSearch(true)\r\n                    setIsLoading(false);\r\n                    setPageAlert('Oops!, Something went wrong. Please Try searching by first name last name or search by EIN or OSIS number if available.')\r\n                    setTimeout(() => { setPageAlert('') }, 15000);\r\n                })\r\n            }\r\n        }\r\n    }\r\n\r\n    useEffect(() => {\r\n        setPage(initialDataState);\r\n        setSearchForData(false)\r\n        getStaffDataByLocationCode(1, initialDataState.take, '')\r\n        return () => { mountedRef.current = false }\r\n    }, [props.locationCode, props.schoolYear]);\r\n\r\n    useEffect(() => {\r\n        \r\n        if(mountedRef.current == false){\r\n            setPage(initialDataState);\r\n            setSearchForData(false)\r\n            getStaffDataByLocationCode(1, initialDataState.take, props.searchNameOrId)\r\n        }   \r\n    }, [props.searchForData]);\r\n\r\n    return (\r\n        <div>\r\n            {pageAlert && pageAlert != \"\" && <div className=\"alert alert-danger\" role=\"alert\">\r\n                {pageAlert}\r\n            </div>}\r\n            {loading && <div className=\"d-flex justify-content-center\"><SplashScreen /></div>}\r\n\r\n\r\n            <div className=\"card\">\r\n                <div className=\"card-header font-weight-bold bg-secondary-light\">\r\n                    <div className=\"row align-items-center\">\r\n                        <div className=\"col-10\">\r\n                            {\"Enrolled staff at\" + ' ' + props.locationCode + ' ' + '(' + (data && data.length > 0 ? data[0].totalPages : 0) + ')'}\r\n                        </div>\r\n\r\n                    </div>\r\n                </div>\r\n                <div className=\"card-body\">\r\n\r\n                    <Grid\r\n                        data={data.slice(0, page.take)}\r\n                        skip={page.skip}\r\n                        take={page.take}\r\n                        total={data && data.length > 0 ? data[0].totalPages : 0}\r\n                        scrollable={\"none\"}\r\n                        onPageChange={pageChange}\r\n                        expandField=\"expanded\"\r\n                        onExpandChange={onGridExpand}\r\n                        detail={SubGridHost}\r\n                        pageable={{ pageSizes: [10, 25, 50], info: true }}\r\n                        className=\"k-grid-no-header\"\r\n                    >\r\n                        <GridNoRecords>\r\n                            No Records\r\n                            {props.searchNameOrId && props.searchNameOrId != \"\" && search &&\r\n                                <div style={{ color: \"#8D8887\", fontFamily: 'Roboto, sans-serif' }}><small>Try searching by first name last name or search by EIN or OSIS number if available</small> </div>}\r\n                        </GridNoRecords>\r\n                        <GridColumn width=\"80px\" cell={\r\n                            props => (\r\n                                <td>\r\n                                    <div className=\"d-flex\">\r\n                                        <div className=\"svg-app-icon text-rust mr-3\" style={{ height: \"40px\" }}>\r\n                                            <IconPersonCircle />\r\n                                        </div>\r\n                                    </div>\r\n                                </td>\r\n                            )} />\r\n\r\n                        <GridColumn field=\"\" cell={\r\n                            props => (\r\n                                <td>\r\n                                    <div>{props.dataItem.fullName}</div>\r\n                                    <div className=\"small\"> EIN:{props.dataItem.id}</div>\r\n                                </td>\r\n                            )} />\r\n\r\n\r\n\r\n                        <GridColumn field=\"\" title=\"\" cell={\r\n                            props => (\r\n                                <td>\r\n                                    <div className=\"small\">Courses</div>\r\n                                    <div>{props.dataItem.courseCount}</div>\r\n                                </td>\r\n                            )} />\r\n\r\n                        <GridColumn field=\"\" cell={\r\n                            props => (\r\n                                <td>\r\n                                    <>\r\n                                        <div className=\"small\">Username:</div>\r\n                                        <div>{props.dataItem.emailId}</div>\r\n                                    </>\r\n                                </td>\r\n                            )} />\r\n                    </Grid>\r\n                </div>\r\n            </div>\r\n        </div >\r\n    )\r\n}","import { useContext, useEffect, useRef, useState } from \"react\";\r\nimport { Button, FormControl, InputGroup, Row, Col } from \"react-bootstrap\";\r\nimport { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\nimport { Year } from '../../services/AppContext';\r\nimport Student from './Student'\r\nimport Staff from './Staff'\r\n\r\ninterface ILocationCode {\r\n    id: string,\r\n}\r\n\r\nconst dropDownData = ['Student', 'Staff']\r\n\r\nexport default function StudentAndStaff(locationCode: ILocationCode) {\r\n\r\n    const { orginalSchoolYear } = useContext(Year);\r\n    const [selectedValue, setSelectedValue] = useState(\"Student\");\r\n    const [searchNameOrId, setSearchNameOrIdValue] = useState(\"\");\r\n    const [searchForData, setSearchForData] = useState(false);\r\n    const mountedRef = useRef(true)\r\n\r\n\r\n    const onSelectionChange = (e: any) => {\r\n        setSelectedValue(e.target.value)\r\n        setSearchNameOrIdValue(\"\")\r\n    }\r\n\r\n    const onChangeSearch = (e: any) => {\r\n        if (e.target.value) {\r\n            setSearchNameOrIdValue(e.target.value)\r\n        }\r\n        else {\r\n            clearSearch()\r\n        }\r\n    }\r\n\r\n    const clearSearch = () => {\r\n        setSearchNameOrIdValue(\"\")\r\n        searchData()\r\n    }\r\n\r\n    const searchData = () => {\r\n        setSearchForData(!searchForData)\r\n    }\r\n\r\n    const searchByClickEnter = (e: any) => {\r\n        if (e.charCode == 13) {\r\n            searchData()\r\n        }\r\n    }\r\n\r\n    useEffect(() => {\r\n        setSearchNameOrIdValue(\"\")\r\n        return () => { mountedRef.current = false }\r\n    }, [locationCode, orginalSchoolYear]);\r\n\r\n    return (\r\n        <div>\r\n            <Row className=\"mb-3\">\r\n                <Col sm=\"6\">\r\n                    <InputGroup className=\"input-group\">\r\n                        <FormControl\r\n                            placeholder=\"LastName FirstName or OSIS ID or EIN\"\r\n                            className=\"form form-control form-control-md text-ellipse\"\r\n                            maxLength={128}\r\n                            onChange={onChangeSearch}\r\n                            value={searchNameOrId}\r\n                            onKeyPress={searchByClickEnter}\r\n                            width={500}\r\n                        />\r\n                        {searchNameOrId && searchNameOrId != \"\" &&\r\n                            <button type=\"button\" className=\"close mr-3\" onClick={clearSearch} aria-label=\"Close\">\r\n                                <span aria-hidden=\"false\">&times;</span>\r\n                            </button>\r\n                        }\r\n                        <div className=\"input-group-append\">\r\n                            <Button className=\"btn btn-primary btn-md \" onClick={searchData} >\r\n                                Search\r\n                            </Button>\r\n                        </div>\r\n                    </InputGroup>\r\n                </Col>\r\n                <Col sm=\"6\" className=\"text-right\">\r\n                    <DropDownList\r\n                        data={dropDownData}\r\n                        defaultValue={dropDownData[0]}\r\n                        onChange={onSelectionChange}\r\n                        style={{ maxWidth: '350px', width: \"100%\" }}\r\n                    />\r\n\r\n                </Col>\r\n            </Row>\r\n\r\n            {selectedValue == \"Student\" && <Student locationCode={locationCode.id} schoolYear={+orginalSchoolYear.id} searchNameOrId={searchNameOrId} searchForData={searchForData} />}\r\n\r\n            {selectedValue == \"Staff\" && <Staff locationCode={locationCode.id} schoolYear={+orginalSchoolYear.id} searchNameOrId={searchNameOrId} searchForData={searchForData} />}\r\n        </div >\r\n    )\r\n}","import React, { useContext } from 'react';\r\nimport { ErrorContext, IErrorContext } from '../services/AppContext'\r\n\r\nexport default function ErrorDisplay() {\r\n    const errorContext = useContext<IErrorContext>(ErrorContext);\r\n    let isErrorContentVisible = (errorContext.errorMessages)\r\n    return (<div className=\"main-alert-container\">\r\n        { \r\n        errorContext?.errorMessages?.length != 0 &&\r\n            <div className=\"main-alert\">\r\n                <div className=\"container pt-5 pb-5\">\r\n                    <div className=\"alert alert-danger mb-0 shadow-sm pt-0 pb-0\">\r\n                        {\r\n                            errorContext.errorMessages.map((msg, i) =>\r\n                                <div className=\"alert-item pt-2 pb-2 ml-n3 mr-n3 pr-3 pl-6\" key={i.toString()}>\r\n                                    <i className=\"fas fa-bomb alert-icon fa-lg\"></i> {msg}\r\n                                </div>\r\n                            )\r\n                        }\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        }\r\n    </div>)\r\n}","import React, { useState, useEffect, useRef } from 'react';\r\nimport { NavLink } from 'react-router-dom';\r\n\r\nexport default function IconDOELogo() {\r\n\r\n  return (\r\n    <svg id=\"doe_logo_svg\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 226.39 40\">\r\n      <path d=\"M360.981,175.713h4.436c3.164,0,5.057,1.923,5.057,5.115,0,3.38-1.922,5.2-5.057,5.2h-4.436Zm2.688,8h1.271c2.038-.042,2.846-.837,2.846-2.9a2.508,2.508,0,0,0-2.846-2.788h-1.271Z\" transform=\"translate(-235.318 -174.408)\" fill=\"#036\" />\r\n      <path d=\"M378.755,184.188a1.6,1.6,0,0,0,1.676,1.7,1.464,1.464,0,0,0,1.4-.823h2.3a3.549,3.549,0,0,1-3.728,2.485,3.771,3.771,0,0,1-4.1-3.987,3.935,3.935,0,0,1,4.045-3.943c2.687,0,4.031,2.022,3.915,4.566Zm3.049-1.373a1.519,1.519,0,0,0-1.46-1.531,1.618,1.618,0,0,0-1.589,1.531Z\" transform=\"translate(-240.44 -175.715)\" fill=\"#036\" />\r\n      <path d=\"M389.665,179.838h2.341v.867h.029a2.4,2.4,0,0,1,2.066-1.083c2.354,0,3.351,2.022,3.351,4.132,0,1.95-1.04,3.8-3.164,3.8a2.511,2.511,0,0,1-2.139-1.024h-.029v3.323h-2.455V179.838Zm2.369,3.67c0,1.315.375,2.167,1.488,2.167S395,184.533,395,183.508c0-.954-.375-2.008-1.46-2.008C392.872,181.5,392.034,181.962,392.034,183.508Z\" transform=\"translate(-244.909 -175.715)\" fill=\"#036\" />\r\n      <path d=\"M402.557,182.15a2.308,2.308,0,0,1,1.17-2.009,4.953,4.953,0,0,1,2.384-.52c1.777,0,3.5.389,3.5,2.513v3.28a4.346,4.346,0,0,0,.29,1.922h-2.472a2.972,2.972,0,0,1-.144-.708,3.384,3.384,0,0,1-2.47.924c-1.43,0-2.557-.721-2.557-2.269,0-2.441,2.659-2.253,4.363-2.6.419-.085.65-.23.65-.693,0-.563-.679-.781-1.184-.781a1.1,1.1,0,0,0-1.229.941h-2.3Zm3.178,3.887c1.17,0,1.56-.666,1.5-2.211a6.928,6.928,0,0,1-1.517.4c-.549.13-1.012.362-1.012.954C404.71,185.79,405.187,186.036,405.735,186.036Z\" transform=\"translate(-249.119 -175.714)\" fill=\"#036\" />\r\n      <path d=\"M415.41,179.875h2.383v1.315h.029a2.262,2.262,0,0,1,2.255-1.458,2.632,2.632,0,0,1,.578.057v2.24a3.431,3.431,0,0,0-.94-.144,1.724,1.724,0,0,0-1.849,1.777v3.712h-2.456v-7.5Z\" transform=\"translate(-253.518 -175.751)\" fill=\"#036\" />\r\n      <path d=\"M428.806,180.4h-1.517v3.409c0,.593.347.722.881.722.2,0,.419-.029.636-.029V186.3c-.449.015-.9.072-1.345.072-2.094,0-2.629-.607-2.629-2.644V180.4H423.59v-1.59h1.243v-2.268h2.456v2.268h1.517v1.59Z\" transform=\"translate(-256.253 -174.684)\" fill=\"#036\" />\r\n      <path d=\"M432.852,179.838h2.383v1.026h.03a2.5,2.5,0,0,1,2.151-1.243,2.166,2.166,0,0,1,2.181,1.212,2.749,2.749,0,0,1,2.342-1.212c2.383,0,2.643,1.806,2.643,3.236v4.478h-2.456V182.93c0-.809-.39-1.286-1.026-1.286-1.054,0-1.156.809-1.156,2.022v3.67H437.49v-4.262c0-.882-.26-1.43-.925-1.43-.881,0-1.257.506-1.257,2.037v3.655h-2.456v-7.5Z\" transform=\"translate(-259.35 -175.715)\" fill=\"#036\" />\r\n      <path d=\"M454.4,184.188a1.6,1.6,0,0,0,1.676,1.7,1.462,1.462,0,0,0,1.4-.823h2.3a3.548,3.548,0,0,1-3.728,2.485,3.771,3.771,0,0,1-4.1-3.987,3.934,3.934,0,0,1,4.044-3.943c2.687,0,4.032,2.022,3.916,4.566Zm3.049-1.373a1.519,1.519,0,0,0-1.46-1.531,1.619,1.619,0,0,0-1.589,1.531Z\" transform=\"translate(-265.734 -175.715)\" fill=\"#036\" />\r\n      <path d=\"M465.314,179.838H467.7v1.026h.029a2.834,2.834,0,0,1,2.356-1.243c2.5,0,2.7,1.819,2.7,2.9v4.811h-2.456V183.71c0-1.026.116-2.065-1.229-2.065-.925,0-1.329.779-1.329,1.6v4.089h-2.456v-7.5Z\" transform=\"translate(-270.204 -175.715)\" fill=\"#036\" />\r\n      <path d=\"M482.6,180.4h-1.516v3.409c0,.593.346.722.881.722.2,0,.419-.029.634-.029V186.3c-.447.015-.9.072-1.343.072-2.094,0-2.629-.607-2.629-2.644V180.4h-1.243v-1.59h1.243v-2.268h2.456v2.268H482.6v1.59Z\" transform=\"translate(-274.239 -174.684)\" fill=\"#036\" />\r\n      <path d=\"M496.242,179.622a3.965,3.965,0,1,1-3.945,3.972A3.844,3.844,0,0,1,496.242,179.622Zm0,6.053c1.142,0,1.5-1.127,1.5-2.081s-.361-2.094-1.5-2.094-1.488,1.142-1.488,2.094S495.1,185.675,496.242,185.675Z\" transform=\"translate(-279.226 -175.715)\" fill=\"#036\" />\r\n      <path d=\"M505.657,180.121h-1.186v-1.59h1.186c0-2.153.75-2.818,2.846-2.818.39,0,.794.03,1.184.043v1.733a5.348,5.348,0,0,0-.664-.042c-.564,0-.91.072-.91.751v.332h1.473v1.59h-1.473v5.908h-2.456Z\" transform=\"translate(-283.296 -174.408)\" fill=\"#036\" />\r\n      <path d=\"M360.981,199.56H369.2v2.153h-5.533v1.807h5.057V205.6h-5.057v1.965h5.678v2.312h-8.365Z\" transform=\"translate(-235.318 -182.381)\" fill=\"#036\" />\r\n      <path d=\"M382.479,209.876h-2.34v-.867h-.029a2.4,2.4,0,0,1-2.066,1.083c-2.355,0-3.352-2.022-3.352-4.132,0-1.95,1.04-3.8,3.164-3.8a2.508,2.508,0,0,1,2.138,1.024h.029v-3.626h2.456Zm-5.331-3.827c0,1.025.375,2.166,1.5,2.166,1.2,0,1.459-1.142,1.459-2.094,0-1.084-.39-2.081-1.459-2.081C377.524,204.039,377.148,205.094,377.148,206.048Z\" transform=\"translate(-239.903 -182.381)\" fill=\"#036\" />\r\n      <path d=\"M395.916,211.292h-2.384v-1.026H393.5a2.762,2.762,0,0,1-2.283,1.243c-2.153,0-2.774-1.243-2.774-3.207v-4.507H390.9v4.349c0,1,.433,1.343,1.213,1.343.535,0,1.344-.347,1.344-1.677v-4.016h2.456Z\" transform=\"translate(-244.502 -183.797)\" fill=\"#036\" />\r\n      <path d=\"M406.431,206.43a1.155,1.155,0,0,0-1.2-1.083c-1.373,0-1.59,1.17-1.59,2.21,0,.969.42,1.965,1.46,1.965a1.316,1.316,0,0,0,1.4-1.286h2.383a3.514,3.514,0,0,1-3.77,3.164,3.732,3.732,0,0,1-3.93-3.843,3.8,3.8,0,0,1,3.93-4.088c1.863,0,3.525.982,3.7,2.961Z\" transform=\"translate(-248.762 -183.688)\" fill=\"#036\" />\r\n      <path d=\"M413.844,206a2.306,2.306,0,0,1,1.17-2.008,4.954,4.954,0,0,1,2.384-.52c1.777,0,3.5.389,3.5,2.513v3.28a4.342,4.342,0,0,0,.29,1.921h-2.471a2.969,2.969,0,0,1-.144-.708,3.384,3.384,0,0,1-2.47.924c-1.43,0-2.557-.721-2.557-2.268,0-2.441,2.659-2.254,4.363-2.6.419-.086.65-.23.65-.693,0-.564-.679-.781-1.184-.781a1.1,1.1,0,0,0-1.229.941h-2.3Zm3.178,3.887c1.17,0,1.56-.666,1.5-2.211a6.928,6.928,0,0,1-1.517.4c-.549.13-1.012.362-1.012.954C416,209.637,416.474,209.884,417.022,209.884Z\" transform=\"translate(-252.893 -183.688)\" fill=\"#036\" />\r\n      <path d=\"M430.661,204.244h-1.517v3.409c0,.594.347.722.881.722.2,0,.419-.029.636-.029v1.806c-.447.015-.9.072-1.343.072-2.1,0-2.63-.607-2.63-2.644v-3.337h-1.243v-1.59h1.243v-2.268h2.456v2.268h1.517v1.59Z\" transform=\"translate(-256.873 -182.657)\" fill=\"#036\" />\r\n      <path d=\"M437.247,201.439h-2.456V199.56h2.456Zm-2.456.939h2.456v7.5h-2.456Z\" transform=\"translate(-259.998 -182.381)\" fill=\"#036\" />\r\n      <path d=\"M443.964,203.469a3.965,3.965,0,1,1-3.945,3.972A3.844,3.844,0,0,1,443.964,203.469Zm0,6.053c1.142,0,1.5-1.126,1.5-2.08s-.361-2.094-1.5-2.094-1.488,1.142-1.488,2.094S442.822,209.522,443.964,209.522Z\" transform=\"translate(-261.746 -183.688)\" fill=\"#036\" />\r\n      <path d=\"M453.377,203.686h2.384v1.026h.029a2.831,2.831,0,0,1,2.354-1.242c2.5,0,2.7,1.819,2.7,2.9v4.811h-2.457v-3.626c0-1.026.116-2.066-1.227-2.066-.925,0-1.33.779-1.33,1.6v4.089h-2.456v-7.5Z\" transform=\"translate(-266.212 -183.689)\" fill=\"#036\" />\r\n      <path d=\"M324.887,173.752h-25l-7.5,7.5v25l7.5,7.5h25l7.5-7.5v-7.5l-2.5-2.5h-12.5v2.5h-10v-10h10v2.469h12.5l2.5-2.469v-7.5Z\" transform=\"translate(-212.383 -173.752)\" fill=\"#69c\" />\r\n      <path d=\"M209.7,173.752h-10l-2.5,2.5v10l-12.5-12.5h-10l-2.5,2.5v35l2.5,2.5h10l2.5-2.5v-10l12.5,12.5h10l2.5-2.5v-35Z\" transform=\"translate(-172.195 -173.752)\" fill=\"#80b34d\" />\r\n      <path d=\"M247.291,213.752h10l2.5-2.5v-7.5l12.5-12.5v-15l-2.5-2.5h-10l-2.5,2.5v5l-5,5-5-5h0v-5l-2.5-2.5h-10l-2.5,2.5v15l12.5,12.5v7.5Z\" transform=\"translate(-192.289 -173.752)\" fill=\"#f93\" />\r\n      <g transform=\"translate(115.524 0.001)\">\r\n        <g transform=\"translate(0)\">\r\n          <path d=\"M345.75,174.11v-.356h1.814v.356h-.693v1.773h-.424V174.11Zm2.782-.356.544,1.525.541-1.525h.611v2.129h-.392v-1.716l-.586,1.716h-.341l-.594-1.716v1.716h-.391v-2.129Z\" transform=\"translate(-345.75 -173.754)\" fill=\"#036\" />\r\n        </g>\r\n      </g>\r\n    </svg>\r\n  )\r\n}\r\n\r\n","\r\nimport IconDOELogo from '../assets/icons/icon-doe-logo'\r\n\r\nexport default function Header(/*props*/) {\r\n  return (\r\n    <header className=\"header\">\r\n            <div className=\"container app-banner\">\r\n                <div className=\"row\">\r\n                    <div className=\"col-3 doe-logo\">\r\n                        <a href=\"#\">\r\n                            <IconDOELogo />\r\n                        </a>\r\n                    </div>\r\n                    <div className=\"col-9 app-title-sm text-right d-flex justify-content-end align-items-center\">\r\n                        { window.location.pathname == '/' || window.location.pathname == '/Home' ? <div className=\"app-txt-main\">LMS Admin</div> : <div className=\"app-txt-main\">iLearn Align</div> }\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </header>\r\n       \r\n  )\r\n}","import React, { useState, useEffect, useRef } from 'react';\r\n\r\nexport default function IconSchool() {\r\n\r\n  return (\r\n    <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 49.551 50\">\r\n        <title>School</title>\r\n        <g transform=\"translate(-797.418 -33.62)\">\r\n            <path d=\"M828.852,59.886a5.756,5.756,0,1,0,5.757,5.756A5.762,5.762,0,0,0,828.852,59.886Zm0,9.29a3.534,3.534,0,1,1,3.535-3.534A3.537,3.537,0,0,1,828.852,69.176Z\" transform=\"translate(-6.659 -6.811)\"></path>\r\n            <rect width=\"2.592\" height=\"3.824\" transform=\"translate(805.741 70.388)\"></rect>\r\n            <rect width=\"2.592\" height=\"3.824\" transform=\"translate(805.741 76.316)\"></rect>\r\n            <path d=\"M832.658,86.042h-6.995a1.3,1.3,0,0,0-1.3,1.3c0,.013,0,.025,0,.037s0,.025,0,.038v8.458a1.3,1.3,0,1,0,2.592,0V88.634H831.4v7.237a1.3,1.3,0,0,0,2.592,0V87.413a1.409,1.409,0,0,0-1.338-1.371Z\" transform=\"translate(-6.988 -13.593)\"></path>\r\n            <rect width=\"2.592\" height=\"3.824\" transform=\"translate(836.055 70.388)\"></rect>\r\n            <rect width=\"2.592\" height=\"3.824\" transform=\"translate(836.055 76.316)\"></rect>\r\n            <path d=\"M857.286,65.881H844.8V62.4l-2.592-1.341V89.439a1.3,1.3,0,1,0,2.592,0V73.679h12.489a1.3,1.3,0,0,0,1.3-1.3v-5.2A1.3,1.3,0,0,0,857.286,65.881Zm-1.3,5.2H844.84V68.474h11.15Z\" transform=\"translate(-11.614 -7.116)\"></path>\r\n            <path d=\"M801.168,94.575a1.3,1.3,0,0,0,2.592,0V81.043h-2.592Z\" transform=\"translate(-0.972 -12.297)\"></path>\r\n            <path d=\"M857.067,94.575a1.3,1.3,0,0,0,2.592,0V81.043h-2.592Z\" transform=\"translate(-15.467 -12.297)\"></path>\r\n            <path d=\"M811.2,65.863h-12.49a1.3,1.3,0,0,0-1.3,1.3v5.2a1.3,1.3,0,0,0,1.3,1.3H811.2V89.42a1.3,1.3,0,1,0,2.592,0V60.988L811.2,62.329Zm-.042,5.2H800.01V68.455h11.151Z\" transform=\"translate(0 -7.097)\"></path>\r\n            <path d=\"M811.656,54.125a1.283,1.283,0,0,0,.595-.146l13.3-6.881,13.3,6.881a1.283,1.283,0,0,0,.595.146,1.3,1.3,0,0,0,.6-2.448l-13.114-6.786a1.293,1.293,0,0,0-.121-.184,1.263,1.263,0,0,0,.026-.256v-2.03l7.394-2.989a1.284,1.284,0,0,0,.226-.119l0,0a1.294,1.294,0,0,0,.253-.227c.018-.02.033-.041.051-.061a1.394,1.394,0,0,0,.178-.3l0-.006c.01-.025.014-.051.023-.076a1.36,1.36,0,0,0,.047-.161c.007-.039.009-.076.013-.114s.012-.09.013-.137a1.226,1.226,0,0,0-.012-.128c0-.041-.005-.081-.013-.123a1.2,1.2,0,0,0-.045-.153c-.009-.027-.013-.056-.024-.083l0-.008a1.177,1.177,0,0,0-.093-.176c-.01-.016-.016-.035-.027-.05a1.293,1.293,0,0,0-.3-.315c-.018-.013-.032-.028-.05-.04s-.049-.026-.073-.04a1.5,1.5,0,0,0-.152-.081l-.009,0L826.1,33.715a1.4,1.4,0,0,0-1.86,1.273v9.464a1.27,1.27,0,0,0,.035.287,1.323,1.323,0,0,0-.1.152L811.06,51.677a1.3,1.3,0,0,0,.6,2.448Zm15.175-17.312,3.463,1.411-3.463,1.4Z\" transform=\"translate(-3.356)\"></path>\r\n        </g>\r\n    </svg>\r\n  )\r\n}\r\n\r\n","import React, { useState, useEffect, useRef } from 'react';\r\n\r\nexport default function IconHome() {\r\n\r\n  return (\r\n    <svg version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 29 32\">\r\n      <title>Home</title>\r\n      <path d=\"M28.6,10.6L15.2,0.2c-0.4-0.3-1-0.3-1.5,0L0.5,10.6C0.2,10.8,0,11.2,0,11.6v16.3 C0,30.1,1.9,32,4.1,32h20.7c2.3,0,4.1-1.9,4.1-4.1V11.6C29,11.2,28.9,10.8,28.6,10.6z M17.8,29.6h-6.5V17.2h6.5V29.6z M26.7,27.9 c0,1-0.8,1.8-1.8,1.8h-4.7V16c0-0.7-0.5-1.2-1.2-1.2h-8.9c-0.7,0-1.2,0.5-1.2,1.2v13.6H4.1c-1,0-1.8-0.8-1.8-1.8V12.1l12.1-9.4 l12.1,9.4V27.9z\" />\r\n    </svg>\r\n  )\r\n}\r\n\r\n","import { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { Grid, GridColumn } from \"@progress/kendo-react-grid\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { Button, Form, Row } from \"react-bootstrap\";\r\nimport SchoolYearService from \"../../../services/SchoolYearService\";\r\nimport Moment from 'moment';\r\n\r\ninterface ISchoolYear {\r\n    schoolYear: number,\r\n    schoolYearName: string,\r\n    schoolYearRange?: string,\r\n    schoolYearStartDate: Date,\r\n    schoolYearEndDate: Date,\r\n    canAddNewSchoolYear?: boolean\r\n}\r\n\r\n\r\n\r\n\r\n\r\nexport default function SchoolYearManage() {\r\n\r\n    const [visible, setVisible] = useState(false);\r\n    const [schoolYears, setSchoolYears] = useState<ISchoolYear[]>();\r\n    const [isSchoolYearChanging, setIsSchoolYearChanging] = useState(false);\r\n    const [pageAlert, setPageAlert] = useState<string>('');\r\n    const [pageError, setPageErrors] = useState<string>('');\r\n    const [errors, setErrors] = useState({\r\n        startDateError: '',\r\n        endDateError: '',\r\n    })\r\n    const [formValue, setFormValue] = useState<ISchoolYear>({\r\n        schoolYear: 0,\r\n        schoolYearName: '',\r\n        schoolYearStartDate: new Date(),\r\n        schoolYearEndDate: new Date()\r\n    });\r\n\r\n\r\n    const addNewSchoolYear = () => {\r\n        setVisible(!visible);\r\n    }\r\n    const handleChange = (event: any) => {\r\n        const target = event.target //as HTMLSelectElement\r\n        setFormValue({ ...formValue, [target.name]: target.value });\r\n\r\n    };\r\n\r\n    const GridColumnStartDate = (props: any) => {\r\n        return (\r\n            <td>\r\n                <div>\r\n                    {Moment(props.dataItem.schoolYearStartDate).format('MM/DD/YYYY')}\r\n                </div>\r\n            </td>\r\n        )\r\n    }\r\n\r\n    const GridColumnEndDate = (props: any) => {\r\n        return (\r\n            <td>\r\n                <div>\r\n                    {Moment(props.dataItem.schoolYearEndDate).format('MM/DD/YYYY')}\r\n                </div>\r\n            </td>\r\n        )\r\n    }\r\n\r\n    const validateFormValues = () => {\r\n        let error = {\r\n            startDateError: '',\r\n            endDateError: '',\r\n        }\r\n        if (!formValue.schoolYearEndDate) { error.endDateError = \"School Year End date is required.\" }\r\n        if (!formValue.schoolYearStartDate) { error.startDateError = \"School Year  Start date is required.\" }\r\n        if (Moment(formValue.schoolYearEndDate).format('YYYY-MM-DD') < Moment(formValue.schoolYearStartDate).format('YYYY-MM-DD')) { error.endDateError = \"End date must not be less than start date.\" }\r\n        if (Moment(formValue.schoolYearEndDate).format('YYYY-MM-DD') <= Moment(Date.now()).format('YYYY-MM-DD')) { error.endDateError = \"End date must be greater than today's date.\" }\r\n        setErrors(error);\r\n        if (error.endDateError || error.startDateError) {\r\n            return false\r\n        } else {\r\n            return true\r\n        }\r\n    }\r\n\r\n    const onSave = () => {\r\n        if (validateFormValues()) {\r\n            SchoolYearService.AddNewSchoolYear(formValue).then(response => {\r\n                if (!response.data.isValidResponse) {\r\n                    setPageErrors(response.data.errors.join())\r\n\r\n                } else {\r\n                    getCurrentSchoolYear();\r\n                    setVisible(!visible);\r\n                    setPageAlert('Success: The new school year has been created. Please refresh the page to see the changes.')\r\n                }\r\n            }).catch((ex) => {\r\n                setPageErrors('Oops!, Something went wrong. Please try again.')\r\n            })\r\n        }\r\n    }\r\n\r\n    const getCurrentSchoolYear = () => {\r\n        SchoolYearService.getCurrentSchoolYear().then(res => {\r\n            let schoolYears = []\r\n            schoolYears.push(res.data)\r\n            setSchoolYears(schoolYears)\r\n            if (res.data.canAddNewSchoolYear) {\r\n                let newYear: ISchoolYear = res.data\r\n                setFormValue({\r\n                    schoolYear: +newYear.schoolYear + 1,\r\n                    schoolYearName: `${+newYear.schoolYear + 1}Term`,\r\n                    schoolYearStartDate: new Date(+newYear.schoolYear + 1, 7, 20),\r\n                    schoolYearEndDate: new Date(+newYear.schoolYear + 2, 7, 20)\r\n                })\r\n            }\r\n        })\r\n    }\r\n\r\n    useEffect(() => {\r\n        getCurrentSchoolYear()\r\n        setPageAlert(\"\")\r\n        setPageErrors(\"\")\r\n\r\n    }, []);\r\n\r\n    return (\r\n\r\n        <div>\r\n            <div className=\"text-right mb-2\">\r\n                <Button variant=\"primary\" onClick={addNewSchoolYear}><i className=\"fas fa-plus\"></i></Button>\r\n\r\n            </div>\r\n            {pageAlert && pageAlert != \"\" && <div className=\"alert alert-success\" role=\"alert\">\r\n                {pageAlert}\r\n            </div>}\r\n            <Grid\r\n                data={schoolYears}\r\n            >\r\n\r\n                <GridColumn field=\"schoolYear\" title=\"School Year\"></GridColumn>\r\n                <GridColumn field=\"schoolYearName\" title=\"School Year Name\"></GridColumn>\r\n                <GridColumn field=\"schoolYearRange\" title=\"School Year Range\" ></GridColumn>\r\n                <GridColumn field=\"schoolYearStartDate\" title=\"School Year Start Date\" cell={GridColumnStartDate}></GridColumn>\r\n                <GridColumn field=\"schoolYearEndDate\" cell={GridColumnEndDate} title=\"School Year End Date\" ></GridColumn>\r\n            </Grid>\r\n            {visible &&\r\n                <Dialog title={\"Add New Year\"} onClose={addNewSchoolYear} width={500}>\r\n                    {pageError && pageError != \"\" && <div className=\"alert alert-danger\" role=\"alert\">\r\n                        {pageError}\r\n                    </div>}\r\n                    {schoolYears && schoolYears[0].canAddNewSchoolYear ?\r\n                        <Form>\r\n                            <Row>\r\n                                <Form.Group controlId=\"schoolYear\" className=\"col-6\" >\r\n                                    <Form.Label>School Year</Form.Label>\r\n                                    <Form.Control readOnly type=\"text\" name=\"schoolYear\" value={formValue ? formValue.schoolYear : 0} disabled />\r\n                                </Form.Group>\r\n                                <Form.Group controlId=\"schoolYearName\" className=\"col-sm-6\" >\r\n                                    <Form.Label>School Year Name</Form.Label>\r\n                                    <Form.Control readOnly type=\"text\" name=\"schoolYearName\" value={formValue ? formValue.schoolYearName : ''} disabled />\r\n                                </Form.Group>\r\n\r\n                                <Form.Group controlId=\"startDate\" className=\"col-sm-6\">\r\n                                    <Form.Label>School Start Date</Form.Label>\r\n                                    <Form.Control\r\n                                        value={\r\n                                            formValue\r\n                                                ? Moment(formValue.schoolYearStartDate).format('YYYY-MM-DD')\r\n                                                : Moment(new Date()).format('YYYY-MM-DD')\r\n                                        }\r\n                                        type=\"date\" name=\"schoolYearStartDate\" onChange={handleChange} ></Form.Control>\r\n                                    <Form.Text className=\"text-danger\">{errors.startDateError}</Form.Text>\r\n                                </Form.Group>\r\n                                <Form.Group controlId=\"endDate\" className=\"col-sm-6\">\r\n                                    <Form.Label>School End Date</Form.Label>\r\n                                    <Form.Control\r\n                                        value={\r\n                                            formValue\r\n                                                ? Moment(formValue.schoolYearEndDate).format('YYYY-MM-DD')\r\n                                                : Moment(new Date()).format('YYYY-MM-DD')\r\n                                        }\r\n                                        type=\"date\" name=\"schoolYearEndDate\" onChange={handleChange} ></Form.Control>\r\n                                    <Form.Text className=\"text-danger\">{errors.endDateError}</Form.Text>\r\n                                </Form.Group>\r\n\r\n                                <Form.Group controlId=\"changeSchoolYear\" className=\"col-sm-12\">\r\n                                    <Form.Check\r\n                                        type=\"checkbox\"\r\n                                        label=\"I agree to create a new school year\"\r\n                                        checked={isSchoolYearChanging}\r\n                                        onChange={(e) => setIsSchoolYearChanging(e.target.checked)}\r\n                                    />\r\n                                </Form.Group>\r\n                                <div className=\"alert alert-warning\" style={{ marginLeft: \"10px\", marginRight: \"10px\" }}>\r\n                                    <strong>Note:</strong> Once the new school year is created, all NYCDOE vendors will be moved to the new year.\r\n                                </div>\r\n                            </Row>\r\n                        </Form>\r\n\r\n                        : <div>\r\n                            You've already added the school year for {schoolYears ? schoolYears[0].schoolYear : 0}. You can add the next year after 8/1/{schoolYears ? +schoolYears[0].schoolYear + 1 : 0}.\r\n                        </div>}\r\n                    {/* </Modal.Body> */}\r\n                    <DialogActionsBar>\r\n                        <Button className=\"m-2\" variant=\"secondary\" onClick={addNewSchoolYear}>Close</Button>\r\n                        {schoolYears && schoolYears[0].canAddNewSchoolYear ? <Button variant=\"primary\" type=\"button\" onClick={onSave} disabled={!isSchoolYearChanging}>Save</Button> : ''}\r\n                    </DialogActionsBar>\r\n                </Dialog>\r\n            }\r\n        </div>\r\n    )\r\n}","import React, { useCallback, useEffect, useState } from 'react';\r\nimport { Navbar, Nav, Container, Row, Col, DropdownButton, Dropdown } from 'react-bootstrap';\r\nimport AnnouncementManage from '../components/adminManagement/announcementManagement/AnnouncementManage'\r\nimport Dashboard from '../components/Dashboard'\r\nimport SchoolDropDown from '../components/SchoolDropDown';\r\nimport SchoolYearDropDown from '../components/SchoolYearDropDown';\r\nimport GlobalMenu from './GlobalMenu'\r\nimport { LocationContext, AuthContext, ErrorContext, IErrorContext, ErrorContextDefault, Year } from '../services/AppContext'\r\nimport SchoolBanner from '../components/SchoolBanner'\r\nimport VendorContent from '../components/vendorLicenseAllocation/VendorContent';\r\nimport Courses from '../components/courses/Courses';\r\nimport PurchaseOrder from '../components/PurchaseOrder';\r\nimport Report from '../components/Reports/Reports';\r\nimport ProfileMenu from './ProfileMenu';\r\nimport VendorManage from '../components/adminManagement/VendorManagement/VendorManage';\r\nimport SchoolManage from '../components/adminManagement/schoolManagement/SchoolManage';\r\nimport StudentAndStaff from '../components/studentAndStaff/studentAndStaff'\r\nimport ErrorDisplay from '../shared/ErrorDisplay';\r\nimport Header from './Header';\r\nimport { useParams, withRouter } from 'react-router-dom';\r\nimport IconSchool from '../assets/icons/icon-school'\r\nimport IconHome from '../assets/icons/icon-home'\r\nimport {\r\n    BrowserRouter,\r\n    Switch,\r\n    Route,\r\n    Link,\r\n    useLocation,\r\n    useHistory\r\n} from \"react-router-dom\";\r\nimport LocalStorageService from '../services/LocalStorage';\r\nimport { AuthContextDefault, UserProfileType } from '../services/AppContext';\r\nimport SchoolYearManage from '../components/adminManagement/schoolYearManage/SchoolYearManage';\r\n\r\n\r\n\r\nexport default function ILearnLayout(props?: any, isManageActivated?: boolean) {\r\n    const loadingPanel = (\r\n        <div className=\"k-loading-mask\">\r\n            <span className=\"k-loading-text\">Loading</span>\r\n            <div className=\"k-loading-image\"></div>\r\n            <div className=\"k-loading-color\"></div>\r\n        </div>\r\n    );\r\n\r\n    const [isManageRouteEnabled, setIsManageRouteEnabled] = useState(isManageActivated)\r\n    const [userProfile, setUserProfile] = useState<UserProfileType>(AuthContextDefault.userProfile);\r\n    //    const errorContext1 = useContext<AuthContextType>(AuthContext);\r\n    const [locationCode, setLocationCode] = useState('');\r\n    const value = { locationCode, setLocationCode };\r\n\r\n    //const [location,setLocation] = useState(window.location.pathname)\r\n\r\n\r\n    const [currentPath, setCurrentPath] = useState('');\r\n    interface SchoolYear {\r\n        id: string,\r\n        isCurrent: number,\r\n        schoolYearEndDate: Date\r\n    }\r\n\r\n    let [orginalSchoolYear, setOrginalSchoolYear] = useState<SchoolYear>({ id: '', isCurrent: 0, schoolYearEndDate: new Date() });\r\n    const v = { orginalSchoolYear, setOrginalSchoolYear };\r\n    useEffect(() => {\r\n        setIsManageRouteEnabled(window.location.pathname.startsWith(\"/ILearn/manage/\"))\r\n        setUserProfile(LocalStorageService.getUserProfile())\r\n        if ((LocalStorageService.getUserProfile().role.roleName != \"System Administrator\" && LocalStorageService.getUserProfile().role.roleName != \"Central Staff\") && LocalStorageService.getUserProfile().role.locations.length > 0) {\r\n            setLocationCode(LocalStorageService.getUserProfile().role?.locations[0].LocationCode)\r\n        }\r\n        if (window.location.pathname.slice(15) == \"years\") {\r\n            setCurrentPath('School Year')\r\n        } else {\r\n            setCurrentPath(window.location.pathname.slice(15))\r\n        }\r\n\r\n    }, [isManageRouteEnabled,])\r\n\r\n    const onBack = () => {\r\n        setIsManageRouteEnabled(false)\r\n    }\r\n\r\n\r\n\r\n\r\n\r\n    const onMenuClick = (e: any, menuName: string) => {\r\n        \r\n        if (window.location.pathname.slice(15) == \"years\") {\r\n            setCurrentPath('School Year')\r\n        } else {\r\n            setCurrentPath(window.location.pathname.slice(15))\r\n        }\r\n\r\n    }\r\n\r\n    const onNavaigationProfile = () => {\r\n        if (window.location.pathname.slice(15) == \"years\") {\r\n            setCurrentPath('School Year')\r\n        } else {\r\n            setCurrentPath(window.location.pathname.slice(15))\r\n        }\r\n        setIsManageRouteEnabled(true)\r\n    }\r\n\r\n    const PublicHeader = useCallback(() => {\r\n        return (\r\n            <div className=\"pt-5 welcome-heading\">\r\n                <div className=\"container\">\r\n                    <div className=\"d-md-flex align-items-center\">\r\n                        <div className=\"text-center\">\r\n                            <div className=\"svg-app-icon text-secondary d-inline\" style={{ width: \"50px\" }}>\r\n                                <IconSchool />\r\n                            </div>\r\n                        </div>\r\n                        {locationCode != \"\" && <SchoolBanner id={locationCode} />}\r\n                    </div>\r\n                    <div>\r\n                        <GlobalMenu />\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        )\r\n    }, [isManageRouteEnabled, locationCode])\r\n\r\n    const ManageHeader = () => {\r\n        return (\r\n            <div className=\"pt-5 welcome-heading bg-blue-gray pb-5\">\r\n                <Container className=\"container\">\r\n                    <Row>\r\n                        <Col sm=\"8\">\r\n                            <div className=\"d-flex\">\r\n                                <Link to='/ILearn' onClick={onBack} className=\"text-secondary pt-2 pb-2 pl-4 pr-4 border-secondary border-right\" ><i className=\"fas fa-arrow-circle-left fa-lg\"></i></Link>\r\n                                <h1 className=\"p-1 mb-0 ml-3 text-capitalize\" >Manage {currentPath}</h1>\r\n                            </div>\r\n                        </Col>\r\n                        <Col sm=\"4\" className=\"text-center text-sm-right\">\r\n                            <DropdownButton\r\n                                menuAlign=\"right\"\r\n                                title={currentPath}\r\n                                id=\"manage_pages_menu\"\r\n                                variant=\"outline-dark\"\r\n                                className=\"text-capitalize\"\r\n                            >\r\n                                <Dropdown.Item href=\"/ILearn/manage/announcements\" onClick={(e) => onMenuClick(e, '/ILearn/manage/announcements')}>Announcements</Dropdown.Item>\r\n                                <Dropdown.Item href='/ILearn/manage/vendors' onClick={(e) => onMenuClick(e, '/ILearn/manage/vendors')}> Vendors </Dropdown.Item>\r\n                                <Dropdown.Item href=\"/ILearn/manage/schools\" onClick={(e) => onMenuClick(e, '/ILearn/manage/schools')}> Schools </Dropdown.Item>\r\n                                <Dropdown.Item href=\"/ILearn/manage/years\" onClick={(e) => onMenuClick(e, '/ILearn/manage/years')}> School Year </Dropdown.Item>\r\n                                <Dropdown.Item href=\"/ILearn/manage/reports\" onClick={(e) => onMenuClick(e, '/ILearn/manage/reports')}> Reports </Dropdown.Item>\r\n                            </DropdownButton>\r\n                        </Col>\r\n                    </Row>\r\n                </Container>\r\n            </div>\r\n        )\r\n    }\r\n    return (\r\n        <BrowserRouter   >\r\n            <LocationContext.Provider value={value}>\r\n                <Year.Provider value={v}>\r\n                    <Header />\r\n                    <Navbar variant=\"dark\" expand=\"lg\" className=\"navbar-mobile-links\">\r\n                        <Container className=\"justify-content-end\">\r\n                            <Navbar.Toggle aria-controls=\"basic-navbar-nav\" />\r\n                            <Navbar.Collapse id=\"basic-navbar-nav\" className=\"position-relative navbar-mobile-visible\">\r\n                                <Nav className=\"mr-auto position-relative\">\r\n                                    <Nav.Link href=\"/Home\" className=\"link-mobile-visible link-mobile-home\">\r\n                                        <div className=\"svg-app-icon text-white\" style={{ height: \"30px\" }}>\r\n                                            <IconHome />\r\n                                        </div>\r\n                                    </Nav.Link>\r\n                                    <li className=\"nav-item kendo-dropdown circle-dropdown k-school-dropdown\">\r\n                                        <div className=\"nav-link main-and-sub\">\r\n                                            <label className=\"list-sub-title\">Schools</label>\r\n                                            <SchoolDropDown />\r\n                                        </div>\r\n                                    </li>\r\n                                    <li className=\"nav-item kendo-dropdown circle-dropdown\">\r\n                                        <div className=\"nav-link main-and-sub\">\r\n                                            <label className=\"list-sub-title\">Year</label>\r\n                                            <SchoolYearDropDown />\r\n                                        </div>\r\n                                    </li>\r\n                                </Nav>\r\n                                <ProfileMenu onNavigation={onNavaigationProfile} userProfile={userProfile} />\r\n                            </Navbar.Collapse>\r\n                        </Container>\r\n                    </Navbar>\r\n                    <React.Fragment>\r\n                        <ErrorDisplay />\r\n                        {\r\n                            isManageRouteEnabled ? <ManageHeader /> : <PublicHeader />\r\n                        }\r\n                    </React.Fragment>\r\n                    <div className=\"main-wrap\">\r\n                        <main className=\"container mt-5\">\r\n                            <Switch>\r\n                                <Route path=\"/ILearn/Courses\" render={(props) => <Courses {...props} id={locationCode} />} />\r\n                                <Route path=\"/ILearn/VendorContent\" render={(props) => <VendorContent {...props} id={locationCode} />} />\r\n                                <Route path=\"/ILearn/StudentStaffs\" render={(props) => <StudentAndStaff {...props} id={locationCode} />} />\r\n                                <Route path=\"/ILearn/PurchaseOrders\" render={(props) => <PurchaseOrder {...props} id={locationCode} />} />\r\n                                {/* <Route exact path=\"/StudentStaffs\">\r\n                                    <AnnouncementManage />\r\n                                </Route> */}\r\n                                <Route exact path=\"/ILearn/Reports\"  >\r\n                                    {(locationCode != \"\" && orginalSchoolYear.id != \"\") &&\r\n                                        <Report id={locationCode} />}\r\n                                </Route>\r\n                                <Route exact path=\"/ILearn/manage/reports\"  >\r\n                                    {(locationCode != \"\" && orginalSchoolYear.id != \"\") &&\r\n                                        <Report id=\"AllSchools\" />}\r\n                                </Route>\r\n                                <Route exact path=\"/ILearn/manage/announcements\" component={AnnouncementManage} />\r\n                                <Route exact path=\"/ILearn/manage/vendors\" component={VendorManage} />\r\n                                <Route exact path=\"/ILearn/manage/schools\" component={SchoolManage} />\r\n                                <Route exact path=\"/ILearn/manage/years\" component={SchoolYearManage} />\r\n                                <Route exact path=\"/ILearn\">\r\n                                    {(locationCode != \"\" && orginalSchoolYear.id != \"\") &&\r\n                                        <Dashboard id={locationCode} />}\r\n                                </Route>\r\n                            </Switch>\r\n                        </main>\r\n                    </div>\r\n                </Year.Provider>\r\n            </LocationContext.Provider>\r\n        </BrowserRouter>\r\n    )\r\n\r\n}\r\n\r\n\r\n\r\n\r\n","import { Log, UserManager } from 'oidc-client';\r\nimport appsettings from '../../assets/appsettings.json';\r\n\r\nexport default class AuthService {\r\n    constructor() {\r\n        const settings = {\r\n            authority: appsettings.OIDC.REACT_APP_OIDC_AUTHORITY,\r\n            metadataUrl: appsettings.OIDC.REACT_APP_OIDC_METADATA_URL,\r\n            client_id: appsettings.OIDC.REACT_APP_OIDC_CLIENT_ID,\r\n            redirect_uri: appsettings.OIDC.REACT_APP_OIDC_REDIRECT_URI,\r\n            silent_redirect_uri: appsettings.OIDC.REACT_APP_OIDC_SILENT_REDIRECT_URI,\r\n            post_logout_redirect_uri: appsettings.OIDC.REACT_APP_OIDC_REDIRECT_URI,\r\n            response_type: 'code',\r\n            scope: \"openid profile offline_access\",\r\n            filterProtocolClaims: true,\r\n            loadUserInfo: false\r\n        };\r\n        this.userManager = new UserManager(settings);\r\n\r\n        Log.logger = console;\r\n        Log.level = Log.INFO;\r\n\r\n    }\r\n\r\n    isAuthenticated() {\r\n        this.authService.getUser().then(user => {\r\n            return (user)\r\n        });\r\n    }\r\n\r\n    getUser() {\r\n        return this.userManager.getUser();\r\n    }\r\n\r\n    login() {\r\n        return this.userManager.signinRedirect().then(res => {\r\n            //they use implicit flow => \r\n        });\r\n    }\r\n\r\n\r\n\r\n    logout() {\r\n        this.userManager.removeUser().catch((reason) => {\r\n            console.error(reason)\r\n        })\r\n        this.userManager.signoutRedirect({\r\n            id_token_hint: localStorage.getItem(\"id_token\")\r\n        });\r\n\r\n        this.userManager.clearStaleState();\r\n        sessionStorage.clear();\r\n        localStorage.clear();\r\n        clearInterval()\r\n        return this.userManager.signoutRedirectCallback();\r\n    }\r\n}","import React, { useState, useRef, useContext, useEffect } from 'react';\r\nimport { useHistory } from \"react-router-dom\";\r\nimport AuthService from '../services/openid/AuthService';\r\nimport { AuthContext, AuthContextType, AuthContextDefault } from '../services/AppContext';\r\nimport Header from \"./Header\";\r\n\r\n\r\nexport default function Login() {\r\n    const authService = useRef(new AuthService())\r\n    const [user, setUser] = useState<any>({});\r\n    let history = useHistory();\r\n    const { userProfile, setUserProfile } = useContext<AuthContextType>(AuthContext);\r\n    const params = new URLSearchParams(window.location.search)\r\n    const [loggedOut, setLoggedOut] = useState(false)\r\n\r\n    useEffect(() => {\r\n        if (window.location.search == \"?logout\") {\r\n            authService.current.logout()\r\n            setLoggedOut(true)\r\n        }\r\n    }, [window.location.search])\r\n\r\n    const onSignIn = (e: any) => {\r\n        const user1 = authService.current.getUser().then(user => {\r\n            if (!user) {\r\n                authService.current.login()\r\n            }\r\n            else {\r\n                setUser(user);\r\n                setUserProfile(AuthContextDefault.userProfile)\r\n                history.push('/Home')\r\n            }\r\n        })\r\n    }\r\n\r\n    if (!loggedOut) {\r\n        return (\r\n            <div className='sign-in-page'>\r\n                <Header />\r\n                <div className=\"hero position-relative\">\r\n                    <div className=\"hero-gradient\"></div>\r\n                    <div className=\"hero-image\" style={{ \"background\": \"url(https://www.nycenet.edu/ui/apps/resources/graphics/patterns/oriental-tiles.png)\" }}></div>\r\n                    <div className='hero-signin-form'>\r\n                        <div className=\"container\">\r\n                            <div className=\"row\">\r\n                                <div className=\"col-md-8 offset-md-2 pl-3 pr-3\">\r\n                                    <div className=\"app-txt-main h1 text-success\">LMS Admin</div>\r\n                                    <div className=\"app-txt-sub h4 text-success\">Learning Management System</div>\r\n                                    <div className=\"pt-2 pb-2 font-weight-normal\">\r\n                                        Synchronize grades, rosters, courses and content between STARS systems and LMSs like iLearnNYC and Google Classroom.\r\n                            </div>\r\n\r\n                                    <a asp-controller=\"Home\" asp-action=\"Login\" className=\"btn btn-warning btn-lg btn-block mt-4 col-6 offset-3 col-sm-4 offset-sm-4\"\r\n                                        onClick={(e) => onSignIn(e)}>Sign In</a>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        )\r\n    }\r\n    else {\r\n        return (<div>\r\n            <h1>Redirecting...</h1>\r\n        </div>)\r\n    }\r\n}\r\n","import React, { useContext, useEffect, useRef, useState } from 'react';\r\nimport { Navbar, Nav, Container, Spinner } from 'react-bootstrap';\r\nimport { useHistory, useLocation } from 'react-router-dom'\r\nimport RbacService from '../services/RBACService'\r\nimport { IRBACUser } from '../model/IRBACUser';\r\nimport jwt_decode from \"jwt-decode\";\r\nimport appsettings from '../assets/appsettings.json'\r\nimport { AuthContext, AuthContextType, ErrorContext, IErrorContext, UserProfileType } from '../services/AppContext';\r\nimport Header from './Header'\r\nimport ProfileMenu from './ProfileMenu';\r\nimport AuthService from '../services/openid/AuthService';\r\nimport LocalStoreService from '../services/LocalStorage'\r\nimport IconHome from '../assets/icons/icon-home'\r\nimport SplashScreen from './SplashScreen'\r\nexport default function Home() {\r\n    const [loadingStatus, setloadingStatus] = useState({\r\n        isLoading: true,\r\n        isSuccess: false\r\n    });\r\n    const authService = useRef(new AuthService())\r\n    const history = useHistory();\r\n    const mountedRef = useRef(true);\r\n    const { userProfile, setUserProfile } = useContext<AuthContextType>(AuthContext);\r\n    const { errorMessages, setErrorMessages } = useContext<IErrorContext>(ErrorContext);\r\n\r\n    useEffect(() => {\r\n        let userLoggedIn = sessionStorage.getItem(`lmi.user:claim:${appsettings.OIDC.REACT_APP_OIDC_CLIENT_ID}`)\r\n        if (!userLoggedIn) {\r\n            authService.current.getUser().then((user) => {\r\n                RbacService.getUserRole().then((claim) => {\r\n                    sessionStorage.setItem(`lmi.user:claim:${appsettings.OIDC.REACT_APP_OIDC_CLIENT_ID}`, JSON.stringify(claim.data))\r\n                    let rbacUser = jwt_decode<IRBACUser>(claim.data.rbac_token)\r\n                    let userProfileFromClaim: UserProfileType = {\r\n                        userName: user?.profile.name, role: rbacUser\r\n                    }\r\n                    LocalStoreService.setUserProfile(userProfileFromClaim)\r\n                    LocalStoreService.setExpirationTime()\r\n                    setUserProfile(userProfileFromClaim);\r\n                    setloadingStatus({ isLoading: false, isSuccess: true })\r\n                }).catch((e) => {\r\n                    setErrorMessages([...errorMessages, 'Oops!, Something went wrong. Please sign out and try again. ' + e]) //when session token is not created.\r\n                    setloadingStatus({ isLoading: false, isSuccess: false })\r\n                })\r\n            })           \r\n        } \r\n        \r\n        else {\r\n            setloadingStatus({ isLoading: false, isSuccess: true })\r\n        }\r\n       \r\n        return () => { mountedRef.current = false }\r\n    }, []);\r\n\r\n    const onILearn = () => {\r\n        history.push('/ILearn')\r\n    }\r\n\r\n    const onNavigation = () => {\r\n\r\n    }\r\n\r\n    return (\r\n        <div>\r\n            <Header />\r\n            <Navbar variant=\"dark\" expand=\"lg\" className=\"navbar-mobile-links\">\r\n                <Container className=\"justify-content-end\">\r\n                    <Navbar.Toggle aria-controls=\"basic-navbar-nav\" />\r\n                    <Navbar.Collapse id=\"basic-navbar-nav\" className=\"position-relative navbar-mobile-visible\">\r\n                        <Nav className=\"mr-auto position-relative\">\r\n                            <Nav.Link href=\"/Home\" className=\"link-mobile-visible link-mobile-home\">\r\n                                <div className=\"svg-app-icon text-white\" style={{ height: \"30px\" }}>\r\n                                    <IconHome />\r\n                                </div>\r\n                            </Nav.Link>\r\n                        </Nav>\r\n                        <ProfileMenu onNavigation={onNavigation} userProfile={userProfile} />\r\n                    </Navbar.Collapse>\r\n                </Container>\r\n            </Navbar>\r\n\r\n            <div className=\"pt-4 pb-4 welcome-heading\">\r\n                <div className=\"container\">\r\n                    <div className=\"d-md-flex align-items-center\">\r\n                        <div className=\"text-center\">\r\n                            <h1 className=\"h1 mb-0\">Home</h1>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            {loadingStatus.isLoading\r\n                ? <SplashScreen />\r\n                : !loadingStatus.isSuccess\r\n                    ? <React.Fragment><div className=\"container\"><div className='alert alert-danger mt-3 text-center'>{errorMessages}</div></div></React.Fragment>\r\n                    : <React.Fragment>\r\n                        <div className=\"container mt-4\">\r\n                            <div className=\"row\">\r\n                                <div className=\"col-xl-3 col-sm-6 d-flex\">\r\n                                    <div className=\"card bg-light w-100\">\r\n                                        <a href=\"#\" className=\"card-body text-center card-body-link text-dark\" onClick={onILearn}>\r\n                                            <div className=\"svg-app-icon mb-3\" style={{ \"height\": \"60px\", \"color\": \"#e87511\" }}>\r\n                                                <svg version='1.1' xmlns='http://www.w3.org/2000/svg' x='0px' y='0px' viewBox='0 0 32 23'><path d='M29.2,0H2.8C1.3,0,0,1.3,0,2.8v17.4C0,21.7,1.3,23,2.8,23h26.4c1.5,0,2.8-1.3,2.8-2.8 V2.8C32,1.3,30.7,0,29.2,0z M30.1,20.2c0,0.5-0.4,0.9-0.9,0.9h-2.3v-1.8c0-0.5-0.4-0.9-0.9-0.9H14.5c-0.5,0-0.9,0.4-0.9,0.9v1.8H2.8 c-0.5,0-0.9-0.4-0.9-0.9V2.8c0-0.5,0.4-0.9,0.9-0.9h26.4c0.5,0,0.9,0.4,0.9,0.9V20.2z' /><path d='M16,5.3H5.5c-0.5,0-0.8,0.4-0.8,0.9C4.7,6.6,5.1,7,5.5,7H16c0.5,0,0.8-0.4,0.8-0.9 C16.8,5.6,16.4,5.3,16,5.3z' /><path d='M16,8.7H5.5c-0.5,0-0.8,0.4-0.8,0.9c0,0.5,0.4,0.8,0.8,0.8H16c0.5,0,0.8-0.4,0.8-0.9 C16.8,9,16.4,8.7,16,8.7z' /><path d='M16,12.1H5.5c-0.5,0-0.9,0.4-0.9,0.9c0,0.5,0.4,0.9,0.9,0.9H16c0.5,0,0.9-0.4,0.9-0.9 C16.8,12.4,16.4,12.1,16,12.1z' /><path d='M22.7,5.5l-0.9,1.8l-2,0.3c-0.2,0-0.4,0.3-0.4,0.5c0,0.1,0.1,0.2,0.1,0.3 L21,9.9l-0.3,2c0,0.2,0.1,0.5,0.4,0.5c0.1,0,0.2,0,0.3,0l1.8-1l1.8,1c0.2,0.1,0.5,0,0.6-0.2c0-0.1,0.1-0.2,0-0.3l-0.3-2l1.5-1.4 c0.2-0.2,0.2-0.5,0-0.6c-0.1-0.1-0.2-0.1-0.3-0.1l-2-0.3l-0.9-1.8c-0.1-0.2-0.4-0.3-0.6-0.2C22.8,5.4,22.7,5.4,22.7,5.5z' /></svg>\r\n                                            </div>\r\n                                            <h2 className=\"card-title\">iLearn Align</h2>\r\n                                            <div className=\"card-text\">Sync STARS courses for teachers into iLearnNYC</div>\r\n                                        </a>\r\n                                    </div>\r\n                                </div>\r\n                                <div className=\"col-xl-3 col-sm-6 d-flex mt-2 mt-sm-0\">\r\n                                    <div className=\"card bg-light w-100\">\r\n                                        <a href=\"https://www.nycenet.edu/lmsadmin/GsuiteDashboard/Index?Dbn=&Year=&Term=\" className=\"card-body text-center card-body-link text-dark\">\r\n                                            <div className=\"svg-app-icon mb-3\" style={{ \"height\": \"60px\" }}>\r\n                                                <svg version='1.1' xmlns='http://www.w3.org/2000/svg' x='0px' y='0px' viewBox='0 0 32 23'><g transform='translate(0.751 -0.018)'><g transform='translate(-0.751 0.018)'><path style={{ 'fill': '#0F9D58' }} d='M2.4,2.4h27.2v18.1H2.4V2.4z' /><path style={{ 'fill': '#57BB8A' }} d='M20.8,12.1c0.7,0,1.4-0.6,1.4-1.4c0-0.7-0.6-1.4-1.4-1.4c-0.7,0-1.4,0.6-1.4,1.4 C19.5,11.5,20.1,12.1,20.8,12.1L20.8,12.1z M20.8,13c-1.5,0-3,0.8-3,1.7v1h6v-1C23.8,13.8,22.3,13,20.8,13L20.8,13z M11.2,12.1 c0.7,0,1.4-0.6,1.4-1.4c0-0.7-0.6-1.4-1.4-1.4c-0.7,0-1.4,0.6-1.4,1.4C9.8,11.5,10.4,12.1,11.2,12.1L11.2,12.1z M11.2,13 c-1.5,0-3,0.8-3,1.7v1h6v-1C14.2,13.8,12.6,13,11.2,13L11.2,13z' /><path style={{ 'fill': '#F7F7F7' }} d='M16,10.9c1,0,1.8-0.8,1.8-1.8c0-1-0.8-1.8-1.8-1.8c-1,0-1.8,0.8-1.8,1.8c0,0,0,0,0,0 C14.2,10.1,15,10.9,16,10.9C16,10.9,16,10.9,16,10.9z M16,12.1c-2,0-4.2,1.1-4.2,2.4v1.2h8.5v-1.2C20.2,13.2,18,12.1,16,12.1z' /><path style={{ 'fill': '#F1F1F1' }} d='M21.1,19.3h5.4v1.2h-5.4V19.3z' /><path style={{ 'fill': '#F4B400' }} d='M30.2,0H1.8C0.8,0,0,0.8,0,1.8v19.3c0,1,0.8,1.8,1.8,1.8h28.4c1,0,1.8-0.8,1.8-1.8 V1.8C32,0.8,31.2,0,30.2,0z M29.6,20.5H2.4V2.4h27.2V20.5z' /><path style={{ 'opacity': '0.2', 'fill': '#FFFFFF' /*enable-background:new;'*/ }} d='M30.2,0H1.8C0.8,0,0,0.8,0,1.8V2 c0-1,0.8-1.8,1.8-1.8h28.4C31.2,0.2,32,1,32,2V1.8C32,0.8,31.2,0,30.2,0z' /><path style={{ 'opacity': '0.2', 'fill': '#BF360C' /*enable-background:new;'*/ }} d='M30.2,22.8H1.8C0.8,22.8,0,22,0,21v0.2 c0,1,0.8,1.8,1.8,1.8h28.4c1,0,1.8-0.8,1.8-1.8V21C32,22,31.2,22.8,30.2,22.8z' /><linearGradient gradientUnits='userSpaceOnUse' x1='-269.7468' y1='377.8292' x2='-269.7468' y2='377.7399' gradientTransform='matrix(21.944 0 0 -6.754 5944.3672 2572.1851)'><stop offset='0' style={{ 'stopColor': '#BF360C', \"stopOpacity\": 0.2 }} /><stop offset='1' style={{ 'stopColor': '#BF360C', 'stopOpacity': 2.000000e-02 }} /></linearGradient><path style={{ 'opacity': '.1' }} d='M26.6,20.5h-5.4l2.4,2.4H29L26.6,20.5z' /><path style={{ 'opacity': '0.2', 'fill': '#263238' /*'enableBackground' : 'new'*/ }} d='M2.4,2.3h27.2v0.2H2.4V2.3z' /><path style={{ 'opacity': '0.2', 'fill': '#FFFFFF', /*'enableBackground' : 'new'*/ }} d='M2.4,20.5h27.2v0.2H2.4V20.5z' /></g></g></svg>\r\n                                            </div>\r\n                                            <h2 className=\"card-title\">Google Classroom Align</h2>\r\n                                            <div className=\"card-text\">Sync, create, and manage Google Classroom and STARS courses</div>\r\n                                        </a>\r\n                                    </div>\r\n                                </div>\r\n                                <div className=\"col-xl-3 col-sm-6 d-flex mt-2 mt-sm-4 mt-xl-0\">\r\n                                    <div className=\"card bg-light w-100\">\r\n                                        <a href=\"https://www.nycenet.edu/lmsadmin/Group/Index\" className=\"card-body text-center card-body-link text-dark\">\r\n                                            <i className=\"fas fa-users text-success mb-3\" style={{ \"fontSize\": \"60px\" }}></i>\r\n                                            <h2 className=\"card-title\">Google Groups</h2>\r\n                                            <div className=\"card-text\">Create and manage your Google Groups</div>\r\n                                        </a>\r\n                                    </div>\r\n                                </div>\r\n                                <div className=\"col-xl-3 col-sm-6 d-flex mt-2 mt-sm-4 mt-xl-0\">\r\n                                    <div className=\"card bg-light w-100\">\r\n                                        <a href=\"https://idmapps.nycenet.edu/passwordreset\" className=\"card-body text-center card-body-link text-dark\" target=\"_blank\">\r\n                                            <div className=\"svg-app-icon mb-3\" style={{ \"height\": \"60px\" }}>\r\n                                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"86.534\" height=\"51.71\" viewBox=\"0 0 86.534 51.71\">\r\n                                                    <g transform=\"translate(0 32.669)\">\r\n                                                        <path style={{ \"fill\": \"#036\" }} d=\"M360.981,175.713h3.2a3.375,3.375,0,0,1,3.646,3.689c0,2.437-1.386,3.75-3.646,3.75h-3.2v-7.439Zm1.938,5.772h.917c1.469-.03,2.052-.6,2.052-2.094a1.809,1.809,0,0,0-2.052-2.011h-.917Z\" transform=\"translate(-360.981 -175.713)\" />\r\n                                                        <path style={{ \"fill\": \"#036\" }} d=\"M378.07,182.914a1.154,1.154,0,0,0,1.209,1.228,1.056,1.056,0,0,0,1.011-.594h1.656a2.559,2.559,0,0,1-2.688,1.792,2.719,2.719,0,0,1-2.959-2.875,2.837,2.837,0,0,1,2.917-2.843c1.938,0,2.907,1.458,2.823,3.292Zm2.2-.99a1.1,1.1,0,0,0-1.053-1.1,1.167,1.167,0,0,0-1.146,1.1Z\" transform=\"translate(-368.947 -177.746)\" />\r\n                                                        <path style={{ \"fill\": \"#036\" }} d=\"M389.665,179.778h1.688v.625h.021a1.728,1.728,0,0,1,1.49-.781c1.7,0,2.417,1.458,2.417,2.979,0,1.406-.75,2.74-2.281,2.74a1.811,1.811,0,0,1-1.542-.739h-.021V187h-1.771v-7.22Zm1.708,2.646c0,.948.271,1.562,1.073,1.562s1.063-.823,1.063-1.562c0-.688-.271-1.448-1.053-1.448C391.977,180.976,391.373,181.31,391.373,182.424Z\" transform=\"translate(-375.897 -177.746)\" />\r\n                                                        <path style={{ \"fill\": \"#036\" }} d=\"M402.472,181.444a1.664,1.664,0,0,1,.844-1.449,3.572,3.572,0,0,1,1.719-.375c1.282,0,2.521.28,2.521,1.812V183.8a3.133,3.133,0,0,0,.209,1.386h-1.782a2.144,2.144,0,0,1-.1-.51,2.44,2.44,0,0,1-1.781.666c-1.031,0-1.844-.52-1.844-1.636,0-1.76,1.917-1.625,3.146-1.875.3-.061.469-.166.469-.5,0-.406-.49-.563-.854-.563a.793.793,0,0,0-.886.678h-1.657Zm2.292,2.8c.844,0,1.125-.48,1.084-1.594a5,5,0,0,1-1.094.291c-.4.094-.73.261-.73.688S404.369,184.247,404.764,184.247Z\" transform=\"translate(-382.444 -177.745)\" />\r\n                                                        <path style={{ \"fill\": \"#036\" }} d=\"M415.41,179.835h1.718v.948h.021a1.631,1.631,0,0,1,1.626-1.052,1.9,1.9,0,0,1,.417.041v1.615a2.474,2.474,0,0,0-.678-.1,1.243,1.243,0,0,0-1.333,1.282v2.677H415.41v-5.407Z\" transform=\"translate(-389.285 -177.802)\" />\r\n                                                        <path style={{ \"fill\": \"#036\" }} d=\"M427.351,179.32h-1.094v2.458c0,.428.25.521.635.521.145,0,.3-.021.458-.021v1.3c-.324.011-.646.052-.97.052-1.51,0-1.9-.438-1.9-1.906V179.32h-.9v-1.146h.9v-1.636h1.771v1.636h1.094v1.147Z\" transform=\"translate(-393.539 -176.142)\" />\r\n                                                        <path style={{ \"fill\": \"#036\" }} d=\"M432.852,179.778h1.718v.74h.022a1.8,1.8,0,0,1,1.551-.9,1.562,1.562,0,0,1,1.573.874,1.982,1.982,0,0,1,1.689-.874c1.718,0,1.906,1.3,1.906,2.333v3.229H439.54v-3.177c0-.584-.281-.927-.74-.927-.76,0-.833.584-.833,1.458v2.647H436.2v-3.073c0-.636-.188-1.031-.667-1.031-.636,0-.907.365-.907,1.469v2.636h-1.771v-5.407Z\" transform=\"translate(-398.355 -177.746)\" />\r\n                                                        <path style={{ \"fill\": \"#036\" }} d=\"M453.718,182.914a1.153,1.153,0,0,0,1.209,1.228,1.054,1.054,0,0,0,1.01-.594h1.656a2.558,2.558,0,0,1-2.688,1.792,2.719,2.719,0,0,1-2.959-2.875,2.837,2.837,0,0,1,2.916-2.843c1.938,0,2.907,1.458,2.824,3.292Zm2.2-.99a1.1,1.1,0,0,0-1.053-1.1,1.167,1.167,0,0,0-1.146,1.1Z\" transform=\"translate(-408.285 -177.746)\" />\r\n                                                        <path style={{ \"fill\": \"#036\" }} d=\"M465.314,179.778h1.718v.74h.021a2.043,2.043,0,0,1,1.7-.9c1.8,0,1.948,1.312,1.948,2.094v3.469h-1.771V182.57c0-.74.084-1.489-.886-1.489-.667,0-.958.562-.958,1.156v2.949h-1.771v-5.407Z\" transform=\"translate(-415.236 -177.746)\" /><path style={{ \"fill\": \"#036\" }} d=\"M481.143,179.32H480.05v2.458c0,.428.25.521.635.521.145,0,.3-.021.457-.021v1.3c-.323.011-.646.052-.969.052-1.51,0-1.9-.438-1.9-1.906V179.32h-.9v-1.146h.9v-1.636h1.771v1.636h1.093v1.147Z\" transform=\"translate(-421.512 -176.142)\" />\r\n                                                        <path style={{ \"fill\": \"#036\" }} d=\"M495.141,179.622a2.859,2.859,0,1,1-2.844,2.864A2.772,2.772,0,0,1,495.141,179.622Zm0,4.364c.823,0,1.084-.813,1.084-1.5s-.261-1.51-1.084-1.51-1.073.823-1.073,1.51S494.318,183.986,495.141,183.986Z\" transform=\"translate(-429.268 -177.746)\" />\r\n                                                        <path style={{ \"fill\": \"#036\" }} d=\"M505.326,178.891h-.855v-1.146h.855c0-1.552.541-2.032,2.052-2.032.281,0,.573.022.854.031v1.25a3.861,3.861,0,0,0-.479-.03c-.407,0-.656.052-.656.541v.24h1.062v1.146H507.1v4.26h-1.771Z\" transform=\"translate(-435.598 -175.713)\" />\r\n                                                        <path style={{ \"fill\": \"#036\" }} d=\"M360.981,199.56h5.928v1.552h-3.99v1.3h3.646v1.5h-3.646v1.417h4.094V207h-6.032V199.56Z\" transform=\"translate(-360.981 -188.114)\" />\r\n                                                        <path style={{ \"fill\": \"#036\" }} d=\"M380.307,207H378.62v-.625H378.6a1.728,1.728,0,0,1-1.49.781c-1.7,0-2.417-1.458-2.417-2.979,0-1.406.75-2.74,2.282-2.74a1.809,1.809,0,0,1,1.542.739h.021v-2.615h1.771Zm-3.844-2.76c0,.739.271,1.562,1.083,1.562.864,0,1.052-.823,1.052-1.51,0-.782-.281-1.5-1.052-1.5C376.734,202.79,376.463,203.551,376.463,204.238Z\" transform=\"translate(-368.111 -188.113)\" />\r\n                                                        <path style={{ \"fill\": \"#036\" }} d=\"M393.832,209.2h-1.719v-.74h-.021a1.992,1.992,0,0,1-1.646.9c-1.552,0-2-.9-2-2.313v-3.25h1.771v3.136c0,.719.312.969.875.969.385,0,.969-.25.969-1.209v-2.9h1.771Z\" transform=\"translate(-375.263 -190.316)\" />\r\n                                                        <path style={{ \"fill\": \"#036\" }} d=\"M404.968,205.6a.833.833,0,0,0-.864-.781c-.99,0-1.147.844-1.147,1.594,0,.7.3,1.417,1.053,1.417a.949.949,0,0,0,1.01-.927h1.718a2.534,2.534,0,0,1-2.719,2.281,2.691,2.691,0,0,1-2.834-2.771,2.737,2.737,0,0,1,2.834-2.948,2.427,2.427,0,0,1,2.667,2.135Z\" transform=\"translate(-381.888 -190.147)\" />\r\n                                                        <path style={{ \"fill\": \"#036\" }} d=\"M413.759,205.292a1.663,1.663,0,0,1,.844-1.448,3.572,3.572,0,0,1,1.719-.375c1.282,0,2.521.28,2.521,1.812v2.365a3.132,3.132,0,0,0,.209,1.385H417.27a2.144,2.144,0,0,1-.1-.51,2.44,2.44,0,0,1-1.781.666c-1.031,0-1.844-.52-1.844-1.636,0-1.76,1.917-1.625,3.146-1.875.3-.062.469-.166.469-.5,0-.407-.49-.563-.854-.563a.793.793,0,0,0-.886.678h-1.657Zm2.292,2.8c.844,0,1.125-.48,1.084-1.594a5,5,0,0,1-1.094.291c-.4.094-.73.261-.73.688S415.656,208.095,416.051,208.095Z\" transform=\"translate(-388.313 -190.147)\" />\r\n                                                        <path style={{ \"fill\": \"#036\" }} d=\"M429.206,203.167h-1.094v2.458c0,.428.25.521.635.521.146,0,.3-.021.458-.021v1.3c-.323.011-.646.052-.969.052-1.511,0-1.9-.438-1.9-1.906v-2.406h-.9v-1.146h.9v-1.636h1.771v1.636h1.094v1.147Z\" transform=\"translate(-394.504 -188.543)\" />\r\n                                                        <path style={{ \"fill\": \"#036\" }} d=\"M436.562,200.915h-1.771V199.56h1.771Zm-1.771.677h1.771V207h-1.771Z\" transform=\"translate(-399.363 -188.114)\" />\r\n                                                        <path style={{ \"fill\": \"#036\" }} d=\"M442.863,203.469a2.859,2.859,0,1,1-2.844,2.864A2.772,2.772,0,0,1,442.863,203.469Zm0,4.364c.823,0,1.084-.812,1.084-1.5s-.261-1.51-1.084-1.51-1.073.823-1.073,1.51S442.04,207.833,442.863,207.833Z\" transform=\"translate(-402.082 -190.147)\" />\r\n                                                        <path style={{ \"fill\": \"#036\" }} d=\"M453.377,203.626H455.1v.74h.021a2.041,2.041,0,0,1,1.7-.9c1.8,0,1.949,1.312,1.949,2.094v3.469h-1.772v-2.615c0-.74.084-1.49-.885-1.49-.667,0-.959.562-.959,1.156v2.949h-1.771v-5.407Z\" transform=\"translate(-409.029 -190.147)\" />\r\n                                                    </g>\r\n                                                    <path style={{ \"fill\": \"#69c\" }} d=\"M315.822,173.752H297.795l-5.408,5.408v18.028l5.408,5.408h18.027l5.409-5.408v-5.408l-1.8-1.8h-9.015v1.8H303.2v-7.212h7.211v1.781h9.015l1.8-1.781V179.16Z\" transform=\"translate(-234.697 -173.752)\" />\r\n                                                    <path style={{ \"fill\": \"#80b34d\" }} d=\"M199.237,173.752h-7.211l-1.8,1.8v7.211l-9.014-9.013H174l-1.8,1.8v25.239l1.8,1.8h7.211l1.8-1.8v-7.212l9.014,9.015h7.211l1.8-1.8V175.554Z\" transform=\"translate(-172.195 -173.752)\" />\r\n                                                    <path style={{ \"fill\": \"#f93\" }} d=\"M243.107,202.6h7.211l1.8-1.8v-5.408l9.015-9.014V175.554l-1.8-1.8H252.12l-1.8,1.8v3.606l-3.606,3.6-3.606-3.6h0v-3.606l-1.8-1.8h-7.211l-1.8,1.8v10.817l9.014,9.014v5.408Z\" transform=\"translate(-203.446 -173.752)\" />\r\n                                                    <g transform=\"translate(83.303 0.001)\">\r\n                                                        <path style={{ \"fill\": \"#69c\" }} d=\"M345.75,174.011v-.257h1.308v.257h-.5v1.278h-.306v-1.278Zm2.006-.257.393,1.1.39-1.1h.441v1.535H348.7v-1.237l-.422,1.237h-.246l-.429-1.237v1.237h-.282v-1.535Z\" transform=\"translate(-345.75 -173.754)\" />\r\n                                                    </g>\r\n                                                </svg>\r\n                                            </div>\r\n                                            <h2 className=\"card-title\">Student Password Reset Admin</h2>\r\n                                            <div className=\"card-text\">Reset student passwords and unlock their accounts</div>\r\n                                        </a>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <div className=\"row mt-3\">\r\n                                <div className=\"col\">\r\n                                    <div className=\"card text-center\">\r\n                                        <div className='card-body'>\r\n                                            <div className=\"svg-app-icon mr-2 d-inline text-primary\" style={{ \"height\": \"20px\" }}>\r\n                                                <svg role=\"img\" aria-label=\"person wearing microphone headset\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 29.25\">\r\n                                                    <g>\r\n                                                        <path d=\"M25.74,14.33V11.12a.86.86,0,0,0-.58-.82l-.25-.09-.05,0a15,15,0,0,1-5.73-3.28c-.57-.58-1.06-1.09-1.74-1s-.85.68-1.11,1.33a7.64,7.64,0,0,1-8.7,5,.86.86,0,0,0-1,.66.87.87,0,0,0,.66,1c.08,0,7.63,1.55,10.63-5.87l0,0A16.38,16.38,0,0,0,24,11.74V16a.86.86,0,0,0,.87.87h0a.83.83,0,0,0,.61-.25,1.78,1.78,0,0,1,0,.47c0,.2-.8,4.8-6.51,5.39a1.9,1.9,0,0,0-1.79-1.27H15.14a1.91,1.91,0,0,0-1.91,1.91v.47a1.91,1.91,0,0,0,1.91,1.91h2.07A1.92,1.92,0,0,0,19,24.22c7.24-.64,8.21-6.83,8.22-6.9A2.87,2.87,0,0,0,25.74,14.33Zm-8.36,9.25a.17.17,0,0,1-.17.17H15.14a.17.17,0,0,1-.17-.17v-.47a.16.16,0,0,1,.17-.16h2.07a.16.16,0,0,1,.17.16Z\" />\r\n                                                        <path d=\"M22.86,24.49a.86.86,0,0,0-1.18.33c-.95,1.69-3.08,2.69-5.69,2.69H15.8c-6.62,0-8-10-8-10a.87.87,0,1,0-1.73.21c.06.48,1.53,11.58,9.69,11.58H16c3.25,0,5.94-1.34,7.2-3.58A.86.86,0,0,0,22.86,24.49Z\" />\r\n                                                        <path d=\"M12.59,16.13a.39.39,0,0,0-.39-.39.39.39,0,0,0,0,.77A.39.39,0,0,0,12.59,16.13Z\" />\r\n                                                        <path d=\"M13.46,16.13a1.26,1.26,0,1,0-1.26,1.25A1.26,1.26,0,0,0,13.46,16.13Z\" />\r\n                                                        <path d=\"M20.53,16.13a.38.38,0,0,0-.38-.39.39.39,0,1,0,0,.77A.38.38,0,0,0,20.53,16.13Z\" />\r\n                                                        <path d=\"M21.4,16.13a1.26,1.26,0,1,0-1.25,1.25A1.25,1.25,0,0,0,21.4,16.13Z\" />\r\n                                                        <path d=\"M31.7,23.65c-1.87-1.64-1.9-2.58-1.93-3.89,0-.16,0-.33,0-.5a9.71,9.71,0,0,1,.35-3.2l.21-1a.2.2,0,0,0,0-.07c.52-4.19-.37-7.63-2.65-10.21C24.36,1,18.78,0,16,0,15.23,0,8.38.13,4.32,4.72,2,7.3,1.15,10.75,1.67,15a.64.64,0,0,1,0,.07l.21,1a9.8,9.8,0,0,1,.35,3.21c0,.17,0,.34,0,.51,0,1.3-.06,2.25-1.93,3.88a.85.85,0,0,0-.16,1.12,3.79,3.79,0,0,0,3.21,1.64,6,6,0,0,0,2.91-.85.87.87,0,0,0,.33-1.19A.86.86,0,0,0,5.41,24c-1.66.93-2.72.64-3.29.28A5.64,5.64,0,0,0,4,19.81c0-.15,0-.31,0-.47a11.41,11.41,0,0,0-.38-3.65c-.07-.29-.13-.61-.21-1C3,11,3.7,8.06,5.63,5.88,9.24,1.79,15.73,1.74,16,1.74s6.73.05,10.37,4.16c1.93,2.19,2.68,5.15,2.23,8.81-.08.37-.15.69-.21,1A11.41,11.41,0,0,0,28,19.34c0,.16,0,.32,0,.47a5.66,5.66,0,0,0,1.84,4.51c-.57.36-1.62.65-3.28-.28a.86.86,0,0,0-1.18.33.87.87,0,0,0,.33,1.19c3.27,1.83,5.43.29,6.12-.79A.85.85,0,0,0,31.7,23.65Z\" />\r\n                                                    </g>\r\n                                                </svg>\r\n                                            </div>\r\n                                            For any LMI support issue, please create a ticket in <a href=\"https://supporthub.schools.nyc\" target=\"_blank\" >Support Hub</a> Application.\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </React.Fragment>\r\n            }\r\n        </div>\r\n    )\r\n}","import React, { Component } from 'react';\r\nimport AuthService from './AuthService';\r\n//import { useHistory } from \"react-router-dom\";\r\n\r\nexport default class SigninCallback extends Component {\r\n    componentDidMount() {\r\n        let authService = new AuthService();\r\n        let mgr = authService.userManager;\r\n        mgr.signinRedirectCallback()\r\n            .then(() => {         \r\n                window.history.replaceState({}, window.document.title, window.location.origin);\r\n                window.location = \"/Home\" \r\n            })\r\n            .catch((error) => this.onRedirectError(error));\r\n    }    \r\n\r\n    onRedirectError = (error) => {\r\n        window.location ='/'\r\n    };\r\n\r\n    render() {\r\n        return (\r\n            <div>\r\n                <h1>Redirecting...</h1>\r\n            </div>\r\n        );\r\n    }\r\n}\r\n","import React from 'react';\r\nimport { Nav, NavItem } from 'react-bootstrap';\r\n\r\nexport default function Footer(/*props*/) {\r\n  return (\r\n       <footer className=\"footer\" id = \"footer\" >\r\n          <div className=\"footer-container\">\r\n              <div className=\"container\">  \r\n                  <div className=\"row\">\r\n                      <div className=\"footer-links col-sm-5\">\r\n                          <a className=\"anchor-links\" href=\"https://www.schools.nyc.gov/privacy-policy\" target=\"_blank\">Privacy Policy</a>\r\n                        </div>\r\n                      <div className=\"col-sm-7 footer-copyright\">&copy; {new Date().getFullYear()} The New York City Department of Education</div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n    </footer >\r\n  )\r\n}","import { Redirect, Router } from \"react-router\";\r\nimport React, { useRef } from \"react\";\r\nimport { Route, RouteComponentProps, RouteProps } from \"react-router-dom\";\r\nimport AuthService from \"../services/openid/AuthService\";\r\nimport { render } from \"react-dom\";\r\nimport appsettings from '../assets/appsettings.json'\r\n\r\n// export default function ProtectedRoute({ children, ...rest})\r\n// {\r\n//  return (\r\n//      <Router {...rest} render={() => {\r\n//          return true \r\n//          ? component\r\n//          : <Redirect to ='/Login' />\r\n//      }} ></Router>\r\n//  )\r\n// }\r\ninterface Props extends RouteProps {\r\n  component: React.ComponentType;\r\n}\r\n\r\nconst PrivateRoute: React.SFC<RouteProps> =\r\n  ({ component: Component, ...rest }) => {\r\n    const authService = useRef(new AuthService())\r\n\r\n    let isAuth =  sessionStorage.getItem(`oidc.user:${appsettings.OIDC.REACT_APP_OIDC_AUTHORITY}:${appsettings.OIDC.REACT_APP_OIDC_CLIENT_ID}`)\r\n    if (!Component) {\r\n      return null;\r\n    }\r\n    if (!isAuth) {\r\n      authService.current.userManager.signinRedirect()\r\n      return <span>loading</span>;\r\n    }\r\n    else {\r\n      return (\r\n\r\n        <Route\r\n          {...rest}\r\n          render={(props: RouteComponentProps<{}>) => <Component {...props} />} />\r\n\r\n      );\r\n    }\r\n  };\r\n\r\nexport default PrivateRoute;\r\n// export const ProtectedRoute = ({ component : Component, ...rest }: Props) => {\r\n//     const authService = useRef(new AuthService())\r\n//     const isAuth : boolean = true\r\n//     return (\r\n//         <Route\r\n//             {...rest}\r\n//             render={(props) => <Component {...props} />}\r\n//         />\r\n//     );\r\n//   };\r\n\r\n\r\n\r\n//   const renderFn = Component => props => (\r\n//     <>\r\n//     {({ isAuthenticated, signinRedirect }) => {\r\n//       if (!!Component && isAuth) {\r\n//         return <Component {...props} />;\r\n//       } else {\r\n//         signinRedirect();\r\n//         return <span>loading</span>;\r\n//       }\r\n//     }}\r\n// </>\r\n// );\r\n\r\n// return <Route {...rest} render={renderFn(component)} />;","import React, {Component} from \"react\";\r\nimport AuthService from \"./LMIAuthService\";\r\n\r\nconst AuthContext = React.createContext({\r\n    signinRedirectCallback: () => ({}),\r\n    logout: () => ({}),\r\n    signoutRedirectCallback: () => ({}),\r\n    isAuthenticated: () => ({}),\r\n    signinRedirect: () => ({}),\r\n    signinSilentCallback: () => ({}),\r\n    createSigninRequest: () => ({})\r\n});\r\n\r\nexport const AuthConsumer = AuthContext.Consumer;\r\n\r\nexport class AuthProvider extends Component {\r\n    authService;\r\n    constructor(props) {\r\n        super(props);\r\n        this.authService = new AuthService();\r\n    }\r\n    render() {\r\n        return <AuthContext.Provider value={this.authService}>{this.props.children}</AuthContext.Provider>;\r\n    }\r\n}","import React from \"react\";\r\nimport { AuthConsumer } from \"./authProvider\";\r\nexport const SilentRenew =  () => (\r\n    <AuthConsumer>\r\n        {  ({ signinSilentCallback }) => {\r\n            signinSilentCallback()\r\n            return <span>loading</span>;\r\n        }}  \r\n    </AuthConsumer>\r\n);","import React, { useState, useEffect, useRef } from 'react';\r\nimport './App.css';\r\nimport ILearnLayout from './shared/ILearnLayout'\r\n\r\nimport { AuthContext, AuthContextDefault, ErrorContext, ErrorContextDefault, LocationContext, UserProfileType } from './services/AppContext'\r\nimport { Route, Switch } from 'react-router-dom';\r\nimport Login from './shared/Login';\r\nimport Home from './shared/Home';\r\nimport SigninCallback from './services/openid/SigninCallback';\r\nimport Header from \"./shared/Header\";\r\nimport Footer from \"./shared/Footer\";\r\nimport ProtectedRoute from \"./shared/ProtectedRoute\"\r\nimport { refreshToken, isTokenExpired } from './services/BaseService'\r\nimport moment from 'moment';\r\nimport LocalStorageService from './services/LocalStorage';\r\nimport { SilentRenew } from './services/oidc/silentRenew';\r\n\r\n\r\nexport default function App() {\r\n    const [userProfile, setUserProfile] = useState<UserProfileType>(AuthContextDefault.userProfile)\r\n    const [errorMessages, setErrorMessages] = useState<Array<string>>(ErrorContextDefault.errorMessages)\r\n    const [locationCode, setLocationCode] = useState('');\r\n     \r\n    const getIntervalTime = () => {\r\n        let now = moment();\r\n        let expirationDate = moment(LocalStorageService.getExpirationTime());\r\n        let time = expirationDate.diff(now, 'seconds') + 3\r\n        return time * 1000\r\n    }\r\n     \r\n    useEffect(() => {\r\n        setInterval(() => {\r\n            if (isTokenExpired()) {\r\n                refreshToken()\r\n            }\r\n        }, getIntervalTime())\r\n    })\r\n\r\n    return (\r\n\r\n        <AuthContext.Provider value={{ userProfile, setUserProfile }}>\r\n            <div className=\"main-body\">\r\n                <ErrorContext.Provider value={{ errorMessages, setErrorMessages }}>\r\n                    <LocationContext.Provider value={{ locationCode, setLocationCode }}>\r\n                        <Switch>\r\n\r\n                            <Route exact path=\"/\" component={Login} />\r\n                            <ProtectedRoute exact path=\"/Home\" component={Home} />\r\n                            <ProtectedRoute path=\"/ILearn\" component={ILearnLayout}\r\n                                render={({ match: { url } }) => (\r\n                                    <>\r\n                                        <ProtectedRoute path={`${url}/:tabName`} render={(props) => <ILearnLayout />} />\r\n                                        <ProtectedRoute path={`${url}/manage/:tabName`} render={(props) => <ILearnLayout {...props} isManageActivated={true} />} />\r\n                                    </>\r\n                                )} />\r\n                            <Route exact path='/silent-renew' component={SilentRenew} />\r\n                            <Route exact path='/signin-callback' component={SigninCallback} />\r\n                            <Route render={() =>\r\n                                <div>\r\n                                    <Header />\r\n                                    <div className=\"navbar\" style={{ \"height\": \"73px\" }}></div>\r\n\r\n                                    <div className=\"container text-center\">\r\n                                        <i className=\"fas fa-robot fa-4x text-rust m-5\"></i>\r\n                                        <h1>Resource Not Found</h1>\r\n                                        <div>That's all we know. Please check the URL.</div>\r\n                                        <a href=\"/Home\" className=\"btn btn-primary mt-5\">Back to Home</a>\r\n                                    </div>\r\n\r\n                                </div>\r\n                            } />\r\n\r\n                        </Switch>\r\n                    </LocationContext.Provider>\r\n                </ErrorContext.Provider>\r\n            </div>\r\n            <Footer />\r\n        </AuthContext.Provider>\r\n\r\n\r\n    )\r\n}","import { ReportHandler } from 'web-vitals';\r\n\r\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\r\n  if (onPerfEntry && onPerfEntry instanceof Function) {\r\n    import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n      getCLS(onPerfEntry);\r\n      getFID(onPerfEntry);\r\n      getFCP(onPerfEntry);\r\n      getLCP(onPerfEntry);\r\n      getTTFB(onPerfEntry);\r\n    });\r\n  }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","// In production, we register a service worker to serve assets from local cache.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\r\n\r\nconst isLocalhost = Boolean(\r\n  window.location.hostname === 'localhost' ||\r\n  // [::1] is the IPv6 localhost address.\r\n  window.location.hostname === '[::1]' ||\r\n  // 127.0.0.1/8 is considered localhost for IPv4.\r\n  window.location.hostname.match(\r\n    /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n  )\r\n);\r\n\r\nexport default function register () {\r\n  if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n    // The URL constructor is available in all browsers that support SW.\r\n    const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\r\n    if (publicUrl.origin !== window.location.origin) {\r\n      // Our service worker won't work if PUBLIC_URL is on a different origin\r\n      // from what our page is served on. This might happen if a CDN is used to\r\n      // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\r\n      return;\r\n    }\r\n\r\n    window.addEventListener('load', () => {\r\n      const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n      if (isLocalhost) {\r\n        // This is running on localhost. Lets check if a service worker still exists or not.\r\n        checkValidServiceWorker(swUrl);\r\n      } else {\r\n        // Is not local host. Just register service worker\r\n        registerValidSW(swUrl);\r\n      }\r\n    });\r\n  }\r\n}\r\n\r\nfunction registerValidSW (swUrl) {\r\n  navigator.serviceWorker\r\n    .register(swUrl)\r\n    .then(registration => {\r\n      registration.onupdatefound = () => {\r\n        const installingWorker = registration.installing;\r\n        installingWorker.onstatechange = () => {\r\n          if (installingWorker.state === 'installed') {\r\n            if (navigator.serviceWorker.controller) {\r\n              // At this point, the old content will have been purged and\r\n              // the fresh content will have been added to the cache.\r\n              // It's the perfect time to display a \"New content is\r\n              // available; please refresh.\" message in your web app.\r\n            } else {\r\n              // At this point, everything has been precached.\r\n              // It's the perfect time to display a\r\n              // \"Content is cached for offline use.\" message.\r\n            }\r\n          }\r\n        };\r\n      };\r\n    })\r\n    .catch(error => {\r\n      console.error('Error during service worker registration:', error);\r\n    });\r\n}\r\n\r\nfunction checkValidServiceWorker (swUrl) {\r\n  // Check if the service worker can be found. If it can't reload the page.\r\n  fetch(swUrl)\r\n    .then(response => {\r\n      // Ensure service worker exists, and that we really are getting a JS file.\r\n      if (\r\n        response.status === 404 ||\r\n        response.headers.get('content-type').indexOf('javascript') === -1\r\n      ) {\r\n        // No service worker found. Probably a different app. Reload the page.\r\n        navigator.serviceWorker.ready.then(registration => {\r\n          registration.unregister().then(() => {\r\n            window.location.reload();\r\n          });\r\n        });\r\n      } else {\r\n        // Service worker found. Proceed as normal.\r\n        registerValidSW(swUrl);\r\n      }\r\n    })\r\n    .catch(() => {\r\n      console.log(\r\n        'No internet connection found. App is running in offline mode.'\r\n      );\r\n    });\r\n}\r\n\r\nexport function unregister () {\r\n  if ('serviceWorker' in navigator) {\r\n    navigator.serviceWorker.ready.then(registration => {\r\n      registration.unregister();\r\n    });\r\n  }\r\n}\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.scss';\r\n//import './styles/scss/lmi.scss' /* Compile lmi.scss file if any style changes have been made. Removed it here because it's slow to compile. Importing CSS styles instead. */\r\nimport './styles/css/lmi.css'\r\nimport App from './App';\r\nimport Login from '../src/shared/Login';\r\nimport reportWebVitals from './reportWebVitals';\r\nimport registerServiceWorker from './registerServiceWorker';\r\nimport {\r\n  BrowserRouter,\r\n  Switch,\r\n  Route,\r\n  Link,\r\n  NavLink,\r\n  useRouteMatch,\r\n  useParams,\r\n  withRouter\r\n} from \"react-router-dom\";\r\n \r\nReactDOM.render(\r\n  <React.StrictMode>\r\n    \r\n      <BrowserRouter>\r\n<App />     \r\n      </BrowserRouter>\r\n   \r\n    \r\n  </React.StrictMode>,\r\n  document.getElementById('root')\r\n);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\nregisterServiceWorker();"],"names":["reactIs","require","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","type","KNOWN_STATICS","name","length","prototype","caller","callee","arguments","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","defineProperty","Object","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","module","exports","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","keys","concat","targetStatics","sourceStatics","i","key","descriptor","e","utils","bind","Axios","mergeConfig","axios","createInstance","defaultConfig","context","instance","request","extend","create","instanceConfig","CanceledError","CancelToken","isCancel","VERSION","toFormData","AxiosError","Cancel","all","promises","Promise","spread","isAxiosError","isStandardBrowserEnv","originURL","msie","test","navigator","userAgent","urlParsingNode","document","createElement","resolveURL","url","href","setAttribute","protocol","replace","host","search","hash","hostname","port","pathname","charAt","window","location","requestURL","parsed","isString","Array","isArray","arr","toString","call","f","g","Fragment","Symbol","for","h","m","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentOwner","n","hasOwnProperty","p","ref","__self","__source","q","c","a","k","b","d","l","$$typeof","props","_owner","current","jsx","jsxs","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","err","Error","getShim","isRequired","ReactPropTypes","array","bigint","bool","func","number","object","string","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","baseURL","relativeURL","t","r","o","enumerable","get","toStringTag","value","__esModule","default","s","this","split","targets","indexOf","u","v","V","sort","join","cache","Intl","NumberFormat","useToLocaleString","useGrouping","grouping","slice","y","maximumSignificantDigits","minimumIntegerDigits","fractionDigits","groupingSeparator","decimalSeparator","w","S","maximumFractionDigits","minimumFractionDigits","x","parseFloat","format","toLocaleString","T","toPrecision","toFixed","O","_","D","reverse","parseInt","push","j","Math","abs","M","P","shift","label","toLowerCase","durationLabelsStandard","SS","ss","mm","hh","dd","ww","MM","yy","durationLabelsShort","durationTimeTemplates","HMS","HM","MS","durationLabelTypes","durationPluralKey","precision","template","returnMomentTypes","largest","outputTypes","E","defaults","asMilliseconds","asMonths","isValid","duration","years","months","weeks","days","hours","minutes","seconds","milliseconds","escape","general","types","L","F","RegExp","source","I","apply","N","C","R","G","stopTrim","match","U","localeData","_durationTimeTemplates","userLocale","locale","z","useLeftUnits","H","usePlural","W","$","forceLength","A","B","trunc","K","useSignificantDigits","Y","J","Q","minValue","X","Z","maxValue","ee","te","ne","re","oe","ie","trim","ae","ue","se","ce","fe","me","pe","ge","ye","he","de","index","text","token","ve","be","we","as","floor","subtract","rawValue","wholeValue","decimalValue","isSmallest","isLargest","tokenLength","Se","round","Te","pow","Oe","_e","xe","significantDigits","formattedValue","formattedValueEn","formattedValueMS","Ve","De","_durationLabelTypes","_data","fn","updateLocale","momentDurationFormatSetup","moment","iterator","constructor","filter","propertyIsEnumerable","configurable","writable","setPrototypeOf","__proto__","Reflect","construct","sham","Proxy","Date","ReferenceError","TypeError","interval","clearTimer","pooledTimer","timer","setInterval","update","titleFormat","getDatetime","globalFormat","clearInterval","removePooledElement","globalMoment","state","content","clearPooledTimer","pooledElements","forEach","console","error","splice","utc","unix","date","parse","tz","local","children","globalParse","globalLocal","globalTimezone","globalLocale","fromNow","fromNowDuring","from","add","toNow","to","ago","calendar","diff","durationFromNow","unit","decimal","Boolean","globalFilter","setTimer","pushPooledElement","onChange","getContent","setState","withTitle","assign","title","getTitle","globalElement","getOwnPropertyDescriptors","defineProperties","dateTime","Component","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","transitionalDefaults","parseProtocol","config","resolve","reject","onCanceled","requestData","data","requestHeaders","headers","responseType","done","cancelToken","unsubscribe","signal","removeEventListener","isFormData","XMLHttpRequest","auth","username","password","unescape","encodeURIComponent","Authorization","btoa","fullPath","onloadend","responseHeaders","getAllResponseHeaders","response","responseText","status","statusText","open","method","toUpperCase","params","paramsSerializer","timeout","onreadystatechange","readyState","responseURL","setTimeout","onabort","ECONNABORTED","onerror","ERR_NETWORK","ontimeout","timeoutErrorMessage","transitional","clarifyTimeoutError","ETIMEDOUT","xsrfValue","withCredentials","xsrfCookieName","read","undefined","xsrfHeaderName","val","setRequestHeader","isUndefined","onDownloadProgress","addEventListener","onUploadProgress","upload","cancel","abort","subscribe","aborted","ERR_BAD_REQUEST","send","normalizedName","propIsEnumerable","test1","String","test2","fromCharCode","map","test3","letter","shouldUseNative","target","symbols","toObject","validators","thing","deprecatedWarnings","validator","version","message","formatMessage","opt","desc","opts","ERR_DEPRECATED","warn","assertOptions","options","schema","allowUnknown","ERR_BAD_OPTION_VALUE","result","ERR_BAD_OPTION","code","inherits","toJSON","description","fileName","lineNumber","columnNumber","stack","descriptors","customProps","axiosError","toFlatObject","obj","aa","ba","Set","ca","da","ea","fa","ha","ia","ja","ka","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","oa","pa","qa","ma","isNaN","na","la","removeAttribute","setAttributeNS","xlinkHref","ra","sa","ta","ua","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ma","Ka","La","Na","Oa","Pa","prepareStackTrace","set","Qa","tag","_render","Ra","_context","_payload","_init","Sa","Ta","nodeName","Va","_valueTracker","getValue","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","$a","ab","bb","cb","ownerDocument","eb","Children","db","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","hb","ib","jb","textContent","kb","lb","mb","nb","ob","namespaceURI","innerHTML","valueOf","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","pb","lastChild","nodeType","nodeValue","qb","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","rb","sb","tb","style","setProperty","substring","ub","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","track","wbr","vb","wb","is","xb","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","Rb","onError","Sb","Tb","Ub","Vb","Wb","Xb","Zb","alternate","return","flags","$b","memoizedState","dehydrated","ac","cc","child","sibling","bc","dc","ec","fc","gc","hc","ic","jc","kc","lc","mc","nc","Map","oc","pc","qc","rc","blockedOn","domEventName","eventSystemFlags","nativeEvent","targetContainers","sc","delete","pointerId","tc","vc","wc","lanePriority","unstable_runWithPriority","priority","hydrate","containerInfo","xc","yc","zc","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","animation","transition","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","unstable_now","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","clz32","bd","cd","log","LN2","unstable_UserBlockingPriority","ed","fd","gd","hd","id","uc","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","stopPropagation","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","now","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","repeat","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","documentMode","le","color","datetime","email","month","range","tel","time","week","event","listeners","qe","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","Ee","Fe","He","Ie","Je","Ke","Le","offset","nextSibling","Me","contains","compareDocumentPosition","Ne","HTMLIFrameElement","contentWindow","contentEditable","Pe","Qe","Re","Ue","start","selectionStart","end","selectionEnd","anchorNode","defaultView","getSelection","anchorOffset","focusNode","focusOffset","We","Xe","Ye","Ze","Yb","listener","$e","has","af","bf","random","cf","df","capture","passive","Nb","ef","ff","parentWindow","gf","hf","je","char","ke","unshift","jf","kf","lf","mf","autoFocus","nf","__html","of","pf","clearTimeout","qf","rf","sf","previousSibling","tf","vf","wf","xf","yf","zf","Af","Bf","Cf","Df","Ef","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","Gf","Hf","If","getChildContext","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","unstable_IdlePriority","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","ReactCurrentBatchConfig","lg","mg","ng","og","pg","qg","rg","_currentValue","sg","childLanes","tg","dependencies","firstContext","lanes","ug","vg","observedBits","next","responders","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","yg","zg","eventTime","lane","payload","callback","Ag","Bg","Cg","Dg","Eg","Fg","refs","Gg","Kg","isMounted","_reactInternals","enqueueSetState","Hg","Ig","Jg","enqueueReplaceState","enqueueForceUpdate","Lg","shouldComponentUpdate","isPureReactComponent","Mg","updater","Ng","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Og","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Pg","Qg","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","mode","Vg","implementation","Wg","Xg","Yg","Zg","$g","ah","bh","ch","dh","eh","documentElement","tagName","fh","gh","ih","memoizedProps","revealOrder","jh","kh","lh","mh","nh","oh","pendingProps","ph","qh","rh","sh","th","uh","_workInProgressVersionPrimary","vh","ReactCurrentDispatcher","wh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","baseQueue","queue","Ih","Jh","Kh","lastRenderedReducer","action","eagerReducer","eagerState","lastRenderedState","dispatch","Lh","Mh","_getVersion","_source","mutableReadLanes","Nh","useState","getSnapshot","useEffect","setSnapshot","Oh","Ph","Qh","Rh","destroy","deps","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","readContext","useCallback","useContext","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useDebugValue","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ei","fi","gi","hi","ii","ji","ki","li","mi","baseLanes","ni","oi","pi","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","qi","ri","pendingContext","Bi","Ci","Di","Ei","si","retryLane","ti","fallback","unstable_avoidThisFallback","ui","unstable_expectedLoadTime","vi","wi","xi","yi","zi","isBackwards","rendering","renderingStartTime","last","tail","tailMode","Ai","Fi","Gi","wasMultiple","multiple","onClick","onclick","size","createElementNS","createTextNode","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","WeakMap","Pi","Qi","Ri","Si","componentDidCatch","Ti","componentStack","Ui","WeakSet","Vi","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","Zi","$i","focus","aj","display","bj","onCommitFiberUnmount","componentWillUnmount","cj","dj","ej","fj","gj","hj","insertBefore","_reactRootContainer","ij","jj","kj","lj","then","mj","nj","ceil","oj","pj","qj","rj","sj","tj","uj","vj","Infinity","wj","ck","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","timeoutHandle","Wj","Xj","pingCache","Yj","Zj","va","ak","bk","dk","rangeCount","focusedElem","selectionRange","ek","min","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","onCommitFiberRoot","fk","gk","ik","isReactComponent","pendingChildren","jk","mutableSourceEagerHydrationData","lk","mk","nk","ok","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","hasAttribute","sk","uk","kk","hk","_calculateChangedBits","unstable_observedBits","unmount","querySelectorAll","JSON","stringify","form","Vj","vk","Events","wk","findFiberByHostInstance","bundleType","rendererPackageName","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","__REACT_DEVTOOLS_GLOBAL_HOOK__","yk","isDisabled","supportsFiber","inject","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","condition","args","argIndex","framesToPop","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","adapter","process","getDefaultAdapter","transformRequest","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","isFileList","isObjectPayload","isObject","contentType","_FormData","env","FormData","parser","encoder","stringifySafely","transformResponse","silentJSONParsing","forcedJSONParsing","strictJSONParsing","ERR_BAD_RESPONSE","maxContentLength","maxBodyLength","validateStatus","common","merge","fns","ignoreDuplicateOf","line","substr","exec","validate","checkType","componentNameSafe","propFullNameSafe","_len","_key","chainedCheckType","StrictMode","Profiler","Suspense","forceUpdate","_status","_result","IsSomeRendererActing","count","toArray","only","PureComponent","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","createFactory","createRef","forwardRef","isValidElement","lazy","memo","transformData","throwIfCancellationRequested","throwIfRequested","reason","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Lazy","Portal","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","hookCallback","some","hooks","setHookCallback","hasOwnProp","isObjectEmpty","isNumber","isDate","res","arrLen","createUTC","strict","createLocalOrUTC","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","parsedParts","isNowValid","_d","getTime","invalidWeekday","_strict","bigHour","isFrozen","_isValid","createInvalid","NaN","fun","len","momentProperties","updateInProgress","copyConfig","prop","momentPropertiesLen","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","isMoment","msg","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","arg","argLen","deprecations","deprecateSimple","isFunction","Function","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","mom","output","_calendar","zeroFill","targetLength","forceSign","absNumber","zerosToFill","max","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","ordinal","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","defaultLongDateFormat","LTS","LT","LL","LLL","LLLL","_longDateFormat","formatUpper","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","relativeTime","withoutSuffix","isFuture","_relativeTime","pastFuture","aliases","dates","day","weekdays","weekday","isoweekdays","isoweekday","DDD","dayofyears","dayofyear","hour","ms","millisecond","minute","quarters","quarter","second","weekyears","weekyear","GG","isoweekyears","isoweekyear","isoweeks","isoweek","year","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","isoWeekday","dayOfYear","weekYear","isoWeekYear","isoWeek","getPrioritizedUnits","unitsObj","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","match1to2NoLeadingZero","match1to2HasZero","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","absFloor","toInt","argumentForCoercion","coercedNumber","isFinite","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","_a","isLeapYear","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","daysInYear","parseTwoDigitYear","getSetYear","makeGetSet","getIsLeapYear","keepTime","set$1","isUTC","getUTCMilliseconds","getMilliseconds","getUTCSeconds","getSeconds","getUTCMinutes","getMinutes","getUTCHours","getHours","getUTCDate","getDate","getUTCDay","getDay","getUTCMonth","getMonth","getUTCFullYear","getFullYear","setUTCMilliseconds","setMilliseconds","setUTCSeconds","setSeconds","setUTCMinutes","setMinutes","setUTCHours","setHours","setUTCDate","setDate","setUTCFullYear","setFullYear","stringGet","stringSet","prioritized","prioritizedLen","mod","daysInMonth","modMonth","monthsShort","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","setUTCMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortP","longP","shortPieces","longPieces","mixedPieces","createDate","createUTCDate","UTC","firstWeekOffset","dow","doy","fwd","dayOfYearFromWeeks","resYear","resDayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","localeIsPM","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","loadLocale","isLocaleNameSane","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","values","getLocale","defineLocale","abbr","parentLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","configFromString","createFromInputFallback","currentDateArray","nowValue","_useUTC","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","temp","weekdayOverflow","curWeek","createLocal","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","createFromConfig","prepareConfig","preparse","configFromInput","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid$1","createDuration","Duration","_milliseconds","_days","_bubble","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","parts","matches","cloneWithOffset","model","clone","setTime","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","isAfter","isBefore","createAdder","direction","period","tmp","isAdding","invalid","isMomentInput","isNumberOrStringArray","isMomentInputObject","property","objectTest","propertyTest","properties","propertyLen","arrayTest","dataTypeTest","item","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","toISOString","keepOffset","toDate","inspect","prefix","suffix","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","erasName","erasAbbr","erasNarrow","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","proto","createUnix","createInZone","parseZone","preParsePostFormat","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","isDSTShifted","proto$1","get$1","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","makeAs","alias","asSeconds","asMinutes","asHours","asDays","asWeeks","asQuarters","asYears","valueOf$1","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","argWithSuffix","argThresholds","withSuffix","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","proto$2","toIsoString","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","factory","kindOf","str","kindOfTest","isPlainObject","TypedArray","isTypedArray","Uint8Array","pattern","ArrayBuffer","isView","pipe","product","assignValue","thisArg","stripBOM","charCodeAt","superConstructor","sourceObj","destObj","merged","endsWith","searchString","position","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","warning","InterceptorManager","handlers","use","fulfilled","rejected","synchronous","runWhen","eject","encode","serializedParams","hashmarkIndex","exportName","VENDOR_PREFIXES","TEST_ELEMENT","setTimeoutContext","bindFn","invokeArrayArg","each","deprecationMessage","nextKey","dest","src","inherit","childP","baseP","_super","boolOrFn","ifUndefined","val1","val2","addEventListeners","handler","splitStr","removeEventListeners","hasParent","parent","inStr","find","inArray","findByKey","uniqueArray","results","prefixed","camelProp","_uniqueId","getWindowForElement","doc","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","INPUT_TYPE_TOUCH","INPUT_TYPE_MOUSE","DIRECTION_VERTICAL","DIRECTION_UP","PROPS_XY","PROPS_CLIENT_XY","Input","manager","self","inputTarget","domHandler","ev","enable","init","inputHandler","eventType","pointersLen","pointers","changedPointersLen","changedPointers","isFirst","isFinal","session","pointersLength","firstInput","simpleCloneInputData","firstMultiple","offsetCenter","center","getCenter","deltaTime","angle","getAngle","distance","getDistance","offsetDelta","prevDelta","prevInput","computeDeltaXY","offsetDirection","getDirection","overallVelocity","getVelocity","overallVelocityX","overallVelocityY","scale","rotation","getRotation","maxPointers","velocity","velocityX","velocityY","lastInterval","computeIntervalInputData","srcEvent","computeInputData","emit","recognize","sqrt","atan2","PI","evEl","evTarget","evWin","MOUSE_INPUT_MAP","mousedown","mousemove","mouseup","MOUSE_ELEMENT_EVENTS","MOUSE_WINDOW_EVENTS","MouseInput","pressed","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","PointerEventInput","store","pointerEvents","MSPointerEvent","PointerEvent","removePointer","eventTypeNormalized","isTouch","storeIndex","SINGLE_TOUCH_INPUT_MAP","touchstart","touchmove","touchend","touchcancel","SingleTouchInput","started","normalizeSingleTouches","changed","TOUCH_INPUT_MAP","TOUCH_TARGET_EVENTS","TouchInput","targetIds","getTouches","allTouches","identifier","changedTargetTouches","touch","TouchMouseInput","mouse","primaryTouch","lastTouches","recordTouches","eventData","setLastTouch","lastTouch","lts","isSyntheticEvent","dx","dy","inputEvent","inputData","isMouse","sourceCapabilities","firesTouchEvents","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_COMPUTE","TOUCH_ACTION_AUTO","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_NONE","TOUCH_ACTION_PAN_X","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MAP","touchMap","cssSupports","CSS","supports","getTouchActionProps","TouchAction","compute","actions","touchAction","recognizers","recognizer","getTouchAction","hasPanX","hasPanY","cleanTouchActions","preventDefaults","prevented","hasNone","isTapPointer","isTapMovement","isTapTouchTime","DIRECTION_LEFT","preventSrc","STATE_FAILED","Recognizer","simultaneous","requireFail","stateStr","directionStr","getRecognizerByNameIfManager","otherRecognizer","AttrRecognizer","PanRecognizer","pX","pY","PinchRecognizer","PressRecognizer","_timer","_input","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","Hammer","preset","Manager","recognizeWith","dropRecognizeWith","requireFailure","dropRequireFailure","hasRequireFailures","canRecognizeWith","additionalEvent","tryEmit","canEmit","inputDataClone","reset","attrTest","optionPointers","isRecognized","DIRECTION_HORIZONTAL","directionTest","hasMoved","inOut","validPointers","validMovement","validTime","taps","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","domEvents","inputClass","cssProps","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","oldCssProps","toggleCssProps","stop","force","stopped","curRecognizer","existing","remove","on","events","off","gestureEvent","createEvent","initEvent","gesture","dispatchEvent","triggerDomEvent","INPUT_START","INPUT_MOVE","INPUT_END","INPUT_CANCEL","STATE_POSSIBLE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","DIRECTION_NONE","DIRECTION_RIGHT","DIRECTION_DOWN","DIRECTION_ALL","Tap","Pan","Swipe","Pinch","Rotate","Press","define","debug","info","Log","Global","_testing","setXMLHttpRequest","localStorage","sessionStorage","MetadataService","JsonService","_settings","_jsonService","resetSigningKeys","signingKeys","getMetadata","metadata","metadataUrl","getJson","metadataSeed","getIssuer","_getMetadataProperty","getAuthorizationEndpoint","getUserInfoEndpoint","getTokenEndpoint","getCheckSessionIframe","getEndSessionEndpoint","getRevocationEndpoint","getKeysEndpoint","getSigningKeys","_metadataUrl","authority","UrlUtility","addQueryParam","parseUrlFragment","lastIndexOf","decodeURIComponent","JoseUtil","jws","KeyUtil","X509","crypto","hextob64u","b64tohex","AllowedSigningAlgs","OidcClientSettings","client_id","client_secret","response_type","scope","redirect_uri","post_logout_redirect_uri","client_authentication","prompt","max_age","ui_locales","acr_values","resource","response_mode","filterProtocolClaims","loadUserInfo","staleStateAge","clockSkew","clockService","ClockService","userInfoJwtIssuer","mergeClaims","stateStore","WebStorageStateStore","ResponseValidatorCtor","ResponseValidator","MetadataServiceCtor","extraQueryParams","tt","et","extraTokenParams","rt","_authority","_metadata","_metadataSeed","_signingKeys","_client_id","_client_secret","_response_type","_scope","_redirect_uri","_post_logout_redirect_uri","_client_authentication","_prompt","_display","_max_age","_ui_locales","_acr_values","_resource","_response_mode","_filterProtocolClaims","_loadUserInfo","_staleStateAge","_clockSkew","_clockService","_userInfoJwtIssuer","_mergeClaims","_stateStore","_validator","_metadataService","_extraQueryParams","_extraTokenParams","getEpochTime","_store","_prefix","setItem","getItem","removeItem","getAllKeys","_contentTypes","_XMLHttpRequest","_jwtHandler","onload","getResponseHeader","startsWith","postForm","SigninRequest","id_token_hint","login_hint","request_uri","request_type","skipUserInfo","isOidc","isCode","SigninState","nonce","code_verifier","code_challenge","isOAuth","State","created","_id","_created","_request_type","toStorageString","fromStorageString","clearStaleState","OidcClient","createSigninRequest","readSigninResponseState","SigninResponse","processSigninResponse","validateSigninResponse","createSignoutRequest","SignoutRequest","readSignoutResponseState","SignoutResponse","ErrorResponse","processSignoutResponse","validateSignoutResponse","settings","metadataService","TokenClient","exchangeCode","grant_type","exchangeRefreshToken","refresh_token","error_description","error_uri","session_state","_nonce","_code_verifier","hashString","_code_challenge","hexToBase64Url","_skipUserInfo","getRandomValues","msCrypto","User","id_token","access_token","token_type","profile","expires_at","expires_in","AccessTokenEvents","accessTokenExpiringNotificationTime","accessTokenExpiringTimer","Timer","accessTokenExpiredTimer","_accessTokenExpiringNotificationTime","_accessTokenExpiring","_accessTokenExpired","load","unload","addAccessTokenExpiring","addHandler","removeAccessTokenExpiring","removeHandler","addAccessTokenExpired","removeAccessTokenExpired","Event","_name","_callbacks","findIndex","raise","SessionMonitor","CheckSessionIFrame","_userManager","_CheckSessionIFrameCtor","addUserLoaded","_start","addUserUnloaded","_stop","getUser","monitorAnonymousSession","querySessionStatus","sub","sid","catch","_sub","_sid","_checkSessionIFrame","_checkSessionInterval","_stopCheckSessionOnError","_callback","_raiseUserSessionChanged","_raiseUserSignedOut","_raiseUserSignedIn","checkSessionInterval","stopCheckSessionOnError","_url","_interval","_stopOnError","_frame_origin","_frame","visibility","_boundMessageEvent","_message","origin","_session_state","postMessage","TokenRevocationClient","_XMLHttpRequestCtor","revoke","_revoke","CordovaPopupWindow","_promise","_resolve","_reject","features","popupWindowFeatures","popupWindowTarget","startUrl","_isInAppBrowserInstalled","navigate","cordova","_error","_popup","InAppBrowser","_exitCallbackEvent","_exitCallback","_loadStartCallbackEvent","_loadStartCallback","promise","_success","_cleanup","close","Version","InMemoryWebStorage","UserManager","CordovaPopupNavigator","CordovaIFrameNavigator","UserInfoService","_userInfoService","_joseUtil","_tokenClient","_processSigninParams","_validateTokens","_processClaims","isOpenIdConnect","getClaims","_processCode","_validateIdTokenAndAccessToken","_validateIdToken","_validateIdTokenAttributes","validateJwtAttributes","_validateAccessToken","_getSigningKeyForJwt","header","kid","_filterByAlg","alg","_getSigningKeyForJwtWithSingleRetry","parseJwt","validateJwt","kty","at_hash","_getClaimsFromJwt","iss","KEYUTIL","superclass","lib","Base","mixIn","$super","WordArray","words","sigBytes","clamp","enc","Hex","Latin1","Utf8","BufferedBlockAlgorithm","_nDataBytes","_append","_process","blockSize","_minBufferSize","_doProcessBlock","Hasher","cfg","_doReset","finalize","_doFinalize","_createHelper","_createHmacHelper","HMAC","algo","x64","Word","high","low","toX32","Base64","_map","SHA256","_hash","HmacSHA256","SHA512","nt","HmacSHA512","SHA384","HmacSHA384","fromNumber","fromString","appName","am","DB","DM","DV","FV","F1","F2","fromInt","mp","invDigit","mpl","mph","um","mt2","r2","q3","ONE","dlShiftTo","mu","divide","convert","compareTo","revert","reduce","divRemTo","mulTo","multiplyTo","sqrTo","squareTo","ZERO","subTo","copyTo","drShiftTo","fromRadix","lShiftTo","rShiftTo","isEven","exp","negate","toRadix","bitLength","modPowInt","multiplyUpperTo","multiplyLowerTo","dAddOffset","Rt","It","Dt","chunkSize","signum","intValue","dMultiply","testBit","bitwiseTo","shiftLeft","isProbablePrime","nextBytes","changeBit","addTo","modInt","millerRabin","getLowestSetBit","shiftRight","modPow","byteValue","shortValue","toByteArray","equals","and","or","xor","andNot","not","bitCount","setBit","clearBit","flipBit","multiply","remainder","divideAndRemainder","modInverse","gcd","square","appVersion","dmp1","dmq1","coeff","curve","zinv","fromBigInteger","infinity","doPublic","setPublic","isPublic","isPrivate","encrypt","encryptOAEP","MessageDigest","Util","getCanonicalAlgName","getHashLength","Nr","hashHex","Ur","toBigInteger","getX","getY","isInfinity","twice","getInfinity","multiplyTwo","getQ","getA","getB","decodePointHex","getByteLength","getEncoded","toByteArrayUnsigned","decodeFrom","decodeFromHex","add2D","twice2D","multiply2D","isOnCurve","Sr","KJUR","asn1","ASN1Util","integerToByteHex","bigIntToMinTwosComplementsHex","getPEMStringFromHex","Mr","newObject","ASN1Object","DERBoolean","DERInteger","DERBitString","DEROctetString","DERNull","DERObjectIdentifier","DEREnumerated","DERUTF8String","DERNumericString","DERPrintableString","DERTeletexString","DERIA5String","DERUTCTime","DERGeneralizedTime","DERVisibleString","DERBMPString","DERSequence","DERSet","DERTaggedObject","explicit","jsonToASN1HEX","getEncodedHex","oidHexToInt","oidIntToHex","getLengthHexFromValue","hV","hTLV","isModified","getFreshValueHex","hL","hT","getValueHex","setByParam","tlv","DERAbstractString","getString","setString","Dr","setStringHex","hex","DERAbstractTime","localDateToUTC","formatDate","zeroPadding","Pr","setByDateValue","setByDate","DERAbstractStructured","setByASN1ObjectArray","asn1Array","appendASN1Object","setByBigInteger","setByInteger","setValueHex","int","setHexValueIncludingUnusedBits","setUnusedBitsAndHexValue","setByBinaryString","setByBooleanArray","newFalseArray","bin","setValueOidString","setValueName","x509","OID","name2oid","setValueNameOrOid","oid","withMillis","millis","sortFlag","sortflag","isExplicit","asn1Object","setASN1Object","tage","tagi","wr","Fr","Er","xr","Ar","kr","Cr","Tr","Rr","Ir","qr","Gr","Lr","Jr","Br","Or","jr","Hr","Vr","Kr","Wr","zr","Yr","Xr","$r","getLblen","getL","getVblen","getVidx","getV","getTLV","getTLVblen","getNextSiblingIdx","getChildIdx","getNthChildIdx","getIdxbyList","getIdxbyListEx","isContextTag","getTLVbyList","getTLVbyListEx","getVbyList","getVbyListEx","getInt","getOID","Qr","getOIDName","oid2name","hextooidstr","dump","ommit_long_octet","isASN1HEX","oidname","x509ExtName","checkStrictDER","isHex","utf8tob64u","b64utoutf8","isInteger","isBase64","isBase64URL","isIntegerArray","isPrintable","isIA5","isMail","DIGESTINFOHEAD","sha1","sha224","sha256","sha384","sha512","md2","md5","ripemd160","DEFAULTPROVIDER","hmacmd5","hmacsha1","hmacsha224","hmacsha256","hmacsha384","hmacsha512","hmacripemd160","MD5withRSA","SHA1withRSA","SHA224withRSA","SHA256withRSA","SHA384withRSA","SHA512withRSA","RIPEMD160withRSA","MD5withECDSA","SHA1withECDSA","SHA224withECDSA","SHA256withECDSA","SHA384withECDSA","SHA512withECDSA","RIPEMD160withECDSA","SHA1withDSA","SHA224withDSA","SHA256withDSA","MD5withRSAandMGF1","SHAwithRSAandMGF1","SHA1withRSAandMGF1","SHA224withRSAandMGF1","SHA256withRSAandMGF1","SHA384withRSAandMGF1","SHA512withRSAandMGF1","RIPEMD160withRSAandMGF1","CRYPTOJSMESSAGEDIGESTNAME","MD5","SHA1","SHA224","RIPEMD160","getDigestInfoHex","getPaddedDigestInfoHex","digestString","digestHex","sha256Hex","sha512Hex","isKey","DSA","ECDSA","prov","SECURERANDOMGEN","getRandomHexOfNbytes","getRandomBigIntegerOfNbytes","getRandomHexOfNbits","getRandomBigIntegerOfNbits","getRandomBigIntegerZeroToMax","getRandomBigIntegerMinToMax","setAlgAndProvider","updateString","updateHex","digest","sjcl","codec","toBits","fromBits","algName","provName","HASHLENGTH","Mac","algProv","mac","pass","doFinal","doFinalString","doFinalHex","setPassword","utf8","rstr","b64","b64u","Signature","_setAlgNames","mdAlgName","pubkeyAlgName","_zeroPaddingOfSignature","Zr","getKey","prvKey","pubKey","sHashHex","ecprvhex","eccurvename","prv","hSign","signWithMessageHashPSS","pssSaltLen","signWithMessageHash","signString","signHex","verify","ecpubhex","pub","verifyWithMessageHashPSS","verifyWithMessageHash","algProvName","initParams","psssaltlen","prvkeypem","prvkeypas","Cipher","getAlgByKeyAndName","decrypt","decryptOAEP","oidhex2name","ECParameterDB","getName","getBigRandom","setNamedCurve","ecparams","getByName","prvKeyHex","pubKeyHex","curveName","setPrivateKeyHex","setPublicKeyHex","getPublicKeyXYHex","keylen","getShortNISTPCurveName","generateKeyPairHex","biRSSigToASN1Sig","fromByteArrayUnsigned","serializeSig","verifyHex","parseSigHex","verifyRaw","Bitcoin","parseSig","toByteArraySigned","parseSigCompact","readPKCS5PrvKeyHex","readPKCS8PrvKeyHex","readPKCS8PubKeyHex","readCertPubKeyHex","parseSigHexInHexRS","asn1SigToConcatSig","concatSigToASN1Sig","hexRSSigToASN1Sig","regist","AES","iv","ciphertext","proc","eproc","ivlen","TripleDES","DES","cipher","ivsalt","keyhex","ivhex","parsePKCS5PEM","getKeyAndUnusedIvByPasscodeAndIvsalt","decryptKeyB64","getDecryptedKeyHex","getEncryptedPKCS5PEMFromPrvKeyHex","parseHexOfEncryptedPKCS8","encryptionSchemeAlg","encryptionSchemeIV","pbkdf2Salt","pbkdf2Iter","getPBKDF2KeyHexFromParam","PBKDF2","keySize","iterations","_getPlainPKCS8HexFromEncryptedPKCS8PEM","getKeyFromEncryptedPKCS8PEM","getKeyFromPlainPrivatePKCS8Hex","parsePlainPrivatePKCS8Hex","algparam","algoid","keyidx","getKeyFromPlainPrivatePKCS8PEM","_getKeyFromPublicPKCS8Hex","parsePublicRawRSAKeyHex","parsePublicPKCS8Hex","xy","dp","dq","co","setPrivateEx","setPrivate","crv","getPublicKeyFromCertHex","getPublicKeyFromCertPEM","generateKeypair","generate","prvKeyObj","pubKeyObj","getPEM","SubjectPublicKeyInfo","seq","octstr","bitstr","null","getKeyFromCSRPEM","getKeyFromCSRHex","parseCSRHex","p8pubkeyhex","getKeyID","getJWKFromKey","getPosArrayOfChildrenFromHex","getHexValueArrayOfChildrenFromHex","readPrivateKeyFromPEMString","readPKCS5PubKeyHex","readCertHex","getPublicKeyHex","tn","en","rn","nn","AlgorithmIdentifier","PSSNAME2ASN1TLV","HEX2STAG","foffset","aExtInfo","getVersion","getSerialNumberHex","getSignatureAlgorithmField","getAlgorithmIdentifierName","getX500Name","getIssuerHex","getIssuerString","hex2dn","getSubject","getSubjectHex","getSubjectString","getNotBefore","getNotAfter","getPublicKeyIdx","getPublicKeyContentIdx","getPublicKey","getSignatureAlgorithmName","getSignatureValueHex","verifySignature","parseExt","critical","vidx","getExtInfo","getExtBasicConstraints","extname","cA","pathLen","getExtKeyUsage","getExtKeyUsageString","getExtKeyUsageBin","KEYUSAGE_NAME","getExtSubjectKeyIdentifier","getExtAuthorityKeyIdentifier","getGeneralNames","issuer","dn","sn","getExtExtKeyUsage","getExtExtKeyUsageName","getExtSubjectAltName","getExtIssuerAltName","getGeneralName","rfc822","dns","uri","ip","getExtSubjectAltName2","getExtCRLDistributionPoints","getDistributionPoint","dpname","getDistributionPointName","full","getExtCRLDistributionPointsURI","getExtAIAInfo","ocsp","caissuer","getExtAuthorityInfoAccess","getExtCertificatePolicies","getPolicyInformation","policyoid","getPolicyQualifierInfo","cps","unotice","getUserNotice","exptext","getDisplayText","getExtCRLNumber","num","getExtCRLReason","getExtOcspNonce","getExtOcspNoCheck","getExtAdobeTimeStamp","reqauth","getX500NameRule","ds","getX500NameArray","dnarraytostr","getRDN","getAttrTypeAndValue","oid2atype","readCertPEM","getParam","serial","sigalg","notbefore","notafter","subject","sbjpubkey","ext","getExtParamArray","sighex","getExtParam","extn","findExt","updateExtCDPFullURI","updateExtAIAOCSP","updateExtAIACAIssuer","getInfo","dname","doPrivate","signPSS","verifyPSS","SALT_LEN_HLEN","SALT_LEN_MAX","SALT_LEN_RECOVER","hex2rdn","hex2attrTypeValue","getPublicKeyInfoPropOfCertPEM","JWS","isSafeJSONString","parseJWS","parsedJWS","sigvalH","headB64U","payloadB64U","sigvalB64U","sigvalBI","headS","payloadS","readSafeJSONString","jwsalg2sigalg","headerObj","payloadObj","headerPP","payloadPP","sigHex","verifyJWT","includedArray","aud","IntDate","getNow","verifyAt","gracePeriod","nbf","iat","jti","HS256","HS384","HS512","RS256","RS384","RS512","ES256","ES384","PS256","PS384","PS512","none","getEncodedSignatureValueFromJWS","getJWKthumbprint","getZulu","intDate2UTCString","toUTCString","intDate2Zulu","SecureRandom","rng_seed_time","BigInteger","RSAKey","EDSA","an","un","cn","hn","ln","ASN1HEX","CryptoJS","b64toBA","stoBA","BAtos","BAtohex","stohex","stob64","stob64u","b64utos","b64tob64u","b64utob64","hex2b64","b64utohex","utf8tob64","b64toutf8","utf8tohex","hextoutf8","hextorstr","rstrtohex","hextob64","hextob64nl","b64nltohex","hextopem","pemtohex","hextoArrayBuffer","DataView","setUint8","ArrayBuffertohex","byteLength","getUint8","zulutomsec","zulutosec","zulutodate","datetozulu","uricmptohex","hextouricmp","ipv6tohex","hextoipv6","hextoip","iptohex","encodeURIComponentAll","newline_toUnix","newline_toDos","hextoposhex","intarystrtohex","strdiffidx","xn","An","kn","Pn","Buffer","TYPED_ARRAY_SUPPORT","RangeError","isEncoding","write","copy","readUInt16BE","Number","fromByteArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","subarray","kMaxLength","poolSize","_augment","species","fill","allocUnsafe","allocUnsafeSlow","_isBuffer","swap16","swap32","swap64","includes","_arr","readUIntLE","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","x5c","_validateJwt","azp","scopes","SilentRenewService","UserManagerSettings","_events","UserManagerEvents","_silentRenewService","automaticSilentRenew","startSilentRenew","monitorSession","_sessionMonitor","_tokenRevocationClient","_loadUser","removeUser","storeUser","signinRedirect","useReplaceToNavigate","_signinStart","_redirectNavigator","signinRedirectCallback","_signinEnd","signinPopup","popup_redirect_uri","_signin","_popupNavigator","signinPopupCallback","_signinCallback","signinSilent","_useRefreshToken","includeIdTokenInSilentRenew","validateSubOnSilentRenew","current_sub","_signinSilentIframe","_validateIdTokenFromTokenRefreshToken","auth_time","silent_redirect_uri","_iframeNavigator","silentRequestTimeout","signinSilentCallback","signinCallback","signoutCallback","signoutRedirectCallback","signoutPopupCallback","query_status_response_type","prepare","signoutRedirect","_signoutStart","_signoutEnd","signoutPopup","popup_post_logout_redirect_uri","_signout","revokeAccessTokenOnSignout","_revokeInternal","revokeAccessToken","_revokeAccessTokenInternal","_revokeRefreshTokenInternal","stopSilentRenew","_userStore","_userStoreKey","redirectNavigator","popupNavigator","iframeNavigator","userStore","RedirectNavigator","PopupNavigator","IFrameNavigator","_popup_redirect_uri","_popup_post_logout_redirect_uri","_popupWindowFeatures","_popupWindowTarget","_silent_redirect_uri","_silentRequestTimeout","_automaticSilentRenew","_validateSubOnSilentRenew","_includeIdTokenInSilentRenew","_monitorSession","_monitorAnonymousSession","_query_status_response_type","_revokeAccessTokenOnSignout","PopupWindow","notifyOpener","_checkForPopupClosedTimer","_checkForPopupClosed","closed","opener","IFrameWindow","notifyParent","_timeout","_origin","_userLoaded","_userUnloaded","_silentRenewError","_userSignedIn","_userSignedOut","_userSessionChanged","removeUserLoaded","removeUserUnloaded","addSilentRenewError","removeSilentRenewError","_raiseSilentRenewError","addUserSignedIn","removeUserSignedIn","addUserSignedOut","removeUserSignedOut","addUserSessionChanged","removeUserSessionChanged","_nowFunc","expiration","_timerHandle","_expiration","_tokenExpiring","performance","MessageChannel","unstable_forceFrameRate","cancelAnimationFrame","requestAnimationFrame","port2","port1","onmessage","pop","sortIndex","startTime","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","delay","unstable_wrapCallback","formData","convertValue","Blob","build","parentKey","fullKey","el","append","ERR_CANCELED","__CANCEL__","isAbsoluteURL","combineURLs","requestedURL","executor","resolvePromise","_listeners","onfulfilled","expires","path","domain","secure","cookie","toGMTString","checkDCE","isarray","pathToRegexp","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","defaultDelimiter","delimiter","escaped","group","modifier","asterisk","partial","optional","prevText","escapeGroup","restrictBacktrack","escapeString","encodeURIComponentPretty","encodeURI","pretty","segment","attachKeys","sensitive","route","endsWithDelimiter","groups","regexpToRegexp","arrayToRegexp","stringToRegexp","hasOwn","classNames","classes","appendClass","parseValue","newClass","Uint16Array","threadID","identifierPrefix","uniqueID","listing","pre","textarea","suppressContentEditableWarning","suppressHydrationWarning","domNamespace","childIndex","footer","exhausted","currentSelectValue","previousWasTextNode","makeStaticMarkup","suspenseDepth","contextIndex","contextStack","contextValueStack","clearProviders","pushProvider","popProvider","fallbackFrame","renderDOM","renderToStaticMarkup","dispatchRequest","interceptors","configOrUrl","boolean","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","chain","newConfig","onFulfilled","onRejected","getUri","generateHTTPMethod","isForm","_createChainableTypeChecker2","_len2","_key2","_createChainableTypeChecker","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","definition","chunkId","miniCssF","globalThis","inProgress","dataWebpackPrefix","script","needAttach","scripts","getElementsByTagName","getAttribute","charset","onScriptComplete","prev","doneFns","head","nmd","paths","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","chunkLoadingGlobal","ThemeContext","React","useBootstrapPrefix","defaultPrefix","prefixes","_excluded","Container","_ref","bsPrefix","fluid","_ref$as","className","_objectWithoutPropertiesLoose","_extends","DEVICE_SIZES","Row","noGutters","decoratedBsPrefix","sizePrefix","brkPoint","cols","propValue","infix","Col","spans","span","_propValue$span","matchesImpl","qsa","selector","optionsSupported","onceSupported","once","canUseDOM","eventName","wrappedHandler","__once","onceHandler","defaultKey","_toPropertyKey","hint","prim","toPrimitive","_toPrimitive","useUncontrolledProp","wasPropRef","_useState","stateValue","isProp","wasProp","useUncontrolled","fieldName","_extends2","Utils","propsValue","rest","handlerName","_useUncontrolledProp","nextProps","prevState","nextState","prevProps","__reactInternalSnapshotFlag","__reactInternalSnapshot","__suppressDeprecationWarning","usePrevious","useForceUpdate","useEventCallback","useCommittedRef","useGlobalListener","eventTarget","useEventListener","useCallbackRef","useMounted","mounted","getBasePlacement","placement","getWindow","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","getUAString","uaData","userAgentData","brands","brand","isLayoutViewport","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","offsetWidth","offsetHeight","visualViewport","addVisualOffsets","offsetLeft","offsetTop","right","bottom","getLayoutRect","rootNode","getRootNode","isSameNode","getNodeName","getComputedStyle","isTableElement","getDocumentElement","getParentNode","assignedSlot","getTrueOffsetParent","offsetParent","getOffsetParent","isFirefox","currentNode","css","transform","perspective","contain","willChange","getContainingBlock","getMainAxisFromPlacement","within","mathMax","mathMin","mergePaddingObject","paddingObject","expandToHashMap","hashMap","auto","basePlacements","viewport","popper","variationPlacements","acc","placements","modifierPhases","getVariation","unsetSides","mapToStyles","_ref2","_Object$assign2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","win","heightProp","widthProp","_Object$assign","commonStyles","_ref4","dpr","devicePixelRatio","roundOffsetsByDPR","getOppositePlacement","getOppositeVariationPlacement","getWindowScroll","pageXOffset","pageYOffset","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflowX","overflowY","getScrollParent","listScrollParents","list","_element$ownerDocumen","scrollParent","isBody","updatedList","rectToClientRect","rect","getClientRectFromMixedType","clippingParent","strategy","html","clientWidth","clientHeight","layoutViewport","getViewportRect","clientTop","clientLeft","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","computeOffsets","reference","basePlacement","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","padding","altContext","rects","elements","clippingClientRect","contextElement","referenceClientRect","popperOffsets","popperClientRect","elementClientRect","overflowOffsets","offsetData","modifiersData","axis","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","enabled","phase","requires","_options$offset","invertDistance","skidding","distanceAndSkiddingToXY","_data$state$placement","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","scroll","getNodeScroll","modifiers","visited","requiresIfExists","dep","depModifier","debounce","DEFAULT_OPTIONS","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","orderedModifiers","attributes","styles","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","scrollParents","orderModifiers","mergeByName","_ref$options","effect","cleanupFn","noopFn","_state$elements","_state$orderedModifie","_state$orderedModifie2","onFirstUpdate","createPopper","referenceRect","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","arrow","_options$scroll","_options$resize","resize","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","_options$allowedAutoP","allPlacements","allowedPlacements","overflows","computeAutoPlacement","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","check","_loop","fittingPlacement","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowElement","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","withinMaxClamp","_state$modifiersData$","toPaddingObject","minProp","maxProp","endDiff","startDiff","clientSize","centerToReference","axisProp","centerOffset","_options$element","querySelector","initialPopperStyles","disabledApplyStylesModifier","ariaDescribedByModifier","ids","_popper$getAttribute","_state$elements2","role","EMPTY_MODIFIERS","referenceElement","popperElement","_temp","_ref3$enabled","_ref3$placement","_ref3$strategy","_ref3$modifiers","popperInstanceRef","_popperInstanceRef$cu","_popperInstanceRef$cu2","_useSafeState","useSafeState","popperState","updateModifier","safeFindDOMNode","componentOrElement","ReactDOM","noop","getRefTarget","onRootClose","_ref$clickTrigger","clickTrigger","preventMouseRootCloseRef","onClose","handleMouseCapture","_e$composedPath$","isLeftClickEvent","composedPath","handleMouse","handleKeyUp","currentEvent","removeMouseCaptureListener","listen","removeMouseListener","removeKeyupListener","mobileSafariHackListeners","mergeOptionsWithPopperConfig","_modifiers$preventOve","_modifiers$preventOve2","_modifiers$offset","_modifiers$arrow","enableEvents","flip","fixed","containerPadding","_ref$popperConfig","popperConfig","toModifierMap","eventListeners","useDropdownMenu","DropdownContext","_useCallbackRef","attachArrowRef","hasShownRef","rootCloseEvent","_options$fixed","_options$popperConfig","_options$usePopper","usePopper","shouldUsePopper","show","alignEnd","drop","setMenu","menuElement","toggleElement","menuProps","hasShown","toggle","arrowProps","useRootClose","DropdownMenu","_useDropdownMenu","useDropdownToggle","_ref$show","_ref$toggle","setToggle","handleClick","DropdownToggle","_useDropdownToggle","focusFirstItemOnShow","itemSelector","defaultShow","onToggle","useRefWithUpdate","attachRef","Dropdown","rawShow","rawOnToggle","_ref$itemSelector","_useRefWithUpdate","menuRef","_useRefWithUpdate2","toggleRef","lastShow","lastSourceEvent","focusInDropdown","nextShow","focusToggle","maybeFocusFirst","focusType","nativeMatch","matchesSelector","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","first","getNextFocusedChild","items","_menuRef$current","_toggleRef$current","fromMenu","fromToggle","_next","_menuRef$current2","Toggle","makeEventKey","eventKey","NavContext","funcs","isTrivialHref","SafeAnchor","onKeyDown","tabIndex","createChainedFunction","DropdownItem","onSelect","propActive","active","onSelectCtx","SelectableContext","activeKey","toFnRef","refA","refB","mergeRefs","useWrappedRefWithWarning","hasClass","classList","baseVal","getMargins","marginTop","marginRight","marginBottom","marginLeft","usePopperMarginModifiers","overlayRef","margins","arrowMargins","popoverClass","dropdownMenuClass","overlay","margin","_margins$current","_arrowMargins$current","_getMargins","alignDirection","alignPropType","sm","xl","align","alignRight","showProps","renderOnMount","isNavbar","NavbarContext","_usePopperMarginModif","popperRef","marginModifiers","alignClasses","_useDropdownMenu$","useMergedRefs","Button","variant","block","childBsPrefix","toggleProps","rHyphen","pascalCase","chr","createWithBsPrefix","_ref$displayName","BsComponent","_ref2$as","Tag","resolvedPrefix","DropdownHeader","DropdownDivider","DropdownItemText","pProps","_useUncontrolled","_useUncontrolled$as","navbar","handleToggle","handleSelect","BaseDropdown","Divider","Header","Item","ItemText","menuAlign","menuRole","renderMenuOnMount","DropdownButton","NavbarBrand","psuedoElement","ownerWindow","rUpper","msPattern","hyphenateStyleName","hyphenate","supportedTransforms","transforms","getPropertyValue","isTransform","removeProperty","cssText","forceReflow","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","_React$Component","_this","initialStatus","appear","isMounting","enter","appearStatus","in","unmountOnExit","mountOnEnter","nextCallback","_inheritsLoose","_proto","updateStatus","nextStatus","cancelNextCallback","getTimeouts","exit","mounting","nodeRef","performEnter","performExit","_this2","appearing","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","onEntered","onEnter","onEntering","onTransitionEnd","_this3","onExit","onExiting","onExited","setNextCallback","_this4","doesNotHaveTimeoutOrListener","addEndListener","maybeNextCallback","_this$props","childProps","TransitionGroupContext","emulateTransitionEnd","called","handle","triggerEvent","transitionEnd","mult","parseDuration","removeEmulate","transitionEndListener","triggerBrowserReflow","_collapseStyles","MARGINS","getDefaultDimensionValue","dimension","elem","collapseStyles","getDimensionValue","Collapse","_ref$dimension","_ref$getDimensionValu","computedDimension","handleEnter","handleEntering","handleEntered","handleExit","handleExiting","innerProps","NavbarCollapse","expanded","NavbarToggle","NavbarText","Navbar","initialBsPrefix","expand","sticky","_onToggle","collapseOnSelect","controlledProps","handleCollapse","expandClass","navbarContext","Brand","Text","getControlledId","getControllerId","needsRefocusRef","parentOnSelect","tabContext","TabContext","listNode","getNextActiveChild","currentListNode","activeChild","nextIndex","mergedRef","nextActiveChild","dataset","rbEventKey","NavItem","AbstractNavItem","navKey","navContext","isActive","contextControllerId","contextControlledId","handleOnclick","NavLink","Nav","uncontrolledProps","_classNames","navbarBsPrefix","cardHeaderBsPrefix","justify","navbarScroll","cardContext","CardContext","AbstractNav","Link","AuthContextDefault","userProfile","userName","userId","roleName","roleID","locations","LocationCode","LocationName","setUserProfile","AuthContext","ErrorContextDefault","errorMessages","setErrorMessages","ErrorContext","LocationContextDefault","locationCode","setLocationCode","LocationContext","OrginalSchoolYearDefault","orginalSchoolYear","isCurrent","schoolYearEndDate","setOrginalSchoolYear","Year","LocalStorageService","getUserProfile","_this$getItem","getExpirationTime","setExpirationTime","expirationDate","appsettings","clear","getUserRole","AxiosInstance","atob","nopLogger","logger","level","NONE","ERROR","WARN","INFO","DEBUG","_len3","_key3","_len4","_key4","testing","newRequest","additionalContentTypes","XMLHttpRequestCtor","jwtHandler","req","allowedContentTypes","found","basicAuth","OidcMetadataUrlPath","JsonServiceCtor","seed","jwks_uri","keySet","YAHOO","dbits","b64map","int2char","nbi","rr","vv","BI_RM","BI_RC","intAt","nbv","nbits","Classic","Montgomery","op_and","op_or","op_xor","op_andnot","lbit","cbit","NullExp","nNop","Barrett","lowprimes","lplim","Arcfour","rng_state","rng_pool","rng_pptr","rng_get_byte","parseBigInt","oaep_mgf1_arr","ECFieldElementFp","ECPointFp","ECCurveFp","pkcs1pad2","oaep_pad","jsonParse","oidtohex","ishex","bitstrtoint","strpad","hextooid","_RE_HEXDECONLY","pss_mgf1_str","_rsasign_getAlgNameAndHashFromHexDisgestInfo","_crypto","jwt","audience","timeInsensitive","lowerNow","upperNow","getJoseUtil","joseUtil","claims","issuerPromise","clockSkewInSeconds","super","ProtocolClaims","UserInfoServiceCtor","TokenClientCtor","claims1","claims2","tokenResponse","hashAlg","hashBits","sha","left_b64u","DefaultResponseType","DefaultScope","DefaultClientAuthentication","DefaultStaleStateAge","DefaultClockSkewInSeconds","idx","counter","_cryptoUuidv4","_uuidv4","storageString","storage","age","cutoff","oidc","expired","signinRequest","signinState","removeState","useQuery","storedStateString","signoutState","stateKey","keepOpen","popup","frame","DefaultAccessTokenExpiringNotificationTime","DefaultCheckSessionInterval","nowFunc","timerDuration","container","expiring","user","raiseEvent","userManager","stopOnError","CheckSessionIFrameCtor","tmpUser","timerHandle","required","xhr","SilentRenewServiceCtor","SessionMonitorCtor","TokenRevocationClientCtor","navParams","idTokenValidation","navResponse","signinResponse","navigatorParams","postLogoutRedirectUri","signoutRequest","signoutResponse","success","atSuccess","rtSuccess","AuthService","async","base64","navigateToScreen","isAuthenticated","oidcStorage","REACT_APP_AUTH_URL","REACT_APP_IDENTITY_CLIENT_ID","logout","REACT_APP_PUBLIC_URL","login","renewToken","AxiosInstances","authService","refreshingToken","onRequest","_sessionStorage$getIt","claimToken","claim","rbac_token","onRequestError","onResponse","onResponseError","_error$response","getData","getRecent","requestdata","isPresent","isBlank","isNotNullOrEmptyString","isNullOrEmptyString","isNumeric","isCompositeFilterDescriptor","filters","ifElse","predicate","compose","reduceRight","curr","getterCache","FIELD_REGEX","what","safe","fields","indexAccessor","pairwise","accessor","isNotEmpty","isNotEmptyArray","runOrEmpty","formatDescriptors","formatter","sanitizeDateLiterals","removeAfterDot","directionFormatter","_b","take","aggregates","skip","formatSort","formatGroup","formatAggregates","aggregate","formatDateValue","transformSkip","transformTake","transformGroup","transformSort","transformAggregates","filterFormatter","operator","ignoreCase","g1","mapper","translateAggregate","translateAggregates","valueOrDefault","translateGroup","hasSubgroups","Aggregates","Member","member","HasSubgroups","Items","Key","__spreadArray","pack","ar","SuppressedError","FilterOperator","localeCompare","compareDesc","descriptorAsFunc","initial","groupCombinator","agg","groupValue","valueToString","__position","aggregatesCombinator","functions","fieldAccessor","aggregateName","aggregateAccessor","fieldAggregates","aggregateFunction","average","calc","NEGATIVE_INFINITY","POSITIVE_INFINITY","sum","aggregatesFuncs","isTransformerResult","__value","reduced","length_1","identity","aggregateBy","transformers","expandAggregates","normalizeOperator","equal","equalto","greater","greaterthan","greaterthanequal","isempty","isequalto","isgreaterthan","isgreaterthanorequalto","islessthan","islessthanorequalto","isnotempty","isnotequalto","isnull","less","lessthan","lessthanequal","notequal","notequals","notequalto","notsubstringof","normalizeFilters","logic","normalizeDescriptor","operatorsMap","doesnotcontain","doesnotendwith","doesnotstartwith","endswith","eq","gt","gte","isnotnull","lt","lte","neq","startswith","dateRegExp","transformFilter","itemProp","stringValue","typedGetter","op","transformCompositeFilter","combiner","compileFilter","filterBy","normalizeGroups","groupBy","originalData","aggregateResult","filteredData","orderBy","comparer","composeSortDescriptors","skipCount","takeCount","filterDescriptor","sortDescriptors","hasFilters","hasGroups","__extends","extendStatics","__","GridColumnMenuItem","iconClass","GridColumnMenuItemGroup","addKeys","addLeafKeys","addClass","replaceClassName","origClass","classToRemove","removeClass","removeOneClass","CSSTransition","appliedClasses","_this$resolveArgument","resolveArguments","removeClasses","_this$resolveArgument2","_this$resolveArgument3","getClassNames","isStringClassNames","baseClassName","activeClassName","doneClassName","addOneClass","_addClass","_this$appliedClasses$","computedStyles","__assign","__rest","util","AnimationChild","_element","transitionName","transitionEnterDuration","transitionExitDuration","onAfterExited","animationEnteringStyle","animationEnteredStyle","animationExitingStyle","animationExitedStyle","childAnimationContainerClassNames","defaultStyle","transitionDelay","animationStyle","entering","transitionDuration","entered","exiting","exited","transitionProps","animatedElement","appearActive","enterActive","exitActive","div","getChildMapping","mapFn","getProp","getNextChildMapping","prevChildMapping","nextChildMapping","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","pendingNextKey","mergeChildMappings","hasPrev","hasNext","prevChild","isLeaving","TransitionGroup","handleExited","_assertThisInitialized","contextValue","firstRender","currentChildMapping","childFactory","_0x4bd098","_0x5109","_0x3a49a3","_0x495a4c","_0xae363","_0x1203d3","_0x130e","GRACE_SUBSCRIPTION_DAYS","JWT_LICENSE_EVIDENCE_TYPE","LOG_HEADER","PUBLIC_KEY","logHeader","_0x11636d","_0x204796","toNumericDate","_0x40de20","_0x16bd58","getCurrentDate","decodeBase64","_0x4e6e70","_0x1df651","_0x4061f0","_0x1a9b78","_0x2bf536","_0x1b6993","_0x12b927","_0x399873","_0x57172b","_0x4df6cb","_0x12826e","_0x47ad02","_0xe237cc","_0x44fb56","decodeString","_0x417625","_0x8ffb0d","_0x3c5297","_0x1cf2cd","_0x49e8f7","_0x19be6d","decodeBase64Url","_0x43449a","_0x39e9cf","_0x24e9fa","isExpired","_0x50cae0","_0x179161","_0x48575f","_0x4db944","findPackageLicense","_0x4b3cae","_0x7efda","_0x871201","_0x145c14","_0x4121a9","_0x39d8a6","_0x1e36c9","_0x5d7c13","_0x7197b9","_0x157c80","_0x1a6f3e","_0x401aef","_0x4e556c","_0x3392fb","_0x15c005","_0x375744","_0x5bea9c","_0x3dcbdb","_0x69aae3","_0x8ffc86","_0xb3e088","_0x114de2","_0x374eb2","_0x28c5ce","_0xf201b7","addDays","_0x9c85c3","_0x404a3e","_0x3e3424","_0x2b6d73","_0x533cf8","findRuntimeLicense","_0x7c0429","_0x3e910a","_0x4fe0f7","_0x30aaff","_0x239b5f","_0x37a0f2","_0x2ef3dc","_0x5caa2f","_0x4b47b5","_0x3d2477","_0x3a23c3","_0x40df55","_0x406c9f","decodeLicenseEvidence","_0x5ba7eb","_0xa095f7","_0x24811c","getProductCode","_0x110acb","NoLicenseFoundRuntimeError","_0xff243f","_0x47c299","ProductNotLicensedRuntimeError","_0x3824d6","_0x3031f0","ExpiredTrialLicenseRuntimeError","_0x4b4b3c","_0x444c0c","_0x598663","ExpiredLicenseRuntimeError","_0x522d83","_0x51444e","_0x3f7281","_0x4440d3","_0x409566","_0x264276","TrialLicenseRuntimeInfo","_0x48d96e","_0x308b08","_0x6a913","_0x5f4de9","_0x4176de","_0x130e83","_0x5109b4","_0x34f247","_0x48c7a9","_0x51a49e","_0x1b3695","_0x58511f","_0x455fe6","_0x4c54ce","_0x362053","_0x491338","_0x26d6df","_0x47cbbd","verifyLicenseEvidence","_0x2f2d8c","_0x2bb694","_0x3bf3ba","TextEncoder","TextDecoder","_0x206f1e","_0x4cb6ad","_0x4b71ba","_0x4b6c91","_0x219374","_0x2d4e98","_0x50906f","_0x509f36","_0x182f0b","_0x3f7008","_0x33ad4e","_0x5bd875","_0xf69dd1","_0x3d269b","_0x887631","_0x5722f1","_0x54d5fa","_0x8d662b","_0x1f9790","_0x16804c","_0x3f8878","_0x3b1502","_0x2db284","_0x39e83f","_0x11c562","_0x125ea0","_0x40cf3b","_0x25b9da","_0x21bf50","_0x43e577","_0x312283","_0x2d5dfe","importRsaKey","_0x53e9d8","_0x3e805f","_0x50976e","_0x30c83b","_0xfceadb","_0x1f8947","_0x4fcf84","publicKey","touchedProducts","setScriptKey","_0x298e29","_0x5669f6","_0xb64709","_0xe5eb72","_0x50f533","_0x2673fe","_0x26c22e","_0x2e7961","_0x4042ed","_0x444df6","_0x42a906","_0x323a2b","_0x4ee691","_0x4f70dc","_0x74dad4","_0x413a17","_0x382d4b","_0x4de0e1","decodeScriptKey","_0x470fb5","_0x43108a","_0x4cfbaa","_0x94db33","_0x4dbdff","_0x246fdf","_0x9d9187","_0x249db6","_0x2a5dfc","_0x1c7df6","_0x1f1c82","_0x18be76","_0x304ab6","_0x1da5cd","_0x14444d","_0x3afafb","_0x407694","_0x189e57","_0x1442c3","_0x2213b1","_0x19d574","_0x62ec63","validateEvidencesCache","validateEvidences","_0x259c7c","_0x55e7f9","_0x378754","_0x130e2e","_0x4f695d","_0x50932b","_0x1846f5","_0x1190a7","_0x341952","_0x5dcf1f","_0x2fa417","_0x51028c","_0x4e5bb2","_0x39464d","validatePackage","_0x46c3e2","_0x573e89","_0x5e6f70","_0x34a5fb","_0x2e8f88","_0x151852","_0x15f616","KendoLicensing","_0x2bf27a","_0xa81798","_0x1d8662","_0x239787","_0x17e88c","_0xecb034","_0x4aefcb","_0x987e30","_0x1ce124","_0x40960c","_0x4cb652","_0x2050b3","_0xedbfdf","_0x394fb7","_0x4e4a40","_0xc5f8de","_0x20d9bf","daysSinceToday","_0x1ee1d4","_0x32cb16","_0x271286","_0x1edba6","_0x2b1b27","_0x4c1cc4","_0x5ef509","_0x64532a","_0x51c717","_0xdf90ce","_0x27a146","_0x28bea4","_0x435200","_0x1bc90e","_0xebc000","_0x5d66f4","_0x4fe018","_0x4ec368","_0x2bfbf5","_0x3ad8f4","_0x359c8a","_0x2bf47e","_0x5ab9b0","_0x350274","_0x43255b","_0x3b2e16","_0x2abcbd","_0x135a58","_0x2f5bd4","_0x10f7da","_0x3d12d9","_0x50aff3","_0x21d313","_0xa46d78","_0x40e5b4","_0x5cdd4a","_0xcc5331","_0x2ae5db","_0x5cfa1f","_0x56fa68","_0x5ea82e","_0x53cc20","_0x41cb8b","_0x1d71a0","_0x31d51a","_0x5ab4c3","_0x432064","_0x3caf0d","_0x5838f2","_0x5b7a47","_0x2884e3","_0x17310a","_0x3a588b","_0x5a6256","_0x42aea4","_0x59fc92","_0x243781","_0x17aaac","_0xa638ad","_0x50bfc2","_0x14dc9e","_0x394c34","_0x4d5e1a","_0x4ad696","_0x4a1472","_0x4099c5","_0xa5984c","_0x17afe4","_0x300394","_0x191b5c","_0x2c88f3","_0x19e56a","_0x427669","_0x45e4e1","_0x3bfc7c","_0x242f63","_0x544c82","_0x2be709","_0x566a92","_0x2df0e3","_0xebc692","_0x13f41d","_0x3ba99b","onMessage","_0x4c7470","_0x2613c6","_0xe61a4","_0x11b633","_0x47be01","_0x541119","_0x3515bc","_0x533279","_0x4b9398","_0x131c27","_0x62251b","_0x514ed8","packageMetadata","licensing","productName","productCodes","publishDate","licensingDocsUrl","Animation","componentChildStyle","stackChildren","componentChildClassName","Reveal","maxHeight","maxWidth","componentWillEnter","onBeforeEnter","updateContainerDimensions","componentIsEntering","componentWillExit","newHeight","newWidth","GridColumnMenuItemContent","_number","_cldrVersion","language","territory","numbers","percentSign","plusSign","minusSign","exponential","superscriptingExponent","perMille","nan","timeSeparator","patterns","groupSize","scientific","percent","currency","currencies","BGN","EUR","USD","localeCurrency","accounting","gmtFormat","gmtZeroFormat","dateTimeFormats","long","medium","short","availableFormats","Bhm","Bhms","EBhm","EBhms","Ed","Ehm","EHm","Ehms","EHms","Gy","GyMMM","GyMMMd","GyMMMEd","Hm","hms","Hms","hmsv","Hmsv","hmv","Hmv","MEd","MMM","MMMd","MMMEd","MMMMd","yM","yMd","yMEd","yMMM","yMMMd","yMMMEd","yMMMM","yQQQ","yQQQQ","timeFormats","dateFormats","abbreviated","wide","dayPeriods","midnight","noon","pm","morning1","afternoon1","evening1","night1","dateFields","dayperiod","supplemental","likelySubtags","currencyData","region","US","_from","weekData","firstDay","weekendStart","weekendEnd","formatRegExp","IntlError","flattenValues","flatten","formattedMessage","errors","cldr","defaultData","getLocaleInfo","localeInfo","suffixes","fullName","localeFullName","availableLocaleInfo","NoLocale","localeTerritory","likelyName","part","territoryFromName","DECIMAL","CURRENCY","ACCOUNTING","PERCENT","SCIENTIFIC","CURRENCY_PLACEHOLDER","NUMBER_PLACEHOLDER","POINT","EMPTY","DEFAULT_LOCALE","dateFormatNames","nameType","standAlone","lower","formatType","lowerNameType","formatNames","lowerArray","lowerObject","cloneLower","parseRangeDate","NoCurrency","NoCurrencyDisplay","NoSupplementalCurrency","NoCurrencyRegion","NoValidCurrency","SYMBOL","GLOBAL_CURRENCIES","getCurrencyInfo","throwIfNoValid","currencyDisplayInfo","lengthComparer","territoryCurrencyCode","regionCurrencies","currencyCode","latestValidUntil","latestValidUntilRange","latestStillValid","latestStillValidDate","_tender","_to","validFrom","validTo","stillValidDate","regionCurrency","DAYS_OF_WEEK","NoWeekData","NoFirstDay","isNegativeZero","formatCurrencySymbol","currencyDisplay","currencyInfo","groupInteger","decimalIndex","groupSizes","integerEnd","integer","integerLength","newGroupSize","isCurrencyStyle","pad","digits","padString","decimals","trailingZeroRegex","fractionOptions","currencyFractions","isCurrency","fractions","_digits","currencyFractionOptions","standardNumberFormat","toExponential","negative","negativeZero","fraction","currencyUnitPattern","applyPattern","literalRegExp","PLACEHOLDER","setStyleOptions","formatOptions","setFormatLiterals","literals","quoteChar","literal","SHARP","trailingZerosRegExp","trailingPointRegExp","commaRegExp","roundNumber","zeroIndex","sharpIndex","hasZero","hasSharp","trailingZeros","lastZero","trimRegex","trimTrailingZeros","setValueSpecificFormat","hasNegativeFormat","zeroFormat","isConstantFormat","constant","placeholderIndex","index1","index2","applyCustomFormat","lastZeroIndex","hasGroup","replacement","replacePlaceHolders","replaceLiterals","replaceStyleSymbols","customNumberFormat","setGroupOptions","setPlaceholderIndices","standardFormatRegExp","formatAndPrecision","standardFormatOptions","formatNumber","exponentRegExp","nonBreakingSpaceRegExp","cleanNegativePattern","cleanCurrencyNumber","displays","currencyDisplays","cleanNumber","parseNumber","isPercent","cleanLiterals","negativeCurrency","currencyNumber","negativeSignIndex","isNegative","formatString","LENGHT_DELTA","PENALTIES","VALUE_FORMAT_LENGTH","numeric","TIME_SPECIFIERS_REGEX","DATE_OPTIONS_MAP","specifier","getSpecifier","hour12","STAND_ALONE_SPECIFIERS","specifiersRegex","resolvedFormats","getSpecifierRegex","skeletonSpecifiers","skeleton","character","findBestMatch","specifiers","bestMatches","specifiersLength","maxScore","MAX_VALUE","currentFormat","delta","idx$1","bestMatch","matchSpecifier","skeletonFormat","timeStartIndex","dateSkeleton","timeSkeleton","cacheFormat","datePattern","option","spcifier","skeletonFromOptions","dateNameType","formatLength","ZONE","QUARTER","DATE_FIELD_MAP","dateFormatRegExp","formatMonth","formatQuarter","formatTimeZone","shortHours","optionalMinutes","localizedName","zZeroOffset","hoursMinutes","formatDayOfWeek","firstDayIndex","formatDayOfWeekIndex","formatters","convertTimeZone","fromOffset","toOffset","fromLocalOffset","offsetDate","toLocalOffset","timeZoneOffsetRegExp","offsetRegExp","numberRegExp","numberRegex","leadingSpacesRegex","trailingSpacesRegex","standardDateFormats","FORMATS_SEQUENCE","outOfRange","lookAhead","getNumber","valueIdx","getIndexByName","nameLength","subValue","matchLength","matchIdx","checkLiteral","parseTimeZoneOffset","noSeparator","zLiteral","NoGMTInfo","calendarGmtFormats","hoursMatch","minutesMatch","hoursOffset","minutesOffset","parseMonth","parseDayOfWeek","dayOfWeek","parsers","addFormatSpaces","parseExact","pmHour","hasTime","adjustDST","parseMicrosoftDateFormat","tzoffset","parseMicrosoftDateOffset","parseDate","parseFormats","defaultFormats","currentYear","periodFormats","shortFormat","NAME_TYPES","minLength","LITERAL","addLiteral","lastPart","isHour12","placeholderFormat","IntlService","coreIntl","dateFieldName","NoDateFieldNames","fieldNameInfo","splitDateFormat","patternLength","numberSymbols","messages","LocalizationService","toLanguageString","GlobalizationContext","intl","localization","provideIntlService","provideLocalizationService","registerForIntl","registerForLocalization","noRecords","groupPanelEmpty","filterClearButton","filterSubmitButton","filterTitle","filterChooseOperator","sortAriaLabel","filterAriaLabel","pagerMessagesMap","pagerMessageKey","messageKey","_match","defaultMessage","filterLogicList","operators","IsUnaryFilter","operatorMap","iterable","service","booleanFilterValues","defaultHideSecondFilter","cellInputChange","defaultOperator","getDefaultOperator","filterType","syntheticEvent","filterOperators","getFilterType","cellBoolDropdownChange","cellOperatorChange","currentValue","opened","getTabIndex","useDefaultTabIndexWhenDisabled","parsedTabIndex","Keys","usePropsContext","contextPropsCallback","createPropsContext","withPropsContext","contextProps","labelsOptional","FloatingLabel","focused","handleFocus","handleBlur","editorId","editorValue","editorPlaceholder","editorValid","editorDisabled","localizationService","localizedOptional","optionalElement","spanClassNames","labelClassNames","onFocus","onBlur","htmlFor","clearSlide","firefox","ZIndexContext","anchorRect","anchorAlign","elementRect","elementAlign","anchorHorizontal","horizontal","anchorVertical","vertical","elementHorizontal","elementVertical","horizontalMargin","verticalMargin","point","fit","viewPortSize","anchorSize","anchorAlignPoint","elementAlignPoint","marginToAdd","alignPoint","isBeforeAnchor","collisions","viewPort","elementTop","elementLeft","elementHeight","elementWidth","viewPortHeight","viewPortWidth","isVerticalFit","collision","isHorizontalFit","isVerticalFlip","isHorizontalFlip","flippedVertical","flippedHorizontal","fittedVertical","fittedHorizontal","flipped","fitted","hasRelativeStackingContext","memoize","elementSource","currentDocument","isDifferent","eitherRect","scaleRect","removeStackingOffset","stackingOffset","cachedWidth","scrollbarWidth","windowViewport","wnd","getDocument","innerHeight","innerWidth","scrollPosition","docElement","rectOfHiddenElement","offsetParentElement","elementScrollPosition","parentScrollPosition","elementStyles","offsetRect","parentElement","useRelative","parentOffset","parentStyles","borderTopWidth","borderLeftWidth","firstElementChild","nextElementSibling","STYLES","OVERFLOW_REGEXP","overflowStyle","overflowElementStyle","overflowComputedStyle","getRelativeContextElement","zoomLevel","domUtils","addOffset","addition","addScroll","boundingOffset","getFontStyles","font","hasOffsetParent","offsetBase","offsetAtPoint","currentLocation","currentOffset","popupElement","ref$1","offsetParentScrollPosition","positionScale","positionWithScroll","removeScroll","restrictToView","scrollableParents","parentElements","stackingElementOffset","relativeContextElement","stackingElementScroll","stackingElementViewPort","useRelativePosition","windowViewPort","isZoomed","siblingElements","parents","containerElement","siblings","siblingContainer","zIndexStyle","positionMode","currentScale","scrollPos","stackScale","stackScroll","stackOffset","absoluteRect","relativeRect","elementOffset","FRAME_DURATION","isEquivalent","aProps","bProps","Status","DEFAULT_OFFSET","ANIMATION_CONTAINER_SHOWN","PopupWithoutContext","hidden","previous","setPosition","animate","onOpened","shown","popupAlign","alignedOffset","alignElement","positionElement","_collisions","onPosition","event_1","attachRepositionHandlers","onOpen","animationDirection","down","up","slideClass","slideActiveClass","deafultView","slide","animationDuration","onClosing","detachRepositionHandlers","onClosed","hiding","getCurrentZIndex","reposition","wait","later","leading","remaining","trailing","throttle","appendTo","popupClass","contentKey","showing","closing","currentZIndex","openDuration","closeDuration","_scrollableParents","CollisionEnum","AlignPoint","PopupPropsContext","Popup","popupProps","ListContainer","itemsCount","popupSettings","ListFilter","matchText","word","itemIndexStartsWith","itemText","getItemValue","data_1","areSame","item1","item2","getFocusedItem","textField","selectedIndex","matchCase","casing","getItemIndexByText","preventDefaultNonInputs","ListDefaultItem","defaultItem","onMouseDown","ListItem","dataItem","renderer","nodata","List","renderItems","valueField","groupField","optionsGuid","focusedIndex","_c","highlightSelected","itemRender","realIndex","renderNoValueElement","noDataRender","noDataElement","wrapperCssClass","wrapperStyle","listStyle","listRef","wrapperRef","listClassName","onScroll","unselectable","VirtualScroll","containerHeight","pageSize","itemHeight","prevScrollPos","listTranslate","scrollSyncing","scrollerRef","vs","calcScrollElementHeight","heightChanged","scrollElement","scrollHandler","changePage","newSkip","PageChange","translateTo","dY","scrollToEnd","localScrollUp","targetTranslate","additionalOnTop","validateTranslate","localScrollDown","itemsLenght","scrollNonStrict","floatItemIndex","itemIndex","translate","Navigation","step","guid","DropDownBase","navigation","handleItemClick","initState","handleItemSelect","togglePopup","applyState","filterChanged","filterable","calculatePopupWidth","pageChange","page","triggerOnPageChange","scrollToVirtualItem","virtual","selectedItemIndex","scrollToItem","renderScrollWrapper","getPopupSettings","renderScrollElement","listBoxId","didMount","popupWidth","shouldUpdate","calculateDir","dirCalculated","wrapper","vsEnabled","virtualScroll","scrollElem","viewportHeight","itemOffsetTop","eventArgs","triggerPageChangeCornerItems","dataItemKey","basicPropTypes","accessKey","loading","listNoDataRender","focusedItemIndex","onFilterChange","onPageChange","validityStyles","DropDownListWithoutContext","searchState","_skipFocusEvent","_filterInput","_navigated","newSelected","triggerOnChange","renderDropDownWrapper","iconClassName","valueRender","valueDefaultRendering","valueElement","handleKeyDown","onKeyPress","handleKeyPress","handleWrapperClick","ariaLabelledBy","ariaDescribedBy","dummySelect","_select","border","valueMap","renderListContainer","listContainerProps","onPopupOpened","onPopupClosed","renderListFilter","renderDefaultItem","renderList","float","filterText","handleListFilterChange","handleDefaultItemClick","_typingTimeout","selectNext","mappedData","isInLoop","sameCharsOnly","dataLength","startIndex","splitIndex","shuffleData","loopMatch","nextMatch","_valueDuringOnChange","leftRightKeysNavigation","homeOrEndKeys","upOrDownKeys","shouldOpen","shouldClose","shouldNavigate","onNavigate","focusElement","setValidity","setCustomValidity","validity","valid","validationMessage","customError","valueMissing","prevTotal","prevOpened","opening","selectedItem_1","prevSelectedItem","selectedItemChanged","dropdownlist","dropdown","newIndex","hasSelected","DropDownList","useInternationalization","useLocalization","eventHandler","dispatchedEvent","eventBaseData","numericIncreaseValue","numericDecreaseValue","checkboxValidation","checkboxOptionalText","DEFAULT_NUMBER","DIGITS_REGEX","getStateOrPropsValue","formatValue","intlService","fractionLength","maxFractionLength","value1","value2","toFixedPrecision","maxPrecision","limitPrecision","increaseValue","newState","increasedValue","rangeValue","eventValue","currentLooseValue","getLastNumberIndex","decreaseValue","decreasedValue","rangeSelection","nextLooseValue","formatInfo","maxPosition","nextValue","formatSuffixIndex","currSuffix","getMaxCursorPosition","minPosition","formatPrefixIndex","currPrefix","getMinCursorPosition","setSelection","setInvalid","prevLooseValue","valueIsCorrected","getInitialPosition","decimalIdex","reverseString","inputRegex","getPrefix","getSuffix","reversedString","getFirstNumberIndex","getDecimalCount","currentDecimalPlace","changeBasedSelection","selectionPosition","isDelete","sanitizeRegex","isCurrentLeadingZero","isNextLeadingZero","numberCounter","newSelection","sanitizeNumber","restrictedSymbols","positiveResult","negativeResult","zeroResult","oneResult","getFormatSymbols","currentLooseValueAsString","prevLooseValueAsString","sanitizeGroupRegex","allSymbolsRegex","sanitizedString","numberStart","numberEnd","sanitizedFormattedString","formattedMax","maxDecimalIndex","maxDecimalCount","formattedMin","minDecimalIndex","minDecimalCount","positivePrefix","negativePrefix","zeroPrefix","onePrefix","positiveInfo","negativeInfo","zeroInfo","oneInfo","getFormatPrefixSufix","isFormatContainPrefixSuffix","nestedInfo","isPercentFormat","isPaste","newText","oldText","isMinusSymbolAdded","currentNumberStart","oldNumberStart","isMinusSymbolRemoved","valueCandidate","currentLastNumberIndex","isDecimalDuplicated","formatInfoIndex","prefixIndex","suffixIndex","prefixFound","suffixFound","prefixGap","suffixGap","isSpecialSymbolDeleted","currentDecimalCount","endsOnDecimal","valueUntillDecimal","looseDecimalPlace","NumericTextBoxPropsContext","NumericTextBox","directProps","calculatedId","inputId","elementRef","elementWrapperRef","valueDuringChangeRef","setForceUpdate","stateRef","decimalSelect","valueIsOutOfRange","isPasteRef","prevLooseValueRef","stateValueRef","looseValue","validityGetter","valueGetter","nameGetter","requiredGetter","validityStylesGetter","propsGetter","getImperativeHandle","getCurrentState","triggerChange","rangedValue","wrapper_1","_x","onChangeHandler","stateCandidate","rangeOnEnter","onPasteHandler","onIncrease","readOnly","onDecrease","onWheelHandler","numerictextbox","placeholder","spellCheck","autoComplete","autoCorrect","inputType","onPaste","onWheel","spinners","cloneDate","newDate","AsyncFocusBlur","onSyncFocus","onSyncBlur","tick","nextTick","useAsyncFocusBlur","isEqual","candidate","expected","lastDayOfMonth","addMonths","expectedMonth","normalize","Mask","dateSymbolMap","wrapperClasses","KendoDate","intlProvider","formatPlaceholder","leadingZero","typedMonthPart","knownParts","_value","monthNames","allFormatedMonths","modifyExisting","hasValue","getExisting","getDateObject","getTextAndFormat","dateFormatString","sampleFormat","setExisting","modifyPart","newValue","parsePart","currentChar","resetLeadingZero","baseDate","dateParts","baseFormat","replaced","parsedDate","matchMonth","middle","middleNumber","monthNumber","isAbbrMonth","partMap","symbolMap","hasLeadingZero","partPattern","typedChar","monthAsNum","dateFormatParts","partLength","mask","resultText","resultFormat","currentSymbol","EMPTY_SELECTIONRANGE","getters","viewInRange","MIDNIGHT_DATE","MIN_DATE","MAX_DATE","getToday","isInRange","isInSelectionRange","intersects","shiftWeekNames","dateInRange","domContainerFactory","today","toggleCalendar","defaultGetters","normalizeTimes","snappersFactory","candidateValue","MIN_TIME","MAX_TIME","DateInputWithoutContext","kendoDate","paste","_wrapper","_inputId","updateOnPaste","oldValue","spinnersMouseDown","preventScroll","handlePaste","elementChange","dateBeforeChange","oldTextOrigin","oldFormat","newTextOrigin","oldTextSeparator","deletedSymbol","approximateStringMatching","selection","navigationOnly","selectionBySymbol","switchDateSegment","elementClick","selectionByIndex","nativeWheel","wheel","increasePart","decreasePart","modifyDateSegmentValue","elementKeyDown","elementOnFocus","elementOnBlur","_lastSelectedSymbol","currentText","ariaProps","wrapperClassesInstance","dateinput","ariaExpanded","ariaHasPopup","onInput","valueDuringOnChange","DateInput","inRange","isInTimeRange","minTime","maxTime","rangeOverflow","rangeUnderflow","setSelectionRange","previousFormatSymbol","currentStepSymbol","steps","timeZoneName","ScrollDirection","isEqualDate","RowHeightService","rowHeight","detailRowHeight","heights","rowIndex","expandDetail","updateRowHeight","collapseDetail","totalHeight","ScrollAction","PageAction","ScrollerService","onScrollAction","onPageAction","firstLoaded","bottomOffset","topOffset","rowHeightService","lastLoaded","lastScrollTop","offsetBufferRows","rowsForHeight","skipWithOffset","rowOffset","offsetSize","firstItemIndex","lastItemIndex","nonVisibleBuffer","Day","Direction","scrollModifiers","Forward","Backward","scrollNormalizers","scrollValidators","Virtualization","animationInProgress","scrollTo","scrollProperty","scrollContainer","scrollToIndex","scrollToIndexTimeout","animateToIndex","cancelAnimation","indexOffset","getContainerScrollDirection","scrollRange","scrollStep","modifyScroll","normalizeScroll","isScrollValid","progress","scrollToBottom","scrollDuration","containerScroll","containerScrollPosition","staticOffset","maxScrollDifference","maxScroll","containerMaxScroll","difference","containerScrollSize","containerOffsetSize","initServices","itemWidth","scrollerService","scrollOffsetSize","getContainerProperty","handleScroll","scrollAction","pageAction","handleScrollAction","handlePageAction","activeIndex","itemOffset","isIndexVisible","containerTop","containerBottom","isListScrolled","onMount","lastTotal","lastDirection","lastTake","vertexLength","placeholderStyle","rootClassNames","scrollableClassNames","forceScroll","CalendarViewEnum","weekDay","newDay","moveDateToWeekStart","weekStartDay","Monday","prevDayOfWeek","calcWeekInYear","firstWeekInYear","diffInMS","CalendarCell","handleMouseEnter","onMouseEnter","handleMouseLeave","onMouseLeave","newProps","xProps","yProps","compareProps","isWeekend","isFocused","isSelected","isRangeStart","isRangeMid","isRangeEnd","isRangeSplitStart","isRangeSplitEnd","isToday","isEndActive","activeRangeEnd","isStartActive","rootClassName","CalendarWeekCell","firstDate","WeekNamesService","getWeekNames","includeWeekNumber","weekNames","emptyCell","View","buildWeekNumber","row","weekCellValue","getWeekNumber","cellProps","weekCell","buildRow","cell","aria","activeView","firstWeekDateContext","rowCtx","weekNumber","ctx","onCellEnter","onCellLeave","showWeekNumbers","selectedDate","weekService","colSpan","rowLength","viewDate","cellUID","focusedDate","isActiveView","bus","canMoveDown","isMonthView","isHorizontal","prevWeekDate","nextWeekDate","weekInYear","toggleIfApplicable","togglable","_selectedTemp","look","primary","icon","imageUrl","imageAlt","htmlAttributes","hasIcon","hasChildren","buttonProps","iconEl","alt","iconClasses","iconElement","CalendarHeaderTitle","rangeLength","nextDate","addToDate","handleTitleClick","canMoveUp","moveUp","titleClassNames","headerTitleProps","headerTitle","commands","TodayCommand","todayIsInRange","isTodayClick","todayMessage","todayClassNames","ViewList","shouldScroll","focusActiveDate","focusedCell","nextActiveCell","blurActiveDate","handleVirtualizationMount","virtualization","table","viewOffset","indexToScroll","buildMonthView","buildDates","calendarView","handleDateChange","calculateHeights","dom","scrollableHeight","scrollableContentHeight","scrollableYearContentHeight","viewHeight","headerHeight","getTake","handleTodayClick","lastView","lastFocus","smoothScroll","_prevProps","_prevState","didViewChange","activeDate","didViewChanged","decade","century","datesList","viewListBody","didCalculate","Action","CalendarNavigationItem","buildNavigationItem","navigationTitle","navigationItemProps","navigationItem","calendarHeight","navigationItemHeight","maxViewHeight","monthViewHeight","navigationBody","DOMService","ensureHeights","containerFactory","ul","tr","tbody","thead","monthHeader","scrollable","navigationList","navElement","viewFactory","renderWeekHeader","viewElement","cells","rows","contentElement","getScrollable","scrollableElement","monthView","yearView","decadeView","paddingLeft","paddingRight","getBody","hostContainer","batch","calendarWidth","monthViewWidth","scrollableContentWidth","yearViewHeight","yearViewWidth","decadeViewHeight","centuryViewHeight","decadeViewWidth","centuryViewWidth","viewType","viewDimension","viewWidth","viewProp","appendedContent","setYear","addYears","addDecades","addCenturies","normalizeYear","firstDecadeOfCentury","lastDecadeOfCentury","firstYearOfDecade","durationInCenturies","EMPTY_DATA","ACTIONS","PrevView","NextView","FirstInView","LastInView","CenturyViewService","lastDate","cellOffset","cellDate","isSelectedFromArray","cellTitle","isInArray","aboveMin","belowMax","isInSameView","move","lastYearOfDecade","durationInDecades","DecadeViewService","addWeeks","firstDayOfMonth","durationInMonths","MonthViewService","firstMonthDate","lastMonthDate","abbrMonthNames","wideMonthNames","prependCell","firstMonthOfYear","lastMonthOfYear","durationInYears","YearViewService","_intl","services","BusViewService","onViewChanged","configure","moveDown","moveToBottom","KEY_TO_ACTION","UpperView","LowerView","NavigationService","ScrollSyncService","monthScrolled","navScrolled","magnitude","divideByMagnitude","powerByMagnitude","sync","scrollSiblingOf","scrolledElement","siblingComponent","calculateScroll","virtualizationProp","calculateValue","CalendarWithoutContext","didNavigationChange","scrollSyncService","calendarViewList","handleNavigationChange","handleViewChange","canNavigateDown","handleMouseDown","defaultActiveView","bottomView","topView","didValueChange","sanitizedValue","calendarBody","Calendar","ToggleButton","onMouseUp","PickerWrap","PickerFloatingLabel","floatingLabelProps","dateInput","setShow","usePickerFloatingLabel","DatePickerWithoutContext","_popupId","_dateInput","shouldFocusDateInput","setCalendarRef","handleInputValueChange","handleValueChange","handleCalendarValueChange","mergeTime","showDuringOnChange","handleIconClick","handleIconMouseDown","toggleButton","pickerWrap","prevShow","nextTickId","otherPopupSettings","wrapperClassNames","popupClassNames","dateInputProps","calendarProps","datepicker","pickerWrapComp","dateInputComp","toggleButtonComp","popupComp","calendarComp","DatePicker","GridColumnMenuFilterCell","renderOperatorEditor","operatorChange","inputChange","boolDropdownChange","filterComponent","booleanValues","GridColumnMenuFilterUI","firstFilterProps","hideSecondFilter","secondFilterProps","logicData","logicValue","onLogicChange","rootFilterOrDefault","rootFilter","filterGroupByField","GridColumnMenuFilter","filterGroup","removeGroup","groupIndex","insertGroup","isControlled","onFilterExpand","onExpandChange","firstFilterChange","filterChange","secondFilterChange","filterIndex","logicChange","column","rootFilters","onCloseMenu","currentFilterGroup","submit","updatedFilter","filterUI","currentHideSecondFilter","currentOperators","firstFilterCellProps","secondFilterCellProps","filterLogic","logicProps","FilterUI","filterUIProps","isFilterValid","expandState","onSubmit","onReset","BrowserSupportService","scrollbar","getScrollbarWidth","setScrollbarWidth","fieldList","KEYBOARD_NAV_DATA_LEVEL","KEYBOARD_NAV_DATA_SCOPE","KEYBOARD_NAV_DATA_HEADER","KEYBOARD_NAV_DATA_BODY","KEYBOARD_NAV_DATA_ID","FOCUSABLE_ELEMENTS_BASE","FOCUSABLE_ELEMENTS","TABBABLE_ELEMENTS","tableKeyboardNavigationScopeAttributes","tableKeyboardNavigationHeaderAttributes","tableKeyboardNavigationBodyAttributes","getNavigatableId","dataId","isNavigatable","getHeaderElement","getBodyElement","findNextIdByRowIndex","initialRowIndex","cellIndex","elementId","matrix","isReverse","currentRowIndex","currentId","findNextIdByCellIndex","initialCellIndex","currentCellIndex","findId","navigationMatrix","cellId","tableKeyboardNavigationTools","navigationId","idPrefix","closest","activeId","focusable","selectors","elementForFocus","contextStateRef","prevElement","navigationStateRef","columnId","generateMatrix","headerRows","bodyRows","rowSpan","cellSpan","depth","maxDepth","freeSlotIndex","lastHeaderIndex","tableKeyboardNavigation","navigatable","activeElementIsFocused","prevNavigationIndexes","firstId","firstIdElement","navigationTools","focusedElement","onNavigationAction","dataLevel","navigatableElement","currentIdIndexes","idForFocus","currentIndexes","TABLE_ROW_INDEX_ATTRIBUTE","TABLE_COL_INDEX_ATTRIBUTE","closestTagName","getRowIndex","getColumnIndex","colIndex","HAS_RELATIVE_STACKING_CONTEXT","getSelectionOptions","selectable","drag","nextColumn","currentDepth","getColumnWidth","currentSum","isRtl","getIndex","originalEvent","elementFromPoint","PagerNumericButtons","handlePageChange","handleSelectPageChange","prevDots","renderDots","postDots","totalPages","prevOptionDots","renderOptionDots","postOptionDots","numerics","currentPage","buttonCount","reminder","pagerInfo","pagerFirstPage","pagerPreviousPage","pagerNextPage","pagerLastPage","pagerItemPerPage","pagerPage","pagerOf","pagerTotalPages","PagerInput","_text","pageMessage","messagesMap","ofMessage","totalPagesMessage","PagerPageSizes","pageSizeChange","sizes","pageSizes","itemPerPageMessage","Pager","onWindowResize","responsive","changer","firstPageMessage","previousPageMessage","nextPageMessage","lastPageMessage","infoMessage","previousNext","renderButton","pagerPageSizes","TableKeyboardNavigationContext","DRAG_AND_DROP_DISPATCH_ACTION","intersect","candidates","ration","targetRect","targetArea","entryArea","intersectionArea","getRatio","detectBrowser","browser","browserRxs","edge","webkit","safari","opera","mozilla","agent","DOCUMENT_NODE","scrollableRoot","support","isScrollable","getScrollableParent","root","Node","DOCUMENT_FRAGMENT_NODE","dispatchDragAndDrop","callbacks","onIsPressedChange","onIsScrollingChange","onVelocityChange","onOffsetChange","onPageOffsetChange","onClientOffsetChange","_g","onScrollOffsetChange","_h","onInitialScrollOffsetChange","autoScrollDirection","overrideScrollableParent","scrollableParent","isTouchEvent","scrollX","scrollOffset","scrollY","offsetX","offsetY","isScrollEvent","pageOffset","normalizeEvent","POINTER_DOWN","MOUSE_DOWN","ignoreMouse","TOUCH_START","START","scrollableParent_1","Window","onPress","SCROLL","initialScrollOffset","POINTER_MOVE","MOUSE_MOVE","TOUCH_MOVE","MOVE","autoScroll","document_1","scrollableParent_2","newVelocity","mouseX","mouseY","AUTO_SCROLL_AREA","autoScrollVelocity","scrollableViewPort","onDragStart","onDrag","dropElement_1","drops","isPointerInsideContainer","onDragLeave","onDragEnter","onDragOver","POINTER_UP","MOUSE_UP","TOUCH_END","END","onRelease","onDrop","onDragEnd","POINTER_CANCEL","CONTEXT_MENU","TOUCH_CANCEL","CANCEL","vel","yIsScrollable","xIsScrollable","yDelta","yInBounds","xDelta","xInBounds","useInheritedState","contextSetter","localValue","localSetter","DragContext","DropContext","DragsContext","DropsContext","Draggable","childRef","getElement","handlePress","handleRelease","handleDragStart","handleDrag","handleDragEnd","mouseOnly","_j","_k","setPressed","scrolling","setScrolling","_m","setDrag","_o","drags","registerDrag","deregisterDrag","scrollInterval","restoreMouseTimeout","initialClientOffset","supportPointerEvent","getHintElement","getScrollContainer","getAutoScrollContainer","boundaryElementRef","getState","isScrolling","handlePressedChange","handleScrollingChange","handleVelocityChange","handleOffsetChange","handleClientOffsetChange","handlePageOffsetChange","handleInitialClientOffsetChange","handleScrollOffsetChange","handleInitialScrollOffsetChange","dispatchDragEvent","onInitialClientOffsetChange","handlePointerDown","handlePointerMove","handlePointerCancel","handlePointerUp","handleMouseMove","handleMouseUp","handleContextMenu","handleTouchStart","handleTouchMove","handleTouchEnd","currentWindow","prerequisites","initialTouchAction_1","register","autoScrollElement","useDraggable","TableSelection","selectionEnabled","selectionDrag","selectionMode","selectionCell","draggableRef","overlayElementRef","dragStartRef","overlaySettings","setOverlaySettings","offsetParentRef","isDraggedRef","isPreventedRef","onPressHandler","onDragHandler","getOffset","onReleaseHandler","top_1","overlayElement","startElement","endElement","startTdElement","startTrElement","endTdElement","endTrElement","startColIndex","startRowIndex","endColIndex","endRowIndex","isDrag","tdElement","trElement","DropClue","visible","hiddenElementRef","hiddenElement","dropClue","DragClue","innerText","dragClue","GridColumn","editable","sortable","resizable","reorderable","groupable","allowUnsort","filterCell","editor","minResizableWidth","headerCell","footerCell","headerSelectionValue","headerClassName","orderIndex","columnMenu","locked","getNestedValue","flatData","dataIndex","groupDefined","maxLevel","rowType","readColumns","oldColumns","idInfo","columnProps","oldColumn","prevId","declarationIndex","isAccessible","ret_1","flat_1","pIndex","parentIndex","sanitizeColumns","kFirst","useTableKeyboardNavigation","navigationContext","GridSelectionCell","handleOnChange","selectionChange","selectedValue","navigationAttributes","defaultRendering","ariaColumnIndex","GridHierarchyCell","onKeyDownHandler","GRID_ROW_INDEX_ATTRIBUTE","GRID_COL_INDEX_ATTRIBUTE","GridEditCell","editCellClasses","columnIndex","headerWrap","syncScroll","_event","scrollableDataElement","rtl","columnResize","setIsRtl","setScrollLeft","setWidth","staticHeaders","draggable","borderWidth","colGroupHeader","headerRow","filterRow","ColumnResizer","isDragged","onDoubleClick","autofit","ColumnDraggable","pressHandler","dragHandler","releaseHandler","headerRef","containerRef","ariaRowIndex","GridColumnMenuWrapper","blurTimeout","blur","closeMenu","anchorClick","_content","ColumnMenu","others","_anchor","outline","GridHeaderCell","columnMenuWrapperProps","clickProps","HeaderThElement","ariaSort","ariaLabel","ariaSelected","sortSeqMap","true","false","ariaSortMap","HeaderRow","serviceIndex","cellKeyDown","cellClick","rowIndexes","sortDir","sortLabel","ariaAttrs","ariaDescription","onSortChange","sortChange","onGroupChange","groupChange","headerCellProps","selectionValue","cellRender","sortIcon","dblClickHandler","oldDescriptor","newDescriptor","columnsMap","GridFilterCell","FilterRow","headerCellClassName","setFilter","oldFilters","filterCells","currentActiveFilter","currentFilters","activeFilter","filterCellProps","GroupingIndicator","groupRemove","onRemove","GroupPanel","onGroupRemove","newGroups","onGroupSortChange","groupDesc","resolveTitle","refCallback","Footer","footerWrap","colGroupFooter","cached","topCacheCount","attendedSkip","propsSkip","scrollableVirtual","realSkip","heightContainer","fixedScroll","askedSkip","tableTranslate","allRows","tableBody","accumulate","syncTimeout","rowHeights","percentage","targetFloorScrollPosition","rowsCount","floatRowIndex","rowpercentage","microAdjust","rowIndexOffset","grid","ColumnResize","triggerResize","dragCue","stopImmediatePropagation","oldWidth","fixateInitialWidths","setWidths","onResize","columnIds","colGroupMain","leafsForAdjust","currentCol","leafs","indexesForAdjust","currentColumn","tables","colgroups","maxWidths","colgroup","updateColElements","affectedColumns","leafColumns","_loop_1","currentColumnFloatWidth","currentColumnFloorWidth","currentWidth","remainingCount","perCol","coef","indexInOriginal","toAdjust","more","colToAdjust","targetWidth","CommonDragLogic","columnReorder","groupReorder","columnToGroup","refDragElementClue","refDropElementClue","startColumn","startGroup","currentGroup","groupPanelDivElement","refGroupPanelDiv","getGroupIndex","invalidIndex","targetElement","updateDragElementClue","updateDropElementClue","prevColumnIndex","nextColumnIndex","prevGroupIndex","nextGroupIndex","dropElementClue","dragElementClue","this_1","state_1","GridCell","dataAsString","GridGroupCell","columnsCount","definedField","GridRow","isAltRow","isInEdit","isHidden","GridHeaderSelectionCell","GridNoRecords","FooterRow","renderCell","tdProps","hasParentFooterCell","GridDetailCell","ariaColIndex","GridDetailHierarchyCell","Grid","_columns","_columnsMap","wrapperScrollTop","tableElement","_footer","forceUpdateTimeout","_gridId","scrollIntoView","selectedRow","fitColumns","columnVirtualization","_header","dataItems","getLeafDataItems","componentId","selectedField","getArguments","rowClick","onRowClick","rowDblClick","onRowDoubleClick","itemChange","onItemChange","expandField","expandChange","onHeaderSelectionChange","selectionRelease","onSelectionChange","selectionEvent","raiseDataEvent","pagerPageChange","targetId","resetTableWidth","onColumnResize","targetColumnId","dragLogic","shuffledColumns","propsData","tableUserSelect","groupingFooter","resolvedGroupsCount","initColumns","toolbar","groupingPanel","headerCellRender","dragClueRef","filterCellRender","tableWidth","tableViewPortWidth","colSpans","hiddenColumns","widths","widthOfHiddenColumns","considerNext","totalWidth","hiddenSeqLength","updateIndex","hiddenCols","lastVisible","anyHidden","allHidden","tableColumnsVirtualization","isColHidden","hiddenRows","currentAriaRowIndex","absoluteDataIndex","rowIndexStart","dataIndex_1","detailRowCount_1","isAlt","absoluteIndex","rowId","detailRowId","rowDataIndex","currentColumnIsInEdit","editField","inEdit","dataRow","rowRender","detailColspan","pagerProps","normalizeSettings","pageable","pager","colGroups","enableDragClues","moreData","dataStateChange","onDataStateChange","dataState","getDataState","spliced","eventColumnProps","onColumnReorder","prevIndex","colElements","columnElements","groupCount","propData","itemForColumnsGen","rightBorder","autoGenerateColumns","defaultServiceProps","columnIndexOffset","colIndexByLevel","needKFirst","stickyLeftWidth","stickyRightWidth","mapColumns","scrollbarSize","recalc","scrollDiv","useWillUnmount","onUnmount","valueRef","useUpdatedRef","isWindow","isOverflowing","bodyIsOverflowing","BLACKLIST","exclude","isHidable","ariaHidden","hide","ModalManager","_ref$hideSiblingNodes","hideSiblingNodes","_ref$handleContainerO","handleContainerOverflow","modals","containers","getScrollbarSize","isContainerOverflowing","modal","containerIndexFromModal","overflowing","findIndexOf","setContainerStyle","containerState","removeContainerStyle","modalIdx","containerIdx","dialog","backdrop","hideSiblings","showSiblings","_data$modals","isTopModal","resolveContainerRef","useWaitForDOMRef","onResolved","resolvedRef","setRef","earlyRef","nextRef","useModalManager","provided","modalManager","setDialogRef","setBackdropRef","Modal","_ref$role","_ref$backdrop","_ref$keyboard","keyboard","onBackdropClick","onEscapeKeyDown","backdropTransition","_ref$autoFocus","_ref$enforceFocus","enforceFocus","_ref$restoreFocus","restoreFocus","restoreFocusOptions","renderDialog","_ref$renderBackdrop","renderBackdrop","providedManager","containerClassName","onShow","_ref$onHide","onHide","setExited","lastFocusRef","handleShow","removeKeydownListenerRef","handleDocumentKeyDown","removeFocusListenerRef","handleEnforceFocus","currentActiveElement","handleHide","_lastFocusRef$current","handleBackdropClick","dialogProps","backdropElement","BackdropTransition","_fadeStyles","Selector","BootstrapModalManager","_ModalManager","adjustAndStore","adjust","_css","actual","restore","_css2","fadeStyles","Fade","ModalDialog","contentClassName","centered","dialogClass","CloseButton","ModalHeader","closeLabel","closeButton","ModalContext","divWithClassName","dialogAs","DialogTransition","dialogClassName","Dialog","ariaLabelledby","ariaDescribedby","backdropClassName","propsManager","modalStyle","setStyle","_useState2","animateStaticModal","setAnimateStaticModal","waitingForMouseUpRef","ignoreBackdropClickRef","removeStaticModalAnimationRef","setModalRef","_modal","modalContext","getModalManager","updateDialogStyle","containerIsOverflowing","modalIsOverflowing","handleWindowResize","handleDialogMouseDown","handleStaticModalAnimation","handleStaticBackdropClick","backdropProps","baseModalStyle","BaseModal","isAppearing","Body","ModalBody","Title","ModalTitle","ModalFooter","TRANSITION_DURATION","BACKDROP_TRANSITION_DURATION","tooltip","Feedback","_ref$type","_ref$tooltip","controlId","FormCheckInput","bsCustomPrefix","_ref$isValid","_ref$isInvalid","isInvalid","isStatic","_useContext","FormContext","custom","FormCheckLabel","FormCheck","_ref$inline","inline","_ref$disabled","_ref$feedbackTooltip","feedbackTooltip","feedback","_ref$title","propCustom","innerFormContext","hasLabel","Label","FormFileInput","FormFileLabel","FormFile","dataBrowse","_ref$inputAs","inputAs","FormControl","_classes","htmlSize","plaintext","_classes2","_classes3","_classes4","_classes5","FormGroup","FormLabel","srOnly","columnClass","FormText","muted","Switch","FormRow","FormImpl","validated","Group","Check","File","FormMode","AnnouncementManage","_formValue$id","_formValue$descriptio","_Moment$format","_Moment$format2","mountedRef","gridApi","setGridApi","gridColumnApi","setGridColumnApi","rowData","setRowData","formMode","setFormMode","None","formValue","setFormValue","effectiveDate","handleChange","onFormAction","messageId","actionType","setErrors","descriptionError","effectiveDateError","expirationDateError","New","resetMessage","Edit","messageService","Delete","onSave","getAnnouncementData","ColumnMenuFilter","_jsx","_jsxs","Form","_props$dataItem","_props$dataItem2","AnnouncementDisplay","announcementData","setAnnouncementData","announcementService","_Fragment","ARC","BLACK","BOTTOM","CENTER","CIRCLE","CROSS","DEFAULT_FONT","DEFAULT_PRECISION","FORMAT_REGEX","HEIGHT","INSIDE","INHERIT","LEFT","MIN_VALUE","OBJECT","OUTSIDE","RIGHT","ROUNDED_RECT","STRING","TOP","VALUE","WHITE","WIDTH","classArray","SPACE_REGEX","UNDEFINED","defined","alignPathToPixel","stroke","drawing","segments","clockwise","angle1","angle2","convertableToNumber","deepExtendOne","destination","propType","propInit","destProp","deepExtend","arguments$1","styleValue","SIZE_STYLES_REGEX","isSizeField","stylesArray","field$1","getSpacing","defaultSpacing","spacing","TemplateService","userImplementation","getTemplate","grep","hasClasses","HashMap","power","interpolateValue","TRIGGER","InstanceObserver","observer","handlerMap","trigger","callObserver","fnName","requiresHandlers","matchUserAgent","mousewheelDelta","logToConsole","arabicToRoman","roman","createPromise","resolveFn","rejectFn","_state","defId","definitionId","DEG_TO_RAD","MAX_NUM","MIN_NUM","deg","radians","KEY_STR","encodeBase64","utfInput","encodeUTF8","chr1","chr2","chr3","enc1","enc2","enc3","enc4","eventCoordinates","eventElement","initialTouch","isTransparent","limitValue","mergeSort","cmp","promiseAll","rad","degrees","bindEvents","eventNames","box","getPixels","elementSize","size$1","unbindEvents","elementPadding","paddingTop","Matrix","Class","multiplyCopy","invert","det","rotate","cos","sin","IDENTITY","matrixRegexp","transformMatrix","matrixString","members","parseMatrix","elementScale","parentMatrix","LRUCache","_size","_length","put","entry","_head","_tail","newer","older","REPLACE_REGEX","SPACE","normalizeText","objectKey","hashKey","defaultMeasureBox","baselineMarkerSize","TextMetrics","_cache","measure","baseline","cacheKey","cachedResult","measureBox","baselineMarker","_baselineMarker","cloneNode","textStr","marker","verticalAlign","measureText","FontLoader","fetchFonts","fonts","loadFonts","preloadFonts","setDefaultOptions","KI_PREFFIX","KSVG_PREFFIX","HTMLBaseIcon","addClasses","outerHTML","themeColor","stylingOptions","HTMLFontIcon","currentIconClass","_className","HTMLSvgIcon","iconNameMatch","svgIcons","svgElement","viewBox","ICON_TYPES","renderIcon","iconOptions","sparseArrayLimits","geometry","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgrey","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","matchNamedColor","colorNames","namedColors","regexp","BaseColor","toHSV","toRGB","toHex","toBytes","toCss","toCssRgba","rgb","toDisplay","parseColor","c1","c2","Bytes","RGB","HSV","toHSL","HSL","alpha","hue2rgb","alphaFromHex","Color","this$1","resolvedColor","resolveColor","formatRegex","processor","channels","normalizeByte","padDigit","brightness","percBrightness","isDark","fromBytes","fromRGB","fromHSV","fromHSL","DELETED","LegacySet","_index","_values","prototypeAccessors","SetWrapper","_set","prototypeAccessors$1","createHashSet","supported","supportsSet","defaultErrorHandler","INSERT","DELETE","BACKSPACE","TAB","ENTER","ESC","UP","DOWN","HOME","SPACEBAR","PAGEUP","PAGEDOWN","F10","F12","NUMPAD_PLUS","NUMPAD_MINUS","NUMPAD_DOT","autoMajorUnit","relativeValue","Point","theta","cosT","sinT","cx","cy","distanceTo","onCircle","radius","HasObservers","observers","_observers","addObserver","removeObserver","methodName","_suspended","optionsChange","geometryChange","suspend","resume","_observerField","setAccessor","getAccessor","TBase","capitalized","defineAccessors","toMatrix","transformation","staticAccessors","originPoint","translateWith","scaleCopy","transformCopy","doRound","arg0","arg1","minX","minY","maxX","maxY","minPoint","maxPoint","withAccessors","Size","Rect","cornerRadius","setOrigin","setSize","setCornerRadius","getOrigin","getCornerRadius","getSize","topLeft","bottomRight","topRight","bottomLeft","bbox","tl","bl","fromPoints","expandCopy","containsPoint","_isOnPath","rectOuter","rectInner","union","rect1","rect2","Box","x1","y1","x2","y2","wrap","targetBox","wrapPoint","arrayPoint","snapTo","alignTo","targetCenter","shrink","dw","unpad","points","getHash","overlaps","r1","rotatePoint","r3","r4","toRect","geom","hasSize","alignment","sizeFunc","Ring","innerRadius","startAngle","setRadius","newRadius","radianAngle","ax","ay","adjacentBox","sector","midAndle","midPoint","hw","endAngle","vector","startPoint","startVector","endPoint","endVector","dist","getBBox","angles","allAngles","numericComparer","startAngleIndex","endAngleIndex","Sector","PRECISION","tolerance","closeOrLess","ellipseExtremeAngles","rx","ry","extremeX","extremeY","Transformation","_matrix","_optionsChange","calculateAngle","bboxStartAngle","Arc","setCenter","radiusX","radiusY","anticlockwise","xRotation","pointAt","radian","curvePoints","_arcInterval","intervalAngle","subIntervalsCount","subIntervalAngle","currentAngle","nextAngle","_intervalCurvePoints","cp1","cp2","extremeAngles","currentAngleX","currentAngleY","currentPoint","currentPointX","currentPointY","oldStart","p1Derivative","_derivativeAt","p2Derivative","angleRad","pointRadius","intersection","p0","s1x","s2x","s1y","s2y","nx","ny","lineIntersection","inAngleRange","largeArc","swipe","arcParameters","parameters","cosine","sine","xT","yT","xt2","yt2","rx2","ry2","constT","cxT","cyT","uX","uY","vX","vY","acos","angleCosine","signEndAngle","normalizeArcParameters","ElementsArray","_splice","_change","_add","_remove","howMany","_clearObserver","_setObserver","GeometryElementsArray","OptionsStore","_wrap","composite","parentObj","_clear","wrapped","DASH_ARRAYS","dot","dash","longdash","dashdot","longdashdot","longdashdotdot","SOLID","BUTT","PATTERN","_initOptions","clip","createTransform","parentTransform","currentTransform","combinedMatrix","elementMatrix","clippedBBox","_clippedBBox","transformedPoint","_hasFill","_containsPoint","_hasStroke","isOutOfEndPoint","controlPoint","calculateCurveAt","t1","toCubicPolynomial","ComplexNumber","real","cNumber","addConstant","multiplyConstant","nthRoot","nthR","isReal","numberSign","solveCubicEquation","squareRoot","solveQuadraticEquation","y3","z1","z2","b3a","hasRootsInRange","rootField","polynomial","roots","lineIntersectionsCount","pointAccessor","definePointAccessors","arrayLimits","Segment","controlIn","controlOut","bboxTo","toSegment","segmentAnchor","toSegmentAnchor","_curveBoundingBox","_lineBoundingBox","extremesX","_curveExtremesFor","extremesY","xLimits","yLimits","extremes","_curveExtremes","x3","x4","t2","_intersectionsTo","rayIntersection","curveIntersectionsCount","_isOnCurveTo","endSegment","rotatedPoints","_isOnLineTo","_isOnPathTo","withPoints","pointsToCurve","pointsIn","removeDuplicates","initialControlPoint","lastControlPoint","tangent","getTangent","firstControlPoint","secondControlPoint","controlPoints","getControlPoints","cp0","controlPoints$1","controlPoints$2","tangent$2","lineFunction","xField","yField","restrict","switchOrientation","calculateFunction","isLine","monotonic","isMonotonicByField","invertAxis","secondCP","oldXField","firstCP","restrictControlPoint","cp","xValue","yValue","anonymous","newFill","IDENTITY_MATRIX_HASH","matrixHash","_bboxCache","_matrixHash","_bbox","toLineParamaters","insertPosition","reflectionPoint","third","quadraticToCubicControlPoints","scaledPoint","isRelative","lineTo","curveTo","arcTo","lastControlIn","previousCommand","cubicControlPoints","SEGMENT_REGEX","SPLIT_REGEX","pathInstance","closePath","command","parseParameters","moveTo","ShapeMap","elementsBoundingBox","applyTransform","boundingBox","elementBoundingBox","rawBBox","elementsClippedBoundingBox","Path","lineJoin","lastSegment","arc","_addArcSegments","segmentStart","segmentEnd","currentType","print","intersectionsCount","pathWidth","segmentBox","MultiPath","fromRect","curveFromPoints","fromArc","paintable","measurable","parsePath","ShapeBuilder","createRing","draw","innerEnd","PI_DIV_2","Circle","_pointAt","pointDistance","geometryAccessor","defineGeometryAccessors","GeometryCircle","_geometry","withGeometry","childrenField","traverse","childrenChange","_reparent","insert","insertAt","removeAt","newParent","traversable","swing","linear","easeOutElastic","asin","animationFrameProxy","animationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","AnimationFactory","_items","easing","setup","play","easingFunctions","finish","loop","_stopped","wallTime","easingPosition","ChartElement","initUserOptions","reflow","currentChild","getRoot","getSender","getService","sender","chartService","translateChildren","childrenCount","renderVisual","createVisual","addVisual","renderChildren","createAnimation","renderComplete","visual","chartElement","appendVisual","childVisual","noclip","clipRoot","stackRoot","stackVisual","isStackRoot","visuals","hasHighlight","highlight","createHighlight","toggleHighlight","customVisual","_highlight","highlightOptions","highlightVisualArgs","series","category","runningTotal","createGradientOverlay","gradientOptions","createGradient","supportsPointInactiveOpacity","BoxElement","shrinkToFit","hasSetSize","reflowPaddingBox","vAlign","paddingBox","contentBox","hasBox","background","visualStyle","dashType","cursor","ShapeElement","pointData","halfWidth","halfHeight","borderRadius","visualOptions","StopsArray","optionsAccessor","GradientStop","defineOptionsAccessors","withOptions","Gradient","stops","_createStops","_userSpace","userSpace","addStop","removeStop","LinearGradient","RadialGradient","_radius","_fallbackFill","fallbackFill","RADIAL","glass","sharpBevel","roundedBevel","roundedGlass","supportVML","sharpGlass","bubbleShadow","boxDiff","boxes","RootElement","rootOptions","gradients","currentBox","createBackground","drawingGradient","hashCode","gradient","GRADIENTS","usedSpace","currentStops","currentStop","innerRadialStops","cleanGradients","FloatElement","_initDirection","groupAxis","elementAxis","groupSizeField","elementSizeField","groupSpacing","elementSpacing","vSpacing","reflowChildren","groupOptions","groupsSize","maxGroupElementsSize","groupsCount","groupsStart","alignStart","groupStart","groupIdx","groupElements","elementStart","groupElementsCount","groupElementStart","elementBox","maxSize","groupElementsSize","DrawingText","rectToBox","ROWS_SPLIT_REGEX","TextBox","_initContainer","_autoReflow","floatElement","textOptions","rowIdx","visualFn","_boxReflow","visualBox","visualContext","normalBox","rotatedBox","rotationTransform","getDefaultVisual","boxCenter","_textBox","buildTitle","titleOptions","orderTitles","titles","collapseVerticalMargins","prevBox","AxisLabel","culture","click","widget","alignRotation","rotationMatrix","rotationOrigin","alignAxis","distanceAxis","axisAnchor","distanceLeft","distanceRight","alignCenter","Note","childAlias","noteTemplate","aliasFor","wrapperBox","lineStart","linePoints","createLine","defaultVisual","over","FORMAT_REPLACE_REGEX","FormatService","_intlService","localeAuto","ChartService","chart","notify","isPannable","pannable","lock","DomEventsBuilder","createAxisTick","tickOptions","tickX","tickY","createAxisGridLine","gridLine","lineEnd","Axis","labels","majorTickSize","minorTickSize","minorTicks","minorTickType","majorTicks","majorTickType","initFields","_deferLabels","createLabels","createTitle","createNotes","labelsRange","labelsCount","normalizeLabelRotation","labelOptions","clearLabels","autoRotateLabels","labelContext","createAxisLabel","clearTitle","lineBox","mirror","axisX","axisY","lineWidth","visualSize","notes","parseNoteValue","note","createPlotBands","gridLinesVisual","gridLines","_gridLines","createTicks","lineGroup","majorUnit","tickLineOptions","tickPositions","skipUnit","getMajorTickPositions","getMinorTickPositions","minorUnit","_alignLines","_lineGroup","getActualTickSize","tickSize","_backgroundPath","plotBands","plotArea","_plotbandGroup","pane","axes","slotX","slotY","getSlot","createPlotBandLabel","bandRect","textbox","labelTemplate","createGridLines","minorGridLines","majorGridLines","axisLineVisible","linePos","lineOptions","sizeFn","titleSize","space","boxSize","maxLabelSize","labelSize","arrangeTitle","arrangeLabels","arrangeNotes","getLabelsTickPositions","labelTickIndex","labelsBetweenTicks","tickIx","firstTickPosition","nextTickPosition","positionStart","positionEnd","positionLabel","labelBox","labelOffset","labelX","labelY","autoRotateLabelAngle","slotWidth","labelAngle","slot","shouldRenderNote","noteSlot","secondAxis","axisLabelText","tmpl","defaultText","maxLabelOffset","lastLabel","offsetField","startPosition","endPosition","maxStartOffset","maxEndOffset","startTick","endTick","limitRange","rangeSize","valueRange","seriesMin","seriesMax","lineDir","lineInfo","lineSize","axisDir","axisOrigin","pointOffset","scaleToDelta","rawScale","justified","prepareUserOptions","axisCrossingValue","MILLISECONDS","SECONDS","MINUTES","HOURS","DAYS","WEEKS","MONTHS","YEARS","TIME_PER_SECOND","TIME_PER_MINUTE","TIME_PER_HOUR","TIME_PER_DAY","TIME_PER_WEEK","TIME_PER_MONTH","TIME_PER_YEAR","TIME_PER_UNIT","absoluteDateDiff","addTicks","ticks","addDuration","dateValue","daysToSubtract","startOfWeek","roundedDate","tzDiff","addHours","floorDate","ceilDate","dateComparer","dateDiff","toTime","dateEquals","timeIndex","baseUnit","dateIndex","baseUnitStep","startDate","parseDates","CategoryAxis","_ticks","categoriesHash","categories","srcCategories","definedMin","definedMax","rangeIndices","totalRange","roundedRange","_seriesMax","scaleOptions","hideOutOfRangeLabels","valueAxis","firstLabel","getTicks","labelTicks","tickIndices","stepSize","indices","getTickPositions","positions","hasMinor","filterOutOfRangePositions","endIndex","slotBox","singleSlot","limitSlot","limittedSlot","categoryIndex","pointCategoryIndex","startValue","getCategory","totalIndex","categoryAt","categoriesCount","translateRange","scaleRange","limitedRangeIndices","minDelta","maxDelta","zoomRange","totalMin","totalMax","hideOutOfRangeNotes","pan","pointsRange","diffStart","diffEnd","rangeMin","rangeMax","_categoriesMap","currentRangeIndices","totalCount","totalLimit","totalRangeIndices","mapCategories","COORDINATE_LIMIT","DateLabelFormats","BASE_UNITS","FIT","categoryRange","clearCache","_range","EmptyDateRange","displayIndices","displayRange","valueIndex","valuesCount","dateAt","DateRange","roundToBaseUnit","lowerEnd","roundToTotalStep","expandEnd","justifyEnd","valueStart","displayStart","valueEnd","displayEnd","autoBaseUnit","startUnit","startStep","unitSteps","nextStep","categoryLimits","autoBaseUnitSteps","maxDateGroups","autoUnit","autoUnitIx","totalUnits","initUnit","lastCategory","minDiff","categoryIx","defaultBaseUnit","_indices","minIdx","maxIdx","upper","roundedStep","DateCategoryAxis","dataRange","_parsed","panning","userSetBaseUnit","userSetBaseUnitStep","maxDivisions","safeOptions","forecast","_forecast","before","after","divisionOptions","dataRangeOptions","divisionRange","rangeLabels","isEmpty","totalLimits","panRange","datesRange","indicesRange","autoBaseUnitStep","maxDiff","rangeDiff","baseUnitIndex","stepIndex","createRangeLabels","arrangeRangeLabels","position$1","autoRotateRangeLabels","hideOverlappingLabels","firstRangeLabel","lastRangeLabel","i$1","rangeLabel","unitFormat","createLabel","rotateLabel","dateRange","limitCoordinate","MIN_VALUE_RANGE","NumericAxis","autoOptions","narrowRange","autoMin","axisMin","autoAxisMin","autoMax","axisMax","autoAxisMax","roundToMajorUnit","remainderClose","autoAxisOptions","totalOptions","totalAxisOptions","userOptions","userSetMin","userSetMax","clearNullValues","userSetLimits","axisOptions","totalMajorUnit","getDivisions","stepValue","divisions","skipStep","endValue","isValidRange","ratio","DateValueAxis","timeUnits","baseUnitTime","userMajorUnit","actualUnits","unitsToAdd","applyDefaults","axisCrossingValues","limittedRange","LogarithmicAxis","logMaxRemainder","throwNegativeValuesError","initRange","logMin","logMax","floorMax","traverseMajorTicksPositions","tickPosition","traverseMinorTicksPositions","minorOptions","_minorIntervalOptions","minorStep","majorAngles","minorAngles","skipMajor","majorGridLineAngles","renderMajorGridLines","minorGridLineAngles","renderMinorGridLines","renderGridLines","radiusCallback","circle","gridLineAngles","skipAngles","divs","intervals","altAxisVisible","RadarCategoryAxis","reflowLabels","skipOption","stepOption","divCount","divAngle","majorIntervals","minorIntervals","minorAngle","minorRadius","band","plotBandSlot","ring","totalDivs","slotAngle","fromValue","slotStart","GridLinesMixin","PolarAxis","instanceOptions","angularDistance","polarAxis","bandStyle","plotBandPoints","innerPoints","outerPoints","innerCircle","outerCircle","radarMajorGridLinePositions","radarMinorGridLinePositions","tickRadius","angleIx","gamma","beta","axisType","RadarNumericAxis","minorSkipStep","RadarNumericAxisMixin","RadarLogarithmicAxis","CurveProcessor","dataPoints","tangent$1","ChartAxis","_axis","findAxisByName","ChartPane","chartsVisual","chartContainer","_pane","ChartPlotArea","_plotArea","backgroundVisual","_bgVisual","countNumbers","sumOrNull","avg","getField","SeriesBinder","_valueFields","_otherFields","_nullValue","_undefinedValue","seriesTypes","valueFields","otherFields","_makeValue","canonicalFields","bindPoint","pointIx","fieldData","_bindFromArray","srcValueFields","sourceFields","srcPointFields","_bindFromObject","srcFields","srcFieldName","sourceFieldName","percentRegex","standardDeviationRegex","ErrorRangeCalculator","errorValue","initGlobalRanges","deviationMatch","createValueGetter","getAverage","deviation","getStandardDeviation","errorRange","globalRange","standardError","getStandardError","binder","getErrorRange","pointValue","percentValue","isSample","squareDifferenceSum","INITIAL_ANIMATION_DURATION","FADEIN","BORDER_BRIGHTNESS","START_SCALE","ERROR_LOW_FIELD","ERROR_HIGH_FIELD","INTERPOLATE","ABOVE","BELOW","SMOOTH","STEP","AREA","BAR","BOX_PLOT","BUBBLE","BULLET","CANDLESTICK","COLUMN","DONUT","FUNNEL","PYRAMID","HEATMAP","HORIZONTAL_WATERFALL","LINE","OHLC","PIE","POLAR_AREA","POLAR_LINE","POLAR_SCATTER","RADAR_AREA","RADAR_COLUMN","RADAR_LINE","RANGE_AREA","RANGE_BAR","RANGE_COLUMN","SCATTER","SCATTER_LINE","VERTICAL_AREA","VERTICAL_BOX_PLOT","VERTICAL_BULLET","VERTICAL_LINE","VERTICAL_RANGE_AREA","WATERFALL","EQUALLY_SPACED_SERIES","TRENDLINE_LINEAR","TRENDLINE_MOVING_AVERAGE","TRENDLINE_SERIES","SERIES_CLICK","SERIES_HOVER","SERIES_OVER","SERIES_LEAVE","PLOT_AREA_HOVER","PLOT_AREA_LEAVE","DRAG","DRAG_END","DRAG_START","ZOOM_START","ZOOM","ZOOM_END","SELECT_START","SELECT","SELECT_END","SHOW_TOOLTIP","HIDE_TOOLTIP","LOGARITHMIC","CATEGORY","INSIDE_END","OUTSIDE_END","MOUSEWHEEL","DRILLDOWN_FIELD","ErrorBarBase","endCaps","valueBox","getAxis","centerBox","capsWidth","getCapsWidth","capValue","capStart","capEnd","createDefaultVisual","CategoricalErrorBar","seriesValueAxis","anyHasZIndex","appendIfNotNull","areNumbers","segmentVisible","pointVisibility","bindSegments","seriesCount","equalsIgnoreCase","evalOptions","dryRun","needsEval","excluded","filterSeriesByType","currentSeries","getDateField","hasGradientOverlay","isDateAxis","sampleCategory","dateCategory","singleItemOrArray","AREA_REGEX","findNext","pointHasValue","outPoint","hasItem","createOutOfRangePoints","hasMinPoint","hasMaxPoint","missingValues","seriesMissingValues","_outOfRangeMinPoint","_outOfRangeMaxPoint","CategoricalChart","categoryAxis","seriesCategoryAxis","valueAxisRanges","categoryPoints","seriesPoints","seriesOptions","_evalSeries","traverseDataPoints","addValue","pointOptions","seriesIx","pointType","invertAxes","plotValue","isStacked100","otherValues","categorySum","otherStack","plotRange","isStacked","positive","prevValue","isStackedBar","otherValue","categoryAxisCrossingValue","stackLimits","axisName","stackName","pIx","updateStackRange","chartSeries","limitsCache","limits","errorTotals","addErrorBar","errorBars","lowValue","highValue","seriesErrorRanges","addPointErrorBar","stackedErrorRange","updateRange","errorBar","createPoint","owner","noteText","evalPointOptions","_defaults","doEval","axisRange","namedValueAxes","categorySlots","chartPoints","categorySlot","valueSlot","pointSlot","aboveAxis","stackValue","reflowPoint","reflowCategories","limitPoints","limitPoint","limitedSlot","axisIndex","_outOfRangeCallback","seriesIx$1","currentCategory","seriesIx$2","outOfRangePoint","formatPointValue","hover","createNote","LinePoint","tooltipTracking","markers","_rendered","createMarker","labelText","markerBorder","markerBox","_childBox","childBox","reflowLabel","noteTargetBox","defaultColor","shadow","highlightVisual","halfSize","tooltipAnchor","clipBox","horizontalAlign","overlapsBox","unclipElements","PointEventsMixin","NoteMixin","LineSegment","toGeometryPoints","segmentVisual","coords","getNearestPoint","toGeometryPoint","lintPoint","stepAxis","stepDir","calculateStepPoints","previousPoint","stepPoint","StepLineSegment","StepLineMixin","SplineSegment","LineChartMixin","renderSegments","_segments","sortedPoints","sortPoints","pointCount","createSegment","_addSegment","nearestPoint","allPoints","nearestPointDistance","ClipAnimation","_setEnd","setX","transitions","clipPath","_setChildrenAnimation","animationPoints","LineChart","ClipAnimationMixin","AreaSegment","prevSegment","stackPoints","createFill","createStroke","lineCap","strokeSegments","_strokeSegments","createStrokeSegments","segmentsFromPoints","stackSegments","createStackSegments","hasStackSegment","fillSegments","hasStackSegments","fillToAxes","fillPath","crossingValue","endSlot","firstPoint","lastPoint","StepAreaSegment","SplineAreaSegment","curveProcessor","AreaChart","previousSegment","_gapStackPoints","_stackPoints","stackPoint","startIdx","endIdx","currentSeriesIx","_previousSegmentPoint","gapStackPoint","_createGapStackPoint","segmentIx","seriesIdx","AxisGroupRangeTracker","axisRanges","chartAxisRanges","chartRange","query","BarLabel","textBox","alignToClipBox","parentBox","Bar","rectVisual","createRect","getBorderColor","baseColor","_brightness","borderColor","forEachReverse","ClusterLayout","gap","slots","slotSize","StackWrap","positionAxis","BarChart","clusterType","stackType","negativeColor","cluster","getStackWrap","stackWrap","stackGroup","wraps","_stackGroup","zeroSlot","stackAxis","childrenLength","_setAnimationOptions","pointVisual","Candlestick","ocSlot","lhSlot","realBody","mid","lines","reflowNote","_mainVisual","mainVisual","createOverlay","createBody","createLines","drawLines","lineStyle","normalColor","CandlestickChart","splitValue","downColor","BoxPlot","whiskerSlot","boxSlot","q1","reflowBoxSlot","reflowWhiskerSlot","medianSlot","median","mean","meanSlot","meanPoints","calcMeanPoints","whiskerPoints","calcWhiskerPoints","medianPoints","calcMedianPoints","renderOutliers","outliers","outerFence","outlierValue","markersBorder","reflowOutliers","whiskers","VerticalBoxPlot","BoxPlotChart","filterOutliers","ScatterErrorBar","seriesAxes","ScatterChart","_initFields","xAxisRanges","yAxisRanges","valueErrorField","lowField","highField","createMissingValue","xAxisName","xAxis","yAxisName","yAxis","xAxisRange","yAxisRange","namedXAxes","namedYAxes","Bubble","highlightGroup","BubbleChart","_maxSize","negativeValues","updateBubblesSize","pointsCount","animationOptions","minR","minSize","maxR","minArea","areaRatio","Target","Bullet","targetValueSlot","targetSlotX","targetSlotY","targetSlot","bodyVisual","BulletChart","seriesItem","wrapData","bulletOptions","bullet","BaseTooltip","getStyle","pointColor","backgroundColor","paddingBottom","tooltipOptions","CrosshairTooltip","crosshair","formatService","initAxisName","showAt","stickyMode","getAnchor","ref_options","Crosshair","moveLine","getBox","dim","axisLineBox","currentAxis","ChartContainer","shouldClip","_clipBox","chartsBox","clipRect","unclipLabels","charts","Pane","ID","appendAxis","appendAxisAt","appendChart","removeAxis","removeChart","allAxes","vGridLines","hGridLines","refresh","notifyRender","axisValueField","length$1","axis$1","lineBox$1","paneIndex","PlotAreaBase","initSeries","legend","crosshairs","originalOptions","originalSeries","_bindCache","createPanes","createCrosshairs","paneDefaults","paneOptions","panes","panesLength","currentPane","crosshairOptions","currentCrosshair","removeCrosshairs","hideCrosshairs","findPane","matchingPane","findPointPane","axisToRemove","filteredAxes","chartToRemove","filteredCharts","addToLegend","inactiveItems","inactiveItemsLabels","seriesVisible","visibleInLegend","itemLabelOptions","markerColor","groupAxes","xAxes","yAxes","paneIx","paneAxes","axisIx","groupSeriesByPane","seriesByPane","seriesPaneName","filterVisibleSeries","reflowPanes","detachLabels","reflowAxes","reflowCharts","redraw","panesArray","crossingAxes","crossingValues","valuesToAdd","alignAxisTo","targetAxis","targetCrossingValue","slotEdge","targetEdge","axisBox","alignAxes","xAnchor","yAnchor","xAnchorCrossings","yAnchorCrossings","leftAnchors","rightAnchors","topAnchors","bottomAnchors","paneId","paneAnchor","anchorCrossings","_overlap","_mirrored","pane$1","paneId$1","visible$1","anchor$1","anchorCrossings$1","shrinkAxisWidth","axisGroupBox","shrinkAxisHeight","shrinked","fitAxes","paneBox","currentAxis$1","reflowPaneAxes","autoRotateAxisLabels","groupedAxes","rotated","allPaneAxes","chartPane","remainingHeight","autoHeightPanes","percents","currentPane$1","i$2","currentPane$2","backgroundBox","axesCount","axisA","axisB","chartsBoxes","addBackgroundPaths","multipath","backgroundContainsPoint","pointsByCategoryIndex","pointsBySeriesIndex","seriesIndex","filterPoints","pointsBySeriesName","findPoint","paneByPoint","detachAxisGroupLabels","labelAxisCount","labelAxis","createLabelAxis","onAxis","isTrendline","trendlineFactory","createTrendlineSeries","modifiedSeries","forSeries","seriesByName","trendlineSeries","isSingleAxis","_dispatchEvent","SeriesAggregator","defaultAggregates","seriesFields","_seriesFields","rootAggregate","_series","_binder","fieldAggregate","canonicalName","aggregatePoints","srcPoints","_bindPoints","firstDataItem","srcValues","_bindField","DefaultAggregates","seriesType","RangeBar","fromOptions","toOptions","labelFrom","_createLabel","labelTo","RangeBarChart","plotLimits","RangeLinePoint","AUTO","RangeAreaPoint","initLabelsFormat","fromPoint","toPoint","copyFields","fromBox","toBox","positionLabels","fromLabelPosition","toLabelPosition","RangeAreaSegment","toPoints","fromSegments","toPath","fromPath","SplineRangeAreaSegment","createCurveSegments","StepRangeAreaSegment","RangeAreaChart","fromSlot","toSlot","OHLCPoint","oPoints","cPoints","lhPoints","oSlot","cSlot","OHLCChart","WaterfallSegment","WaterfallChart","createSegments","totalCategories","summary","prevPoint","registry","impl","sourceValues","slope","intercept","xMin","xMax","seriesValues","calculateSlope","currentRange","categoryField","averagePoints","lastValue","trendline","calculateMovingAverage","calculatePoints","linearTrendline","movingAverageTrendline","AREA_SERIES","OUT_OF_RANGE_SERIES","CategoricalPlotArea","namedCategoryAxes","valueAxisRangeTracker","_seriesPointsCache","_currentPointsCache","stack100","createCategoryAxes","aggregateCategories","createCategoryAxesLabels","createCharts","createValueAxes","trendlineRegistry","filterSeries","trendlineAggregateForecast","srcSeries","aggregateSeries","paneSeries","visibleSeries","groupSeriesByCategoryAxis","groupIx","createChartGroup","createAreaChart","createRangeAreaChart","createBarChart","createRangeBarChart","createBulletChart","createCandlestickChart","createBoxPlotChart","createOHLCChart","createWaterfallChart","createLineChart","processedSeries","axisPane","outOfRangePoints","clearSeriesPointsCache","seriesSourcePoints","dateAxis","srcData","getFn","aggregator","categoryItem","categoryIdx","categoriesToAdd","defaultPaneName","stackableChartOptions","firstSeries","categoryAxes","unique","axisSeries","groupSeries","barChart","rangeColumnChart","bulletChart","lineChart","areaChart","rangeAreaChart","waterfallChart","axisRequiresRounding","categoryAxisName","categoryAxisIndex","centeredSeries","seriesAxis","aggregatedAxis","definitions","isJustified","primaryAxis","tracker","defaultRange","baseOptions","defaultAxisRange","_eventCoordinates","pointPane","updateAxisOptions","targetOptions","PlotAreaEventsMixin","Observable","one","getArray","handlersIsFunction","eventName$1","original","unbind","_defaultPrevented","Surface","_kendoExportVisual","exportVisual","_click","_handler","_mouseenter","_mouseleave","_mousemove","_visual","_enableTracking","domNode","_kendoNode","currentSize","_resize","suspendTracking","_suspendedTracking","resumeTracking","_elementOffset","_surfacePoint","coord","inverseTransform","BaseNode","childNodes","observe","removeSelf","invalidate","renderAttr","renderAllAttr","attrs","renderStyle","isWindowAvailable","agentRxs","wp","fire","android","iphone","ipad","meego","webos","blackberry","playbook","windows","tizen","sailfish","ffos","osRxs","ios","flat","desktopBrowserRxs","mobileBrowserRxs","omini","omobile","mobilesafari","chrome","testRx","rxs","dflt","browserInfo","detectDesktopBrowser","minorVersion","os","device","majorVersion","flatVersion","PhoneGap","appMode","standalone","detectMobileOS","reComment","reDeclaration","reDoubleQuoted","reSingleQuoted","parseInlineStyles","styleString","styleObject","styleAttr","replaceStyleAttr","restoreStyleAttr","SVG_NS","renderSVG","svg","setInnerHTML","testFragment","testContainer","hasParser","DOMParser","chartDoc","parseFromString","importedDoc","adoptNode","ampRegExp","ltRegExp","quoteRegExp","aposRegExp","gtRegExp","htmlEncode","TRANSFORM","DefinitionMap","isDefinition","clearDefinitions","childNode","NODE_MAP","createDefinitions","attachTo","domElement","setElement","nodes","childElement","updateDefinition","attr","removeAttr","accessibilityOptionsChange","allAttr","toggleAttr","allCss","mapTransform","renderTransform","transformChange","mapStyle","renderOpacity","renderId","renderClassName","renderRole","renderAriaLabel","renderAriaRoleDescription","ariaRoleDescription","renderAriaChecked","ariaChecked","hasDefinitions","definitionChange","refUrl","renderDefinitions","mapDefinitions","skipBaseHref","baseHref","baseUrl","hashIndex","GradientStopNode","renderOffset","GradientNode","loadStops","stopNode","mapCoordinates","renderCoordinates","mapSpace","LinearGradientNode","RadialGradientNode","PatternNode","getWidth","getHeight","ClipNode","renderClipRule","DefinitionNode","definitionMap","addDefinitions","removeDefinitions","createDefinition","addDefinition","mapItem","removeDefinition","RootNode","defs","ATTRIBUTE_MAP","PathNode","renderData","mapFill","mapStroke","renderLinecap","renderDashType","renderStroke","dashArray","renderFill","ArcNode","CircleNode","GroupNode","ImageNode","mapPosition","mapSource","renderPosition","renderSource","MultiPathNode","RectNode","ENTITY_REGEX","decodeEntities","TextNode","setY","renderContent","renderTextAnchor","renderPaintOrder","paintOrder","Image","BaseSurface","_root","_template","_rootElement","ctm","getScreenCTM","alignToScreen","mouseover","mouseout","svgStyles","initClip","clearClip","setClip","beginPath","renderPoints","setTransform","loadElements","cors","setOpacity","globalAlpha","opactity","renderTo","save","lastExecTime","throttled","elapsed","FRAME_DELAY","canvas","getContext","invalidateHandler","_invalidate","_rescale","_devicePixelRatio","fixedScale","clearRect","QuadRoot","shapes","_quadNode","pointShapes","QuadNode","inBounds","nodeRect","nodeBottomRight","inserted","_initChildren","ROOT_SIZE","ShapesQuadTree","initRoots","rootMap","rootElements","pointShape","sectorRoot","assignZindex","zIndexComparer","levelWeight","_zIndex","bboxChange","_insertShape","elementsArray","_insert","sectors","getSectors","inRoot","bottomX","bottomY","SurfaceCursor","surface","_resetCursor","_shapeCursor","_current","_defaultCursor","_getCursor","_setCursor","renderPath","prevOut","bezierCurveTo","setLineDash","setLineCap","setLineJoin","setFill","setStroke","hasFill","setGradientFill","setPatternFill","fillStyle","createLinearGradient","createRadialGradient","addColorStop","addGradientStops","patternCanvas","patternContext","createPattern","strokeStyle","mozDash","webkitLineDash","onLoad","crossOrigin","complete","drawImage","textAlign","strokeText","fillText","_mouseTrackHandler","_trackMouse","_searchTree","_cursor","image","rootElement","loadingStates","resolveDataURL","toDataURL","currentShape","_currentShape","hasDocument","SurfaceFactory","SVGSurface","CanvasSurface","hasFeature","preferred","Highlight","_points","arrayPoints","togglePointHighlight","toggleHandler","isHighlighted","acceptKey","mouseKey","toChartAxisRanges","ranges","Pannable","_active","_panAxes","updatedAxes","ZoomSelection","marquee","_marquee","marqueeColor","removeElement","setStyles","zoomPane","_zoomPane","_zoomPaneClipBox","_selectionPosition","_updateAxisRanges","startLocation","MousewheelZoom","rate","updateRanges","sizeField","alignStartReverse","alignContent","justifyContent","alignItems","orientation","lineSpacing","revers","Layout","_rect","_fieldMap","_initMap","fieldMap","groupsSizeField","groupsAxis","justifyAlign","groupBox","_initGroups","groupOrigin","elementOrigin","arrangeElements","transofrm","translateToPoint","bboxes","scaledStart","newStart","_newGroup","addGroup","_addToGroup","LegendLayout","legendItem","LegendItem","createContainer","markerOptions","eventSink","_itemOverlay","_legendItemHover","pointIndex","_unsetActivePoint","HORIZONTAL","CUSTOM","Legend","createContainers","createLegendTitle","createItems","userAlign","hasTitle","itemsContainer","innerElement","hasItems","legendBox","containerCustomReflow","containerReflow","alignTarget","containerBox","createTitleLayout","appendTitleLayoutContent","layout","PlotAreaFactory","_registry","trendlines","createDiv","closestHandle","Selection","_dateAxis","initOptions","createElements","onPane","leftMask","rightMask","leftHandle","rightHandle","selectionStyles","leftHandleHeight","rightHandleHeight","borderRightWidth","mousewheel","_mousewheelHandler","_mousewheel","_domEvents","_move","_end","tap","_tap","press","_press","gesturestart","_gesturestart","gesturechange","_gesturechange","gestureend","_gestureend","_mwTimeout","_rangeEventArgs","_pointInPane","modelCoords","_toModelCoordinates","bodyRect","inBody","moveTarget","oldRange","rightClick","_slot","leftMaskWidth","rightMaskWidth","toValue","zDir","relative","Tooltip","SharedTooltip","tooltipPoints","_slotAnchor","_defaultAnchor","categoryText","categoryFormat","slotCenter","BarChartAnimation","fromScale","BubbleAnimation","FadeInAnimation","fadeTo","PieAnimation","ScatterLineChart","missingValue","scatterValueGetter","samplingInterval","scatterRegistry","scatterLinearTrendLine","scatterMovingAverageTrendline","XYPlotArea","xAxisRangeTracker","yAxisRangeTracker","filteredSeries","createScatterChart","createScatterLineChart","createBubbleChart","createAxes","createXYAxis","inferredDate","namedAxes","isLog","typeSamples","seriesAxisName","firstPointValue","xAxesOptions","yAxesOptions","xValues","yValues","scatterTrendlineRegistry","PieSegment","autoTextColor","themeLabels","theme","seriesDefaults","animationDelay","labelsOptions","labelsDistance","lp","labelHeight","labelWidth","createSegmentVisual","borderOptions","singleSegment","tooltipAlignment","RAD_30","RAD_60","createLegendItem","legendOptions","pointVisible","legendItems","PieChart","seriesColors","colorsCount","anglePerValue","constantAngle","explode","evalSegmentOptions","segmentOptions","seriesConfigs","minWidth","halfMinWidth","defaultPadding","newBox","newBoxCenter","leftSideLabels","rightSideLabels","seriesConfig","labelComparator","leftLabelsReflow","rightLabelsReflow","distances","distanceBetweenLabels","distributeLabels","lr","firstBox","secondBox","_takeDistance","amount","available","boxX","labelDistance","boxY","hAlignLabel","connectors","_connectorLines","connectorsColor","connectorLine","centerPoint","sr","crossing","pointInCircle","autoFit","pieCenter","bboxBottom","reverseValue","originalX","sector_center","a1","a2","b1","b2","uat","PieChartMixin","PiePlotArea","createPieChart","pieChart","DonutSegment","DonutChart","holeSize","totalSize","seriesWithoutSize","currentSeries$1","DonutPlotArea","createDonutChart","donutChart","PolarPlotAreaBase","createPolarAxis","createValueAxis","axisDefaultRange","valueAxisOptions","valueAxisBox","heightDiff","PolarScatterChart","valueRadius","PolarLineChart","SplinePolarAreaSegment","_polarAxisCenter","PolarAreaSegment","centerSegment","xComparer","PolarAreaChart","_hasMissingValuesGap","PolarPlotArea","scatterChart","RadarLineChart","seriesSegments","groupBySeriesIx","isFirstDataPoint","isLastDataPoint","SplineRadarAreaSegment","RadarAreaSegment","RadarAreaChart","RadarSegment","RadarClusterLayout","slotSector","RadarStackLayout","childSector","RadarBarChart","RadarPlotArea","_hasBarCharts","_isStacked100","chartOptions","FunnelSegment","chartBox","createPath","FunnelChart","labelPadding","dynamicSlopeReflow","firstSegment","maxSegment","lastUpperSide","previousOffset","previousHeight","nextSegment","nextPercentage","dynamicHeight","segmentSpacing","constantSlopeReflow","decreasingWidth","neckRatio","finalNarrow","dynamicSlope","PyramidChart","FunnelPlotArea","createChart","chartType","minLightnessOffset","hsl","HeatmapPoint","labelColor","isRoundRect","halfBorderWidth","HeatmapChart","setRange","colorScale","indexX","indexY","xRange","yRange","ref$2","xIndex","yIndex","xIn","yIn","HeatmapPlotArea","bindCategories","createAxisLabels","xCategories","yCategories","createHeatmapChart","xAxisOptions","yAxisOptions","firstCategory","COLOR","FIRST","MAX","MIN","NOTE_TEXT","errorLow","errorHigh","AXIS_NAMES","MOUSEMOVE","CONTEXTMENU","MOUSELEAVE","Chart","themeOptions","_initElement","_originalOptions","_theme","_initTheme","_initHandlers","_initSurface","fontLoaded","_destroyed","_redraw","_attachEvents","_setElementClass","seriesCopies","resolveAxisAliases","applySeriesColors","chartArea","_selections","_destroySelections","_setupSelection","_noTransitionsRedraw","paneName","_model","findPaneByName","findPaneByIndex","seriesName","categoryName","pointByCategoryName","togglePointsHighlight","showTooltip","_sharedTooltip","_tooltip","hideTooltip","_surfaceWrap","renderAs","_destroySurface","_surfaceMouseenterHandler","_surfaceMouseleaveHandler","_getModel","_destroyView","_createTooltip","_createPannable","_createZoomSelection","_createMousewheelZoom","triggerPaneRender","_navState","_cancelDomEvents","exportOptions","currentOptions","clearMissingValues","_pannable","zoomable","_zoomSelection","_mousewheelZoom","_toggleDragZoomEvents","allowDrag","allowZoom","_dragZoomEnabled","_touchAction","_toggleDomEvents","toggleDrag","toggleZoom","_createSharedTooltip","axisDefaults","themeAxisDefaults","mapAxisOptions","axisColor","applyAxisDefaults","seriesLength","commonDefaults","themeSeriesDefaults","commonThemeDefaults","cleanupNestedSeriesDefaults","applySeriesDefaults","colors","seriesColor","_createPlotArea","_modelOptions","subtitle","skipSeries","selections","select","_selectStart","_selectEnd","_clickHandler","_mouseleaveHandler","_mouseover","_mouseout","_toDocumentCoordinates","_updateDrilldownPoint","_resetDrilldownPoint","_startDrilldown","obj$1","_shouldAttachMouseMove","_hoveredPoint","_plotAreaHovered","_hasInactiveOpacity","_activeChartInstance","_applySeriesOpacity","_updateSeriesOpacity","_stopChartHandlers","_gestureDistance","_zooming","mousewheelZoom","previousGestureDistance","scaleDelta","_drawingChartElement","leave","_startNavigation","_suppressHover","ranges$1","_endNavigation","_mousewheelZoomRate","totalDelta","chartEvent","_getChartElement","coordinates","_elementPadding","_padding","drawingElement","sharedTooltip","_startHover","_trackSharedTooltip","_propagateClick","handlingTap","_showInactiveOpacity","_displayTooltip","_displayInactiveOpacity","activePoint","multipleSeries","highlightPoints","chartInstance","_chartInstanceFromPoint","inactivePoints","_getInactivePoints","_getInactiveOpacityForSeries","_getAllPointsOfType","_updateHoveredPoint","hoveredPoint","drilldown","_drilldownState","resetOpacity","currSeries","defaultOpacity","_getDefaultOpacityForSeries","inactiveOpacity","activeSeries","_activePoint","hasInactiveOpacity","_hideInactiveOpacity","hasDefaultInactiveOpacity","defaultInactiveOpacity","_mouseMoveTrackHandler","_mouseMoveTracking","seriesPoint","_trackCrosshairs","overPlotArea","_tooltipCategoryIx","_sharedHighlight","pointArgs","hoverArgs","hideElements","keepTooltipOpen","_deferRedraw","_clearRedrawTimeout","_redrawTimeout","autoBind","bindCategoryAxisFromSeries","uniqueCategories","bindable","dataIx","srcDates","sortDates","uniqueDates","rowCount","rowIx","colCount","colIx","transpose","_isBindable","transitionsState","updateMouseMoveHandler","applyOptions","setDirection","setIntlService","noTransitionsRedraw","bar","rangeColumn","verticalLine","pie","donut","verticalArea","scatter","scatterLine","candlestick","ohlc","boxPlot","verticalBullet","polarArea","polarLine","radarArea","radarLine","waterfall","DATA_FIELDS","fieldValue","originalValue","nullValue","ChartSharedTooltip","NO_CROSSHAIR","wrapNumber","Sparkline","_initialWidth","stage","displayState","_autoWidth","_calculateWidth","currentChart","pointWidth","normalizeOptions","FadeOutAnimation","_initialOpacity","NavigatorHint","chartPadding","minPos","clearHideTimeout","_visible","tooltipStyle","_hideTimeout","_hideAnimation","hideDelay","NAVIGATOR_PANE","NAVIGATOR_AXIS","DEFAULT_PANE","ClonedObject","Navigator","chartObserver","clean","_redrawSelf","initSelection","axisClone","selectStart","selectEnd","filterAxes","silent","redrawSlaves","slavePanes","_drag","navigatorAxis","naviRange","inNavigator","liveDrag","showHint","_dragEnd","readSelection","ref_selection_options","_zoom","fromIx","toIx","_zoomEnd","__navi","naviOptions","attachAxes","attachSeries","valueAxes","justifyAxis","_collapse","autoBindElements","navigatorSeries","dateField","StockChart","stockDefaults","destroyNavigator","_fullRedraw","_dirty","partialRedraw","dirty","_seriesCount","copyNavigatorCategories","ANGULAR_SPEED","ARROW_POINTER","BAR_POINTER","DEFAULT_LINE_WIDTH","DEGREE","LINEAR","RADIAL_POINTER","RADIAL_RANGE_POINTER","buildLabelElement","geo","styleGeometry","styleBox","getRange","Gauge","contextService","surfaceElement","pointerValue","pointer","_setValueOptions","_draw","_visuals","allValues","arrayValues","_toggleTransitions","_surfaceSize","gaugeArea","_createGaugeArea","_createModel","_gaugeAreaMargin","currentTheme","areaGeometry","_surfaceElement","_getSize","defaultSize","_defaultSize","renderAxisTick","tickRenderOptions","renderTicks","tickGroup","LinearScale","renderLabels","scaleLine","renderLine","scaleTicks","renderRanges","linePath","Pointer","_oldValue","repaint","LinearPointer","pointerBox","pointerRangeBox","trackBox","trackSize","pointerHalfSize","getElementOptions","_margin","ArrowLinearPointerAnimation","toScale","translateX","translateY","ArrowLinearPointer","pointerShape","elementOptions","BarLinearPointerAnimation","newPoints","oldPoints","speed","BarLinearPointer","minSlot","sizeAxis","pointerPath","oldShape","renderTrack","trackOptions","LinearGauge","bboxX","bboxY","_shrinkScaleWidth","_getBox","_alignElements","_shrinkElements","_buildVisual","scaleElements","plotAreaBox","scaleBox","GeometryArc","GEO_ARC_ADJUST_ANGLE","drawTicks","tickAngles","getRadiusX","tickStart","tickEnd","rangeSegment","RadialScale","renderArc","labelElements","repositionRanges","hasRanges","ticksSize","labelsGroup","rangeDistance","isInside","hasLabelElements","setRadiusX","setRadiusY","paddingWidth","paddingHeight","labelPos","labelElement","prevLabelPos","labelTransform","rangeRadius","getRangeRadius","rangeSegments","segmentsCount","rangeGeom","rangePlaceholderColor","tickArc","majorTickAngles","allTicks","_tickDifference","minorTickAngles","normalizeTickAngles","tickCount","repositionTicks","minor","newPoint","xDiff","yDiff","RadialPointerAnimation","newAngle","oldAngle","RadialPointer","setAngle","_renderNeedle","_renderCap","capSize","cap","needleColor","needlePath","capColor","RadialGauge","_initialPlotArea","fitScale","alignScale","_buildPointers","midDiff","oldDiff","getDiff","staleFlag","getPlotBox","scaleArc","plotBbox","plotBox","plotBoxCenter","paddingX","paddingY","pointersArr","ArcScale","rangeLineCap","placeholderRangeAngle","setEndAngle","setStartAngle","RangePointerAnimation","startColor","currentColor","RangePointer","rangeColor","ArcGauge","centerLabelPosition","yLimit","CircularGauge","Encoding","initProperties","quietZoneLength","addQuietZone","convertedValue","initValue","addData","invalidCharacterError","addCheckSum","Code11","characterMap","cCheckSumTotal","kCheckSumTotal","kCheckSumMinLength","checkSumMod","DASH_VALUE","DASH","STOP","addPattern","addCharacter","setBaseUnit","cValue","getWeightedSum","checksum","kValue","weightedSum","weightedValue","Code39Base","minBaseUnitLength","addStart","pushCheckSum","prepareValues","characterData","addBase","Code39","minRatio","maxRatio","gapWidth","splitCharacter","patternMappings","patternString","minBaseUnit","minHeight","getBaseUnit","getBaseWidth","characterLength","addCharacterGap","Code39ExtendedBase","addExtended","extendedMappings","patternIndex","shiftCharacters","dataCharacter","specialAsciiCodes","shiftValuesAsciiCodes","Code39Extended","SHIFT0","SHIFT1","SHIFT2","SHIFT3","Code93","TERMINATION_BAR","charData","checkValues","_getCheckValues","_findCharacterByValue","wightedSum","Code93Extended","characterByValue","Postnet","VALID_CODE_LENGTHS","DIGIT_SEPARATOR","baseHeight","checkSum","alphanumericRegex","State128","encoding","pushState","State128AB","states","_initMoves","FNC4","SHIFT","encodingState","_moves","maxLength","numberMatch","_moveFNC","_shiftState","_moveState","fnc","previousState","shifted","states128","State128A","State128B","State128C","next4","getSubstring","State128FNC4","_initSubStates","dependentStates","subState","_getSubState","_initSubState","_pushStart","pushData","subStates","_getAll","FNC1","States128FNC1","startState","startAI","endAI","applicationIdentifiers","multiKey","nextStart","separatorLength","regexSeparators","getBySeparator","getByLength","applicationIdentifier","getApplicationIdentifier","unsupportedAIError","Code128Base","_initStates","getNextState","Code128a","Code128b","Code128c","Code128","CodeGS1128","MsiBase","checkSumType","checkSums","checkSumLength","MsiMod10","MsiMod11","MsiMod1010","MsiMod1110","Modulo10","evenSum","oddSum","odd","Modulo11","checkValue","Modulo11Modulo10","mod11Value","Modulo10Modulo10","mod10Value","Ean13","keyTable","valueAsString","calculateChecksum","leftKey","leftPart","rightPart","addPieces","addSide","arrToAdd","limitedHeight","even","Ean8","Encodings","code11","code39","code39extended","code93","code93extended","code128","code128a","code128b","code128c","surfaceSize","surfaceType","msimod10","msimod11","msimod1010","msimod1110","postnet","ean8","ean13","Barcode","errorHandler","_setOptions","_initSurfaceElement","_createSurface","_destroySurfaceElement","encodedValue","textToDisplay","textMargin","barHeight","_getBackground","_getText","_bandsGroup","_getBands","value$1","stepX","patternItem","_textbox","splitInto","chunkLength","toBitsString","bitString","toDecimal","FreeCellVisitor","getNextCell","getNextRemainderCell","EncodingResult","dataString","IsoEncoder","getEncodingResult","errorCorrectionLevel","modes","previousMode","chooseMode","initMinNumericBeforeAlpha","initMinNumericBeforeByte","initMinAlphaBeforeByte","modeString","nextMode","minNumericBeforeAlpha","minNumericBeforeByte","minAlphaBeforeByte","getModes","dataCodewordsCount","DataModeInstances","getStringBitsLength","getDataCodewordsCount","getDataString","QRDataMode","modeIndicator","bitsInCharacterCount","getVersionIndex","getBitsCharacterCount","getModeCountString","NumericQRDataMode","inputLength","mod3","AlphaNumericQRDataMode","characters","ByteQRDataMode","Utf8Encoder","encodingMode","utfBOM","initialModeCountStringLength","encodeCharacter","bytesCount","getBytesCount","significantOnes","VersionsCodewordsInformation","totalDataCodewords","errorCodewordsPerBlock","terminator","NUMERIC","ALPHA_NUMERIC","BYTE","powersOfTwo","powersOfTwoResult","irregularAlignmentPatternsStartDistance","finderPattern","alignmentPattern","errorCorrectionPatterns","paddingCodewords","maskPatternConditions","alphaPattern","alphaRegex","alphaNumericRegex","byteRegex","generatorPolynomials","fillFunctionCell","matrices","bit","fillDataCell","xorPolynomials","multiplyPolynomials","multiplyByConstant","generateErrorCodewords","errorCodewordsCount","generator","generatorPolynomial","errorCodewords","numericMatch","alphaMatch","alphaNumeric","alphaNumericMatch","encodeBCH","codeLength","generatorNumber","polynomialLength","valueNumber","valueString","numberX","numberY","yLength","xLength","dividePolynomials","getNumberAt","addFormatInformation","addVersionInformation","quotient","modules","addCentricPattern","addFinderSeparator","nextX","nextY","scoreFinderPatternOccurance","scores","rowColumn","scoreAdjacentSameBits","previousBits","adjacentBits","calculateDarkModulesRatioScore","darkModules","mod5","encodeData","createQRCodeDataEncoder","encodingResult","versionInformation","blocks","dataStream","versionCodewordsInformation","dataBlock","blockCodewordsCount","groupBlocksCount","messagePolynomial","codeword","codewordStart","dataBlocks","errorBlocks","versionGroups","blockIdx","codewordIdx","getBlocks","initialDataString","dataBitsCount","terminatorIndex","paddingCodewordIndex","padDataString","initMatrices","addFinderPatterns","startDistance","addAlignmentPatterns","addTimingFunctions","cellVisitor","fillData","adjacentSameBits","modulesLength","matrixIndex","scoreMaskMatrixes","optimalMatrix","encodeVersionInformation","encodedString","encodeFormatInformation","generatePowersOfTwo","firstPolynomial","secondPolynomial","generateGeneratorPolynomials","crossPattern","squarePattern","QRCodeDefaults","QRCode","quietZoneSize","contentSize","errorCorrection","_calculateBaseUnit","_renderBackground","_renderMatrix","_hasCustomLogo","_renderLogo","_isSwiss","_renderSwissCode","qrSize","imageRect","logoSize","_getLogoSize","logoUrl","crossSize","crossOffset","_renderShape","matrixSize","newOptions","defautLogoSize","datums","WGS84","toSquare","math","atan","Location","lat","lng","DISTANCE_ITERATIONS","DISTANCE_CONVERGENCE","DISTANCE_PRECISION","FORMAT","loc","datum","greatCircleTo","initialBearing","initialDatum","bearing","fromLat","fromLng","dToR","initialDest","azimuthFrom","azimuthTo","prevLambda","sinLambda","cosLambda","sino","cosA2","coso","cos2om","sigma","U1","sinU1","cosU1","U2","sinU2","cosU2","lambda","converged","sinA","u2","deltao","fromLngLat","lngAndLat","fromLatLng","PI_DIV_4","Mercator","MAX_LNG","MAX_LAT","INVERSE_ITERATIONS","INVERSE_CONVERGENCE","forward","proj","lng0","centralMeridian","_projectLat","ecc","ts","con","inverse","_inverseY","ecch","phi","dphi","SphericalMercator","Equirectangular","EPSG3857","_proj","_tm","_itm","toLocation","EPSG3395","EPSG4326","convertToHtml","removeChildren","prepend","originElement","toHyphens","toPixels","detectOS","formFactorRxs","tablet","testRegex","getEventMap","eventMap","getSupportedFeatures","mobileOS","msPointers","mobileChrome","crios","mouseAndTouchPresent","eventCapture","hasTransitions","lowPrefix","delayedClick","proxy","useCapture","eventFilter","closestMatchingTarget","applyEventMap","setDefaultEvents","renderPos","FUNCTION","_setEvents","Attribution","extent","_extent","newItem","_itemText","appendHtml","showElement","hideElement","inZoomLevel","_inZoomLevel","minZoom","maxZoom","inArea","_inArea","newMin","newMax","directionsMap","createButton","navigateUpButton","icons","navigateRightlButton","navigateDownButton","navigateLeftButton","_keyroot","_tabindex","_keydownHandler","_keydown","dispose","TABINDEX","tabindex","_pan","panStep","CHANGE","ZoomControl","zoomInButton","zoomOutButton","zoomStep","Extent","initialNw","initialSe","nw","World","containsAny","locs","include","includeAll","edges","sw","CENTER_CHANGE","widgetService","documentPoint","Layer","_beforeReset","_reset","_panEnd","_activate","_updateAttribution","_deactivate","_applyExtent","_setVisibility","matchMinZoom","matchMaxZoom","inside","attribution","_readData","_hasData","_layerIndex","layers","compileTemplate","roundPoint","renderSize","newSize","TileLayer","subdomains","_viewType","_view","locationToLayer","viewOrigin","_updateView","TileView","extentToPoint","tileSize","urlTemplate","pool","TilePool","center$1","_center","extent$1","_viewOrigin","zoom$1","pointToTileIndex","tileCount","firstTileIndex","indexToPoint","subdomainText","subdomainIndex","tile","createTile","currentIndex","tileOptions","wrapIndex","subdomain","errorUrlTemplate","wrapValue","ImageTile","urlResult","urlOptions","errorUrl","quadkey","_create","maxDist","TapCapture","_release","captureNext","cancelCapture","PaneDimension","forcedEnabled","scrollSize","makeVirtual","_virtualMin","_virtualMax","virtualSize","outOfBounds","forceEnabled","getTotal","rescale","scaledTotal","minScale","PaneDimensions","forcedMinScale","maxScale","newScale","centerCoordinates","PaneAxis","movable","dragMove","dragDelta","resistance","translateAxis","elastic","dimensions","userEvents","closestAnchor","previousGesture","previousCenter","scaleWith","Movable","transformStyle","webkitTransformOrigin","_saveCoordinates","by","scaleTo","moveAxis","newCoordinates","ShapeLayer","_initRoot","_markers","_translateSurface","_load","geometries","_clearMarkers","_loader","GeoJsonLoader","shapeCreated","cancelled","renderPointsAsMarkers","_createMarker","layer","featureCreated","_panning","locationToView","_eventArgs","layerIndex","shapeIndex","_tooltipAnchor","_tooltipContext","eventOffset","_panHandler","panHandler","locator","unwrap","_loadGeometryTo","_featureCreated","_shapeCreated","_loadPolygon","_setLineFill","_loadPoint","_loadShape","rings","_buildPolygon","viewToLocation","BubbleLayer","newData","scaleType","_scaleType","getLocation","locationField","_createSymbol","_drawSymbol","Scales","Symbols","SqrtScale","_domain","domainRange","outputRange","_ratio","rel","CLICK","MOUSE_ENTER","MOUSE_LEAVE","MARKER_CLASS_NAME","MARKER_CLASS","MarkerLayer","_markerClickHandler","_markerClick","_addOne","Marker","titleField","markerIndex","_markerMouseEnter","_createMarkerEventArgs","_markerMouseLeave","_mouseEnterHandler","_mouseEnter","_mouseLeaveHandler","_mouseLeave","templateHtml","_compileTemplate","templateFn","templateElement","svgIcon","_createEventArgs","paramName","useWithBlock","_tickProxy","_tick","_started","onEnd","onCancel","timePassed","_easeProxy","ease","easeOutExpo","DEFAULT_MIN_HOLD","DEFAULT_THRESHOLD","PRESS","HOLD","TAP","DOUBLETAP","RELEASE","GESTURECHANGE","GESTUREEND","GESTURETAP","THRESHOLD","api","TouchAxis","invalidZeroEvents","_updateLocationData","timeDelta","initialDelta","client","screen","Touch","touchInfo","useClickAsTap","pressEvent","_clicks","supportDoubleTap","_moved","_finished","_holdTimeout","_hold","minHold","_trigger","_clickTimeout","preventMove","_shouldNotMove","_withinIgnoreThreshold","UserEvents","endTime","activeTouches","activeTouchIndex","isMoved","jQueryEvent","withEachUpEvent","downEvents","_maxTouches","multiTouch","allowSelection","captureUpIfMoved","fastTap","enableGlobalSurface","global","_surfaceMoveHandler","_surfaceEndHandler","_elementStartHandler","_elementClickHandler","defaultAction","preventDragEvent","_elementDragStartHandler","_elementSelectHandler","preventIfMovingProxy","preventIfMoving","_isMoved","_disposeAll","_isMultiTouch","touch1","touch2","touchDelta","_apiCall","_maxTouchesReached","_eachTouch","matchingTouch","dict","defaultThreshold","ZoomSnapBack","tapCapture","DragInertia","freeze","_moveTo","paneAxis","_snapBack","velocityMultiplier","friction","snapBack","AnimatedScroller","_updateCoordinates","setCoordinates","setCallback","ScrollBar","scrollMovable","alwaysVisible","paneSize","sizeRatio","Scroller","hasScrolling","hasNativeScrolling","_native","useNative","scrollHeader","fixedContainer","wrapInner","inner","avoidScrolling","horizontalSwipe","originatedFromFixedContainer","ownsElement","verticalSwipe","zoomSnapBack","animatedScroller","mousewheelScrolling","_wheelScrollHandler","_wheelScroll","pulled","_initAxis","_wheelEnd","_wheel","_wheelY","pullToRefresh","_initPullToRefresh","_wheelTimeout","VERTICAL_AXIS","contentResized","_scale","zoomOut","disable","animatedScrollTo","pullHandled","_paneChange","scrollBar","visibleScrollHints","pullOffset","pullTemplate","releaseTemplate","refreshTemplate","MapService","MARKER","LOCATION","layersMap","scroller","zoomControl","markerLayer","initObserver","_notifyObserver","crs","_getOrigin","_initScroller","_initMarkers","_initControls","_initLayers","mousewheelThrottled","_setExtent","_getExtent","wraparound","locationObject","_layerSize","layerToLocation","pointObject","pointResult","eventToView","eventToLayer","eventToLocation","viewSize","_setOrigin","originLocation","newExtent","raw","layerWidth","layerHeight","_zoomAround","pivot","controls","_createAttribution","_createNavigator","_createZoomControl","_createControlElement","defaultPosition","posSelector","div$1","_navigatorPan","_navigatorCenter","bounds","_virtualSize","_scrollEnd","_zoomControlChange","_scroll","_scaleStart","_doubleTap","_createLayer","layerDefaults","layerOptions","markerDefaults","layerConstructor","markerLayers","_scrollOffset","_panComplete","_panEndTimestamp","_scaleToZoom","gestureCenter","centerLocation","tiles","_resetScroller","xBounds","yBounds","_renderLayers","newZoom","toZoom","fromZoom","BAR_GAP","BAR_SPACING","SANS","SANS11","SANS12","SANS16","TRANSPARENT","boxPlotSeries","outliersField","meanField","bulletSeries","waterfallSeries","funnelSeries","pyramidSeries","rangeArea","verticalRangeArea","heatmap","funnel","pyramid","horizontalWaterfall","rangeBar","verticalBoxPlot","baseTheme","flag","getTouch","domEvent","shouldBindGroup","groupNames","eventGroups","DomEvents","hammerInstance","eventHandlers","panstart","panmove","panend","pinchstart","pinchmove","pinchend","previousArgs","xLocation","yLocation","pointer1","pointer2","eventGroup","nameIdx","name_1","HAMMER","BaseEvent","AxisLabelClickEvent","PreventableEvent","DragEvent","DragEndEvent","DragStartEvent","LegendItemHoverEvent","LegendItemClickEvent","LegendItemLeaveEvent","NavigatorFilterEvent","NoteClickEvent","NoteHoverEvent","PlotAreaClickEvent","PlotAreaHoverEvent","RenderEvent","SelectEvent","SelectEndEvent","SelectStartEvent","SeriesClickEvent","SeriesHoverEvent","ZoomEvent","ZoomEndEvent","EVENT_MAP","axisLabelClick","dragEnd","dragStart","legendItemHover","legendItemClick","legendItemLeave","navigatorFilter","noteClick","noteHover","plotAreaClick","plotAreaHover","seriesClick","seriesHover","zoomEnd","zoomStart","ZoomStartEvent","DomEvent","toDomEvent","fontSize","fontFamily","computedBackgroundColor","seriesTemplate","ThemeService","setColors","mapColor","queryStyle","setInactiveOpacity","setFonts","defaultFont","titleFont","paneTitleFont","labelFont","setSeriesColors","unsetColor","seriesPos","varName","THROTTLE_MS","reducer","timerId","optionsReducer","currentState","chartCollectionIdxKey","reducers","collectionConfigurationItem","chartKey","configurationItem","themeReducer","themeItem","observersReducer","inCollection","collectionName","collectionIdx","collection","nextStore","TooltipPoint","xLow","xHigh","yLow","yHigh","SharedTooltipContent","colorMarker","colspan","nameColumn","ChartContext","COLLISION","TOOLTIP_CLASS","TooltipPopup","onChartMouseLeave","childrenObserver","observersStore","popupShown","popupOffset","popupStyles","popupContent","wrapperClass","SeriesTooltip","popupContext","tooltipProps","tooltipContent","findRenderFunction","seriesRenderer","findRenderFunctionByIndex","popupContainerClassName","onShowTooltip","createSharedTooltipContext","createTooltipContext","onHideTooltip","optionsStore","popupContend","AXES","mapTooltips","tooltips","axesCrosshairTooltipOptions","tooltipIdx","CrosshairTooltipContainer","storeUnsubscriber","subscriber","childrenMap","BaseChart","optionsUnsubscriber","themeStore","themeUnsubscriber","suppressTransitions","onRender","onLegendItemClick","seriesByIndex","pv","onChildMouseLeave","createStore","chartBaseTheme","loadTheme","instantiateCoreChart","spreadProps","currentIntlService","localeChanged","entries","keyValue","chartStyles","getChartOptions","deriveOptionsFromParent","onRefresh","chartConstructor","eventObject","getTarget","ChartDomEventsBuilder","DonutCenter","donutCenterStyles","_baseChart","donutCenterRender","baseChartProps","baseChart","KendoChart","CollectionConfigurationComponent","_chartKey","_parentStore","collectionItemProps","_chartCollectionIdxKey","ConfigurationComponent","childStore","configurationItemProps","ChartSeriesItem","ChartSeries","childType","prop_1","validateChildren","ChartLegend","CheckIfNYCDOELicense","licenseModel","schoolLicenseUsage","isDOELicense","vendorModel","schoolLicenseUsageChartData","kind","share","quantityAssigned","MAX_SAFE_INTEGER","quantityAllocated","labelContent","Tdata","getCourses","schoolDBN","schoolYear","pageNumber","getStarsCourses","sharedCourseUniqueId","searchStarsCourseByName","searchCourseName","filterCourses","searchCourseStatus","searchCourseType","searchUnpublishedStudents","getCourseDetail","courseId","getCourseStatus","getUnassignedVendorContentData","getVendorContentUnassignedCourses","vendorContentId","vendorId","getVendorContentData","GetCourseStatusChart","getAllocatedVendorsDetail","getAllocatedVendorDetailById","GetSchoolLicenseUsageChart","GetSchoolLicenseUsageReport","getNonAllocatedVendors","getAllocatedVendors","Dashboard","courseStatusList","setcourseStatusList","schoolLicenseUsageList","setSchoolLicenseUsage","courseService","licenseAllocationService","accumulator","courseCount","CourseChartContainer","vendor","vendorName","getSchoolsFromDaap","SchoolDropDown","orginalSchoolList","setOrginalSchoolList","schoolList","setSchoolList","_LocalStorageService$","_LocalStorageService$2","schoolService","dropDownData","sl","schoolName","_LocalStorageService$3","_LocalStorageService$4","_LocalStorageService$5","selectedSchool","filterData","getCurrentSchoolYear","SchoolYearDropDown","setCurrentYear","orginalSchoolYearList","setOrginalSchoolYearList","schoolYearService","schoolYearRange","selectedYear","axiosInstance","isAbsolute","spliceOne","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","invariant","addLeadingSlash","stripLeadingSlash","stripBasename","hasBasename","stripTrailingSlash","createLocation","searchIndex","decodeURI","URIError","resolvePathname","createTransitionManager","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","notifyListeners","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","history","createBrowserHistory","globalHistory","canUseHistory","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_window$location","createKey","transitionManager","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","fromLocation","toIndex","allKeys","fromIndex","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","isBlocked","nextKeys","replaceState","goBack","goForward","unblock","unlisten","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","allPaths","baseTag","pushHashPath","nextPaths","lowerBound","upperBound","MAX_SIGNED_31_BIT_INT","commonjsGlobal","calculateChangedBits","contextProp","getUniqueId","emitter","changedBits","createEventEmitter","objectIs","_Provider$childContex","_React$Component2","onUpdate","_Consumer$contextType","createNamedContext","historyContext","Router","_isMounted","_pendingLocation","staticContext","computeRootMatch","isExact","cache$1","cacheCount$1","matchPath","_options$exact","_options$strict","_options$sensitive","pathCache","compilePath$1","_compilePath","Route","context$1","computedMatch","isEmptyChildren","createURL","staticHandler","useHistory","BrowserRouter","resolveToLocation","normalizeToLocation","forwardRefShim","LinkAnchor","forwardedRef","innerRef","_onClick","ex","isModifiedEvent","_ref2$component","__RouterContext","isDuplicateNavigation","forwardRefShim$1","forwardRef$1","ariaCurrent","_ref$ariaCurrent","_ref$activeClassName","activeStyle","classNameProp","isActiveProp","locationProp","styleProp","escapedPath","classnames","joinClassnames","menuData","setMenuData","menuService","navigationURL","displayText","SchoolBanner","schoolData","getSchoolData","locationName","address","principalFullName","schoolInfoService","VendorDetail","vendorDetailData","setvendorDetailData","vendorDescription","licenseType","VendorContentDisplay","setCourseContentData","LicenseAllocationService","RadioButtonPropsContext","RadioButton","labelPlacement","inputProps","radioButtonLabel","radio","DialogTitleBar","onCloseButtonClick","closeIcon","DialogActionsBar","DATA_DIALOGS_ID","getMaxZIndex","currentWindowId","maxZindex","allWindows","zIndexChanged_1","KRwindow","computedStyle","zIndexValue","DialogWithoutContext","titleId","generateTitleId","onCloseDialog","kDialog","focusableContent","firstFocusableElement","lastFocusableElement","contentStyle","getActionBar","dialogElement","getAllSetupSchool","VendorCrudContent","originalSchoolList","setOriginalSchoolList","schoolListTo","setSchoolListTo","vendorList","setVendorList","vendorAllocatedList","setVendorAllocatedList","fromLocationCode","toLocationCode","quantityCap","formmode","schoolListService","vendorlist","vendorAllocatedlist","vendorChange","toLocationCodeError","vendorNameError","licenseQuantityError","Transfer","onSchoolSearch","VendorEditContent","datasource","totalLicenses","availableLicenses","assignedLicense","onVendorEditClose","GridHierarchyExpand","IconGear","xmlns","VendorContent","_userProfile$role","_userProfile$role2","editData","setEditData","ignored","getVendorDetail","nonAllocatedVendor","responseArray","nonAllocatedVendorDropDownData","vl","allocatedVendorDropDownData","onGridExpand","onVendorSave","VendorManageContent","isEditable","IconBrowserGear","MAX_DELAY_MS","setChainedTimeout","handleRef","timeoutAtMs","delayMs","useTimeout","Overlay","outerRef","_props$containerPaddi","_props$popperConfig","_useCallbackRef2","_usePopper","mountOverlay","rootClose","rootCloseDisabled","_PropTypes$func","_excluded2","outerProps","actualTransition","BaseOverlay","overlayProps","aRef","__wrapped","wrapRefs","outOfBoundaries","RefHolder","handleMouseOverOut","relatedNative","related","OverlayTrigger","propsShow","_ref$defaultShow","propsDelay","_ref$flip","triggerNodeRef","hoverStateRef","normalizeDelay","handleMouseOver","handleMouseOut","triggers","triggerProps","onMouseOver","onMouseOut","primaryPlacement","CardImg","DivStyledAsH5","DivStyledAsH6","CardBody","CardTitle","CardSubtitle","CardLink","CardText","CardHeader","CardFooter","CardImgOverlay","Card","Img","Subtitle","ImgOverlay","InputGroupAppend","InputGroupPrepend","InputGroupText","InputGroup","hasValidation","Radio","Checkbox","Append","Prepend","IconCourseEnvelop","courseType","courseOrginType","SplashScreen","SharedCoursesList","sharedCourses","itemProps","itemChildren","initialDataState","IndividualCourses","courseProps","isLoading","setIsLoading","errorMsg","setErrorMsg","assignedCourses","setAssignedCourses","checkedCourses","setCheckedCourses","starsCourses","setStarsCourses","showAddIndividualCoursesDialog","setShowAddIndividualCoursesDialog","setSelectedSchool","deletedCourse","setDeletedCourse","setPage","CoursesService","courseUniqueId","selectedCourse","toggleDialog","addIndividualCourses","getSchoolLocations","_userProfile$role2$lo","setSearchCourseName","_addIndividualCourse$","addIndividualCourse","individualCoursesUniqueId","courseTeachers","totalStudentEnrolled","updateCourseInfo","deleteIndividualCourse","individualCourseUniqueId","newCourseTeachers","studentCount","_selectedSchool$id2","getCourseByCourseName","_selectedSchool$id3","school","getDefaultValue","getElementById","_selectedSchool$id","selectedCourses","onGridCheckBoxClick","courseStatus","courseName","courseCode","starsSharedCourses","_item$firstName","_item$lastName","teacherId","firstName","lastName","teacherInitial","_courseProps$courseSt","sectionUniqueId","GetUnassignedTeachersBySchoolDBN","GetUnassignedTeacherById","IconPersonCircle","AssignedTeachers","setCourseTeachers","courseAdditionalStaff","setCourseAdditionalStaff","dataCopy","setRowCopyData","deleteTeacherId","setDeleteTecherId","getTeachers","TeacherService","CourseId","isSharedCourse","teacherData","courseSource","assignedTeachersVisible","setAssignedTeachersVisible","toggleAssignedTeachersDialog","setHeaderCheckBox","addTeacher","headerCheckBoxValue","searchTeacherEin","setSearchTeacherEin","_addCourseTeachers$te","addCourseTeachers","teachers","teacherIds","addedTeachers","currentTeacherList","onAssignTeachers","updateCourseStatus","courseteacherList","onDeleteTeacher","getTeacherById","isValidResponse","teacher","onHeaderCheckBoxClick","_dataItem$mainCourses","_dataItem$manageCours","mainCourses","teacherCourse","manageCourses","sectionName","changeTeacherCanManage","_teacher","_teacher2","teacherManageSection","_item$manageCourses","canManage","_prop$dataItem","_prop$dataItem2","_prop$dataItem2$cours","_prop$dataItem3","_prop$dataItem3$cours","GetUnassignedStaffBySchoolDBN","additionalStaffId","initialFilter","AssingedAdditionalStaff","deleteAdditionalStaffId","getAdditionalStaffBySchoolDBN","AdditionalStaffService","additionalStaffData","additionalStaffVisible","setAdditionalStaffVisible","addAdditionalStaff","addCourseAdditionalStaff","additionalStaff","additionalStaffIds","addedAdditionalStaff","currentAdditionalStaffList","courseAdditionalStaffList","_props$dataItem$cours","AddVendorContent","coursesService","addVendorCourseContentRecords","vendorConentId","courseVendorContent","vendorContentName","statusCode","closeCourseVendorContentModal","studentId","StudentId","IconStudentOutline","subItemsField","subItems","callbackfn","mapTree","tree","GROUP_ID_FIELD","GROUP_SUBITEMS_COLLECTION","setGroupId","parentValue","getGroupIds","groupIds","setExpandedState","propsToExtend","extendDataItem","collapsedIds","groupId","initialState","processWithGroups","newDataState","setGroupIds","EnrolledStudent","studentProps","courseStudent","setCourseStudent","deleteStudentId","setDeleteStudent","resultState","setResultState","collapsedState","setCollapsedState","gridData","setGridData","getStudent","StudentService","students","gradeLevelCode","studentData","dataResult","studentVisible","setStudentVisible","toggleStudentDialog","addStudent","searchStudentId","setSearchStudentId","addCourseStudent","courseSchoolDBN","student","studentIds","addedStudent","currentStudentList","onChangeStudentCount","courseStudentList","getStudentById","IconStudnetOutline","coursePurpose","_props$dataItem2$cour","AddNewCourse","_formValue$courseName","courseDetail","setSelectedValue","setCourseType","courseTypes","isDefaultSelected","purposeList","setPurposeList","purpose","contentTypeList","setContentTypeList","handleRadioChange","excludeDemoPurpos","purposList","defaultTeacher","teacherOfRecord","courseTitleError","purposeError","courseContentTypeError","teacherOfRecordError","startDateError","endDateError","courseNameDublicateError","courseSaveErrorMessage","courseContentType","endDate","isMerged","mergeCourses","createdBy","createdOn","oldTeacherId","mergedOn","mergedBy","setCourseSaveErrorMessage","changeCourseType","purposeOptions","originalTeacherList","onSearch","onTeacherSearch","teacherById","MergeCourses","mergeData","setMergeData","mergeCourseData","setMergeCourseData","courses","onMerge","Merge","mergeError","onMergeClose","MergeError","mergeMessage","LicenseSummary","trProps","hasNotEnoughLicense","availableLicense","cellContent","CourseDetail","_courseDetailData$mer","_props$sharedCourses","dataSource","setCourseDetailData","courseDetailData","course","courseinfo","lastSubmittedOnLMS","_courseDetailData$mer2","_courseDetailData$mer3","mergedCourse","_props$sharedCourses2","_props$sharedCourses3","AddCoursesForVendorContent","vendorContentDefault","setVendorContentDefault","unassignedCourses","setUnassignedCourses","selectedVendorContent","setSelectedVendorContent","vendorContentList","setVendorContentList","originalVendorContentList","setOriginalVendorContentList","vendorContentService","vendorcontent","vendorCourseCode","vendorCourseContentName","TotalCourses","TotalStudents","modifiedBy","_addMultipleCoursesVe","addMultipleCoursesVendorContent","multipleCoursesVendorContent","closeCourseForVendorContentModal","CheckboxPropsContext","labelOptional","touched","modified","stateChecked","setStateChecked","setStateValue","valueIsBoolean","isCheckedControlled","isValueControlled","currentChecked","useValueAsChecked","checkedProp","valueProp","indeterminateProp","localizeMessage","defaultValidationMessage","optionalMessage","currentVal","initialDir","setDir","rtlCandidate","useDir","checkboxClasses","onKeyUp","checkboxInput","checkboxLabel","initialDataSort","initialCourseTypes","initialCourseFilters","Courses","_userProfile$role5","_userProfile$role6","_userProfile$role7","setDefaultExpand","sortValue","filterCourseTypes","filterCourseStatus","setFilterCourseStatus","defaultSortValue","courseFilters","setCourseFilters","isPublishedSelected","setIsPublishedSelected","isUnpublishedStudentsChecked","setIsUnpublishedStudentsChecked","isUnpublishedStudentsValue","courseIdSelected","setCourseId","vendorContentIdSelected","setVendorContentId","refreshSubGrid","setRefreshSubGrid","tomorrow","setCourseDetail","pageAlert","setPageAlert","originalTeacherOfRecordList","setOriginalTeacherOfRecordList","teacherOfRecordList","setTeacherOfRecordList","setDefaultTeacher","CourseService","finally","deleteCourseSaveErrorMessage","courseNameSearch","setCourseNameSearch","clearCourseNameSearch","searchByCourseName","courseStatusFilter","courseArray","courseIndex","getNewCourseTeachers","newTeachers","courseTeacher","oldTeacher","newTeacher","SubGridHost","AssignedAdditionalStaff","showVendorContent","setShowVendorContent","showCoursesForSelectedVendorContent","setShowCoursesForSelectedVendorContent","courseNameChangeError","setCourseNameChangeError","courseNameError","teacherList","codesetService","codeSetName","cl","onCourseSave","onTeacherById","teacherEin","teacherExist","onMergeSave","vendorContents","deleteVendorContent","deleteCourseVendorContent","vendorContentArray","vendorContentIndex","ContentArray","ContentIndex","vendorInfo","xs","setIsEditable","setOnChangeName","onEditClick","editCourseName","totalStudentUnpublished","CourseNameBadge","TeacherBadge","buttonText","_userProfile$role4","onAddVendorContent","VendorContentBadge","_value$statusCode","_userProfile$role3","VendorContentId","_props$dataItem$vendo2","_props$dataItem$stars","_props$dataItem$vendo3","_props$dataItem$stars2","overlayTarget","showConfirmation","setShowConfirmation","canShow","onConfirmation","onCourseAction","getBySchoolDBN","PurchaseOrder","_formCascade$vendor","_formCascade$product","_formValue$purchaseOr","_formValue$purchaseOr2","_formValue$quantityPu","orginalVendorList","setOrginalVendorList","vendorListCopy","setVendorListCopy","productList","setProductList","setProduct","productSKU","price","priceType","formCascade","setFormCascade","vendors","products","vendorService","vendorDropDownData","quantityPurchased","unitPrice","purchaseOrderNumber","productNameError","quantityPurchasedError","purchaseOrderNumberError","serverSideError","purchaseOrder","purchaseOrderService","getPurchaseOrder","productService","productDropDownData","pl","productId","orderID","purchaseDate","GetLicenseUsageReport","GetDailyReport","GetAllReports","canDownload","saveAsBlob","blob","msSaveBlob","saveAsDataURI","dataURI","URL","createObjectURL","fileSaver","download","initMouseEvent","revokeObjectURL","postToProxy","proxyURL","proxyTarget","proxyData","defaultGroupHeaderTemplate","createArray","defaultItemId","ExcelExporter","_trimColumns","allColumns","_leafColumns","_prepareColumn","_visibleColumns","hierarchy","hasGroupHeaderColumn","groupHeaderColumnTemplate","collapsible","workbook","sheets","_hierarchyRows","_rows","freezePane","_freezePane","_filter","groupHeaderTemplate","groupFooterTemplate","footerTemplate","_depth","_createPaddingCells","paddingCellOptions","_dataRow","_groupHeaderCells","_dataRows","dataCells","cellIdx","_cell","groupHeaderCellOptions","previousItemId","itemLevel","itemId","hasFooter","_hasFooterTemplate","previousLevel","_hierarchyFooterRows","parentId","_hierarchyFooter","_prependHeaderRows","currentLevel","footerCellOptions","templateData","groupFooterCellOptions","_isColumnVisible","exportable","excel","visibleInExport","visibleInExportOnly","_headerRow","firstCell","headerPaddingCellOptions","_prepareHeaderRows","parentCell","parentRow","childRow","totalColSpan","headerCellOptions","_headerDepth","colSplit","rowSplit","cellOptions","autoWidth","Z_STREAM_ERROR","_has","sources","shrinkBuf","buf","fnTyped","arraySet","src_offs","dest_offs","flattenChunks","chunks","chunk","Buf8","Buf16","Buf32","Int32Array","fnUntyped","typedOK","strApplyOK","strApplyUintOK","utf8len","string2buf","m_pos","str_len","buf_len","_buf2binstring","buf2string","c_len","utf16buf","utf8border","adler32","adler","s1","s2","crcTable","makeTable","crc32","crc","inflate_fast","strm","_in","_out","beg","dmax","wsize","whave","wnext","s_window","hold","bits","lcode","dcode","lmask","dmask","here","from_source","next_in","avail_in","next_out","avail_out","lencode","distcode","lenbits","distbits","dolen","dodist","sane","MAXBITS","lbase","lext","dbase","dext","inflate_table","lens","lens_index","codes","table_index","work","incr","here_bits","here_op","here_val","sym","used","huff","base_index","offs","extra","extra_index","Z_STREAM_ERROR$1","TYPE$1","BAD$1","zswap32","InflateState","havedict","wbits","ncode","nlen","ndist","have","lendyn","distdyn","back","was","inflateReset","total_in","total_out","inflateResetKeep","inflateInit2","windowBits","inflateReset2","lenfix","distfix","virgin","fixedtables","updatewindow","inflate","flush","last_bits","last_op","last_val","hbuf","inf_leave","xflags","extra_len","comment","hcrc","data_type","inflateSetDictionary","dictionary","dictLength","ZStream","GZheader","Inflate","ended","inflateGetHeader","_mode","next_out_utf8","utf8str","allowBufError","binstring2buf","onData","inflateEnd","zero","static_ltree","static_dtree","_dist_code","_length_code","base_length","base_dist","static_l_desc","static_d_desc","static_bl_desc","LITERALS","L_CODES","D_CODES","MAX_BITS","extra_lbits","extra_dbits","extra_blbits","bl_order","StaticTreeDesc","static_tree","extra_bits","extra_base","elems","max_length","has_stree","TreeDesc","dyn_tree","stat_desc","max_code","d_code","put_short","pending_buf","send_bits","bi_valid","bi_buf","send_code","bi_reverse","gen_codes","bl_count","next_code","init_block","dyn_ltree","dyn_dtree","bl_tree","END_BLOCK","opt_len","static_len","last_lit","bi_windup","smaller","_n2","_m2","pqdownheap","heap","heap_len","compress_block","ltree","dtree","lx","d_buf","l_buf","build_tree","stree","heap_max","xbits","gen_bitlen","scan_tree","curlen","prevlen","nextlen","max_count","min_count","REP_3_6","REPZ_3_10","REPZ_11_138","send_tree","static_init_done","_tr_init","MAX_MATCH","LENGTH_CODES","tr_static_init","l_desc","d_desc","bl_desc","_tr_stored_block","stored_len","copy_block","_tr_align","STATIC_TREES","bi_flush","_tr_flush_block","opt_lenb","static_lenb","max_blindex","black_mask","detect_data_type","BL_CODES","build_bl_tree","lcodes","dcodes","blcodes","rank","send_all_trees","_tr_tally","lit_bufsize","MAX_MATCH$1","MIN_LOOKAHEAD","HCRC_STATE","BUSY_STATE","FINISH_STATE","errorCode","zero$1","flush_pending","pending_out","flush_block_only","block_start","strstart","put_byte","putShortMSB","read_buf","longest_match","cur_match","chain_length","max_chain_length","scan","best_len","prev_length","nice_match","w_size","_win","wmask","w_mask","strend","scan_end1","scan_end","good_match","lookahead","match_start","fill_window","_w_size","window_size","hash_size","ins_h","hash_shift","hash_mask","deflate_stored","max_block_size","pending_buf_size","max_start","deflate_fast","hash_head","bflush","match_length","max_lazy_match","MIN_MATCH$1","deflate_slow","max_insert","prev_match","match_available","Config","good_length","max_lazy","nice_length","max_chain","configurationTable","DeflateState","gzhead","gzindex","last_flush","w_bits","hash_bits","HEAP_SIZE$1","MAX_BITS$1","deflateReset","deflateResetKeep","lm_init","deflate","old_flush","bstate","deflate_huff","deflate_rle","toString$1","Deflate","memLevel","gzip","deflateInit2","avail","tmpDict","deflateSetDictionary","_dict_set","deflateEnd","external","nodebuffer","nodestream","arraybuffer","uint8array","_keyStr","stringToArrayLike","stringifyByChunk","fromCharCodeSupportsTypedArrays","arrayLikeToString","getTypeOf","canUseApply","resultStr","stringifyByChar","applyFromCharCode","arrayLikeToArrayLike","arrayFrom","arrayTo","transformTo","outputType","checkSupport","MAX_VALUE_16BITS","MAX_VALUE_32BITS","prepareContent","isBinary","isOptimizedBinaryString","FileReader","reader","readAsArrayBuffer","dataType","resultIndex","dataUrlPrefix","totalLength","decode","GenericWorker","streamInfo","generatedError","extraStreamInfo","isPaused","isFinished","isLocked","cleanUp","registerPrevious","mergeStreamInfo","processChunk","pause","withError","withStreamInfo","_utf8len","utf8encode","utf8decode","Utf8DecodeWorker","leftOver","previousData","nextBoundary","usableData","Utf8EncodeWorker","ConvertWorker","destType","transformZipOutput","mimeType","newBlob","remainingBytes","helper","updateCallback","dataArray","chunkType","_internalType","resultType","_outputType","_mimeType","StreamHelper","worker","internalType","_worker","updateCb","evt","createFolders","binary","compression","compressionOptions","dosPermissions","unixPermissions","DataWorker","dataP","dataIsReady","_tickScheduled","_tickAndRepeat","DataLengthProbe","crc32wrapper","crc32str","Crc32Probe","CompressedObject","compressedSize","uncompressedSize","compressedContent","getContentWorker","uncompressWorker","getCompressedWorker","createWorkerFrom","uncompressedWorker","compressWorker","ZipObject","_dataBinary","internalStream","askUnicodeString","_decompressWorker","isUnicodeString","_compressWorker","magic","arrayType","resolved","Uint32Array","FlateWorker","_pako","_pakoAction","_pakoOptions","_createPako","this$1$1","compressions","STORE","DEFLATE","LOCAL_FILE_HEADER","CENTRAL_FILE_HEADER","CENTRAL_DIRECTORY_END","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","decToHex","dec","bytes","generateZipParts","streamedContent","streamingEnded","platform","encodeFileName","dosTime","dosDate","file","useCustomEncoding","encodedFileName","utfEncodedFileName","encodedComment","utfEncodedComment","useUTF8ForFileName","useUTF8ForComment","extraFields","unicodePathExtraField","unicodeCommentExtraField","dataInfo","bitflag","extFileAttr","versionMadeBy","isDir","generateUnixExternalFileAttr","fileRecord","dirRecord","generateDataDescriptors","ZipFileWorker","streamFiles","bytesWritten","zipComment","zipPlatform","contentBuffer","dirRecords","currentSourceOffset","entriesCount","currentFile","_sources","currentFilePercent","remainingFiles","openedSource","record","closedSource","localDirLength","centralDirLength","dirEnd","generateCentralDirectoryEnd","prepareNextSource","e$1","generateWorker","zip","zipFileWorker","relativePath","fileCompression","zipCompression","compressionName","getCompression","DataReader","checkOffset","checkIndex","setIndex","byteAt","readInt","readString","readData","lastIndexOfSignature","sig","readAndCheckSignature","readDate","dostime","ArrayReader","sig0","sig1","sig2","sig3","StringReader","Uint8ArrayReader","readerFor","ZipEntry","loadOptions","isEncrypted","bitFlag","useUTF8","readLocalPart","localExtraFieldsLength","fileNameLength","compressionMethod","findCompression","decompressed","readCentralPart","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","localHeaderOffset","readExtraFields","parseZIP64ExtraField","fileComment","processAttributes","madeBy","fileNameStr","extraReader","extraFieldId","extraFieldLength","extraFieldValue","handleUTF8","decodeParamType","fileCommentStr","upath","findExtraFieldUnicodePath","fileNameByteArray","decodeFileName","ucomment","findExtraFieldUnicodeComment","commentByteArray","upathField","ucommentField","ZipEntries","files","checkEntryCRC32","zipEntry","checkCRC32","optimizedBinaryString","zipEntries","unsafeName","safeName","unsafeOriginalName","checkSignature","expectedSignature","signature","isSignature","askedIndex","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","decodeContent","readBlockZip64EndOfCentral","zip64EndOfCentralSize","zip64ExtensibleData","extraDataSize","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","readCentralDir","zip64","readEndOfCentral","endOfCentralDirOffset","expectedEndOfCentralDirOffset","extraBytes","prepareReader","fileAdd","forceTrailingSlash","parentFolder","folderAdd","zipObjectContent","lastSlash","createFolders$1","isRegExp","JSZip","newObj","filename","folder","newFolder","kids","generateInternalStream","generateAsync","loadAsync","dateToJulianDays","BASE_DATE","dateToSerial","packDate","MIME_TYPE","DATA_URL_PREFIX","DATA_URL_OPTIONS","BLOB_OPTIONS","ARRAYBUFFER_OPTIONS","toDataURI","parseJSON","foreach","XMLHEAD","RELS","WORKSHEET","frozenColumns","frozenRows","mergeCells","autoFilter","showGridLines","hyperlinks","validations","defaultCellStyleId","legacyDrawing","lastRow","lastCol","hasDisabledCells","skipCustomHeight","columnWidth","toWidth","formula","writeFormula","spreadsheetFilters","sqref","showErrorMessage","allowBlank","showDropDown","errorTitle","formula1","formula2","rId","DRAWINGS_RELS_XML","rels","numChar","$ref","filterRowIndex","px","Worksheet","sharedStrings","borders","_strings","_styles","_borders","_validations","_comments","_drawings","drawings","_hyperlinks","countData","relsToXML","comments","sheetIndex","WORKSHEET_RELS","toXML","mergedCells","rowsByIndex","indexRows","sorted","sortByIndex","fillCells","_readCells","defaultCellStyle","_hasDisabledCells","_lookupStyle","_getLastRow","_getLastCol","commentsXML","COMMENTS_XML","drawingsXML","images","main","drw","parseRef","topLeftCell","colOffset","pixelsToExcel","imageId","_lookupString","indexes","uniqueCount","json","_lookupBorder","cellData","EMPTY_CELL","borderLeft","borderRight","borderTop","borderBottom","dBorders","diagonal","defStyle","borderId","displayValue","stripFunnyChars","cellName","validation","_addValidation","MAP_EXCEL_TYPE","MAP_EXCEL_OPERATOR","comparerType","allowNulls","showButton","messageTemplate","titleTemplate","greaterThanOrEqualTo","lessThanOrEqualTo","convertColor","maybeRGB","$0","$1","Workbook","_images","_imgId","_sheets","borderSideTemplate","borderStyle","borderTemplate","diag","imageFilename","toZIP","docProps","creator","lastModifiedBy","CORE","sheetCount","sheet","APP","WORKBOOK_RELS","media","sheetIds","filterNames","userNames","localSheetId","quoteSheet","WORKBOOK","sheetName","def","localName","worksheets","drawingsRels","sheetRels","commentFiles","drawingFiles","sheetXML","relsXML","name$1","hasFont","underline","bold","italic","fontInPt","fontInPx","convertFontSize","fills","fontId","fillId","numFmtId","indent","SHARED_STRINGS","CONTENT_TYPES","toBlob","getSpan","upperStr","getcol","insertCell","topLeftRef","spanCell","nextRow","insertCellAt","appendCell","SPREADSHEET_FILTERS","generators","SPREADSHEET_CUSTOM_FILTER","criteria","customOperator","customValue","SPREADSHEET_DYNAMIC_FILTER","dynamicFilterType","SPREADSHEET_TOP_FILTER","SPREADSHEET_VALUE_FILTER","blanks","dynamic","doesnotmatch","esc","quarter1","quarter2","quarter3","quarter4","january","february","march","april","may","june","july","august","september","october","november","december","Template","updateContext","templateResult","ReactDOMServer","updateGroupHeaderContext","$implicit","updateGroupFooterContext","updateFooterContext","ExporterColumn","groupFooter","groupHeader","workbookOptions","sourceColumns","exporterColumns","addColumns","exporterColumn","toExporterColumns","ExcelExport","saveFile","dataURL","forceProxy","saveAs","extractColumns","extractChild","getExportData","exportData","onExportComplete","externalColumns","currentData","gridColumns","initialSort","LicenseUsageReport","setSort","_export","ReportsService","changeExcelRef","selectedReport","toDateString","filterReportData","LicenseAllocationReport","unlimittedQuantityAllocated","PublishedCoursesReport","TotalCountsReport","allData","stars","manual","manualCourses","sharedInstructionCourses","totalCourses","totalStarsTeachers","totalManualTeachers","totalSharedInstructionTeachers","totalTeachers","totalStarsStudents","totalManualStudents","totalSharedInstructionStudents","totalStudents","totalStarsUniqueTeachers","totalManualUniqueTeachers","totalSharedInstructionUniqueTeachers","totalUniqueTeachers","totalStarsUniqueStudents","totalManualUniqueStudents","totalSharedInstructionUniqueStudents","totalUniqueStudents","CourseStatusReport","LicenseTransferHistoryReport","DailyReport","MissingTORReport","ExcelExportColumn","ListGroupItem","ListGroup","horizontalVariant","TeacherCreatedCourseReport","reportsService","ein","teacherEmail","iLearnFlag","SharedInstructionCourseReport","getReportData","sharedCourseCreationDate","sharedCourseStatus","assignedStarsCourses","starsCourseName","assignedStarsCoursesTeachers","teacherName","teacherEIN","teacherDBN","starsCourseLocationCode","studentsCount","CourseEnrollmentSummaryReport","Report","setLicenseType","allReports","setAllReports","reportName","reportValue","setSelectedReports","excelRef","setExcelRef","defaultSelectedReport","_reports$find","reports","excelExport","headerOptions","teacherIdx","KendoOoxml","dataUrl","ele","sharedCourseName","sharedCourseLocationCode","teacherofRecordEIN","teacherofRecordName","starsCourseCode","starsMappingId","termId","ProfileMenu","onMenuClick","menuName","onNavigation","VendorContentManagement","_formValue$vendorCour","_formValue$vendorCour2","VendorContentService","childFormMode","vendorContentCourseNameError","vendorCourseCodeError","vendorContent","vendorContentReset","updateCourseCount","Product","_formValue$productNam","_formValue$productSKU","_formValue$price","codesetData","setCodeSetData","priceTypeList","setpriceTypeList","productDescription","priceTypeId","productSKUError","priceError","priceTypeError","productReset","selectedVendorId","productResponse","getProductData","priceTypeOptions","VendorManage","_formValue$vendorName","_formValue$vendorShor","_formValue$addressLin","_formValue$addressLin2","_formValue$city","_formValue$zip","_formValue$phoneNumbe","_formValue$vendorEmai","_formValue$vendorDesc","_formValue$licenseMod","_formValue$licenseTyp","getVendorData","VendorService","setChildFormMode","stateCodes","setStateCodes","setLicenseModelList","setLicenseTypeList","vendorShortName","phoneNumber","vendorEmail","addressLine1","addressLine2","city","licenseModelId","licenseTypeId","assignedContent","totalContent","vendorCourseAssignedCount","_licenseModel$find","_licenseModel$find2","licenseTypeList","_licenseType$find","NonTransferrableLicense","licenseModelError","licenseTypeError","licenseModelList","vendorDetails","currentFormMode","vendorArray","vendorIndex","IconWindowGear","_props$dataItem4","_props$dataItem3","_props$dataItem5","stateCodesOptions","stateCode","licenseModelOptions","licenseTypeOptions","SchoolManage","_formValue$principalN","_formValue$districtNu","_formValue$boroughCod","principalInfo","setPrincipalInfo","principalEmail","schoolsFromDaap","setSchoolsFromDaap","schoolsDaap","setSchoolsDaap","checkedTeachers","setCheckedTeachers","schoolLeadersFilter","setSchoolLeadersFilter","setTeacherList","setVisible","districtNumber","boroughCode","principalName","principalTitle","schoolLeaderVisible","setSchoolLeaderVisible","toggleSchoolLeaderDialog","schoolLeaderService","principalUpdateVisible","setPrincipalUpdateVisible","togglePrincipalUpdateDialog","schoolLeaderListVisible","setSchoolLeaderListVisible","schoolLeaderList","setSchoolLeaderList","toggleSchoolLeaderListDialog","schoolDetails","districtCode","learningEnvironmentID","schoolLeadersCount","getSchoolDataFromDaap","handlePrincipalChange","Column","addSchoolDetails","onPrincipalSave","principal","staffID","pmsId","doeEmail","actionCode","loginID","schoolLeader","associatedLocation","getStudentByLocationCode","getStaffByLocationCode","SearchStudentByLocationCode","SearchStaffByLocationCode","getStudentCoursesById","getStaffCoursesById","StudentCoursesDetails","studentAndStaffService","Student","searchForData","setSearchForData","setSearch","getStudentDataByLocationCode","replaceAll","searchNameOrId","emailId","StaffCoursesDetails","Staff","getStaffDataByLocationCode","StudentAndStaff","setSearchNameOrIdValue","clearSearch","searchData","ErrorDisplay","_errorContext$errorMe","errorContext","IconDOELogo","IconSchool","IconHome","SchoolYearManage","schoolYears","setSchoolYears","isSchoolYearChanging","setIsSchoolYearChanging","pageError","setPageErrors","schoolYearName","schoolYearStartDate","addNewSchoolYear","SchoolYearService","canAddNewSchoolYear","newYear","validateFormValues","ILearnLayout","isManageActivated","isManageRouteEnabled","setIsManageRouteEnabled","currentPath","setCurrentPath","onBack","PublicHeader","GlobalMenu","ManageHeader","onNavaigationProfile","Login","setUser","loggedOut","setLoggedOut","URLSearchParams","Home","loadingStatus","setloadingStatus","isSuccess","RbacService","rbacUser","jwt_decode","userProfileFromClaim","LocalStoreService","onILearn","gradientUnits","gradientTransform","SigninCallback","onRedirectError","isAuth","AuthConsumer","SilentRenew","App","isTokenExpired","refreshToken","getIntervalTime","ProtectedRoute","onPerfEntry","getCLS","getFID","getFCP","getLCP","getTTFB","isLocalhost","registerValidSW","swUrl","serviceWorker","registration","onupdatefound","installingWorker","installing","onstatechange","controller","reportWebVitals","fetch","ready","unregister","reload","checkValidServiceWorker","registerServiceWorker"],"sourceRoot":""}